refactor hole results to use StateT for infer state