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.
Merge pull request #201 from jeremyletang/mttwidget

refactor MttWidget