reorganizing project and adding boilerplate