introduce AbstractPropertyGroup