Moved fields to be descriptors (fixes #44).
Reorganized code.
Improved behaviour of required fields.
Renamed field method (fixes #46).