Added infrastructure for observer pattern