refactoring with the aim of using properties as a backing for descriptors