reimplementing pub/sub pattern to event streams