added pollice's interfaces for observer pattern