the base class of device