adding third party dependencies
rearchitected file structure and further modularized components