 
 /// Represents a property that's value is depended on Signal/Producer.
 /// i.e., Operator (<~) binds a signal to a property.
-public protocol DependentType: class, PropertyType {
+public protocol MutablePropertyType: class, PropertyType {
 	var value: Value { get set }
 }
 
 /// A mutable property of type T that allows observation of its changes.
 ///
 /// Instances of this class are thread-safe.
-public final class MutableProperty<T>: DependentType {
+public final class MutableProperty<T>: MutablePropertyType {
 	public typealias Value = T
 
 	private let observer: Signal<T, NoError>.Observer

///
/// The binding will automatically terminate when the property is deinitialized,
/// or when the signal sends a `Completed` event.
public func <~ <T, U: DependentType where U.Value == T>(property: U, signal: Signal<T, NoError>) -> Disposable {
	let disposable = CompositeDisposable()
	let propertyDisposable = property.producer.start(completed: {
		disposable.dispose()

///
/// The binding will automatically terminate when the property is deinitialized,
/// or when the created signal sends a `Completed` event.
public func <~ <T, U: MutablePropertyType where U.Value == T>(property: U, producer: SignalProducer<T, NoError>) -> Disposable {
	var disposable: Disposable!

	producer.startWithSignal { signal, signalDisposable in
