refactored to not use the dynamic module loading