use strongly typed find_if instead of bsearch