working on observer