@Override
    public List<Object> call() {
        List<Object> output = new LinkedList<>();
        for (SequenceEntry watsonEntry : watsonEntries) {
            if (watsonEntry != null) {
                Read watsonRead = map(createRead(watsonEntry, false));
                Read watsonRevRead = map(createRead(watsonEntry, true));
                try {
                    boolean forward = watsonRead.getMaximumHits() > watsonRevRead.getMaximumHits();
                    Read watson = align(forward ? watsonRead : watsonRevRead);
                    if (watson != null) {
                        StatusUpdate.processReads();
                        if (watson.getAlignedRead().length() > Globals.MIN_LENGTH_ALIGNED) {
                            output.add(watson);
                        }
                    } else {
                        StatusUpdate.processUnmapped();
                        output.add(watsonEntry);
                    }
                } catch (NegativeArraySizeException e) {
                    StatusUpdate.processUnmapped();
                    //JAligner problem, ignore
                } catch (Exception e) {
                    System.err.println(e);
                    Utils.error();
                    System.exit(0);
                }
            }
        }
        return output;
    }