rewriting the entire codebase