 }
 
 /// Subscribes to the given signal producer.
-private func subscribeToSignalProducer<T, E>(signalProducer: SignalProducer<T, E>, state: Atomic<ConcatState<T, E>>) {
+private func startNextSignalProducer<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 shouldSubscribe: Bool = true
				state.modify { (var state) in
					if !state.latestSignalCompleted {
						state.queuedSignalProducers.append(innerSignalProducer)
						shouldSubscribe = false
						return state
					} else {
						return state
					}
				}
				
				if shouldSubscribe {
					subscribeToSignalProducer(innerSignalProducer, state)
				}
			}, error: { error in
				sendError(observer, error)

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