     var enumsFound: [String:Any] = [:]
 
     func usage() -> Void {
-        let page1 = [
-            optAssetTemplates: ["[basename]", "creates a json template, specifically for the assets"],
-            optConfigTemplate: ["[file.json]", "creates a json template, specifically for the app"],
-            optConfig: ["[file.json]", "use config file for options, instead of command line"],
-            optValidate: ["[asset_file.json, ...]", "validates asset JSON file(s), requires \(optInputAssets)"],
-            optValidateIos: ["[asset_file.json, ...]", "validates iOS asset JSON file(s), requires \(optInputAssets)"],
-            optValidateAndroid: ["[asset_file.json, ...]", "validates Android asset JSON file(s), requires \(optInputAssets)"],
-            optValidateJavascript: ["[asset_file.json, ...]", "validates Javascript asset JSON file(s), requires \(optInputAssets)"],
-            optValidateNodejs: ["[asset_file.json, ...]", "validates NodeJS asset JSON file(s), requires \(optInputAssets)"],
-            optInput: ["[file.json]", "asset json file"],
-            optInputs: ["[file1.json file2.json ...]", "merges asset files and process"],
-            optInputAssets: ["[folder]", "asset source folder (read)"],
-            optOutSource: ["[source.java|swift|js]", "path to result of language"]
-        ]
-        let page2 = [
-            optOutSCSS: ["[source.scss]", "when using javascript/node path to scss file"],
-            optOutLocales: ["[folder]", "locale folder to write results"],
-            optJava: ["", "write java source"],
-            optKotlin: ["", "write kotlin source"],
-            optSwift: ["", "write swift source. Default is 4"],
-            optJavascript: ["", "write javascript source"],
-            optNodeJS: ["", "write nodejs source"],
-            optSwift3: ["", "write Swift 3 compatible Swift source (requires \(optSwift))"],
-            optSwift4: ["", "write Swift 4 compatible Swift source (requires \(optSwift))"],
-            optPlatformType: ["[\(optPlatformType.removeFirst())]", "\(keyIOS),  \(keyMacOS), \(keyAndroid), \(keyNodeJS). Is inffered"],
-            optUseAppAssetCatalog: ["", "write iOS app icons as an asset catalog"],
-            optOutAssets: ["[folder]", "asset root folder (write), typically iOS Resource, or Android app/src/main"],
-            optInputAssetsTag: ["[tag]", "optional git tag to pull repro at before processing"],
-            optVerbose: ["", "be verbose in details"],
-            optHelpKeys: ["", "display JSON keys and their use"],
-            optVersion: ["", "version"],
-            optLocaleOnly: ["", "when included, process localization files only"]
-        ]
-        let details = (page1 + page2) as! [String: [String]]
         var keyLength = 0
         var parmLength = 0
-        for (key, value) in details {
+        for (key, value) in usageDetails {
             if key.utf8.count > keyLength {
                 keyLength = key.utf8.count
             }

        }
    }
    
    func start(_ args: [String]) -> Void {
        if (findOption(args, option: "-h") || findOption(args, option: "-help") || args.count == 0) {
            usage()
            exit(0)
        }

        if (findOption(args, option: optHelpKeys)) {
            helpKeys()
            exit(0)

let optLangType = "-type"
let optPlatformType = "-platform"

let usagePage1 = [
    optAssetTemplates: ["[basename]", "creates a json template, specifically for the assets"],
    optConfigTemplate: ["[file.json]", "creates a json template, specifically for the app"],
    optConfig: ["[file.json]", "use config file for options, instead of command line"],
    optValidate: ["[asset_file.json, ...]", "validates asset JSON file(s), requires \(optInputAssets)"],
    optValidateIos: ["[asset_file.json, ...]", "validates iOS asset JSON file(s), requires \(optInputAssets)"],
    optValidateAndroid: ["[asset_file.json, ...]", "validates Android asset JSON file(s), requires \(optInputAssets)"],
    optValidateJavascript: ["[asset_file.json, ...]", "validates Javascript asset JSON file(s), requires \(optInputAssets)"],
    optValidateNodejs: ["[asset_file.json, ...]", "validates NodeJS asset JSON file(s), requires \(optInputAssets)"],
    optInput: ["[file.json]", "asset json file"],
    optInputs: ["[file1.json file2.json ...]", "merges asset files and process"],
    optInputAssets: ["[folder]", "asset source folder (read)"],
    optOutSource: ["[source.java|swift|js]", "path to result of language"]
]
let usagePage2 = [
    optOutSCSS: ["[source.scss]", "when using javascript/node path to scss file"],
    optOutLocales: ["[folder]", "locale folder to write results"],
    optJava: ["", "write java source"],
    optKotlin: ["", "write kotlin source"],
    optSwift: ["", "write swift source. Default is 4"],
    optJavascript: ["", "write javascript source"],
    optNodeJS: ["", "write nodejs source"],
    optSwift3: ["", "write Swift 3 compatible Swift source (requires \(optSwift))"],
    optSwift4: ["", "write Swift 4 compatible Swift source (requires \(optSwift))"],
    optPlatformType: ["[\(optPlatformType.removeFirst())]", "\(keyIOS),  \(keyMacOS), \(keyAndroid), \(keyNodeJS). Is inffered"],
    optUseAppAssetCatalog: ["", "write iOS app icons as an asset catalog"],
    optOutAssets: ["[folder]", "asset root folder (write), typically iOS Resource, or Android app/src/main"],
    optInputAssetsTag: ["[tag]", "optional git tag to pull repro at before processing"],
    optVerbose: ["", "be verbose in details"],
    optHelpKeys: ["", "display JSON keys and their use"],
    optVersion: ["", "version"],
    optLocaleOnly: ["", "when included, process localization files only"]
]
let usageDetails = (usagePage1 + usagePage2) as! [String: [String]]

let javaCommon =
"public final class Sango {\n" +
"    public static final String VERSION = \"\(App.copyrightNotice)\";\n" +
