Adding the Observer Pattern