Concuerdo con zsamer, seguramente puedes delegar tareas a otros objetos / controladores, recuerda que la tarea del controlador es la de enlazar los resultados, por lo que puede echar mano de otros objetos para hacer tareas especificas, por ejemplo:
  Código PHP:
    class Controller {
     public function run() {
              $user = $this->usersModel->findByPk(1);
              $data['user'] = $user;
              $calc = new MortageCalculator($user->userType);
              $data['mortage'] = $calc->calculateMortage();
              $data['rate'] = $calc->getUsedRate();
              $this->view->assign( "data", $data );
     }
} 
    
  Saludos.