refactor ModuleBase