void setupCollection(IScheduler sched)
        {
            ChangeTrackingEnabled = true;
            _sched = sched ?? RxApp.DeferredScheduler;
            invalidateHash();

            ItemsAdded.Subscribe(x => {
                if (ChangeTrackingEnabled == false) {
                    return;
                }
                CreatedOn[x.ContentHash] = _sched.Now;
                UpdatedOn[x.ContentHash] = _sched.Now;
            });

            ItemsRemoved.Subscribe(x => {
                if (ChangeTrackingEnabled == false) {
                    return;
                }
                CreatedOn.Remove(x.ContentHash);
                UpdatedOn.Remove(x.ContentHash);
            });

            ItemChanged.Subscribe(x => {
                if (ChangeTrackingEnabled == false) {
                    return;
                }
                UpdatedOn[x.Sender.ContentHash] = _sched.Now;
            });

            Changed.Subscribe(_ => invalidateHash());
        }