restructured codebase