             }
         }
     }
+    
+    public func build() -> String {
+        var text = commonCode
 
+        for (name, scenes) in storyboards {
+            let enumName = name.asSwiftIdentifier(forbiddenChars: "_")
+            text += "enum \(enumName) : String, StoryboardScene {\n"
+            text += "    static let storyboardName = \"\(name)\"\n"
+            
+            if !scenes.isEmpty {
+                text += "\n"
+                
+                for scene in scenes {
+                    let caseName = scene.storyboardID.asSwiftIdentifier(forbiddenChars: "_")
+                    let lcCaseName = lowercaseFirst(caseName)
+                    let vcClass = scene.customClass ?? "UIViewController"
+                    let cast = scene.customClass == nil ? "" : " as! \(vcClass)"
+
+                    text += "    case \(caseName) = \"\(scene.storyboardID)\"\n"
+                    text += "    static var \(lcCaseName)ViewController : \(vcClass) {\n"
+                    text += "        return \(enumName).\(caseName).viewController()\(cast)\n"
+                    text += "    }\n\n"
+
+                }
+            }
+            
+            text += "}\n\n"
+        }
+        
+        return text
+    }
+    
+    
+    
+    
+    // MARK: - Private Helpers
     
     private var commonCode : String = {
         var text = "// AUTO-GENERATED FILE, DO NOT EDIT\n\n"

        let lettersToLower = count > 1 ? count-1 : count
        return ns.substringToIndex(lettersToLower).lowercaseString + ns.substringFromIndex(lettersToLower)
    }
    
    public func build() -> String {
        var text = commonCode

        for (name, identifiers) in storyboards {
            let enumName = name.asSwiftIdentifier(forbiddenChars: "_")
            text += "enum \(enumName) : String, StoryboardScene {\n"
            text += "    static let storyboardName = \"\(name)\"\n"
            
            if !identifiers.isEmpty {
                text += "\n"
                
                for sceneInfo in identifiers {
                    let caseName = sceneInfo.identifier.asSwiftIdentifier(forbiddenChars: "_")
                    let lcCaseName = lowercaseFirst(caseName)
                    let vcClass = sceneInfo.customClass ?? "UIViewController"
                    let cast = sceneInfo.customClass == nil ? "" : " as! \(vcClass)"

                    text += "    case \(caseName) = \"\(sceneInfo.identifier)\"\n"
                    text += "    static var \(lcCaseName)ViewController : \(vcClass) {\n"
                    text += "        return \(enumName).\(caseName).viewController()\(cast)\n"
                    text += "    }\n\n"

                }
            }
            
            text += "}\n\n"
        }
        
        return text
    }
}


        text += "    static func initialViewController() -> UIViewController\n"
        text += "    func viewController() -> UIViewController\n"
        text += "    static func viewController(identifier: Self) -> UIViewController\n"
        
        text += "}\n"
        text += "\n"
        text += "extension StoryboardScene where Self.RawValue == String {\n"
