       unless @list[name]?.name is name
           @child = @startProcess options
           @populateChildObject options, @child
+          #############
+          ### Child ###
+          #############
+
+          onExit ?= ->
+          @child.on 'exit', ()=>
+            console.log "[PROCESSES][#{name}] did exit." if verbose
+            @emit "exit",@child.pid,name
+            delete @list[name]
+            workerProcess.stopReporter()
+            workerProcess.worker.status = 4
+            workerProcess.fetchWorkerExchange (workerExchange) =>
+              workerProcess.worker.message.command = "ack"
+              workerExchange.publish "input.worker", {worker: workerProcess.worker},
+                appId: "#{workerProcess.worker.uuid}"
+
+          @child.on 'close', () =>
+            console.log "[PROCESSES][#{name}] did close." if verbose
+            @emit "close",@child.pid,name
+            onExit @child.pid,name
+            if restart is yes
+              restartInterval = 1 unless restartInterval
+              setTimeout =>
+                @run options
+              ,restartInterval
+              console.log "[PROCESSES][#{name}] restarting the process in #{restartInterval} msecs." if verbose
 
           workerProcess.startReporter()
           # Update kontrold worker information with our newly created pid.

    ### HANDLE SIGNALS and KILLS ###
    ################################

    # When child_process dies (aka kill -9 <child_pid>, killRequest,etc..)
    @on 'exit', =>
      workerProcess.worker.status = 4
      workerProcess.fetchWorkerExchange (workerExchange) =>
        workerProcess.worker.message.command = "ack"
        workerExchange.publish "input.worker", {worker: workerProcess.worker},
          appId: "#{workerProcess.worker.uuid}"

    # When doing ctrl+c, let kontrold now we are dead
    process.on 'SIGINT', =>
      workerProcess.worker.status = 5

          workerProcess.worker.message.command = "ack"
          workerExchange.publish "input.worker", {worker: workerProcess.worker},
            appId: "#{workerProcess.worker.uuid}"


    @on 'childData',(msg) =>
      onMessage msg if "function" is typeof onMessage
