public function core($request, $response, $next)
{
$event = new BaseMiddlewareEvent($this->c, $request, $response);
$event = $this->c->dispatcher->dispatch('middleware.core.before', $event);
$request = $event->getRequest();
$response = $event->getResponse();
$response = $next($request, $response);
$event = new BaseMiddlewareEvent($this->c, $request, $response);
$event = $this->c->dispatcher->dispatch('middleware.core.after', $event);
$response = $event->getResponse();
return $response;
}