studied Lars Vogel's Observer Pattern example