   addNode: (node, graph) ->
     return unless node
 
+    return if node.dataflowNode?
+
+    return if graph.nodes.findWhere({nofloId: node.id})?
+
     @addNodeRuntime node, graph.nofloGraph.runtime
 
-    unless node.dataflowNode
-      # Load the component
-      dfNode = graph.nofloGraph.runtime.getComponentInstance node.component,
-        id: node.id
-        label: node.id
-        x: ( if node.metadata.x? then node.metadata.x else 300 )
-        y: ( if node.metadata.y? then node.metadata.y else 300 )
-        parentGraph: graph
-
-      # Reference one another
-      node.dataflowNode = dfNode
-      node.nofloNode = node
+    # Load the component
+    dfNode = graph.nofloGraph.runtime.getComponentInstance node.component,
+      id: node.id
+      label: ( if node.metadata.label? then node.metadata.label else node.id )
+      x: ( if node.metadata.x? then node.metadata.x else 500 )
+      y: ( if node.metadata.y? then node.metadata.y else 300 )
+      parentGraph: graph
+
+    # Reference one another
+    node.dataflowNode = dfNode
+    dfNode.nofloNode = node
 
     graph.nodes.add dfNode
 

    # Modify behavior of other Dataflow plugins
    @dataflow.plugins.source.listeners false
    @dataflow.plugins.log.listeners false

  registerGraph: (graph, runtime, callback) ->
    dfGraph = @dataflow.loadGraph {}

        parentGraph: graph
        source: edge.from
        target: edge.to
        route: if edge.metadata.route? then edge.metadata.route else 0

      # Reference one another
      dfEdge.nofloEdge = edge
