refactor hole stuff