adding hardware_abstract