Reorganized the project into a better structure, also gems