     
     // MARK: - Cache Response
     
-    private func cacheSearchResponse<T: NSManagedObject>(response: [[String: UInt]]) throws -> [T] {
+    private func cacheSearchResponse<T: NSManagedObject>(response: DataTaskResponse) throws -> [T] {
+        
+        let jsonResponse = try self.validateSearchResponse(response)
         
         // get results as cached resources...
         

        
        let request = NSMutableURLRequest(URL: resourceURL)
        
        request.HTTPMethod = "POST"
        
        // add HTTP body
        if JSONObject != nil {

    
    // MARK: - Requests
    
    /// Performs a search request on the server.
    ///
    /// - precondition: The supplied fetch request's predicate must be a ```NSComparisonPredicate``` or ```NSCompoundPredicate``` instance.
    ///
    final public func performSearch<T: NSManagedObject>(fetchRequest: NSFetchRequest, URLSession: NSURLSession? = nil, completionBlock: ((ErrorValue<[T]>) -> Void)) -> NSURLSessionDataTask {
        
