         case .Connect:         return "CONNECT"
         case .Options:         return "OPTIONS"
         case .Trace:           return "TRACE"
-        case .Copy:            return "COPY"
-        case .Lock:            return "LOCK"
-        case .MkCol:           return "MKCOL"
-        case .Move:            return "MOVE"
-        case .PropFind:        return "PROPFIND"
-        case .PropPatch:       return "PROPPATCH"
-        case .Search:          return "SEARCH"
-        case .Unlock:          return "UNLOCK"
-        case .Bind:            return "BIND"
-        case .Rebind:          return "REBIND"
-        case .Unbind:          return "UNBIND"
-        case .ACL:             return "ACL"
-        case .Report:          return "REPORT"
-        case .MkActicity:      return "MKACTIVITY"
-        case .Checkout:        return "CHECKOUT"
-        case .Merge:           return "MERGE"
-        case .MSearch:         return "MSEARCH"
-        case .Notify:          return "NOTIFY"
-        case .Subscribe:       return "SUBSCRIBE"
-        case .Unsubscribe:     return "UNSUBSCRIBE"
-        case .Patch:           return "PATCH"
-        case .Purge:           return "PURGE"
-        case .MkCalendar:      return "MKCALENDAR"
-        case .Link:            return "LINK"
-        case .Unlink:          return "UNLINK"
-        case .Raw(let method): return method.uppercaseString
+        case .Other(let method): return method.uppercaseString
         }
     }
 }

public enum HTTPMethod {
    case Delete
    case Get

        case .Connect:         return 5
        case .Options:         return 6
        case .Trace:           return 7
        case .Other(let method): return 8 + method.hashValue
        }
    }
}

public func ==(lhs: HTTPMethod, rhs: HTTPMethod) -> Bool {
    return lhs.hashValue == rhs.hashValue
}

extension HTTPMethod {
    init(_ rawValue: String) {
      let method = rawValue.uppercaseString
      switch method {
      case "DELETE":
          self = .Delete
      case "GET":
          self = .Get
      case "HEAD":
          self = .Head
      case "POST":
          self = .Post
      case "PUT":
          self = .Put
      case "CONNECT":
          self = .Connect
      case "OPTIONS":
          self = .Options
      case "TRACE":
          self = .Trace
      default:
          self = .Other(method: method)
      }
    }
}

extension HTTPMethod: CustomStringConvertible {
