intersection filter functions gets passed additional user pointer