Added the Observer pattern