initial addition of required fields
update some tests and lib
Add toObject and toJSON support
use toObject when saving
required & options fields are done