       do @subscribe
 
   subscribe: ->
+    return if @subscribed
     return if !@runtime or !@graph
     @graph.on 'endTransaction', @send
     @graph.on 'addNode', @addNode

    @graph.removeListener 'removeInport', @removeInport
    @graph.removeListener 'addOutport', @addOutport
    @graph.removeListener 'removeOutport', @removeOutport

    @outPorts.sent.disconnect()
    @outPorts.queued.disconnect()

    @runtime = null
    @graph = null
    @changes = []
    @subscribed = false
    @inPorts = new noflo.InPorts
      runtime:
        datatype: 'object'
