     # ./Extensions/MatcherExtensions.fs
     # ./Extensions/WorldExtensions.fs
     #               
-    mkdirp.sync path.dirname(path.join(process.cwd(), config.output.fsharp))
-    mkdirp.sync path.join(process.cwd(), config.output.fsharp, "Systems")
-    mkdirp.sync path.join(process.cwd(), config.output.fsharp, "Extensions")
-
-    fs.writeFileSync(path.join(process.cwd(), config.output.fsharp, 
-      "Extensions/GlobalExtensions.fs"), sb.join('\n'))
-    
+
     # Components - overwrite
-    fs.writeFileSync(path.join(process.cwd(), config.output.fsharp, 
-      "Extensions/ComponentExtensions.fs"), s0.join('\n'))
-    
-    # Extensions - overwrite
-    for Name, ex of ext
-      fs.writeFileSync(path.join(process.cwd(), config.output.fsharp, 
-        "Extensions/#{Name}Extensions.fs"), ex.join('\n'))
-
-    # Systems - Do Not overwrite
-    for Name, sy of sys
-      fileName = path.join(process.cwd(), config.output.fsharp, "Systems/#{Name}.fs")
-      fs.writeFileSync(fileName, sy.join('\n')) unless fs.existsSync(fileName)
-
-      +    fs.writeFileSync(path.join(process.cwd(), config.src, 
+      "GeneratedComponents.kt"), s0.join('\n'))
+    
+    # Entity Extensions - overwrite
+    fs.writeFileSync(path.join(process.cwd(), config.src, 
+      "EntityExtensions.kt"), s1.join('\n'))
+
+    # Matcher Extensions - overwrite
+    fs.writeFileSync(path.join(process.cwd(), config.src, 
+      "MatcherExtensions.kt"), s2.join('\n'))
+
+    # Pool Extensions - overwrite
+    fs.writeFileSync(path.join(process.cwd(), config.src, 
+      "PoolExtensions.kt"), s3.join('\n'))

    when 'string'   then '""'
    when 'number'   then '0f'
    when 'any'      then 'null'
    else arg
    

params = (args) ->

  for arg in args
    name = arg.split(':')[0]
    type = getType(arg.split(':')[1])
    s.push "#{name}:#{type}"
    
  s.join(', ') 
  
