starting on observer pattern