diff --git a/treeCl/distance_matrix.py b/treeCl/distance_matrix.py
index <HASH>..<HASH> 100644
--- a/treeCl/distance_matrix.py
+++ b/treeCl/distance_matrix.py
@@ -78,7 +78,7 @@ class DistanceMatrix(np.ndarray):
             add_noise=False,
             normalise=False,
             distribute_tasks=False,
-            **kwargs, # i.e. batch_size
+            **kwargs
     ):
 
         if distribute_tasks:
diff --git a/treeCl/parameters.py b/treeCl/parameters.py
index <HASH>..<HASH> 100644
--- a/treeCl/parameters.py
+++ b/treeCl/parameters.py
@@ -11,6 +11,14 @@ class BaseParameters(object):
     def dict(self):
         return dict((item.lstrip('_'), getattr(self, item)) for item in self.__slots__)
 
+    def read(self, fileobj):
+        return json.load(fileobj)
+
+    def construct_from_dict(self, dict):
+        for k, v in dict.items():
+            if '_{}'.format(k) in self.__slots__:
+                setattr(self, k, v)
+
     def write(self, fileobj=sys.stdout, indent=None):
         json.dump(self.dict, fileobj, indent=indent)
Batch simulation (async and seqntl)