Implementation of the Observer object-oriented design pattern
