add observer.py