         return NSURL(string: combinedPath, relativeToURL: self.baseUrl)
     }
     
+    internal func createURLRequest(url : NSURL) -> NSMutableURLRequest {
+        
+        let result = NSMutableURLRequest(URL: url, cachePolicy: self.cachePolicy, timeoutInterval: self.timeoutInterval)
+        result.setValue("text/plain", forHTTPHeaderField: "Content-Type")
+        
+        result.HTTPMethod = self.dynamicType.httpMethod
+        
+        if self.httpBody != SubclassShouldOverrideString
+        {
+            if let bodyData = self.httpBody.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
+            {
+                result.HTTPBody = bodyData
+                result.setValue("\(bodyData.length)", forHTTPHeaderField: "Content-Length")
+            }
+        }
+        
+        return result
+    }
+    
+    internal func handleDataTaskCompletion(data : NSData?, urlResponse : NSURLResponse?, error: NSError?, completionHandler : DataTaskCompletionHandler) {
+        
+        guard let data = data else {
+            
+            guard let error = error else {
+                completionHandler(result: .Failure(NSError(description: "Response is empty") ), urlResponse: urlResponse)
+                return
+            }
+            
+            completionHandler(result: .Failure(error), urlResponse: urlResponse)
+            return
+        }
+        
+        completionHandler(result: .Success(data), urlResponse: urlResponse)
+    }
+    
     public func dataTask(configureUrlRequest configureUrlRequest : ConfigureUrlRequestHandler? = nil, completionHandler : DataTaskCompletionHandler) -> NSURLSessionDataTask? {
         
         guard let url = self.buildUrl() else {

        
        return urlSession.dataTaskWithRequest(urlRequest, completionHandler: { (data, urlResponse, error) -> Void in
            
            guard let data = data else {
                
                guard let error = error else {
                    completionHandler(result: .Failure(NSError(description: "Response is empty") ), urlResponse: urlResponse)
                    return
                }
                
                completionHandler(result: .Failure(error), urlResponse: urlResponse)
                return
            }
            
            completionHandler(result: .Success(data), urlResponse: urlResponse)
        })
    }
    
    public func jsonTask(configureUrlRequest : ConfigureUrlRequestHandler? = nil, completionHandler : JsonTaskCompletionHandler) -> NSURLSessionDataTask? {

            return nil
        }
        
        let urlRequest = self.createURLRequest(url)
        
        if let configureUrlRequest = configureUrlRequest {
            configureUrlRequest(urlRequest: urlRequest)
