Make data exchange event instead of timer based