Add mediator pattern

[re mediator]