 }
 
 /// Subscribes to the given signal producer.
-private func startNextSignalProducer<T, E>(signalProducer: SignalProducer<T, E>, state: Atomic<ConcatState<T, E>>) {
+private func startNextSignalProducer<T, E>(signalProducer: SignalProducer<T, E>, state: ConcatState<T, E>) {
 	let serialDisposable = SerialDisposable()
-	let serialDisposableCompositeHandle = state.value.disposable.addDisposable(serialDisposable)
-	state.modify { (var state) in
+	let serialDisposableCompositeHandle = state.disposable.addDisposable(serialDisposable)
+	state.atomic.modify {
 		state.latestSignalCompleted = false
-		return state
 	}
 	
 	serialDisposable.innerDisposable = signalProducer.start(next: { value in
-		sendNext(state.value.observer, value)
+		sendNext(state.observer, value)
 	}, error: { error in
-		sendError(state.value.observer, error)
+		sendError(state.observer, error)
 	}, completed: {
 		var nextSignalProducer: SignalProducer<T, E>?
 		var isComplete = false
 
 		serialDisposableCompositeHandle.remove()
-		state.modify { (var state) in
+		state.atomic.modify {
 			state.latestSignalCompleted = true
 			if state.queuedSignalProducers.isEmpty {
 				isComplete = state.isComplete
 			} else {
 				nextSignalProducer = state.queuedSignalProducers.removeAtIndex(0)
 			}
-			return state
 		}
 		
 		if let nextSignalProducer = nextSignalProducer {
 			startNextSignalProducer(nextSignalProducer, state)
 		} else if isComplete {
-			sendCompleted(state.value.observer)
+			sendCompleted(state.observer)
 		}
 	})
 }
 
-private struct ConcatState<T, E: ErrorType> {
+private final class ConcatState<T, E: ErrorType> {
 	/// The observer of a started `concat` producer.
 	let observer: Signal<T, E>.Observer
 

			}, completed: {
				var isComplete = false

				state.modify { (var state) in
					state.selfCompleted = true
					isComplete = state.isComplete
					return state
				}

				if isComplete {

		self.observer = observer
		self.disposable = disposable
	}

	let atomic = Atomic()

	/// Whether the signal-of-signals has completed yet.
	var selfCompleted = false
