     @printer = data
     @tempDevices = Object.findAll @printer, (k, v) -> k.startsWith /e[0-9]+$|b$/
     @cli = new CliConsole(@)
+    @cli.render()
+
+  _onAdd: (data, target) =>
+    @printer[target] = data
+
+  _onRm: (data, target) =>
+    delete @printer[target]
 
   _onChange: (data, target) =>
     @_renderProgressBar(data) if target == 'job_upload_progress'
     # Finding the target from it's path, updating it and re-rendering
 
-    Object.merge @printer[target], data
+    if Object.isObject data
+      Object.merge @printer[target], data
+    else
+      @printer[target] = data
     @_onJobStarted @printer[target] if target.startsWith('job') and data.status?
     @cli.render()
 

    return status if @printer.status != "printing"
    total = 0
    current = 0
    for k, job of @printer.jobs when job.status == "printing"
      total += job.total_lines
      current += job.current_line
    return status + "( #{(current / total).format(2)}% ) "

  _append: (s, prefix = "") ->
    stdout.write(prefix + s + "\n")

    @cli.render()

  _onJobStarted: (job) =>
    console.log job
    stdout.write "\r" + "Printing #{job.file_name}".green
    console.log()
    @cli.rl.prompt()
