add observer pattern and update README
merge