         }
     }
     
+    private func nonPermisionResponse(newRequest:NSMutableURLRequest) {
+        
+        var response : NSHTTPURLResponse! = NSHTTPURLResponse(URL: self.request.URL, statusCode: 403, HTTPVersion: "1.1", headerFields: nil)
+        self.client!.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: .NotAllowed)
+        self.client!.URLProtocol(self, didLoadData: "The service you're trying to call is not registered in the io-services config file.".dataUsingEncoding(NSUTF8StringEncoding)!)
+        self.client!.URLProtocolDidFinishLoading(self)
+        NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
+    }
+    
+    private func forwardResponse(newRequest:NSMutableURLRequest) {
+        NSURLProtocol.setProperty("", forKey: HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
+        NSURLConnection.sendAsynchronousRequest(newRequest, queue: HttpInterceptorProtocol.queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
+            if (error == nil) {
+                self.client!.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: .NotAllowed)
+                self.client!.URLProtocol(self, didLoadData: data)
+                self.client!.URLProtocolDidFinishLoading(self)
+                NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
+            } else {
+                self.client!.URLProtocol(self, didFailWithError: error)
+                NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
+            }
+        })
+    }
+    
     /// Stops protocol-specific loading of the request.
     override public func stopLoading() {
         

            } else if Utils.validateRegexp(url, regexp: "^data:(.*)\\/(.*);base64,(.*)") && method == "GET" {
                
                // JAVASCRIPT INLINE REQUESTS
                
                NSURLProtocol.setProperty("", forKey: HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
                NSURLConnection.sendAsynchronousRequest(newRequest, queue: HttpInterceptorProtocol.queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
                    if (error == nil) {
                        self.client!.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: .NotAllowed)
                        self.client!.URLProtocol(self, didLoadData: data)
                        self.client!.URLProtocolDidFinishLoading(self)
                        NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
                    } else {
                        self.client!.URLProtocol(self, didFailWithError: error)
                        NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
                    }
                })
            
            } else {
                
                // EXTERNAL URL'S
                
                // TODO: Validate services, end-points, paths and methods...
                
                if IOParser.sharedInstance.validateResource(url) && method == "GET" {
                    
                    // VALIDATE RESOURCES
                    
                    NSURLProtocol.setProperty("", forKey: HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
                    NSURLConnection.sendAsynchronousRequest(newRequest, queue: HttpInterceptorProtocol.queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
                        if (error == nil) {
                            self.client!.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: .NotAllowed)
                            self.client!.URLProtocol(self, didLoadData: data)
                            self.client!.URLProtocolDidFinishLoading(self)
                            NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
                        } else {
                            self.client!.URLProtocol(self, didFailWithError: error)
                            NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
                        }
                    })
                } else {
                    var response : NSHTTPURLResponse! = NSHTTPURLResponse(URL: self.request.URL, statusCode: 403, HTTPVersion: "1.1", headerFields: nil)
                    self.client!.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: .NotAllowed)
                    self.client!.URLProtocol(self, didLoadData: "".dataUsingEncoding(NSUTF8StringEncoding)!)
                    self.client!.URLProtocolDidFinishLoading(self)
                    NSURLProtocol.removePropertyForKey(HttpInterceptorProtocol.httpInterceptorKey, inRequest: newRequest)
                }
            }
        } else {

                
                // ADAPTIVE NATIVE CALLS
                
                if let body:NSData = newRequest.HTTPBody {
                    
                    if let bodyString:NSString = NSString(data: body, encoding: NSUTF8StringEncoding) {
