 
 	/// Attempts to load the project referenced by the options, and configure it
 	/// accordingly.
-	public func loadProject() -> ColdSignal<Project> {
-		return checkoutOptions.loadProject().on(next: { project in
-			// Never check out binaries if we're skipping the build step,
-			// because that means users may need the repository checkout.
-			if !self.buildAfterUpdate {
-				project.useBinaries = false
-			}
-		})
+	public func loadProject() -> SignalProducer<Project, CarthageError> {
+		return checkoutOptions.loadProject()
+			|> on(next: { project in
+				// Never check out binaries if we're skipping the build step,
+				// because that means users may need the repository checkout.
+				if !self.buildAfterUpdate {
+					project.useBinaries = false
+				}
+			})
 	}
 }

		return self(buildAfterUpdate: buildAfterUpdate, configuration: configuration, buildPlatform: buildPlatform, verbose: verbose, checkoutOptions: checkoutOptions)
	}

	public static func evaluate(m: CommandMode) -> Result<UpdateOptions, CommandantError> {
		return create
			<*> m <| Option(key: "configuration", defaultValue: "Release", usage: "the Xcode configuration to build (ignored if --no-build option is present)")
			<*> m <| Option(key: "platform", defaultValue: .All, usage: "the platform to build for (ignored if --no-build option is present)")

	public let verb = "update"
	public let function = "Update and rebuild the project's dependencies"

	public func run(mode: CommandMode) -> Result<(), CommandantError<CarthageError>> {
		return producerWithOptions(UpdateOptions.evaluate(mode))
			|> joinMap(.Merge) { options -> SignalProducer<(), CommandError> in
				return options.loadProject()
					|> joinMap(.Merge) { $0.updateDependencies() }
					|> then(options.buildProducer)
					|> promoteErrors
			}
			|> waitOnCommand
	}
}

