refactored modules