To add a new printer without any special modes to the system, just use the Printercapability NORMALPRINTER in the config.
If a new printermode is discovered, please inherit from the **AbstractDocumentBuilder** to ensure that your new class has the same *contract* for the **PrintDirector** as all the other builder classes.
If would be beneficial to make a abstract class representing the printer itself, so let it inherit from **AbstractDocumentBuilder**, name it accordingly (e.g. PRINTERNAME_BUILDER), then create an class representing the protocol for the desired printermode, and inherit from the logical abstract class representing the printer.
You can add all the special byte sequences for the printer in the logical class, so that you do not need to use specific byte, but human readable abbreviations.
You can also set defaults if the documentation of the printer is verbose enough.
For example like in the **AbstractIndexV4Builder**:
If you want to extend the architecture, for example to add support for new fileformats, inherit from **AbstractBrailleTableParser**, adhere to the *contract* and register it in the **AbstractBrailleTableParser**: