 		subscribeToSignalProducer = Z { recur, signalProducer in
 			let serialDisposable = SerialDisposable()
 			let serialDisposableCompositeHandle = disposable.addDisposable(serialDisposable)
-			state.modify { oldState in
-				var newState = oldState
-				newState.activeDisposables.append(serialDisposable)
-				return newState
+			state.modify { (var state) in
+				state.activeDisposables.append(serialDisposable)
+				return state
 			}
 			
 			serialDisposable.innerDisposable = signalProducer.start(next: { value in

				var nextSignalProducer: SignalProducer<T, E>?
				
				serialDisposableCompositeHandle.remove()
				state.modify { oldState in
					var newState = oldState
					newState.activeDisposables.filter { $0 !== serialDisposable }
					if newState.queuedSignalProducers.count == 0 {
						completeIfAllowed(newState)
					} else {
						nextSignalProducer = newState.queuedSignalProducers[0]
						newState.queuedSignalProducers.removeAtIndex(0)
					}
					return newState
				}
				
				if let nextSignalProducer = nextSignalProducer {

		producer.startWithSignal { signal, signalDisposable in
			let outerSignalDisposable = signal.observe(next: { innerSignalProducer in
				var shouldSubscribe: Bool = true
				state.modify { (var state) in
					if state.activeDisposables.count >= 1 {
						state.queuedSignalProducers.append(innerSignalProducer)
						shouldSubscribe = false
						return state
					} else {
						return state
					}
				}
				
