Observer pattern implementation
Observer pattern implementation