Devices are organised into classes in order to generalise on common features between devices while at the same time hiding device dependent details. The device class contains a complete description and implementation of the behaviour of all members of that class. New device classes can be constructed out of existing device classes. This way a new hierarchy of classes can be built up in a short time. Device classes can use existing devices as sub-classes or as sub-objects. The practice of reusing existing classes is classical for OOP and is one of its main advantages. It encourages code to be written only once and maintained only once. Implementing device access in device classes forces the programmer to implement a generic solution.