   constructor: (@ports, @ip, @nodeInstance, @port, @result) ->
     @scope = @ip.scope
     @buffer = new PortBuffer(@)
+    @activated = false
 
   # Preconditions met, set component state to `activated`
   activate: ->
-    debug "#{@nodeInstance.nodeId} activated"
+    return if @activated
     @result.__resolved = false
+    debug "#{@nodeInstance.nodeId} activated on #{@port.name}"
     if @nodeInstance.ordered or @nodeInstance.autoOrdering
       @nodeInstance.outputQ.push @result
+    @nodeInstance.load++
+    @activated = true
 
   # ## Input preconditions
   # When the processing function is called, it can check if input buffers

    @outputQ = []
    @activateOnInput = options.activateOnInput ? true
    @forwardBrackets = in: ['out', 'error']
    @bracketCounter = {}

    if 'forwardBrackets' of options
      @forwardBrackets = options.forwardBrackets

      @outputQ.push outputEntry
      @processOutputQueue()
      return
    result = {}
    # Prepare the input/output pair
    input = new ProcessInput @inPorts, ip, @, port, result
    output = new ProcessOutput @outPorts, ip, @, result
    # Call the processing function
    @handle input, output, -> output.done()
    debug "#{@nodeId} didn't match preconditions on #{port.name}" unless input.activated

  processOutputQueue: ->
    while @outputQ.length > 0
