 				}
 				
 				if shouldSubscribe {
-					subscribeToSignalProducer!(innerSignalProducer)
+					subscribeToSignalProducer(innerSignalProducer)
 				}
 			}, error: { error in
 				sendError(observer, error)

		let state = Atomic(ConcatState<T, E>())
		
		/// Subscribes to the given signal producer.
		var subscribeToSignalProducer: (SignalProducer<T, E> -> Void)?
		
		/// Sends completed to the subscriber if all signals are finished. Returns whether
		/// the outer signal was completed.
		let complete💯: Void -> Void = {
			sendCompleted(observer)
			
			// A strong reference is held to `subscribeToSignalProducer` until
			// completion, preventing it from deallocating early.
			subscribeToSignalProducer = nil
		}
		
		subscribeToSignalProducer = Z { recur, signalProducer in
			let serialDisposable = SerialDisposable()
			let serialDisposableCompositeHandle = disposable.addDisposable(serialDisposable)
			state.modify { (var state) in

				if let nextSignalProducer = nextSignalProducer {
					recur(nextSignalProducer)
				} else if isComplete {
					sendCompleted(observer)
				}
			})
		}
