module refactored