separate forDescriptor
allow empty by default
make it easier to specify parameterless validators
sort descriptor keys
update dependencies