restructured and refactored project