Restructured the entire codebase