           return downloadDir
         else
           return defDir
+
+      if typeof downloadDir is "object"
+        basePath = downloadDir.basePath || 0
+        template = downloadDir.template || ""
+        defDir = downloadDir.default || ""
+        subPath = renderPathForTorrent(torrent, template, defDir)
+        return {
+            "basePath": basePath
+            "subPath": subPath
+        }    
+      else if typeof downloadDir is "number"
+        # Specifying Base-Path
+        return {
+            "basePath": downloadDir
+            "subPath": ""
+        }
+      else if typeof downloadDir is "string"
+        # Specifiying Sub-Path
+        basePath = 0 # Default
+        subPath = renderPathForTorrent(torrent, downloadDir, "")
+        return {
+            "basePath": basePath,
+            "subPath": subPath
+        }
       else
-        return downloadDir
+        # Unsupported
+        console.warn("Unsupported 'downloadDirs' configuration for category #{torrent.category}. Please check that.")
+        return def
     else
-      return null
+      return def

                eta: datum[10]
            }
            results.torrents.push(torrent)
        # console.log(results)
        return callback err, results
    )


  list: (callback) ->
    @utorrent.call("list", (err, data) ->
        return callback(err, null) if err
        results = {
            torrents: []
        }
