 
   moveCharacterwise: (selection) ->
     reversed = selection.isReversed()
-
     translation = switch @direction
-      when 'right' then {before: [[0, 0], [0, 1]], after: [[0, 1], [0, 0]]}
-      when 'left' then {before: [[0, -1], [0, 0]], after: [[0, 0], [0, -1]]}
-
-    rangeToMutate = selection.getBufferRange().translate(translation.before...)
+      when 'right' then [[0, 0], [0, 1]]
+      when 'left' then [[0, -1], [0, 0]]
+
+    rangeToMutate = selection.getBufferRange().translate(translation...)
     insertSpacesToPoint(@editor, rangeToMutate.end)
     selection.setBufferRange(rangeToMutate)
-    rangeToSelect = @rotateChars(selection).translate(translation.after...)
+    rangeToSelect = @rotateChars(selection).translate(translation.reverse()...)
     selection.setBufferRange(rangeToSelect, {reversed})
 
   rotateChars: (selection) ->

        linewiseDisposable = switchToLinewise(@editor)

      @countTimes @getCount(), =>
        for selection in selections
          switch wise
            when 'linewise'
              @moveLinewise(selection) if @canMove(selection, wise)
            when 'characterwise'
              @moveCharacterwise(selection) if @canMove(selection, wise)
            else
              console.log "NOT YET"

      linewiseDisposable?.dispose()


    else
      true

  getSelections: ->
    selections = @editor.getSelectionsOrderedByBufferPosition()
    if @direction is 'down'
      selections.reverse()
    selections

  execute: ->
    wise = @getWise()
    selections = @editor.getSelections()
