refactoring abstract module call