Declarative reactive bindings using RxJS