generic Struct class