private static void startAlgorithm () {
        ArrayList unmatchedFromO1 = AlgorithmUtils.filterClses (_results.getUnmatchedEntriesFromO1 ());
        ArrayList unmatchedFromO2 = AlgorithmUtils.filterClses (_results.getUnmatchedEntriesFromO2 ());

        if (unmatchedFromO1 == null || unmatchedFromO1.isEmpty()) return;


        int i = 0;
        while (!unmatchedFromO1.isEmpty() && i < unmatchedFromO1.size()) {
            Cls nextUnmatchedCls = (Cls)unmatchedFromO1.get(i);
            i++;
            // **** need to deal with multiple images here
            if (_results.getFirstImage(nextUnmatchedCls) == null) // i.e., we haven't found a match for it in
            	findMatch (nextUnmatchedCls, new ArrayList(unmatchedFromO1), new ArrayList(unmatchedFromO2)); // one of the previous iterations of this loop
        }
    }