Added in the hardware portion of the model driver (not done properly, the actual driver needs some rewriting to do properly (poorly cohesive)