 			self.start { signal, innerDisposable in
 				outerDisposable.addDisposable(innerDisposable)
 
-				transform(signal).observe(observer)
+				let signalDisposable = transform(signal).observe(observer)
+				outerDisposable.addDisposable(signalDisposable)
+				
 				return
 			}
-
-			return
 		}
 	}
 }

	/// Returns a Disposable which can be used to cancel the work associated
	/// with the Signal, and prevent any future callbacks from being invoked.
	public func start(next: T -> () = doNothing, error: NSError -> () = doNothing, completed: () -> () = doNothing) -> Disposable {
		return start { signal, disposable in
			signal.observe(next: next, error: error, completed: completed)
			return
		}
	}

	/// Lifts a Signal operator to operate upon SignalProducers instead.

	///
	/// Returns a Disposable which can be used to cancel the work associated
	/// with the Signal, and prevent any future events from being sent.
	public func start(setUp: (Signal<T>, CompositeDisposable) -> ()) {
		let (signal, observer) = Signal<T>.pipe()
		setUp(signal, signal.disposable)

		if !signal.disposable.disposed {
			startHandler(observer, signal.disposable)
		}
	}

	/// Creates a Signal from the producer, then attaches the given sink to the
