add minimal pub/sub eventing system