implement property classes (in progress)