device class implemented