First phase of refactoring code to simplify extending to hardware.
Want to move towards instead of subclassing objects and overriding
their hardware_* methods, instead, supply them and
ExtendedHardwareOverrides object that they then call into.