     rangeToSelect = getBufferRangeForRowRange(@editor, [startRow, endRow])
     selection.setBufferRange(rangeToSelect)
 
-class MoveSelectedTextLeft extends MoveSelectedTextBase
+class MoveSelectedTextLeft extends MoveSelectedText
   @registerCommand()
+
   execute: ->
     @withUndoJoin =>
       for selection in @editor.getSelections()


class MoveSelectedTextRight extends MoveSelectedTextLeft
  @registerCommand()
  moveLinewise: (selection) ->
    selection.indentSelectedRows()

# Duplicate
# -------------------------
class DuplicateSelectedTextBase extends Operator
  @commandScope: 'atom-text-editor.vim-mode-plus.visual-mode'
  @commandPrefix: 'vim-mode-plus-user'
  flashTarget: false
  isOverwriteMode: ->
    atom.config.get('vim-mode-plus-move-selected-text.overwrite')

  execute: ->
    console.log "still not implemented #{@getName()}"

class DuplicateSelectedTextUp extends DuplicateSelectedTextBase
  @registerCommand()
class DuplicateSelectedTextDown extends DuplicateSelectedTextUp
  @registerCommand()

class DuplicateSelectedTextLeft extends DuplicateSelectedTextBase
  @registerCommand()
class DuplicateSelectedTextRight extends DuplicateSelectedTextLeft
  @registerCommand()


stateManager = new StateManager()
# Move
# -------------------------
class MoveOrDuplicateSelectedText extends Operator
  @registerCommand: ->
    commandSubscriptions.add(super)

  @commandScope: 'atom-text-editor.vim-mode-plus.visual-mode'
  @commandPrefix: 'vim-mode-plus-user'
  flashTarget: false

  isOverwriteMode: ->
    atom.config.get('vim-mode-plus-move-selected-text.overwrite')

