refactor and add project 3