abstract out PersistedObject property storage into PersistedProperty
cleanup