adding generic version of existing structs