move event system to pubsub system