             
             
             self.setNetworkActivityIndicatorVisible(visibility: true)
+            
+            
+            
             dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
                 
                 data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &errors)
                 
                 if data != nil {
-                    NSOperationQueue.mainQueue().addOperationWithBlock
-                        { completion(self.getJsonResponse(data : data?, errors: errors?, response: response?)!) }
+                    
+                    dispatch_async(dispatch_get_main_queue(),{
+                            completion(self.getJsonResponse(data : data?, errors: errors?, response: response?)!)
+                    });
+                    
                 }
-                
-            }
-            
-    }
-    
+            }
+    }
+    
+    
+    /**
+    the function will immediately lanuch in a therad request. Response will be
+    send to the main thread
+    
+    :param: cache-> (Bool) determine if the request will save and check in the cache before
+    
+    :param: timeout-> (NSTimeInterval) max sencond during a connection attempt to send the request
+
+    :param: method -> (MethodRequest)
+    
+    :param: completion-> ((NSDictionary?)-> Void))
+    
+    :returns: Void
+    */
     func launchRequest(cache: Bool,
         timeout: NSTimeInterval ,
         method: MethodRequest,

        UIApplication.sharedApplication().networkActivityIndicatorVisible = setVisible
    }
    
    func addParameterWithKey(key: String, value: String) {
        var p : NSMutableDictionary?
        if parameter == nil { p = NSMutableDictionary() }
        else { p = NSMutableDictionary(dictionary: parameter!) }

            }
            
        }
        
        jsonReturn = jsonReturn == nil ? NSMutableDictionary() : jsonReturn
        self.setNetworkActivityIndicatorVisible(visibility: false)
        jsonReturn.setObject(mymetype != nil ? mymetype! : "", forKey: KeyResult.MIME_TYPE.rawValue)
        jsonReturn.setObject(urlResponse != nil ? urlResponse! : "", forKey: KeyResult.URL.rawValue)
        jsonReturn.setObject(String(statusCode), forKey: KeyResult.CODE_RESPONSE.rawValue)
        jsonReturn.setObject(errors == nil ? "" : errors!.localizedDescription , forKey: KeyResult.CONNECTION_ERROR.rawValue)
        return jsonReturn
    }
    
    
    /**
    the function will immediately lanuch in a therad request. Response will be
    send to the main thread
    
    :param: request-> (NSURLRequest)
    
    :param: completion-> ((NSDictionary?)-> Void))
    
    :returns: Void
    */
    func launchRequestWithNSURL(request : NSURLRequest,
        completion : ((NSDictionary?)-> Void)) -> Void {
            
