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

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


					// Each producer represents all evaluations of one subtree.
					|> map { node in self.graphPermutationsForDependenciesOfNode(node, basedOnGraph: graph) }
					|> collect
					|> observeOn(QueueScheduler(name: "org.carthage.CarthageKit.Resolver.graphPermutationsForEachNode"))
					|> flatMap(.Concat) { graphProducers in permutations(graphProducers) }
					|> flatMap(.Concat) { graphs -> SignalProducer<Event<DependencyGraph, CarthageError>, CarthageError> in
						let mergedGraphs = SignalProducer(values: graphs)
