MODIFIED: only the holes can be touched. TODO: refactor.