       doMoveDown: ->
         options = _.toArray @selected.element.options
 
-        movers = _.filter options, isSelected
+        groups = _.partition options, isSelected
+
+        movers = groups[0]
 
         # The element after the last selected element is the pivot; all the selected elements will
         # move after the pivot. If there is no pivot, the elements are shifted to the end of the list.
-        lastMoverIndex = _.last(movers).index
+        lastMoverIndex = movers[-1..-1][0].index
         pivot = options[lastMoverIndex + 1]
 
-        options = _.reject options, isSelected
+        options = groups[1]
 
         splicePos = if pivot then _.indexOf(options, pivot) + 1 else options.length
 

        values = JSON.parse @hidden.value()
        valueToPosition = {}

        _.each values, (v, i) -> valueToPosition[v] = i

        e = @available.element


        @updateButtons()

      updateHidden: ->
        values = (option.value for option in @selected.element.options)
        @hidden.value JSON.stringify values

      bindEvents: ->
