Boatload more refactoring to make the USBness of it a little less obvious at API level.