avoid transmuting between different structs