Added Mediator pattern alongwith Observer pattern