final public function call($action, Request $request, View $view)
    {
        $this->request = $request;
        
        ob_start();
        
        $rf = new \ReflectionMethod($this, $action);
        
        $anno = $rf->getDocComment();
        $matches = array();
        if (preg_match('#@responseType ([\w\/]+)#', $anno, $matches)) {
            $this->response->setType($matches[1]);
        }
        
        if (preg_match('#@title ([^\\n]+)#', $anno, $matches)) {
            $this->response->setTitle($matches[1]);
        }
        
        $rf->invoke($this, $this->request);
        
        $this->response->appendBody(ob_get_clean());
        
        $view->render($this->response, $request, $this->viewParams);
        $this->addControls($this->response, $request, $view);
        
        return $this->response;
    }