 }
 
 extension SignalType where Value: SignalProducerType, Error == Value.Error {
-	/// Merges a `signal` of SignalProducers down into a single signal, biased toward the producer
-	/// added earlier. Returns a Signal that will forward events from the inner producers as they arrive.
+	/// Merges a `signal` of SignalProducers down into a single signal, biased
+	/// toward the producer added earlier. Returns a Signal that will forward
+	/// events from the inner producers as they arrive.
 	private func merge() -> Signal<Value.Value, Error> {
 		return Signal<Value.Value, Error> { relayObserver in
 			let disposable = CompositeDisposable()

}

extension SignalProducerType where Value: SignalProducerType, Error == NoError {
	/// Flattens the inner producers sent upon `producer` (into a single 
	/// producer of values), according to the semantics of the given strategy.
	///
	/// - note: If an active inner producer fails, the returned producer will 
	///         forward that failure immediately.
	///
	/// - warning: `Interrupted` events on inner producers will be treated like 
	///            `Completed` events on inner producers.
	@warn_unused_result(message="Did you forget to call `start` on the producer?")
	public func flatten(strategy: FlattenStrategy) -> SignalProducer<Value.Value, Value.Error> {

					innerSignal.observe { event in
						switch event {
						case .Interrupted:
							// If interruption occurred as a result of a new
							// producer arriving, we don't want to notify our
							// observer.
							let original = state.modify {
								var state = $0
								if !state.replacingInnerSignal {
