See https://github.com/hypered/curiosity/pull/3. (Except about reducing the boilerplate for serialized field names.)