 	///   - token: A lifetime token for detecting the deinitialization of the
 	///            associated object.
 	public convenience init(_ token: Token) {
-		self.init(ended: token.ended)
+		self.init(token.disposables)
 	}
 
 	/// Observe the termination of `self`.

/// Represents the lifetime of an object, and provides a hook to observe when
/// the object deinitializes.
public final class Lifetime {
	// MARK: Type properties and methods

	/// Factory method for creating a `Lifetime` and its associated `Token`.
	///
	/// - returns: A `(lifetime, token)` tuple.
	public static func make() -> (lifetime: Lifetime, token: Token) {
		let token = Token()
		return (Lifetime(token), token)
	}

	/// A `Lifetime` that has already ended.
	public static var empty: Lifetime {
		return Lifetime(ended: .empty)
	}

	// MARK: Instance properties

	/// A signal that sends a `completed` event when the lifetime ends.
	///
	/// - note: Consider using `Lifetime.observeEnded` if only a closure observer
	///         is to be attached.
 	public let ended: Signal<Never, NoError>

	// MARK: Initializers

	/// Initialize a `Lifetime` object with the supplied ended signal.
	///
	/// - parameters:
	///   - signal: The ended signal.
	private init(ended signal: Signal<Never, NoError>) {
		ended = signal
	}

	/// Initialize a `Lifetime` from a lifetime token, which is expected to be

	///            if `lifetime` has already ended.
	@discardableResult
	public func observeEnded(_ action: @escaping () -> Void) -> Disposable? {
		return disposables += action
	}
}

extension Lifetime {
	/// Factory method for creating a `Lifetime` and its associated `Token`.
	///
	/// - returns: A `(lifetime, token)` tuple.
	public static func make() -> (lifetime: Lifetime, token: Token) {
		let token = Token()
		return (Lifetime(token), token)
	}

	/// A `Lifetime` that has already ended.
	public static let empty: Lifetime = {
		let disposables = CompositeDisposable()
		disposables.dispose()
		return Lifetime(disposables)
	}()
}

extension Lifetime {
	/// A token object which completes its signal when it deinitializes.
	///
	/// It is generally used in conjuncion with `Lifetime` as a private
