public function send( $headers = false ) 
	{
		if ( $headers && headers_sent() && !CLI ) 
		{
			throw new CCException( "CCResponse::send - cannot send header, header has already been send." );
		}

		if ( $headers ) 
		{
			// status header
			header( CCIn::server( 'SERVER_PROTOCOL' ).' '.$this->_status.' '.CCResponse::$messages[$this->_status] );

			// check if content type is already set
			if ( !isset( $this->_header['Content-Type'] ) ) 
			{
				$this->header( 'Content-Type', 'text/html; charset='.ClanCats::$config->get( 'charset', 'utf-8' ) );
			}

			$this->header( 'X-Powered-By', 'ClanCatsFramework version: '.ClanCats::VERSION );

			// set headers
			foreach( $this->_header as $key => $content ) 
			{
				header( $key.': '.$content );
			}
		}

		// profiler
		CCProfiler::check( 'CCResponse - sending response' );

		// print the body
		echo CCEvent::pass( 'response.output', $this->body() );
	}