restructured the whole project for better overwie