Using a custom event handler. NotifyCollectionChangedEvent is too complicated for what's being done
Cleaning up
Using a concurrent dictionary
Hooking into events