         return HAL._loadRequest( Alamofire.request(.DELETE, url) )
     }
     
+    
     public func attributes() -> [String: AnyObject] {
         return _attributes
     }
     
     public func attribute(key: String) -> AnyObject! {
         return _attributes[key]
+    }
+    
+    public func setAttribute(key: String, value: AnyObject?) {
+        _attributes[key] = value
     }
     
     public func links() -> [String: AnyObject] {

        return HAL._loadRequest( Alamofire.request(.POST, url, parameters: params) )
    }
    
    public func put(params: [String: AnyObject]) -> Promise<HAL> {
        return put("self", params: params)
    }

        var url = self.link_url(key, params: params)
        return HAL._loadRequest( Alamofire.request(.GET, url) )
    }

    public func post() -> Promise<HAL> {
        return post("self", params: attributes())
    }
    
    public func post(params: [String: AnyObject]) -> Promise<HAL> {
        return post("self", params: params)
