add observer pattern and note-demo