ENH: support arbitrary structs