refactoring base modules