 
   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 {

          "if _R.storyboard.\(sanitizedSwiftName(storyboard.name))().\(sanitizedSwiftName($0))() == nil { throw ValidationError(description:\"[R.swift] ViewController with identifier '\(sanitizedSwiftName($0))' could not be loaded from storyboard '\(storyboard.name)' as '\(vc.type)'.\") }"
        }
      }

    var implements = [TypePrinter(type: Type.Validatable, style: .FullyQualified)]
    var typealiasses: [Typealias] = []
    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))
    }

    let validateFunction = Function(
      isStatic: true,
      name: "validate",
      generics: nil,
      parameters: [],
      doesThrow: true,
      returnType: Type._Void,
      body: (validateImagesLines + validateViewControllersLines).joinWithSeparator("\n")
    )

    return Struct(
      type: Type(module: .Host, name: sanitizedSwiftName(storyboard.name)),

          )
        }
      }
      .forEach { functions.append($0) }

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