new better codegen setup