Exercise: Observer pattern
Exercise: Singleton pattern
setup