     direction         = if event.which is 40 then "down" else "up"
     addend            = if event.which is 40 then 1 else -1
 
-    selectedIndex     = @itemsOrdered.indexOf @selectedItems[0]
-    lastSelectedIndex = @itemsOrdered.indexOf @selectedItems[@selectedItems.length - 1]
-
-    if @itemsOrdered[selectedIndex + addend]
+    items = @getListItems()
+
+    selectedIndex     = items.indexOf @selectedItems[0]
+    lastSelectedIndex = items.indexOf @selectedItems[@selectedItems.length - 1]
+
+    if items[selectedIndex + addend]
       unless event.metaKey or event.ctrlKey or event.shiftKey
         # navigate normally if meta key is NOT pressed
-        @selectItem @itemsOrdered[selectedIndex + addend]
+        @selectItem items[selectedIndex + addend]
       else
         # take extra actions if meta key is pressed
-        if @selectedItems.indexOf(@itemsOrdered[lastSelectedIndex + addend]) isnt -1
+        if @selectedItems.indexOf(items[lastSelectedIndex + addend]) isnt -1
           # to be deselected item is in @selectedItems
-          if @itemsOrdered[lastSelectedIndex]
-            @deselectSingleItem @itemsOrdered[lastSelectedIndex]
+          if items[lastSelectedIndex]
+            @deselectSingleItem items[lastSelectedIndex]
         else
           # to be deselected item is NOT in @selectedItems
-          if @itemsOrdered[lastSelectedIndex + addend ]
-            @selectSingleItem @itemsOrdered[lastSelectedIndex + addend ]
+          if items[lastSelectedIndex + addend ]
+            @selectSingleItem items[lastSelectedIndex + addend ]
 
   selectNextItem:(item, event)->
 
+    items = @getListItems()
+
     [item] = @selectedItems unless item
-    selectedIndex = @itemsOrdered.indexOf item
-    @selectItem @itemsOrdered[selectedIndex + 1]
+    selectedIndex = items.indexOf item
+    @selectItem items[selectedIndex + 1]
 
   selectPrevItem:(item, event)->
 
+    items = @getListItems()
+
     [item] = @selectedItems unless item
-    selectedIndex = @itemsOrdered.indexOf item
-    @selectItem @itemsOrdered[selectedIndex + -1]
+    selectedIndex = items.indexOf item
+    @selectItem items[selectedIndex + -1]
 
 
   deselectAllItems:->

    {noItemFoundWidget} = @getOptions()
    @getListView().addSubView @noItemView = noItemFoundWidget

  showNoItemWidget:-> @noItemView?.show() if @itemsOrdered.length is 0
  hideNoItemWidget:-> @noItemView?.hide()

  # regressed, will put back whenever i'm here again. - SY


  deselectSingleItem:(item)->
    item.removeHighlight()

    items = @getListItems()

    @selectedItems.splice @selectedItems.indexOf(item), 1
    if item is items[items.length-1]
      @getListView().unsetClass "last-item-selected"
    @itemDeselectionPerformed [item]

  selectSingleItem:(item)->

    items = @getListItems()

    if item.getOption("selectable") and !(item in @selectedItems)
      item.highlight()
      @selectedItems.push item
      if item is items[items.length-1]
        @getListView().setClass "last-item-selected"
      @itemSelectionPerformed()

  selectAllItems:->

    @selectSingleItem item for item in @getListItems()


  selectItemsByRange:(item1, item2)->

    items = @getListItems()

    indicesToBeSliced = [items.indexOf(item1), items.indexOf(item2)]
    indicesToBeSliced.sort (a, b)-> a - b
    itemsToBeSelected = items.slice indicesToBeSliced[0], indicesToBeSliced[1] + 1
    @selectSingleItem item for item in itemsToBeSelected
    @itemSelectionPerformed()

