Added Observer/MVC pattern