Added mediator pattern