Hardware abstraction