The core USB specifications define only general aspects that are unaffected by peripheral devices. In the actual development of a peripheral device, it will be necessary to additionally define proprietary requests and Endpoint configurations optimized for the peripheral device. While the developers can take the task upon themselves, they can also make use of common drivers with predefined proprietary requests, Endpoint configurations, and transfer sequences. "Class Specification" is a subset of the USB specifications designed specifically for a certain group of devices. Available classes include Printer, Audio, Storage, Communication, Hub, and many more. Classes can be further subdivided into smaller Subclasses.