       graph: @graph.properties.id
 
   changeNode: (node) =>
-    @registerChange 'changenode',
+    key = 'changenode- ' + node.id
+    metadata =
       id: node.id
       metadata: node.metadata
       graph: @graph.properties.id
+    if @changesStates[key] is undefined
+      @changesStates[key] = @registerChange 'changenode', metadata
+    else
+      @replaceChange @changesStates[key], 'changenode', metadata
 
   addEdge: (edge) =>
     @registerChange 'addedge',

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

      topic: topic
      payload: payload
    @outPorts.queued.send @changes.length
    return @changes.length - 1

  replaceChange: (offset, topic, payload) =>
    @changes[offset] =
      topic: topic
      payload: payload

  addNode: (node) =>
    @registerChange 'addnode',
