     if !(@ in right.right)
       @right.right.push @
 
+
+  # Unbind from old selection and rebind it
+  # @param [Word] left a word instance to bind at left, or null to keep previous
+  # @param [Word] right a word instance to bind at right, or null to keep previous
+  rebind: (left, right) ->
+    left = left or @left
+    right = right or @right
+
+    @left.removeSel @, "left"
+    @right.removeSel @, "right"
+
+    @left = left
+    @right = right
+
+    @bind @left, @right
+
+
   # Clone the current selection and apply style
   # @parameter [String] style the new style
   clone: (style) ->
-    newSel = new Selection 0, 0, @rte, {style: style}
-
-    newSel.unbind()
-
-    newSel.left = @left
+    newSel = new Selection 0, 0, @rte, {style: style, bind: false}
+
     newSel.leftPos = @leftPos
-
-    newSel.right = @right
     newSel.rightPos = @rightPos
 
     newSel.setStyle _.clone(@style)

    for sel, index in selections
      if not (thisSel.atLeftOf sel)
        continue
      console.log thisSel.print()+" at left of "+sel.print()
      [left, right] = sel.unbind()
      sel.leftPos = 0
      sel.bind wordToBound, right

      if not (sel.in thisSel)
        tmpSelections.push sel
        continue
      # console.log sel.print()+" in "+thisSel.print()
      sel.unbind()
      @rte.removeSel sel

