@danrice-square I did this refactor but then reverted. The code that does collision checking is exactly the same as this code (queue + while + nested types) just without the return statement. It turns this O(n) into O(n^2) since we nest a hierarchy traversal inside a hierarchy traversal.