Added a try/catch so errors can be reported through the callback, even if it's a validation error.
Several fixes, added unit tests for field specific behavior, and corrected any bugs found.