modified event dispatcher