singleton DeviceController