Generalize Response into Packet (so that it can be used for sending and receiving).
Separate Stage into per-function-unit subdevices.
Clean up function unit vs function unit code and command vs command code terminology.