Reworked the functionality of the macromodule_base and a concrete implementation