Added a basic implementation of signals and slots as a replacement for the current observer pattern