adding more codegen impls for structs