refactor all in one module