observer pattern exercise done