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

        @updateButtons()

      updateHidden: ->
        values = _.pluck(@selected.element.options, "value")
        @hidden.value JSON.stringify values

      bindEvents: ->

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

        for v, i in values
          valueToPosition[v] = i

        e = @available.element

