           operation = operation.setTarget(new CurrentSelection(@vimState))
       when operation.isTextObject()
         unless mode is 'operator-pending'
-          operation = @select.setTarget(operation)
+          operation = new Select(@vimState, target: operation)
       when operation.isMotion()
         if (mode is 'visual')
-          operation = @select.setTarget(operation)
+          operation = new Select(@vimState, target: operation)
     operation
 
   run: (klass, properties={}) ->

    CurrentSelection ?= Base.getClass('CurrentSelection')
    Select ?= Base.getClass('Select')
    MoveToRelativeLine ?= Base.getClass('MoveToRelativeLine')

    # Cache for performance
    @select = new Select(@vimState)
    @reset()

  subscribe: (args...) ->

      when @vimState.isMode('normal')
        @ensureAllSelectionsAreEmpty(operation)
        @ensureAllCursorsAreNotAtEndOfLine()
        @vimState.toggleClassList('selection-only-mode', false)
      when @vimState.isMode('visual')
        @vimState.toggleClassList('selection-only-mode', @hasMultiLineSelection())

