     newLeft = left.word.substring 0, selection.leftPos
     newRight = right.word.substring selection.rightPos
 
+    # delete selections inside
     if left == right
-      @setWord leftIndex, (newLeft + newRight)
-
-      # delete the words in between
-      @deleteWords leftIndex+1, rightIndex
+      wordToBound = @setWord leftIndex, (newLeft + newRight)
+      posToBound = selection.leftPos
+
     else
       @setWord leftIndex, newLeft
-      @setWord rightIndex, newRight
+      wordToBound = @setWord rightIndex, newRight
 
       # delete the words in between
       @deleteWords leftIndex+1, rightIndex
       # merge
       @merge leftIndex
+
+      posToBound = 0
+
+    selection.deleteHelper wordToBound, posToBound
 
   # Insert text at position
   #

        continue
      # console.log thisSel.print()+" at left of "+sel.print()
      [left, right] = sel.unbind()
      sel.leftPos = 0
      sel.bind wordToBound, right

      if sel.isEmpty()

        continue
      # console.log sel.print()+" at left of "+thisSel.print()
      [left, right] = sel.unbind()
      sel.rightPos = posToBound
      sel.bind left, wordToBound

      if sel.isEmpty()
