change GenericCodegen into Codegen