Split the add-on in several modules

This will help with maintenance and tests