class Foo: ReactiveExtensionsProvider { let pipe = Signal.pipe() var bar: String = "Such bar!" { didSet { self.pipe.input.send(value: self.bar) } } } extension Reactive.Binds where Base: Foo { var bar: BindingTarget { return self.reactive.makeBindingTarget({ $0.bar = $1 }) } } extension Reactive.Signals where Base: Foo { var bar: Signal { return self.base.pipe.output } } extension Reactive.Producers where Base: Foo { var bar: SignalProducer { return self.reactive.signal.bar.producer.prefix(value: self.base.bar) } }