Could you add some comments on why you need to listen for both DataRehashedEvents and TopologyChangedEvents?