             if error == nil && response?.statusCode == 201 {
                 Analytics.logger.debug("Analytics data successfully sent to the server.")
                 
-                deleteFile(Constants.File.Analytics.outboundLogs)
+                BMSLogger.deleteFile(Constants.File.Analytics.outboundLogs)
             }
             else {
                 Analytics.logger.error("Request to send analytics data to the server has failed.")
             }
             
-            userCallback?(response, error)
+            // The userCallback must be of AnyObject type because it is defined in BMSAnalyticsSpec, which is not aware of the MfpCompletionHandlerType (since it is defined in BMSCore)
+            if let callback = userCallback as? MfpCompletionHandler {
+                callback(response, error)
+            }
         }
         
         // Use a serial queue to ensure that the same analytics data do not get sent more than once
         dispatch_async(BMSLogger.sendAnalyticsToServerQueue) { () -> Void in
             do {
                 // Gather the logs and put them in a JSON object
-                let logsToSend: String? = try getLogs(fileName: Constants.File.Analytics.logs, overflowFileName: Constants.File.Analytics.overflowLogs, bufferFileName: Constants.File.Analytics.outboundLogs)
+                let logsToSend: String? = try BMSLogger.getLogs(fileName: Constants.File.Analytics.logs, overflowFileName: Constants.File.Analytics.overflowLogs, bufferFileName: Constants.File.Analytics.outboundLogs)
                 var logPayloadData = try NSJSONSerialization.dataWithJSONObject([], options: [])
                 if let logPayload = logsToSend {
                     let logPayloadJson = [Constants.outboundLogPayload: logPayload]

    
    
    // Same as the other send() method but for analytics
    internal static func sendAnalytics(completionHandler userCallback: MfpCompletionHandler? = nil) {
        
        // Internal completion handler - wraps around the user supplied completion handler (if supplied)
        let analyticsSendCallback: MfpCompletionHandler = { (response: Response?, error: NSError?) in

    // MARK: Methods
    
    // Build the request completion handler, extract logs from file, and send logs to the server
    public func send(completionHandler userCallback: AnyObject? = nil) {
        
        let logSendCallback: MfpCompletionHandler = { (response: Response?, error: NSError?) in
            
            if error == nil && response?.statusCode == 201 {
                BMSLogger.internalLogger.debug("Client logs successfully sent to the server.")
                
                BMSLogger.deleteFile(Constants.File.Logger.outboundLogs)
                // Remove the uncaught exception flag since the logs containing the exception(s) have just been sent to the server
                NSUserDefaults.standardUserDefaults().setBool(false, forKey: Constants.uncaughtException)
            }
