   # Selections that have this word as right bound
   @right = []
 
+  _name: "Word"
+
+  _getModel: (Y, Operation) ->
+    if @_model == null
+      @_model = new Operation.MapManager(@).execute()
+      @_model.val("left", @left)
+      @_model.val("right", @right)
+      @_model.val("word", @word)
+      @_model.val("rte", @rte)
+
+      delete @left
+      delete @right
+      delete @rte
+
+    return @_model
+
+  _setModel: (model) ->
+    delete @left
+    delete @right
+    delete @word
+    delete @rte
+
+    @_model = model
+
   # Construct a new list of words
   #
   # @param [String] word The initial string value

    if @atLeftOf selection
      left = @left
      leftPos = @leftPos
      right = selection.right
      rightPos = selection.rightPos
    else if selection.atLeftOf @
      left = selection.left
      leftPos = selection.leftPos
      right = @right
      rightPos = @rightPos
    else if @.in selection
      left = selection.left
      leftPos = selection.leftPos
      right = selection.right
      rightPos = selection.rightPos
    else if @equals selection
      left = @left
      leftPos = @leftPos

  # @param [Selection] s the selection to compare to this
  # @return [Bool] true if the selections have the same bounds
  equals: (selection)->
    @left == selection._get("left") and
    @leftPos == selection._get("leftPos") and
    @right == selection._get("right") and
    @rightPos == selection._get("rightPos")

  # Compares *the bounds* of two selections
  #
