some changes for module manager, add abstract controller for generic method implementation