Validating constructor pattern?

you can use straight maps with Changeset. If you need to validate you can always validate a map and create struct from the map afterwards.