       return
     }
 
-    Swift.print("got \(fileBrowserItem) to update")
+    self.beginUpdates()
     self.update(fileBrowserItem)
+    self.endUpdates()
   }
 
   fileprivate func handleRemovals(for fileBrowserItem: FileBrowserItem, new newChildren: [FileBrowserItem]) {

  fileprivate func handleAdditions(for fileBrowserItem: FileBrowserItem, new newChildren: [FileBrowserItem]) {
    let curChildren = fileBrowserItem.children.sorted()

    let curPreparedChildren = self.prepare(curChildren)
    let newPreparedChildren = self.prepare(newChildren)






  }

  fileprivate func handleChildren(for fileBrowserItem: FileBrowserItem, new newChildren: [FileBrowserItem]) {

    let newPreparedChildren = self.prepare(newChildren)

    let keptChildren = curPreparedChildren.filter { newPreparedChildren.contains($0) }
    let childrenToRecurse = keptChildren.filter { self.isItemExpanded($0) }

    childrenToRecurse.forEach(self.update)
  }

  fileprivate func update(_ fileBrowserItem: FileBrowserItem) {
