I really don't like seeing marshalling-related code on these structs. It belongs to the registry. How would you feel about using a separate model that belongs to the `registry` pkg for this logic?