refactored module require