Another possibility that comes to mind is to do classic inheritance between `Bot` and `PushBot/PullBot`, then use `BotMaster` as a `Bot` factory, instantiating the correct subclass. Likewise, use `Bot` as a `ContentService` factory.

One advantage of this is that `BotMaster` will be able to spawn the Bots directly into a child process when necessary and pass messages back-and-forth between itself and the Bots.