refactor the structure of project, make it more tidy