project refactored