I like the idea of `update` being the main thing that **ahem** *updates* the collection (add, remove, and update), but the logic as it stands is pretty complex and interconnected. I made an attempt at this earlier today, but didn't get far. If have some time later in the week I'll take a look into a real solution or drop it.