The mediator design pattern