thread like the rest of 'em
pull-out common index-of function from protocols