     weak var reloadableView: ReloadableView?
 
     /// Logs messages.
-    public var logger: String -> Void = { msg in
-        NSLog("%@", msg)
-    }
+    public var logger: (String -> Void)? = nil
 
     public init(reloadableView: ReloadableView) {
         self.reloadableView = reloadableView

                let end = CFAbsoluteTimeGetCurrent()
                // The amount of time spent on the main thread may be high, but the user impact is small because
                // we are dispatching small blocks and not doing any work if the user is interacting.
                self?.logger("user: \((end-start).ms) (main: \((timeOnMainThread + end - startMain).ms))")
                completion?()
            })
        }

        }
        reloadableView?.reloadDataSync()
        let end = CFAbsoluteTimeGetCurrent()
        logger?("user: \((end-start).ms)")
        completion?()
    }

