second pass

* rename manager to controller
* moved execution persistency outside the controller, instead passing execution as an argument
* few additional asserts and notes