codegen interface