every bubble is on its own thread and communicates via redis pubsub