restructured the whole project