make this more generic. we could accidentally add any number of keys. consider calling _.keys() on each one, and ensuring that the result doesn't change after passing them through the isAncestor.