First pass at chain-of-responsibility/IObservable.

Much better de-coupling.