reform the project and refactor for managiability