make device ID optional