                 case .Next(let isActive):
                     if (isActive.unbox) {
                         // forward event from input signal to output
-                        signalDisposable = signal.observe(Signal.Observer { event in
-                            observer.put(event)
-                        })
-                        
+                        signalDisposable = signal.observe(observer)
                         signalDisposableHandle = compositeDisposable.addDisposable(signalDisposable)
                     } else {
                         signalDisposable?.dispose()

            compositeDisposable.addDisposable(activeDisposable)
        }
    }
}
import MVVMKit

class ViewModel {
    static let inactiveThrottleInterval: NSTimeInterval = 1
    
    //todo: to remove reference to UIKit it's better to let Router init this property
    var router: Router {
        return (UIApplication.sharedApplication().delegate! as! UIMVVMApplication).router
