Rework

Rework, Understand Code, and Clean up codebase.