further implementation of the observer pattern