Introducing mediator pattern