add Pattern Observer for education purposes