project strcture refactored