modularized the project