 					}
 
 				return allowedVersions
+					|> startOn(scheduler)
+					|> observeOn(scheduler)
 					|> map { DependencyNode(project: dependency.project, proposedVersion: $0, versionSpecifier: dependency.version) }
 					|> reduce([]) { $0 + [ $1 ] }
 					|> map(sorted)

	/// of those dependencies (chosen from among the versions that actually
	/// exist for each).
	private func nodePermutationsForCartfile(cartfile: Cartfile) -> SignalProducer<[DependencyNode], CarthageError> {
		return SignalProducer(values: cartfile.dependencies)
			|> map { dependency -> SignalProducer<DependencyNode, CarthageError> in
				let allowedVersions = SignalProducer<String?, CarthageError>.try {

					}
			}
			|> collect
			|> observeOn(scheduler)
			|> flatMap(.Concat) { nodeProducers in permutations(nodeProducers) }
	}

