 	/// disposable is automatically disposed.
 	public var innerDisposable: Disposable? {
 		get {
-			return state.value.innerDisposable
+			return _innerDisposable.value
 		}
 
 		set(d) {
-			let oldState: State = state.modify { state in
-				defer { state.innerDisposable = d }
-				return state
-			}
-
-			oldState.innerDisposable?.dispose()
-			if oldState.isDisposed {
-				d?.dispose()
+			_innerDisposable.swap(d)?.dispose()
+			if let d = d, isDisposed {
+				d.dispose()
 			}
 		}
 	}

	}

	public var isDisposed: Bool {
		return disposables.value == nil
	}

	/// Initialize a `CompositeDisposable` containing the given sequence of

		}

		self.disposables = Atomic(bag)
		self.state = DisposableState()
	}
	
	/// Initialize a `CompositeDisposable` containing the given sequence of
