refect event dispatcher logic