criteriaFunc should probably be called isIntersecting or something (since criteriaFnc doesn't tell you what criteria it's looking for).