             logger.log(ILoggingLogLevel.ERROR, category: loggerTag, message: "The service has no name. Impossible to add to the pull")
         } else {
             
+            // Check if the service exists
+            if service.isEqual(self.getService(service.getName())){
+                logger.log(ILoggingLogLevel.WARN, category: loggerTag, message: "The service \(service.getName()!) is alredy on the pull, replacing...")
+                self.unregisterService(service)
+            }
+            
             services.append(service)
             logger.log(ILoggingLogLevel.DEBUG, category: loggerTag, message: "Adding \(service.getName()!) to the service pull")
         }

    
    /// Array of registered services
    var services : [Service]!

    /**
       Default Constructor.

        logger.log(ILoggingLogLevel.DEBUG, category: loggerTag, message: "Removing all services from thee service pull")
        
        services.removeAll(keepCapacity: false)
    }
    
    private func post(url : String, method: IServiceMethod, contentType: String, contentLenght: Int, content: NSInputStream, postCompleted : (succeeded: UInt, responseContent: NSString?, warning: IServiceResultCallbackWarning?, error: IServiceResultCallbackError?) -> ()) {
        
        // TODO: The type of the service is not used (Service.ServiceType)
        // TODO: The Proxy parameter of the Endpoint is not used
        // TODO: The headers parameters is not used
        // TODO: The method atribute of the ServiceRequest is not used
        // TODO: The protocol version of the Service Request is not used
        // TODO: The raw content of the Service Request is not used
        // TODO: The session attribute of Service Request is not used
        
        // Create and prepare the request and the sesion
        var request = NSMutableURLRequest(URL: NSURL(string: url)!)
        var session = NSURLSession.sharedSession()
        
        // Prepare the Service Request
        let contentType: String = contentType != "" ? contentType : "application/json"
        
        var err: NSError?
        request.HTTPBodyStream = content
        request.addValue(contentType, forHTTPHeaderField: "Content-Type")
        request.addValue(contentType, forHTTPHeaderField: "Accept")
        request.addValue(String(contentLenght), forHTTPHeaderField: "Content-Length")
        request.HTTPMethod = method == IServiceMethod.Post ? "POST" : "GET"
        request.HTTPShouldUsePipelining = true
        
        
        var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
            
            // Cast the response and the errors
            let httpResponse: NSHTTPURLResponse = response as NSHTTPURLResponse
            
            let nsError: NSError? = error as NSError
            
            // There was an error on the data task
            if(nsError != nil) {
                
                self.logger.log(ILoggingLogLevel.ERROR, category: self.loggerTag, message: "The call of the service is getting an error")
                
                postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
            }
            else {
                
                //Converting data to String
                let responseText:NSString = NSString(data:data, encoding:NSUTF8StringEncoding)!
                
                // Check for Not secured url
                if (url as NSString).containsString("https://") {
                    self.logger.log(ILoggingLogLevel.DEBUG, category: self.loggerTag, message: "Secured URL (https): \(url)")
                } else {
                    self.logger.log(ILoggingLogLevel.WARN, category: self.loggerTag, message: "NOT Secured URL (https): \(url)")
                    
                    postCompleted(succeeded: 1, responseContent: responseText, warning: IServiceResultCallbackWarning.NotSecure, error: nil)
                }
                
                self.logger.log(ILoggingLogLevel.DEBUG, category: self.loggerTag, message: "status code: \(httpResponse.statusCode)")
                
                switch (httpResponse.statusCode) {
                case 200..<299:
                    postCompleted(succeeded: 0, responseContent: responseText, warning: nil, error: nil)
                case 300..<399:
                    postCompleted(succeeded: 1, responseContent: responseText, warning: IServiceResultCallbackWarning.Redirected, error: nil)
                case 400:
                    postCompleted(succeeded: 1, responseContent: responseText, warning: IServiceResultCallbackWarning.Wrong_Params, error: nil)
                case 401:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NotAuthenticated)
                case 403:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Forbidden)
                case 404:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NotFound)
                case 405:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.MethodNotAllowed)
                case 406:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NotAllowed)
                case 408:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.TimeOut)
                case 444:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NoResponse)
                case 400..<499:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
                case 500..<599:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
                default:
                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
                    
                }
                
            }
        })
        
        // Start the task
        task.resume()
    }

}
