diff --git a/mrdna/segmentmodel.py b/mrdna/segmentmodel.py
index 5c3875b817ce674f27e9f48f8bc443d91f95eea8..346b6c6c633e1530110ef8ba5f7bb6aec19986f4 100644
--- a/mrdna/segmentmodel.py
+++ b/mrdna/segmentmodel.py
@@ -2488,16 +2488,25 @@ class SegmentModel(ArbdModel):
             terminal_only = True)
 
 
-    def convert_crossovers_to_intrahelical(self, position_filter=None, terminal_only=False):
-        conn = self.get_crossovers_at_ends() if terminal_only else [c for c,A,B in self.get_connections('crossover')]
+    def convert_crossovers(self, new_connection_type=None, position_filter=None, terminal_only=False):
+        conn = self.get_crossovers_at_ends() if terminal_only else [c for c,A,B in self.get_connections('crossover')]+[c for c,A,B in self.get_connections('terminal_crossover')]
         for c in conn:
+            _condition = True
             if position_filter is not None:
                 r1,r2 = [l.container.contour_to_position(l.address)
                          for l in (c.A,c.B)]
-                if position_filter(r1,r2):
+                _condition = position_filter(r1,r2)
+
+            if _condition:
+                if new_connection_type is None:
+                    c.delete()
+                elif new_connection_type == 'intrahelical':
                     self.convert_crossover_to_intrahelical(c)
-            else:
-                self.convert_crossover_to_intrahelical(c)
+                else:
+                    raise NotImplementedError('convert_crossovers currently only supports removing crossovers')
+
+    def convert_crossovers_to_intrahelical(self, position_filter=None, terminal_only=False):
+        return self.convert_crossovers('intrahelical', position_filter, terminal_only)
 
     def convert_close_crossovers_to_intrahelical(self,cutoff):
         if cutoff < 0: