diff --git a/GBase/Exceptions/GenericMethodNotFoundException.cs b/GBase/Exceptions/GenericMethodNotFoundException.cs
new file mode 100644
index 0000000..45f6658
--- /dev/null
+++ b/GBase/Exceptions/GenericMethodNotFoundException.cs
@@ -0,0 +1,24 @@
+// Author: Gockner, Simon
+// Created: 2020-11-13
+// Copyright(c) 2020 SimonG. All Rights Reserved.
+
+using System;
+
+namespace GBase.Exceptions
+{
+ ///
+ /// Could not find generic method
+ ///
+ internal class GenericMethodNotFoundException : Exception
+ {
+ ///
+ /// Could not find generic method
+ ///
+ /// The name of the generic method
+ public GenericMethodNotFoundException(string functionName)
+ : base($"Could not find function {functionName}")
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/GBase/Helpers/GenericMethodCaller.cs b/GBase/Helpers/GenericMethodCaller.cs
new file mode 100644
index 0000000..9ac3ed5
--- /dev/null
+++ b/GBase/Helpers/GenericMethodCaller.cs
@@ -0,0 +1,108 @@
+// Author: Gockner, Simon
+// Created: 2020-11-13
+// Copyright(c) 2020 SimonG. All Rights Reserved.
+
+using System;
+using System.Reflection;
+using System.Threading.Tasks;
+using GBase.Exceptions;
+
+namespace GBase.Helpers
+{
+ internal static class GenericMethodCaller
+ {
+ ///
+ /// Call a generic method without generic type parameters
+ ///
+ /// The caller of the method
+ /// The name of the method to call
+ /// The to find the method
+ /// The generic parameter as parameter
+ /// The parameters of the method
+ /// The result of invoking the method
+ /// Could not find the generic method
+ /// Any thrown after invoking the generic method
+ public static object Call(object caller, string functionName, BindingFlags bindingFlags, Type genericParameter, params object[] parameters) =>
+ GetGenericMethod(caller, functionName, bindingFlags, genericParameter).InvokeGenericMethod(caller, parameters);
+
+ ///
+ /// Call a generic method without generic type parameters
+ ///
+ /// The caller of the method
+ /// The name of the method to call
+ /// The to find the method
+ /// The generic parameter as parameter
+ ///
+ /// The parameters of the method
+ /// The result of invoking the method
+ /// Could not find the generic method
+ /// Any thrown after invoking the generic method
+ public static object Call(object caller, string functionName, BindingFlags bindingFlags, Type genericParameter, Type secondGenericParameter,params object[] parameters) =>
+ GetGenericMethod(caller, functionName, bindingFlags, genericParameter, secondGenericParameter).InvokeGenericMethod(caller, parameters);
+
+ ///
+ /// Call a generic method asynchronously without generic type parameters
+ ///
+ /// The caller of the method
+ /// The name of the method to call
+ /// The to find the method
+ /// The generic parameter as parameter
+ /// The parameters of the method
+ /// The result of invoking the method
+ /// Could not find the generic method
+ /// Any thrown after invoking the generic method
+ public static async Task