add smarts for handling the various arm types