 
 # Base Implementation
 class DebuggerBase extends IDebugger
+  definePureVirtual @prototype, '_getLogFunc', doNothing
+  constructor: ->
+    @_log = @_getLogFunc '[DEBUG]'
+
   initialised = false
   isInitialised: ->
     [r ,initialised] = [initialised, true]

# For the Renderer Processes
class DebuggerRenderer extends DebuggerBase
  style = 'background: linear-gradient(30deg, cyan, white 3ex)'
  constructor: ->
    @_log = console.debug.bind console, '%c%s', style

  init: ->
    return Debug.wrap('Already initialised') if @isInitialised()


# For the Browser Process
class DebuggerBrowser extends DebuggerBase
  _getLogFunc: (prefix) ->
    console.log.bind console, "#{prefix} %s".cyan

  init: ->
    return Debug.wrap('Already initialised') if @isInitialised()
