public function sendHeaders()
    {
        // first build headers -> only if they haven't already been sent
        if (!headers_sent()) {
            // status code header
            header(self::PROTOCOL . ' ' . $this->getStatusCode() . ' ' . $this->statusMessage
            );

            // other headers
            foreach ($this->headers as $k => $v) {
                header($k . ': ' . $v);
            }

            // cache control headers
            $cacheControlHeaders = $this->cacheControl->getCacheControl();
            foreach ($cacheControlHeaders as $k => $v) {
                header($k . ': ' . $v);
            }
        }

        return $this;
    }