         return task
     }
 
-    func urlSessionTask(method: httpMethod, url:String, success: () -> Void , failure: (error: APIError) -> ()) -> NSURLSessionTask {
+    func urlSessionTask(method: httpMethod, url:String, parameters: Dictionary<String,AnyObject>? = nil, success: () -> Void , failure: (error: APIError) -> ()) -> NSURLSessionTask {
         let url = NSURL(string: url)
         var urlRequest = NSMutableURLRequest(URL: url!, cachePolicy: .ReturnCacheDataElseLoad, timeoutInterval: 50)
         urlRequest.HTTPMethod = method.rawValue
+        if let actualParameters = parameters {
+            urlRequest.HTTPBody = NSJSONSerialization.dataWithJSONObject(actualParameters, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
+        }
         for (key, value) in self.additionalHeaders {
             urlRequest.setValue(value, forHTTPHeaderField: key)
         }
-        let task = dataTask(urlRequest, success: success, failure: failure)
-        return task
-    }
-
-    func urlSessionTask(method: httpMethod, url:String, parameters: Dictionary<String,AnyObject>, success: () -> Void , failure: (error: APIError) -> ()) -> NSURLSessionTask {
-        let url = NSURL(string: url)
-        var urlRequest = NSMutableURLRequest(URL: url!, cachePolicy: .ReturnCacheDataElseLoad, timeoutInterval: 50)
-        urlRequest.HTTPMethod = method.rawValue
-        urlRequest.HTTPBody = NSJSONSerialization.dataWithJSONObject(parameters, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
-
-        for (key, value) in self.additionalHeaders {
-            urlRequest.setValue(value, forHTTPHeaderField: key)
-        }
-
-        let task = dataTask(urlRequest, success: success, failure: failure)
+
+        let task = dataTask(urlRequest, success: success) { (error) -> () in
+            if error.code == Constants.Error.Code.oAuthUnathorized.rawValue {
+                OAuthToken.removeAcessTokenForOAuthTokenWithScope(kOauth2ScopeFull)
+                self.validateFullScope {
+                    failure(error: APIError(domain: Constants.Error.apiClientErrorDomain, code: Constants.Error.Code.UnknownError.rawValue, userInfo: nil))
+                }
+            } else {
+                failure(error: error)
+            }
+        }
+
         return task
     }
 

            }, completionHandler: { (response, fileURL, error) -> Void in
                if let actualError = error {
                    if (error.code != NSURLErrorCancelled) {
                        failure(error: APIError(error: error))
                    }
                } else if let actualFileUrl = fileURL {
                        success(url:actualFileUrl)
                }
                // we get here if the request was canceled, should do nothing.
        })

                    error.responseText = serializedResponse?.description
                    failure(error: error)
                })
            } else if self.isUnauthorized(response as? NSHTTPURLResponse) {
                let error = APIError(domain: Constants.Error.apiClientErrorDomain, code: Constants.Error.Code.oAuthUnathorized.rawValue, userInfo: nil)
                failure(error:error)
            }  else if (response as! NSHTTPURLResponse).didFail()  {
                let err = APIError(urlResponse: (response as! NSHTTPURLResponse), jsonResponse: serializedResponse)
                dispatch_async(dispatch_get_main_queue(), {
                failure(error:err)
