2nd draft of Observer pattern. Good to go