 	///
 	/// The producer and the signal of the created property would complete only
 	/// when the `propertyProducer` completes.
-	private init(propertyProducer: SignalProducer<Value, NoError>, capturing closure: (() -> Void)? = nil) {
+	private init(propertyProducer: SignalProducer<Value, NoError>, capturing sources: [Any]) {
 		var observerDisposable: Disposable!
 		var value: Value!
 


		if value != nil {
			disposable = ScopedDisposable(observerDisposable)
			capturingClosure = closure

			_value = { value }
			_producer = { propertyProducer }

	/// Check if `property` is an `AnyProperty` and has already captured its sources
	/// using a closure. Returns that closure if it does. Otherwise, returns a closure
	/// which captures `property`.
	private static func capture<P: PropertyType>(property: P) -> [Any] {
		if let property = property as? AnyProperty<P.Value> {
			return property.sources
		} else {
			return [property]
		}
	}
}

