           selection.destroy()
         else
           @selections.push(selection)
-    @updateProperties(reversed: wasReversed)
+    @updateProperties()
+    @reverse() if wasReversed
 
-  updateProperties: ({reversed}={}) ->
-    reversed ?= @isReversed()
-    [head, tail] = if reversed
-      [@getTop(), @getBottom()]
-    else
-      [@getBottom(), @getTop()]
+  updateProperties: ->
+    head = @getHead()
+    tail = @getTail()
 
     for selection in @selections
       swrap(selection).setProperties

  constructor: (selection) ->
    {@editor} = selection
    @initialize(selection)
    @updateProperties()

  initialize: (selection) ->
    @selections = [selection]

    if @isReversed() then @getBottom() else @getTop()

  reverse: ->
    return if @isSingleLine()
    head = @getHead()
    tail = @getTail()
    swrap(head).setProperties(blockwise: head: false, tail: true)
    swrap(tail).setProperties(blockwise: head: true, tail: false)

  getBufferRowRange: ->
    startRow = @getTop().getBufferRowRange()[0]
