refactors project structure,provides for extensibility, cleans code