working on supporting INotifyCollectionChanged