public boolean process(File inputFile, boolean overwrite) throws IOException, InterruptedException, CommunityFinderException {
        File outputDir = inputFile.getParentFile();

        if (!new File(inputFile.getAbsolutePath() + ".mcliques").exists() || overwrite) {
            if (!generateMaxCliques(inputFile)) throw new CommunityFinderException("Problem generating max cliques");

            // move files

            boolean b = U.move(new File(inputFile.getName() + ".map"), outputDir);
            b &= U.move(new File(inputFile.getName() + ".mcliques"), outputDir);
            if (!b) {
                log.error("Error moving files");
                throw new CommunityFinderException("Could not move files to output dir: " + outputDir.getAbsolutePath());
            }
        }
        if (!new File(outputDir, "k_num_communities.txt").exists() || overwrite) {
            if (!generateCommunityAnalysis(inputFile, outputDir))
                throw new CommunityFinderException("Problem extracting communities");


            File[] files = new File(".").listFiles(new FilenameFilter() {
                public boolean accept(File file, String s) {
                    return s.endsWith("_communities.txt");
                }
            });
            boolean b = true;
            for (File f : files) {
                b &= U.move(f, outputDir);
            }
            if (!b) {
                throw new CommunityFinderException("Error moving community files");
            }
        }
        return true;


    }