moved DescriptorProperty to its own class for documentation purposes