Refactored solution into smaller projects