I would be nice to use a type registration system for all of these unions, but I don't see a way to do that.  Any ideas?