refactor hardware abstraction