refactor MttWidget

the goal is to don't duplicate the same code inside each Widget,
MttWidget is now parameterized with the type of the widget's associated module.
see changes for details.