type validation, return deferred when creating through class
clearer serialization support
updated observable