The previous sections introduced the abstractions that RAC offers to describe signal. This section will introduce other collateral but usefull types.
PropertyType is a protocol that, when applied to a property, allows the observation of its changes. Its definition is as follows:
public protocol PropertyType {
    typealias Value
    var value: Value { get }
    var producer: SignalProducer<Value, NoError> { get }
}
The semantics of this protocol is neat:
Starting from this protocol, RAC introduces:
ConstantProperty, that represents a property that never changeMutableProperty,  that represents a mutable propertyPropertyOf, that represents a read-only view to a propertyThese types are really usefull when used in combination with the <~ operator, that binds properties together. The bind operator comes in three flavors:
/// Binds a signal to a property, updating the property's value to the latest
/// value sent by the signal.
public func <~ <P: MutablePropertyType>(property: P, signal: Signal<P.Value, NoError>) -> Disposable {}
/// 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
/// by the signal.
public func <~ <P: MutablePropertyType>(property: P, producer: SignalProducer<P.Value, NoError>) -> Disposable { }
/// Binds `destinationProperty` to the latest values of `sourceProperty`.
public func <~ <Destination: MutablePropertyType, Source: PropertyType where Source.Value == Destination.Value>(destinationProperty: Destination, sourceProperty: Source) -> Disposable { }
What these operators do is to create the wires that link each property to each others, in a declarative manner. Each property is observable, through its inner SignalProducer.