                     }
             }).0 + lst  // Add the final fasting event to the event endpoint array.
 
-            log.info("MCHM FCEI precompletion time: \(NSDate().timeIntervalSinceReferenceDate - globalQueryStart.timeIntervalSinceReferenceDate)")
+            //log.info("MCHM FCEI precompletion time: \(NSDate().timeIntervalSinceReferenceDate - globalQueryStart.timeIntervalSinceReferenceDate)")
             completion(intervals: endpointArray, error: nil)
         }
     }

            // and recovery workouts.
            // We create event endpoints from the resulting samples.
            let queryStart = NSDate()
            log.info("MCHM FCEI query \(queryIndex) start")

            let runQuery : (([Event], NSError?) -> Void) -> Void = { runCompletion in
                self.fetchSamples(typesAndPredicates) { (events, error) -> Void in
                    log.info("MCHM FCEI query \(queryIndex) time: \(NSDate().timeIntervalSinceReferenceDate - queryStart.timeIntervalSinceReferenceDate)")
                    guard error == nil && !events.isEmpty else {
                        runCompletion([], error)
                        return


            if useCaching {
                let cacheKey = startDate.startOf(.Day).toString()!
                //log.info("MCHM FCEI query \(queryIndex) using caching with key \(cacheKey)")

                circadianCache.setObjectForKey(cacheKey, cacheBlock: { success, failure in
                    runQuery { (events, error) in
