basic codegen interface