/** {@inheritDoc} */
  @Override
  @PauseBefore
  public Future<IdentificationResultCollection> submit(final IdentificationRequest request) {
    jobCounter.increment();
    requests.add(request);

    // old code blocking identification:
    Callable<IdentificationResultCollection> callable =
        new Callable<IdentificationResultCollection>() {
          @Override
          public IdentificationResultCollection call() throws IOException {
            droidCore.setMaxBytesToScan(maxBytesToScan);
            IdentificationResultCollection results = droidCore.matchBinarySignatures(request);
            return results;
          }
        };

    FutureTask<IdentificationResultCollection> task = new SubmissionFutureTask(callable, request);
    executorService.submit(task);
    return task;
  }