Added Mediator pattern