Add Mediator. Needs to be split up more and/or the API tweaked, but its a working start