 		}
 		
 		if let nextSignalProducer = nextSignalProducer {
-			subscribeToSignalProducer(nextSignalProducer, state)
+			startNextSignalProducer(nextSignalProducer, state)
 		} else if isComplete {
 			sendCompleted(state.value.observer)
 		}

}

/// Subscribes to the given signal producer.
private func subscribeToSignalProducer<T, E>(signalProducer: SignalProducer<T, E>, state: Atomic<ConcatState<T, E>>) {
	let serialDisposable = SerialDisposable()
	let serialDisposableCompositeHandle = state.value.disposable.addDisposable(serialDisposable)
	state.modify { (var state) in


		producer.startWithSignal { signal, signalDisposable in
			signal.observe(next: { innerSignalProducer in
				var shouldStart = true
				state.modify { (var state) in
					if !state.latestSignalCompleted {
						state.queuedSignalProducers.append(innerSignalProducer)
						shouldStart = false
						return state
					} else {
						return state
					}
				}
				
				if shouldStart {
					startNextSignalProducer(innerSignalProducer, state)
				}
			}, error: { error in
				sendError(observer, error)
