understanding codebases