refactoring and adding additional modules to streamline