The tools within Dlayer are modular, 99% of the functional code for each tool sits within a folder in the library, the 1% remaining is the code which goes in the base ribbon handler to load the appropriate ribbon object.
The view logic and tool definition/validation are not modular, over time I plan to update the system to deal with that but for now, it is low down on my list of things to do.
There are up to four classes per tool, the model, the form, the tool class and a ribbon class that binds things together. At the moment there is duplication in the system when multiple content items support a feature, the most obvious example being the font family setting. I’m going to add support for shared tools models; this could be as simple as a base model class which each tool model extends, we will see.