 		_signal = { property.signal }
 	}
 
-	init(value: A, signal: Signal<A>) {
+	public init(value: A, signal: Signal<A>) {
 		let property = MutableProperty(value)
 		_ = property.bind(signal)
 		self.init(property: property)


public struct Property<A>: PropertyType {

	fileprivate let _value: () -> A
	fileprivate let _signal: () -> Signal<A>

	public var value: A {
		return _value()


public struct MutableProperty<A>: PropertyType {

	private let getter: () -> A
	private let setter: (A) -> ()

	public var value: A {
		get {
