use RecursiveOpenStruct for attrubites