active model validations and callbacks added, serialization moved into method to allow custom coders