dataclass at catalog root level instead in def