             }
 
             guard let pbxTarget = pbxProj.targets(named: buildTarget.target.name).first else {
-                throw SchemeGenerationError.missingTarget(buildTarget, projectPath: projectFilePath)
+                fatalError("Unable to find target named \"\(buildTarget.target)\" in \"PBXProj.targets\"")
             }
 
             let buildableName: String

    }
}

enum SchemeGenerationError: Error, CustomStringConvertible {

    case unresolvableBuildableName(Scheme.BuildTarget)
    case missingTarget(Scheme.BuildTarget, projectPath: String)
    case missingProject(String)

    var description: String {
        switch self {
        case .unresolvableBuildableName(let buildTarget):
            return "Unable to determinate \"buildableName\" for build target: \(buildTarget.target)"
        case .missingTarget(let buildTarget, let projectPath):
            return "Unable to find target named \"\(buildTarget.target)\" in \"\(projectPath)\""
        case .missingProject(let project):
            return "Unable to find project reference named \"\(project)\" in project.yml"
        }
    }
}

extension Scheme {
    public init(name: String, target: Target, targetScheme: TargetScheme, debugConfig: String, releaseConfig: String) {
        self.init(

                guard let _buildableName =
                        project.getTarget(buildTarget.target.name)?.filename ??
                        project.getAggregateTarget(buildTarget.target.name)?.name else {
                    fatalError("Unable to determinate \"buildableName\" for build target: \(buildTarget.target)")
                }
                buildableName = _buildableName
            }
