Merging in the new codegen branch