         let requestPayload = standardizedPayload.merge(payload)
         let url = buildEndpointURL(endpoint)
         Alamofire.request(.POST, url, parameters: requestPayload, encoding: .JSON)
-                 .responseJSON { _, netResponse, JSON, _ in
+                 .responseJSON { _, netResponse, JSON, error in
                     if endpoint == .Reinforce {
-                        if let r = netResponse, j: AnyObject = JSON, functionName = j["reinforcementFunction"] as? String, c = callback {
-                            c(r.statusCode, functionName)
+                        switch (netResponse, JSON, error, callback) {
+                        case let (.Some(r), .Some(j), _, .Some(c)) where j["reinforcementFunction"] is String:
+                            if let functionName = j["reinforcementFunction"] as? String {
+                                c(r.statusCode,functionName)
+                            }
+                        case let (.Some(r), _, .Some(e), .Some(c)):
+                            // Returns this on error
+                            c(r.statusCode, e.localizedDescription)
+                        default:
+                            break
                         }
                     }
                  }

    
    /**
        Handles actually making a request to Dopamine
    */
    func request(endpoint: APIEndpoint, payload: APIPayload, callback: ReinforcementCallback? = nil) {
        let utc = NSDate().timeIntervalSince1970 * 1000.0

    }
    
    /**
        Informs the Dopamine API that some action took place
        
        :param: action The name of the action
    */
    public func track(action: String) {
        let payload: APIPayload = [
