Laboratory 2
Initial implementation of the observer pattern