further implement hardware interface