   ###
   @classProperty("version", value: chrome?.runtime?.getManifest?()["version"] or VER_EMULATION)
 
-  LOG = (type, verbosity, args) ->
-    return if Preferences.logVerbosity < verbosity
-    fn = global.console[type].bind(global.console)
-    return fn(sprintf(args...)) if typeof(args[0]) == "string"
-    return fn(args...)
-
-  @log          = -> return LOG("log", 1, arguments)
-  @log.detail   = -> return LOG("log", 2, arguments)
-  @info         = -> return LOG("info", 1, arguments)
-  @info.detail  = -> return LOG("info", 2, arguments)
-  @warn         = -> return LOG("warn", 1, arguments)
-  @warn.detail  = -> return LOG("warn", 2, arguments)
-  @error        = -> return LOG("error", 1, arguments)
-  @error.detail = -> return LOG("error", 2, arguments)
+  for type in ["log", "info", "warn", "error"]
+    Object.defineProperty(
+      (@[type] = console[type].bind(console))
+      "verbose"
+      get: ->
+        return this if Preferences.logVerbosity >= 1
+        return (-> return)
+    )
 
   @info("Rubic/%s %s", @version, window?.navigator.userAgent)
 

"use strict"
# Pre dependencies
Preferences = require("app/preferences")
sprintf = require("util/sprintf")
require("util/primitive")

###*

    return false

# Post dependencies
Preferences = require("app/preferences")
