This project implements the observer pattern