Use observer pattern for notify events