                     if serverResponse.statusCode != ServerStatusCode.OK {
                         
                         response.statusCode = serverResponse.statusCode.rawValue
+                        
+                        self.delegate?.server(self, didPerformRequest: serverRequest, withResponse: serverResponse, userInfo: userInfo)
                         
                         return
                     }

                        
                        response.statusCode = serverResponse.statusCode.rawValue
                        
                        return
                    }
                    
                    // serialize json data
                    
                    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
                    }
                    
                    // respond with serialized json
                    response.respondWithData(jsonData)

                    functionName: nil,
                    headers: request.headers as [String: String])
                
                if (jsonObject == nil) {
                    
                    response.statusCode = ServerStatusCode.BadRequest.rawValue
                    
                    self.delegate?.server(self, didPerformRequest: serverRequest, withResponse: ServerResponse(statusCode: ServerStatusCode.BadRequest, JSONResponse: nil), userInfo: [ServerUserInfoKey : AnyObject]())
                    
                    return
                }
                
                // process request and return a response
                let (serverResponse, userInfo) = self.responseForCreateRequest(serverRequest)
                
