Support default value for properties
Cleanup and unit tests
this is a snapshot