separated out the hardware checks