modified event dipatcher