     return unless item
     throw new Error("toggle must be called with a Model") unless item instanceof Model
 
-    without = _.reject @_items, (t) -> t.clientId is item.clientId
+    without = _.reject @_items, (t) -> t.id is item.id
     if without.length < @_items.length
       @_items = without
     else

      # 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)
      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.push(item)
    @trigger()


    return unless item
    throw new Error("add must be called with a Model") unless item instanceof Model

    updated = _.reject @_items, (t) -> t.id is item.id
    updated.push(item)
    if updated.length isnt @_items.length
      @_items = updated
