Changes made to re-architect this project and improve it