 	///
 	/// 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!
 

	/// 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) -> (() -> Void) {
		if let property = property as? AnyProperty<P.Value>, closure = property.capturingClosure {
			return closure
		} else {
			return { property }
		}
	}

	/// Applies `capture(_:)` on the supplied properties, and returns a closure that
	/// captures the resulting closures.
	private static func capture<P1: PropertyType, P2: PropertyType>(firstProperty: P1, _ secondProperty: P2) -> (() -> Void) {
		let firstClosure = capture(firstProperty)
		let secondClosure = capture(secondProperty)
		return { _ = (firstClosure, secondClosure) }
	}
}



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

			_value = { value }
			_producer = { propertyProducer }
