diff --git a/bilby/core/likelihood.py b/bilby/core/likelihood.py
index e1fbec22cdaa8dfe29523536b25f8103fe61b415..f1286d5b871f40ccecb94c044c727301ede887cf 100644
--- a/bilby/core/likelihood.py
+++ b/bilby/core/likelihood.py
@@ -52,7 +52,7 @@ class Likelihood(object):
 
     @property
     def meta_data(self):
-        return self._meta_data
+        return getattr(self, '_meta_data', None)
 
     @meta_data.setter
     def meta_data(self, meta_data):
diff --git a/bilby/core/result.py b/bilby/core/result.py
index 4cd0c30ef5e0c490a1fc3c54993391adf456160b..5f3d4b4503d941179be8d73296bd65085bf26a88 100644
--- a/bilby/core/result.py
+++ b/bilby/core/result.py
@@ -408,12 +408,15 @@ class Result(object):
                 pass
         return dictionary
 
-    def save_to_file(self, overwrite=False, outdir=None, extension='json', gzip=False):
+    def save_to_file(self, filename=None, overwrite=False, outdir=None,
+                     extension='json', gzip=False):
         """
         Writes the Result to a json or deepdish h5 file
 
         Parameters
         ----------
+        filename: optional,
+            Filename to write to (overwrites the default)
         overwrite: bool, optional
             Whether or not to overwrite an existing result file.
             default=False
@@ -431,19 +434,20 @@ class Result(object):
             extension = "json"
 
         outdir = self._safe_outdir_creation(outdir, self.save_to_file)
-        file_name = result_file_name(outdir, self.label, extension, gzip)
+        if filename is None:
+            filename = result_file_name(outdir, self.label, extension, gzip)
 
-        if os.path.isfile(file_name):
+        if os.path.isfile(filename):
             if overwrite:
-                logger.debug('Removing existing file {}'.format(file_name))
-                os.remove(file_name)
+                logger.debug('Removing existing file {}'.format(filename))
+                os.remove(filename)
             else:
                 logger.debug(
-                    'Renaming existing file {} to {}.old'.format(file_name,
-                                                                 file_name))
-                os.rename(file_name, file_name + '.old')
+                    'Renaming existing file {} to {}.old'.format(filename,
+                                                                 filename))
+                os.rename(filename, filename + '.old')
 
-        logger.debug("Saving result to {}".format(file_name))
+        logger.debug("Saving result to {}".format(filename))
 
         # Convert the prior to a string representation for saving on disk
         dictionary = self._get_save_data_dictionary()
@@ -462,17 +466,17 @@ class Result(object):
                     import gzip
                     # encode to a string
                     json_str = json.dumps(dictionary, cls=BilbyJsonEncoder).encode('utf-8')
-                    with gzip.GzipFile(file_name, 'w') as file:
+                    with gzip.GzipFile(filename, 'w') as file:
                         file.write(json_str)
                 else:
-                    with open(file_name, 'w') as file:
+                    with open(filename, 'w') as file:
                         json.dump(dictionary, file, indent=2, cls=BilbyJsonEncoder)
             elif extension == 'hdf5':
                 import deepdish
                 for key in dictionary:
                     if isinstance(dictionary[key], pd.DataFrame):
                         dictionary[key] = dictionary[key].to_dict()
-                deepdish.io.save(file_name, dictionary)
+                deepdish.io.save(filename, dictionary)
             else:
                 raise ValueError("Extension type {} not understood".format(extension))
         except Exception as e:
@@ -1293,7 +1297,7 @@ class ResultList(list):
             result = copy(self[0])
 
         if result.label is not None:
-            result.label += 'combined'
+            result.label += '_combined'
 
         self._check_consistent_sampler()
         self._check_consistent_data()
diff --git a/cli_bilby/bilby_result.py b/cli_bilby/bilby_result.py
index aa0ea0f18835c51a782252807fafa16f50602498..ae3a6545b05fcc29aa52d93130a839f76d950053 100644
--- a/cli_bilby/bilby_result.py
+++ b/cli_bilby/bilby_result.py
@@ -29,14 +29,17 @@ import bilby
 
 def setup_command_line_args():
     parser = argparse.ArgumentParser(
-        description="Helper tool for bilby result files",
-        epilog=print(__doc__))
+        description="Helper tool for bilby result files")
     parser.add_argument("-r", "--results", nargs='+', required=True,
                         help="List of results files.")
     parser.add_argument("-c", "--convert", type=str, choices=['json', 'hdf5'],
                         help="Convert all results.", default=False)
+    parser.add_argument("-m", "--merge", action='store_true',
+                        help="Merge the set of runs, output saved using the outdir and label")
     parser.add_argument("-o", "--outdir", type=str, default=None,
                         help="Output directory.")
+    parser.add_argument("-l", "--label", type=str, default=None,
+                        help="New label for output result object")
     parser.add_argument("-b", "--bayes", action='store_true',
                         help="Print all Bayes factors.")
     parser.add_argument("-p", "--print", nargs='+', default=None,
@@ -55,7 +58,7 @@ def read_in_results(filename_list):
     results_list = []
     for filename in filename_list:
         results_list.append(bilby.core.result.read_in_result(filename=filename))
-    return results_list
+    return bilby.core.result.ResultList(results_list)
 
 
 def print_bayes_factors(results_list):
@@ -97,3 +100,10 @@ def main():
         print_bayes_factors(results_list)
     if args.ipython:
         drop_to_ipython(results_list)
+    if args.merge:
+        result = results_list.combine()
+        if args.label is not None:
+            result.label = args.label
+        if args.outdir is not None:
+            result.outdir = args.outdir
+        result.save_to_file()