 
   private static func storyboardStructForStoryboard(storyboard: Storyboard) -> Struct {
 
-    let instantiateViewControllerFunctions = storyboard.viewControllers
+    var implements: [TypePrinter] = []
+    var typealiasses: [Typealias] = []
+    var functions: [Function] = []
+
+    if let initialViewController = storyboard.initialViewController {
+      implements.append(TypePrinter(type: Type.StoryboardResourceWithInitialControllerType))
+      typealiasses.append(Typealias(alias: "InitialController", type: initialViewController.type))
+    } else {
+      implements.append(TypePrinter(type: Type.StoryboardResourceType))
+    }
+
+    storyboard.viewControllers
       .flatMap { (vc) -> Function? in
         let getterCast = (vc.type.asNonOptional() == Type._UIViewController) ? "" : " as? \(vc.type.asNonOptional())"
         return vc.storyboardIdentifier.map {

          )
        }
      }

    let validateImagesLines = Set(storyboard.usedImageIdentifiers)
      .map {

        Let(isStatic: false, name: "name", typeDefinition: .Inferred(Type._String), value: "\"\(storyboard.name)\""),
        Let(isStatic: false, name: "bundle", typeDefinition: .Inferred(Type._NSBundle), value: "_R.hostingBundle"),
      ],
      functions: functions,
      structs: []
    )
  }
