6 - Applying observer pattern