I will look deeply at `has_child` and `has_parent` and try to find any possibilities for optimisations.