first version, module naming refactored