         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: [
-        validateFunction,
-        ] + instantiateViewControllerFunctions,
+      functions: functions,
       structs: []
     )
   }

          "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 {
