 				}
 
 				pending("should tear down the binding when the property deallocates") {
-//					let signalValues = [1, 2, 3]
-//					let signalProducer = SignalProducer<Int, NoError>(values: signalValues)
-//
-//					var mutableProperty: MutableProperty<Int>? = MutableProperty(0)
+//					let signalValues = [initialPropertyValue, subsequentPropertyValue]
+//					let signalProducer = SignalProducer<String, NoError>(values: signalValues)
+//
+//					var mutableProperty: MutableProperty<String>? = MutableProperty(initialPropertyValue)
 //
 //					let disposable = mutableProperty! <~ signalProducer
 //

				}

				pending("should tear down the binding when disposed") {
//					let signalValues = [1, 2, 3]
//					let signalProducer = SignalProducer<Int, NoError>(values: signalValues)
//
//					let mutableProperty: MutableProperty<Int> = MutableProperty(0)
//
//					let disposable = mutableProperty <~ signalProducer
//


		describe("PropertyOf") {
			it("should pass through behaviors of the input property") {
				let constantProperty = ConstantProperty(initialPropertyValue)
				let propertyOf = PropertyOf(constantProperty)

				var sentValue: String?
				var producerCompleted = false

				propertyOf.producer.start(next: { value in
					sentValue = value
				}, completed: {
					producerCompleted = true
				})

				expect(sentValue).to(equal(initialPropertyValue))
				expect(producerCompleted).to(beTruthy())
			}
		}

		describe("binding") {
			describe("from a Signal") {
				it("should update the property with values sent from the signal") {
					let (signal, observer) = Signal<String, NoError>.pipe()

					let mutableProperty = MutableProperty(initialPropertyValue)

					mutableProperty <~ signal

					// Verify that the binding hasn't changed the property value:
					expect(mutableProperty.value).to(equal(initialPropertyValue))

					sendNext(observer, subsequentPropertyValue)
					expect(mutableProperty.value).to(equal(subsequentPropertyValue))
				}

				it("should tear down the binding when disposed") {
					let (signal, observer) = Signal<String, NoError>.pipe()

					let mutableProperty = MutableProperty(initialPropertyValue)

					let bindingDisposable = mutableProperty <~ signal
					bindingDisposable.dispose()

					sendNext(observer, subsequentPropertyValue)
					expect(mutableProperty.value).to(equal(initialPropertyValue))
				}

				it("should tear down the binding when the property deallocates") {
					let (signal, observer) = Signal<String, NoError>.pipe()

					var mutableProperty: MutableProperty<String>? = MutableProperty(initialPropertyValue)

					let bindingDisposable = mutableProperty! <~ signal

