I don't think the global pub/sub thing is necessary for this. Once that's added we could refactor if needed.