     @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()
 

    @cli.render()

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

    stdout.write "Connecting to #{service.address}/#{service.serviceName}..."
    @client = new ConstructClient(service.address, port, service.path)
      .on("initialized", @_onInit)
      .on("add", @_onAdd)
      .on("rm", @_onRm)
      .on("change", @_onChange)
      .on("ack", @_onAck)
      .on("construct_error", @_onError)
