also initialize self._v and implement isDirty here?