Reorganized and refactored
Reorganized and refactored