added Observer class