UML diagram illustratin the different design patterns used: Observer, Proxy, Strategy, Command, Iterator and MVC