public static function create($className, $arguments = null, $constructor = null, $reflection = null)
    {
        // get reflection if not passed
        if (!$reflection) {
            $reflection = new ReflectionClass($className);
        }

        // check for given arguments
        if ($arguments) {
            // check if parameter is already of type array
            if (!is_array($arguments)) {
                // if not make array
                $arguments = [$arguments];
            }

            // return instance with parameter
            return $reflection->newInstanceArgs($arguments);
        } else {
            // return instance without parameter
            return $reflection->newInstance();
        }
    }