diff --git a/segmentmodel.py b/segmentmodel.py
index 9839fedea3a34e639c5bedb4c9b066de77ddb47d..f59f7d91be9706c57ffba6effbb048ece260d831 100644
--- a/segmentmodel.py
+++ b/segmentmodel.py
@@ -1280,14 +1280,32 @@ class SegmentModel(ArbdModel):
         k = opt.leastsq( fitFun, x0=np.exp(-sep/Lp) )
         return k[0][0] * 2*kT*0.00030461742
 
+    def extend(self, other, copy=True):
+        assert( isinstance(other, SegmentModel) )
+        if copy:
+            for s in other.segments:
+                self.segments.append(deepcopy(s))
+        else:
+            for s in other.segments:
+                self.segments.append(s)
+        self._clear_beads()
+
+    def update(self, segment , copy=False):
+        assert( isinstance(other, SegmentModel) )
+        if copy:
+            segment = deepcopy(segment)
+        self.segments.append(segment)
+        self._clear_beads()
+
     """ Mapping between different resolution models """
     def _clear_beads(self):
         for s in self.segments:
             s.clear_all()
         self.clear_all(keep_children=True)
+
+        ## Check that it worked
         assert( len([b for b in self]) == 0 )
         locParticles = []
-        # for c,A,B in self.get_connections():
         for s in self.segments:
             for c,A,B in s.get_connections_and_locations():
                 for l in (A,B):