diff --git a/PanACoTA/prepare_module/download_genomes_func.py b/PanACoTA/prepare_module/download_genomes_func.py
index 2b11ac8ef769c08d4aef6b6afb406ca2bb44c456..ef091f19c21b4bdd7ed26433f3de0a16a4806cd4 100644
--- a/PanACoTA/prepare_module/download_genomes_func.py
+++ b/PanACoTA/prepare_module/download_genomes_func.py
@@ -13,7 +13,6 @@ import shutil
 import sys
 import glob
 import urllib.request
-import progressbar
 import ncbi_genome_download as ngd
 
 from PanACoTA import utils
diff --git a/PanACoTA/prepare_module/filter_genomes.py b/PanACoTA/prepare_module/filter_genomes.py
index 433717e665b6861bdac3fd478d91c8c8adfd26fa..2356f40f36095f142df7a3b54425552221917c08 100755
--- a/PanACoTA/prepare_module/filter_genomes.py
+++ b/PanACoTA/prepare_module/filter_genomes.py
@@ -101,7 +101,8 @@ def sort_genomes_minhash(genomes, max_l90, max_cont):
     return sorted_genomes
 
 
-def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, max_dist, threads):
+def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, max_dist,
+                   threads, quiet):
     """
     Run mash all vs all, to get all pairwise distances.
     Then, take the first genome of the list, and remove those for which the distance to it
@@ -124,6 +125,8 @@ def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, ma
         max limit of distance between 2 genomes to keep them
     threads :
         max number of threads to use
+    quiet : bool
+        True if nothing must be sent to stdout/stderr, False otherwise
 
     Returns
     -------
@@ -181,19 +184,22 @@ def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, ma
 
     # Iteratively discard genomes too close or too far
     logger.info("Starting iterative discarding steps")
-    widgets = ['Genomes compared: ',
-               progressbar.Bar(marker='█', left='', right='', fill=' '), ' ',
-               progressbar.Counter(), "/{}".format(nbgen), ' ',
-               progressbar.Timer(), ' - '
-              ]
-    bar = progressbar.ProgressBar(widgets=widgets, max_value=len(to_try), term_width=100).start()
-    done = 0
+    if not quiet:
+        widgets = ['Genomes compared: ',
+                   progressbar.Bar(marker='█', left='', right='', fill=' '), ' ',
+                   progressbar.Counter(), "/{}".format(nbgen), ' ',
+                   progressbar.Timer(), ' - '
+                  ]
+        bar = progressbar.ProgressBar(widgets=widgets, max_value=len(to_try), term_width=100).start()
+        done = 0
 
     while len(to_try) > 1:
         mash_step(to_try, corresp_file, mat_sp, genomes_removed, min_dist, max_dist)
-        done = nbgen - len(to_try)
-        bar.update(done)
-    bar.finish()
+        if not quiet:
+            done = nbgen - len(to_try)
+            bar.update(done)
+    if not quiet:
+        bar.finish()
     logger.info("Final number of genomes in dataset: {}".format(nbgen - len(genomes_removed)))
     return genomes_removed
 
diff --git a/PanACoTA/subcommands/prepare.py b/PanACoTA/subcommands/prepare.py
index 5deaa300877a73ef31c9cc20df15f6009531c32f..16ae3ae0eeb79f2d2e689c11db283a4863245cc4 100644
--- a/PanACoTA/subcommands/prepare.py
+++ b/PanACoTA/subcommands/prepare.py
@@ -204,7 +204,7 @@ def main(cmd, NCBI_species, NCBI_taxid, outdir, tmp_dir, threads, no_refseq, onl
     # sorted_genome : [genome_file] ordered by L90/nbcont (keys of genomes)
     sorted_genomes = fg.sort_genomes_minhash(genomes, l90, nbcont)
     removed = fg.iterative_mash(sorted_genomes, genomes, outdir, species_linked,
-                                min_dist, max_dist, threads)
+                                min_dist, max_dist, threads, quiet)
     # Write list of genomes kept, and list of genomes removed
     fg.write_outputfiles(genomes, sorted_genomes, removed, outdir, species_linked, min_dist)
     logger.info("End")
@@ -355,6 +355,11 @@ def check_args(parser, args):
         parser.error("If you want to run only Mash filtering steps, please give the "
                      "info file with the required information (see '--info' option)")
 
+    # Cannot be verbose and quiet at the same time
+    if args.verbose > 0 and args.quiet:
+        parser.error("Choose between a verbose output (-v) or a quiet output (-q)."
+                     " You cannot have both.")
+
     # WARNINGS
     # User did not specify a species name
     if not args.NCBI_species: