The controller is in charge of handling the user input and commands. In the original MVC there was one controller for many views and generally for one model. Considering the architecture of modern windowing systems, the easiest way to implement this is to use approach 3 with a controller component per view, but also the federating controler component for the common part. All these components together form “the” controller that handled “the” user’s desires. So, if your common action really belongs to the controller and not to the model, go on with 3 and just create the missing federating controller and move your repetitive handling there.