added event publisher implementation