Observer pattern with IObservable<T>