public function run($action, Request $request, Response $response)
    {
        $this->init();
        if (!$this->initCalled) {
            throw new IllegalStateException("Controller::init() must be called");
        }
        $this->response = $response;
        $this->headers  = $response->getHeaders();

        return $this->{$action . 'Action'}($request, $response);
    }