here what I am trying to achieve: Each activity has it's own router that can push controllers to it's own frame. I have Presenter (or presentation model) that can use router to push some other controllers. so I want just to inject router into the Presenter, and call a push. Presenter must know nothing about the activites, It doesn't know about how router instances are created. but I still want to use the same Presenter into different activities with different router instances