better way to key sub-entities

* add .name() function
* use the first rel as a fallback
* update filtering so that it can still be used if someone prefers not using .name()