diff --git a/src/SignatureAssertionUtil.php b/src/SignatureAssertionUtil.php
index 4a7f4e8976f9426bfb3bbad5f06c65adb5c72654..a56433b6335e27c05a7be1af274b5fc46ef019af 100644
--- a/src/SignatureAssertionUtil.php
+++ b/src/SignatureAssertionUtil.php
@@ -7,12 +7,8 @@ namespace Grifart\AssertFunction;
 
 final class SignatureAssertionUtil
 {
-	private function __construct()
-	{
-	}
-
 
-	public static function checkSignature(callable $function, array $parameters, ?string $expectedReturnType): void
+	public function checkSignature(callable $function, array $parameters, ?string $expectedReturnType): void
 	{
 		$reflection = new \ReflectionFunction($function);
 
@@ -31,10 +27,10 @@ final class SignatureAssertionUtil
 			$parameterReflection = $reflection->getParameters()[$i++];
 			assert($parameterReflection instanceof \ReflectionParameter);
 
-			self::checkFunctionParameter(
+			$this->checkFunctionParameter(
 				$reflection,
 				$parameterReflection,
-				...self::parseType($parameter)
+				...$this->parseType($parameter)
 			);
 		}
 
@@ -46,7 +42,7 @@ final class SignatureAssertionUtil
 			}
 
 			if ($reflection->hasReturnType()) {
-				list($expectedReturnType, $expectingNullable) = self::parseType($expectedReturnType);
+				list($expectedReturnType, $expectingNullable) = $this->parseType($expectedReturnType);
 				$returnTypeReflection = $reflection->getReturnType();
 
 				$actuallyNullable = $returnTypeReflection->allowsNull();
@@ -68,7 +64,7 @@ final class SignatureAssertionUtil
 		}
 	}
 
-	private static function parseType(string $type): array
+	private function parseType(string $type): array
 	{
 		$cleanType = $type; // e.g. ?Namespace\Class
 		$nullable = FALSE;
@@ -79,7 +75,7 @@ final class SignatureAssertionUtil
 		return [$cleanType, $nullable];
 	}
 
-	private static function checkFunctionParameter(
+	private function checkFunctionParameter(
 		\ReflectionFunction $functionReflection,
 		\ReflectionParameter $parameterReflection,
 		string $expectedParameterType,
diff --git a/src/functions.php b/src/functions.php
index be14bca28f21cfba344c1d6a4c1be8eb0470aec1..a19f4199de21f4a7be5a61ed1caadde9fbd4a96c 100644
--- a/src/functions.php
+++ b/src/functions.php
@@ -8,6 +8,9 @@
 
 namespace Grifart\AssertFunction;
 
+/** @var \Grifart\AssertFunction\SignatureAssertionUtil $assertionUtil */
+$assertionUtil = NULL;
+
 function params(string ...$params): array
 {
 	return $params;
@@ -20,8 +23,12 @@ function nullable(string $classType): string
 
 function assertSignature(callable $function, array $parameters, ?string $expectedReturnType): void
 {
+	global $assertionUtil;
+	if(!$assertionUtil) {
+		$assertionUtil = new SignatureAssertionUtil();
+	}
 	try {
-		SignatureAssertionUtil::checkSignature(
+		$assertionUtil->checkSignature(
 			$function,
 			$parameters,
 			$expectedReturnType