add Mediator Design Pattern