public void walk(File path){
        File[] contents = path.listFiles();

        for (File curFile : contents){
            if (! Walker.getTerminate()) { 
                try{
                    if (isValidDirectory(curFile)){
                        walk(curFile);
                    } else if (isValidFile(curFile)){
                        hashFile(curFile);
                    }
                } catch (Exception e) {
                    log.warn("Failed to access file!", e);
                    log.debug("path: " + curFile.getPath() +
                            "  |  pathcalled: " + path.getPath());
                }
            } else {
                break;
            }
            try {
                Thread.sleep(25); // short timeout to not block
            } catch (InterruptedException e) {
                if (Walker.getTerminate()) {
                    break;
                }
            }
        }
    }