         }
     }
 
-    // Slightly slower because it needs to do a lookup first.
     func removeItem(item:AnyObject) {
         mainThread {
             if let index = self.indexForItem(item) {

    }
    
    func insertItem(item:AnyObject, atIndex index: Int) {
        serialOperation {
            if index == 0 || index < self.items.count {
                self.mainThread {
                    self.items.insert(item, atIndex: index)
                    self.insertItemsAtIndexPaths([index])
                }
            } else {
                NSLog("index out of bounds: %d", index)
            }

        }
    }
    
    func updateItem(item:AnyObject) {
        mainThread {
            if let index = self.indexForItem(item) {
