refactored project stucture