diff --git a/tupak/core/result.py b/tupak/core/result.py
index 285ba6805710d92450425ab75c83941ec5c2e137..ea5e841d9ea782ec677347ac8184bf7e7796a799 100644
--- a/tupak/core/result.py
+++ b/tupak/core/result.py
@@ -362,6 +362,8 @@ class Result(dict):
         if conversion_function is not None:
             data_frame = conversion_function(data_frame, likelihood, priors)
         self.posterior = data_frame
+        # We save the samples in the posterior and remove the array of samples
+        del self.samples
 
     def construct_cbc_derived_parameters(self):
         """ Construct widely used derived parameters of CBCs """
diff --git a/tupak/core/sampler.py b/tupak/core/sampler.py
index 822dc8a6febe7966f0e360c2ba710f39a1e91a05..51b2fbd977c1f6c8cb5240265ae1fda712b976e3 100644
--- a/tupak/core/sampler.py
+++ b/tupak/core/sampler.py
@@ -945,7 +945,7 @@ class Ptemcee(Emcee):
 def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
                 sampler='dynesty', use_ratio=None, injection_parameters=None,
                 conversion_function=None, plot=False, default_priors_file=None,
-                clean=None, meta_data=None, **kwargs):
+                clean=None, meta_data=None, save=True, **kwargs):
     """
     The primary interface to easy parameter estimation
 
@@ -984,6 +984,8 @@ def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
         saving. For example, if `meta_data={dtype: 'signal'}`. Warning: in case
         of conflict with keys saved by tupak, the meta_data keys will be
         overwritten.
+    save: bool
+        If true, save the priors and results to disk.
     **kwargs:
         All kwargs are passed directly to the samplers `run` function
 
@@ -996,7 +998,6 @@ def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
     if clean:
         utils.command_line_args.clean = clean
 
-    utils.check_directory_exists_and_if_not_mkdir(outdir)
     implemented_samplers = get_implemented_samplers()
 
     if priors is None:
@@ -1010,7 +1011,10 @@ def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
         raise ValueError
 
     priors.fill_priors(likelihood, default_priors_file=default_priors_file)
-    priors.write_to_file(outdir, label)
+
+    if save:
+        utils.check_directory_exists_and_if_not_mkdir(outdir)
+        priors.write_to_file(outdir, label)
 
     if implemented_samplers.__contains__(sampler.title()):
         sampler_class = globals()[sampler.title()]
@@ -1049,14 +1053,14 @@ def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
             if conversion_function is not None:
                 result.injection_parameters = conversion_function(result.injection_parameters)
         result.fixed_parameter_keys = sampler.fixed_parameter_keys
-        # result.prior = prior  # Removed as this breaks the saving of the data
         result.samples_to_posterior(likelihood=likelihood, priors=priors,
                                     conversion_function=conversion_function)
         result.kwargs = sampler.kwargs
-        result.save_to_file()
+        if save:
+            result.save_to_file()
+            logger.info("Results saved to {}/".format(outdir))
         if plot:
             result.plot_corner()
-        logger.info("Sampling finished, results saved to {}/".format(outdir))
         logger.info("Summary of results:\n{}".format(result))
         return result
     else: