 
     # create a copy of the list of links
     links = node.links.slice()
+    # identify any transfer nodes that need to be removed as well
+    transferNodes = {}
+    _.each(links, (link) ->
+      if link?.transferNode?.key?
+        transferNodes[link.transferNode.key] = link.transferNode
+    )
 
     @undoRedoManager.createAndExecuteCommand 'removeNode',
       execute: =>
         node.transferLink?.relation = node.transferLink.defaultRelation()
         @_removeLink(link) for link in links
+        _.each(transferNodes, (node) => @_removeNode node)
         @_removeNode node
       undo: =>
         node.transferLink?.relation = transferRelation
         @_addNode node
+        _.each(transferNodes, (node) => @_addNode node)
         @_addLink(link) for link in links
 
   _addNode: (node) ->

    @setFilename 'New Model'
    @undoRedoManager.clearHistory()

  removeSelectedNode: ->
    selectedNodeKeys = (node.key for node in @selectedNodes())
    for nodeKey in selectedNodeKeys
      @removeNode nodeKey

  removeSelectedLink: ->
    for selectedLink in @selectedLinks()
      @removeLink selectedLink

  deleteSelected: ->
    log.info "Deleting selected items"
    @removeSelectedNode()
    @removeSelectedLink()
    @selectionManager.clearSelection()

  removeLinksForNode: (node) ->


  changeLink: (link, changes={}) ->
    if changes.deleted
      @removeSelectedLinks()
    else if link
      originalData =
        title: link.title
