removed observer pattern, iin favour of mediator