Use a more explicit class name.
Adding basic support for value objects.
Adding support for more robust property access of VO.

Plus a bunch of tests.