Untangle snapshot mapper

Also fixed performance issue with `StructEncoding` arbitrary
More procedure syntax. You can ignore this if you have a good reason to prefer it though. But we should be consistent across the code base.