implemented get_device_*