     public func put(key: String, params: [String: AnyObject]) -> Promise<HAL> {
         var url = self.link_url(key)
         return HAL._loadRequest( Alamofire.request(.PUT, url, parameters: params) )
+    }
+
+    public func patch() -> Promise<HAL> {
+        return patch("self", params: attributes())
     }
     
     public func patch(params: [String: AnyObject]) -> Promise<HAL> {

        var url = self.link_url(key, params: params)
        return HAL._loadRequest( Alamofire.request(.GET, url) )
    }
    
    public func post(params: [String: AnyObject]) -> Promise<HAL> {
        return post("self", params: params)

    var _links: [String: AnyObject] = [String: AnyObject]()
    var _embedded: [String: AnyObject] = [String: AnyObject]()
    
    public init(response: [String: AnyObject]) {
        
        if let links = response["_links"] as? [String: AnyObject] {
            self._links = links
