added linear hardware interface