* refactor the project