 	/// The producer and the signal of the created property would complete only
 	/// when the `propertyProducer` completes.
 	private init(propertyProducer: SignalProducer<Value, NoError>, capturing sources: [Any]) {
-		var observerDisposable: Disposable?
 		var value: Value!
 
-		observerDisposable = propertyProducer.start { event in
+		let observerDisposable = propertyProducer.start { event in
 			switch event {
 			case let .Next(newValue):
 				value = newValue
 
 			case .Completed, .Interrupted:
-				observerDisposable?.dispose()
+				break
 
 			case let .Failed(error):
 				fatalError("Receive unexpected error from a producer of `NoError` type: \(error)")

/// deinitialized.
public func <~ <Destination: MutablePropertyType, Source: PropertyType where Source.Value == Destination.Value>(destinationProperty: Destination, sourceProperty: Source) -> Disposable {
	return destinationProperty <~ sourceProperty.producer
}
		}

		if value != nil {
			disposable = ScopedDisposable(observerDisposable)
			self.sources = sources

			_value = { value }
