@Override
  public OperationResult execute() throws Exception {
    logger.log(Level.INFO, "Determine file system actions ...");

    FileSystemActionReconciliator actionReconciliator =
        new FileSystemActionReconciliator(config, result.getChangeSet());
    List<FileSystemAction> actions;

    if (cleanupOccurred) {
      actions =
          actionReconciliator.determineFileSystemActions(
              winnersDatabase, true, preDeleteFileHistoriesWithLastVersion);
    } else {
      actions = actionReconciliator.determineFileSystemActions(winnersDatabase);
    }

    Set<MultiChunkId> unknownMultiChunks = determineRequiredMultiChunks(actions, winnersDatabase);

    downloader.downloadAndDecryptMultiChunks(unknownMultiChunks);
    result.getDownloadedMultiChunks().addAll(unknownMultiChunks);

    applyFileSystemActions(actions);

    return null;
  }