refactored hole generation to own class