implementing devices.h