 ///
 /// The binding will automatically terminate when the property is deinitialized,
 /// or when the signal sends a `Completed` event.
-public func <~ <T>(property: Property<T>, signal: Signal<T>)
+public func <~ <T>(property: MutableProperty<T>, signal: Signal<T>)
 
 /// Creates a signal from the given producer, which will be immediately bound to
 /// the given property, updating the property's value to the latest value sent

/// A mutable property of type T that allows observation of its changes.
///
/// Instances of this class are thread-safe.
public final class Property<T> {
	/// The current value of the property.
	///
	/// Setting this to a new value will notify all observers of any Signals
	/// created from the `values` producer.
	public var value: T { get set }

	/// A producer for a signal that will send the property's current value,
	/// followed by all changes over time, then complete when the property has
	/// deinitialized.
	public let valuesProducer: SignalProducer<T>

	/// Initializes a property with the given value to start.
	public init(_ initialValue: T)
}

infix operator <~ {
	associativity right

///
/// The binding will automatically terminate when the property is deinitialized,
/// or when the created signal sends a `Completed` event.
public func <~ <T>(property: MutableProperty<T>, producer: SignalProducer<T>)

/// Binds `destinationProperty` to the latest values of `sourceProperty`.
///
/// The binding will automatically terminate when either property is
/// deinitialized.
public func <~ <T>(destinationProperty: MutableProperty<T>, sourceProperty: Property<T>)
