diff --git a/extension/Classes/Core/Helper/Path.php b/extension/Classes/Core/Helper/Path.php
index 78d426ad261fd211c4f741d427bf1b3b3d2d1972..2af5aa94d51f36325c46092a9acad3eefe4de18b 100644
--- a/extension/Classes/Core/Helper/Path.php
+++ b/extension/Classes/Core/Helper/Path.php
@@ -99,7 +99,7 @@ class Path
      */
     public static function absoluteApp(...$pathPartsToAppend): string
     {
-        return self::realpath(self::cwdToApp(), ...$pathPartsToAppend);
+        return self::realpath(self::cwdToApp(), $pathPartsToAppend);
     }
 
     /**
@@ -109,7 +109,7 @@ class Path
      */
     public static function absoluteExt(...$pathPartsToAppend): string
     {
-        return self::realpath(self::cwdToExt(), ...$pathPartsToAppend);
+        return self::realpath(self::cwdToExt(), $pathPartsToAppend);
     }
 
     /**
@@ -119,7 +119,7 @@ class Path
      */
     public static function absoluteLog(...$pathPartsToAppend): string
     {
-        return self::realpath(self::cwdToLog(), ...$pathPartsToAppend);
+        return self::realpath(self::cwdToLog(), $pathPartsToAppend);
     }
 
     /**
@@ -159,78 +159,86 @@ class Path
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToLog(/* path parts to append */): string
+    public static function cwdToLog(...$pathPartsToAppend): string
     {
         self::enforcePathIsSet(self::$cwdToLog);
-        return self::join(self::$cwdToLog, func_get_args());
+        return self::join(self::$cwdToLog, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToApp(/* path parts to append */): string
+    public static function cwdToApp(...$pathPartsToAppend): string
     {
         self::enforcePathIsSet(self::$cwdToApp);
-        return self::join(self::$cwdToApp, func_get_args());
+        return self::join(self::$cwdToApp, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function appToProject(/* path parts to append */): string
+    public static function appToProject(...$pathPartsToAppend): string
     {
         self::enforcePathIsSet(self::$appToProject);
-        return self::join(self::$appToProject, func_get_args());
+        return self::join(self::$appToProject, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToProject(/* path parts to append */): string
+    public static function cwdToProject(...$pathPartsToAppend): string
     {
-        return self::cwdToApp(self::appToProject(func_get_args()));
+        return self::cwdToApp(self::appToProject($pathPartsToAppend));
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function appToExt(/* path parts to append */): string
+    public static function appToExt(...$pathPartsToAppend): string
     {
-        return self::join(self::APP_TO_EXT, func_get_args());
+        return self::join(self::APP_TO_EXT, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToExt(/* path parts to append */): string
+    public static function cwdToExt(...$pathPartsToAppend): string
     {
-        return self::cwdToApp(self::APP_TO_EXT, func_get_args());
+        return self::cwdToApp(self::APP_TO_EXT, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function extToApi(/* path parts to append */): string
+    public static function extToApi(...$pathPartsToAppend): string
     {
-        return self::join(self::EXT_TO_API, func_get_args());
+        return self::join(self::EXT_TO_API, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function appToApi(/* path parts to append */): string
+    public static function appToApi(...$pathPartsToAppend): string
     {
-        return self::join(self::APP_TO_EXT, self::EXT_TO_API, func_get_args());
+        return self::join(self::APP_TO_EXT, self::EXT_TO_API, $pathPartsToAppend);
     }
 
     /**
@@ -308,15 +316,17 @@ class Path
     }
 
     /**
-     * Join the arguments together as a path.
-     * The second argument may be an array of parts. (further arguments are ignored in that case)
+     * Join the arguments together as a path. Array arguments are flattened!
+     * Trailing path parts may not start with '/'.
      *
+     * join(['this', 'is'], 'my/wonderful', [['path/of', 'nice'], 'things']) === 'this/is/my/wonderful/path/of/nice/things'
+     *
+     * @param array $pathPartsToAppend
      * @return string
-     * @throws \UserFormException  Don't remove.
      */
-    public static function join(/* path parts to append */): string
+    public static function join(...$pathPartsToAppend): string
     {
-        $parts = func_get_args();
+        $parts = $pathPartsToAppend;
 
         // concatenate all parts (arrays are flattened)
         $path = '';
@@ -493,6 +503,6 @@ EOF;
         if ($absolutePath === false) {
             Thrower::userFormException('Path not found.', "Either file/dir not exists or access not permitted: $cwdToSomethingThatExists.");
         }
-        return self::join($absolutePath, ...$pathPartsToAppend);
+        return self::join($absolutePath, $pathPartsToAppend);
     }
 }
\ No newline at end of file