 
 		var nextSignalProducer: SignalProducer<Value, Error>?
 
-		queuedSignalProducers.modify { (var queue) in
+		queuedSignalProducers.modify { queue in
 			// Active producers remain in the queue until completed. Since
 			// dequeueing happens at completion of the active producer, the
 			// first producer in the queue can be removed.
-			if !queue.isEmpty { queue.removeAtIndex(0) }
-			nextSignalProducer = queue.first
-			return queue
+			var mutableQueue = queue
+			if !mutableQueue.isEmpty { mutableQueue.removeAtIndex(0) }
+			nextSignalProducer = mutableQueue.first
+			return mutableQueue
 		}
 
 		return nextSignalProducer

				case let .Failed(error):
					observer.sendFailed(error)
				case .Completed:
					let original = state.modify { (var state) in
						state.outerSignalComplete = true
						return state
					}

					if original.innerSignalComplete {

				switch event {
				case let .Next(innerProducer):
					innerProducer.startWithSignal { innerSignal, innerDisposable in
						state.modify { state in
							// When we replace the disposable below, this prevents the
							// generated Interrupted event from doing any work.
							var mutableState = state
							mutableState.replacingInnerSignal = true
							return mutableState
						}

						latestInnerDisposable.innerDisposable = innerDisposable

						state.modify { state in
							var mutableState = state
							mutableState.replacingInnerSignal = false
							mutableState.innerSignalComplete = false
							return mutableState
						}

						innerSignal.observe { event in
