public function is($characteristic)
    {
        switch ( strtolower($characteristic) ) {
            case "ajax":
                return ( 
                    isset($this->_env['HTTP_X_REQUESTED_WITH']) &&
                    $this->_env['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest"
                );
            case "delete":
                return ( $this->method == "DELETE" );
            case "flash":
                return (
                    $this->_env['HTTP_USER_AGENT'] == "Shockwave Flash"
                );
            case "get":
                return ( $this->method == "GET" );
            case "head":
                return ( $this->method == "HEAD" );
            case "mobile":
                $mobile_user_agents = array(
                    "Android", "AvantGo", "Blackberry", "DoCoMo", "iPod",
                    "iPhone", "J2ME", "NetFront", "Nokia", "MIDP", "Opera Mini",
                    "PalmOS", "PalmSource", "Plucker", "portalmmm",
                    "ReqwirelessWeb", "SonyEricsson", "Symbian", "UP\.Browser",
                    "Windows CE", "Xiino"
                );
                $pattern = "/" . implode("|", $mobile_user_agents) . "/i";
                return (boolean) preg_match(
                    $pattern, $this->_env['HTTP_USER_AGENT']
                );
            case "options":
                return ( $this->method == "OPTIONS" );
            case "post":
                return ( $this->method == "POST" );
            case "put":
                return ( $this->method == "PUT" );
            case "ssl":
                return $this->_env['HTTPS'];
            default:
                return false;
        }
    }