diff --git a/composer.json b/composer.json
index 23b6b9e..a6a8d63 100644
--- a/composer.json
+++ b/composer.json
@@ -63,7 +63,7 @@
         "test-server": "echo \"Running Test Server\" && php -S localhost:8000 -t tests/server/",
         "test-server-v2": "echo \"Running Test Server\" && php -S localhost:8000 -t tests/server-v2/",
         "test-coverage:win": "del clover.xml && phpunit --coverage-html=coverage --coverage-clover=clover.xml && coverage-check clover.xml 100",
-        "lint": "phpstan --no-progress -cphpstan.neon",
+        "lint": "phpstan --no-progress --memory-limit=256M -cphpstan.neon",
         "beautify": "phpcbf --standard=phpcs.xml",
         "phpcs": "phpcs --standard=phpcs.xml -n",
         "post-install-cmd": [
diff --git a/flight/Engine.php b/flight/Engine.php
index eca1d19..63fd05d 100644
--- a/flight/Engine.php
+++ b/flight/Engine.php
@@ -34,19 +34,19 @@ use flight\net\Route;
  * @method EventDispatcher eventDispatcher() Gets event dispatcher
  *
  * # Routing
- * @method Route route(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method Route route(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a URL to a callback function with all applicable methods
- * @method void group(string $pattern, callable $callback, array<int, callable|object> $group_middlewares = [])
+ * @method void group(string $pattern, callable $callback, (class-string|callable|array{0: class-string, 1: string})[] $group_middlewares = [])
  * Groups a set of routes together under a common prefix.
- * @method Route post(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method Route post(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a POST URL to a callback function.
- * @method Route put(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method Route put(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a PUT URL to a callback function.
- * @method Route patch(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method Route patch(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a PATCH URL to a callback function.
- * @method Route delete(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method Route delete(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a DELETE URL to a callback function.
- * @method void resource(string $pattern, string $controllerClass, array<string, string|array<string>> $methods = [])
+ * @method void resource(string $pattern, class-string $controllerClass, array<string, string|array<string>> $methods = [])
  * Adds standardized RESTful routes for a controller.
  * @method Router router() Gets router
  * @method string getUrl(string $alias) Gets a url from an alias
@@ -85,10 +85,29 @@ class Engine
      * @var array<string> List of methods that can be extended in the Engine class.
      */
     private const MAPPABLE_METHODS = [
-        'start', 'stop', 'route', 'halt', 'error', 'notFound',
-        'render', 'redirect', 'etag', 'lastModified', 'json', 'jsonHalt', 'jsonp',
-        'post', 'put', 'patch', 'delete', 'group', 'getUrl', 'download', 'resource',
-        'onEvent', 'triggerEvent'
+        'start',
+        'stop',
+        'route',
+        'halt',
+        'error',
+        'notFound',
+        'render',
+        'redirect',
+        'etag',
+        'lastModified',
+        'json',
+        'jsonHalt',
+        'jsonp',
+        'post',
+        'put',
+        'patch',
+        'delete',
+        'group',
+        'getUrl',
+        'download',
+        'resource',
+        'onEvent',
+        'triggerEvent'
     ];
 
     /** @var array<string, mixed> Stored variables. */
@@ -425,26 +444,26 @@ class Engine
             if ($eventName === Dispatcher::FILTER_BEFORE && is_object($middleware) === true && ($middleware instanceof Closure)) {
                 $middlewareObject = $middleware;
 
-            // If the object has already been created, we can just use it if the event name exists.
+                // If the object has already been created, we can just use it if the event name exists.
             } elseif (is_object($middleware) === true) {
-                $middlewareObject = method_exists($middleware, $eventName) === true ? [ $middleware, $eventName ] : false;
+                $middlewareObject = method_exists($middleware, $eventName) === true ? [$middleware, $eventName] : false;
 
-            // If the middleware is a string, we need to create the object and then call the event.
+                // If the middleware is a string, we need to create the object and then call the event.
             } elseif (is_string($middleware) === true && method_exists($middleware, $eventName) === true) {
                 $resolvedClass = null;
 
                 // if there's a container assigned, we should use it to create the object
                 if ($this->dispatcher->mustUseContainer($middleware) === true) {
                     $resolvedClass = $this->dispatcher->resolveContainerClass($middleware, $params);
-                // otherwise just assume it's a plain jane class, so inject the engine
-                // just like in Dispatcher::invokeCallable()
+                    // otherwise just assume it's a plain jane class, so inject the engine
+                    // just like in Dispatcher::invokeCallable()
                 } elseif (class_exists($middleware) === true) {
                     $resolvedClass = new $middleware($this);
                 }
 
                 // If something was resolved, create an array callable that will be passed in later.
                 if ($resolvedClass !== null) {
-                    $middlewareObject = [ $resolvedClass, $eventName ];
+                    $middlewareObject = [$resolvedClass, $eventName];
                 }
             }
 
diff --git a/flight/Flight.php b/flight/Flight.php
index 7e43877..064bd16 100644
--- a/flight/Flight.php
+++ b/flight/Flight.php
@@ -34,19 +34,19 @@ require_once __DIR__ . '/autoload.php';
  * @method EventDispatcher eventDispatcher() Gets event dispatcher
  *
  * # Routing
- * @method static Route route(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method static Route route(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Maps a URL pattern to a callback with all applicable methods.
- * @method static void group(string $pattern, callable $callback, callable[] $group_middlewares = [])
+ * @method static void group(string $pattern, callable $callback, (class-string|callable|array{0: class-string, 1: string})[] $group_middlewares = [])
  * Groups a set of routes together under a common prefix.
- * @method static Route post(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method static Route post(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a POST URL to a callback function.
- * @method static Route put(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method static Route put(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a PUT URL to a callback function.
- * @method static Route patch(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method static Route patch(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a PATCH URL to a callback function.
- * @method static Route delete(string $pattern, callable|string $callback, bool $pass_route = false, string $alias = '')
+ * @method static Route delete(string $pattern, callable|string|array{0: class-string, 1: string} $callback, bool $pass_route = false, string $alias = '')
  * Routes a DELETE URL to a callback function.
- * @method static void resource(string $pattern, string $controllerClass, array<string, string|array<string>> $methods = [])
+ * @method static void resource(string $pattern, class-string $controllerClass, array<string, string|array<string>> $methods = [])
  * Adds standardized RESTful routes for a controller.
  * @method static Router router() Returns Router instance.
  * @method static string getUrl(string $alias, array<string, mixed> $params = []) Gets a url from an alias
diff --git a/flight/net/Router.php b/flight/net/Router.php
index 8025024..455fdb4 100644
--- a/flight/net/Router.php
+++ b/flight/net/Router.php
@@ -56,12 +56,20 @@ class Router
      *
      * @var array<int, string>
      */
-    protected array $allowedMethods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];
+    protected array $allowedMethods = [
+        'GET',
+        'POST',
+        'PUT',
+        'PATCH',
+        'DELETE',
+        'HEAD',
+        'OPTIONS'
+    ];
 
     /**
      * Gets mapped routes.
      *
-     * @return array<int,Route> Array of routes
+     * @return array<int, Route> Array of routes
      */
     public function getRoutes(): array
     {
@@ -80,7 +88,7 @@ class Router
      * Maps a URL pattern to a callback function.
      *
      * @param string $pattern URL pattern to match.
-     * @param callable|string $callback Callback function or string class->method
+     * @param callable|string|array{0: class-string, 1: string} $callback Callback function or string `class->method`
      * @param bool $pass_route Pass the matching route object to the callback.
      * @param string $route_alias Alias for the route.
      */
@@ -133,7 +141,7 @@ class Router
      * Creates a GET based route
      *
      * @param string   $pattern    URL pattern to match
-     * @param callable|string $callback Callback function or string class->method
+     * @param callable|string|array{0: class-string, 1: string} $callback Callback function or string `class->method`
      * @param bool     $pass_route Pass the matching route object to the callback
      * @param string   $alias      Alias for the route
      */
@@ -146,7 +154,7 @@ class Router
      * Creates a POST based route
      *
      * @param string   $pattern    URL pattern to match
-     * @param callable|string $callback Callback function or string class->method
+     * @param callable|string|array{0: class-string, 1: string} $callback Callback function or string `class->method`
      * @param bool     $pass_route Pass the matching route object to the callback
      * @param string   $alias      Alias for the route
      */
@@ -159,7 +167,7 @@ class Router
      * Creates a PUT based route
      *
      * @param string   $pattern    URL pattern to match
-     * @param callable|string $callback Callback function or string class->method
+     * @param callable|string|array{0: class-string, 1: string} $callback Callback function or string `class->method`
      * @param bool     $pass_route Pass the matching route object to the callback
      * @param string   $alias      Alias for the route
      */
@@ -172,7 +180,7 @@ class Router
      * Creates a PATCH based route
      *
      * @param string   $pattern    URL pattern to match
-     * @param callable|string $callback Callback function or string class->method
+     * @param callable|string|array{0: class-string, 1: string} $callback Callback function or string `class->method`
      * @param bool     $pass_route Pass the matching route object to the callback
      * @param string   $alias      Alias for the route
      */
@@ -185,7 +193,7 @@ class Router
      * Creates a DELETE based route
      *
      * @param string   $pattern    URL pattern to match
-     * @param callable|string $callback Callback function or string class->method
+     * @param callable|string|array{0: class-string, 1: string} $callback Callback function or string `class->method`
      * @param bool     $pass_route Pass the matching route object to the callback
      * @param string   $alias      Alias for the route
      */
@@ -199,7 +207,7 @@ class Router
      *
      * @param string $groupPrefix group URL prefix (such as /api/v1)
      * @param callable $callback The necessary calling that holds the Router class
-     * @param array<int, callable|object> $groupMiddlewares
+     * @param (class-string|callable|array{0: class-string, 1: string})[] $groupMiddlewares
      * The middlewares to be applied to the group. Example: `[$middleware1, $middleware2]`
      */
     public function group(string $groupPrefix, callable $callback, array $groupMiddlewares = []): void
@@ -226,7 +234,7 @@ class Router
             if ($urlMatches === true && $methodMatches === true) {
                 $this->executedRoute = $route;
                 return $route;
-            // capture the route but don't execute it. We'll use this in Engine->start() to throw a 405
+                // capture the route but don't execute it. We'll use this in Engine->start() to throw a 405
             } elseif ($urlMatches === true && $methodMatches === false) {
                 $this->executedRoute = $route;
             }
@@ -240,7 +248,7 @@ class Router
      * Gets the URL for a given route alias
      *
      * @param string $alias  the alias to match
-     * @param array<string,mixed>  $params the parameters to pass to the route
+     * @param array<string, mixed>  $params the parameters to pass to the route
      */
     public function getUrlByAlias(string $alias, array $params = []): string
     {
@@ -311,7 +319,7 @@ class Router
                 return in_array($key, $only, true) === true;
             }, ARRAY_FILTER_USE_KEY);
 
-        // Exclude these controller methods
+            // Exclude these controller methods
         } elseif (isset($options['except']) === true) {
             $except = $options['except'];
             $defaultMapping = array_filter($defaultMapping, function ($key) use ($except) {
@@ -331,7 +339,7 @@ class Router
                 foreach ($defaultMapping as $controllerMethod => $methodPattern) {
                     $router->map(
                         $methodPattern,
-                        [ $controllerClass, $controllerMethod ]
+                        [$controllerClass, $controllerMethod]
                     )->setAlias($aliasBase . '.' . $controllerMethod);
                 }
             },