                     
                     response.statusCode = serverResponse.statusCode.rawValue
                     
+                    self.delegate?.server(self, didPerformRequest: serverRequest, withResponse: serverResponse, userInfo: userInfo)
+                    
                     return
                 }
                 
                 // write to socket
                 
-                var error: NSError?
-                
-                let jsonData = NSJSONSerialization.dataWithJSONObject(serverResponse.JSONResponse!, options: self.jsonWritingOption(), error: &error)
-                
-                // could not serialize json response, internal error
-                if (jsonData == nil) {
-                    
-                    self.delegate!.server(self, didEncounterInternalError: error!, forRequest: serverRequest, userInfo: userInfo)
-                    
-                    response.statusCode = ServerStatusCode.InternalServerError.rawValue
-                    
-                    return
-                }
+                let jsonData = NSJSONSerialization.dataWithJSONObject(serverResponse.JSONResponse!, options: self.jsonWritingOption(), error: nil)!
                 
                 // respond with serialized json
                 response.respondWithData(jsonData)

                    functionName: nil,
                    headers: request.headers as [String: String])
                
                // process request and return a response
                let (serverResponse, userInfo) = self.responseForCreateRequest(serverRequest)
                

                
                // get initial values
                
                let jsonObject = NSJSONSerialization.JSONObjectWithData(request.body(), options: NSJSONReadingOptions.allZeros, error: nil) as? [String: AnyObject]
                
                // convert to server request
                let serverRequest = ServerRequest(requestType: ServerRequestType.POST,
