reworked how descriptors work