       # items are in the _items array in the order they were selected.
       # (important for walking)
       relativeTo = @_items[@_items.length - 1]
-      startIdx = @_view.indexOfId(relativeTo.clientId)
-      endIdx = @_view.indexOfId(item.clientId)
+      startIdx = @_view.indexOfId(relativeTo.id)
+      endIdx = @_view.indexOfId(item.id)
       return if startIdx is -1 or endIdx is -1
       for idx in [startIdx..endIdx]
         item = @_view.get(idx)
-        @_items = _.reject @_items, (t) -> t.clientId is item.clientId
+        @_items = _.reject @_items, (t) -> t.id is item.id
         @_items.push(item)
     @trigger()
 

      touched = 0
      for newer in change.objects
        for existing, idx in @_items
          if existing.clientId is newer.clientId
            @_items[idx] = newer
            touched += 1
            break


    itemIds = _.pluck(items, 'id')

    without = _.reject @_items, (t) -> t.id in itemIds
    if without.length < @_items.length
      @_items = without
      @trigger(@)
