The reason the transmitter moved into MyAvatar was to simplify the API.   Avatar::simulate() used to take a Transmitter*,  but was always NULL for the base class -- only MyAvatar would ever use a Transmitter (whatever a Transmitter is... I wasn't 100% clear on the feature).  Now both the simulate() and the updateThrust() methods are cleaner -- no need to supply the Transmitter as an argument.

Meanwhile, the rest of the code really doesn't need to know about the Transmitter.  If you grep for "Transmitter" through my version of the code you'll see two matches in Application where the render/update calls are made,  the one place where the Transmitter packets are handled, and a Menu entry.  Everything else lives in MyAvatar.cpp or Transmitter.cpp.  In short, the surface area between Transmitter and the rest of the code has been reduced.

What really needs to be done is to split up MyAvatar or otherwise cleanup/generalize its API so that control devices can be registered with it.  If MyAvatar code (such as updateThrust()) needs to know about a control device then the MyAvatar instance should be told about the device once when it is connected, and told when the device goes away-- the device shouldn't be supplied on a per-frame basis.

So, for now, as a gradual step in the right direction, I think MyAvatar should have the Transmitter.  The topology of the code makes this change an improvement.