diff --git a/pykat/components.py b/pykat/components.py
index 52f32aa05d0a49d6d32921b1cfa1b4174b533bc9..613bb171d2a339d2413fe0b9d9b582920154311c 100644
--- a/pykat/components.py
+++ b/pykat/components.py
@@ -901,13 +901,14 @@ class grating(Component):
         return self._svgItem
 
 class isolator(Component):
-    def __init__(self, name, node1, node2, S = 0, node3="dump"):
+    def __init__(self, name, node1, node2, S = 0, node3="dump", option=0):
         Component.__init__(self, name)
         
         self._requested_node_names.append(node1)
         self._requested_node_names.append(node2)
         self._requested_node_names.append(node3)
         self._svgItem = None
+        self._option = option
         
         self.__S = Param("S",self,SIfloat(S))
         
@@ -920,20 +921,30 @@ class isolator(Component):
     def parseFinesseText(text):
         values = text.split()
 
-        if values[0] != "isol":
+        if values[0] != "isol" and values[0] != "isol*":
             raise pkex.BasePyKatException("'{0}' not a valid Finesse isolator command".format(text))
 
+        if values[0].endswith('*'):
+            option = 1
+        else:
+            option = 0
+            
         values.pop(0) # remove initial value
         
         if len(values) == 4:
-            return isolator(values[0], values[2], values[3], values[1])
+            return isolator(values[0], values[2], values[3], values[1], option=option)
         elif len(values) == 5:
-            return isolator(values[0], values[2], values[3], node3=values[4], S=values[1])
+            return isolator(values[0], values[2], values[3], node3=values[4], S=values[1], option=option)
         else:
             raise pkex.BasePyKatException("Isolator Finesse code format incorrect '{0}'".format(text))
         
     def getFinesseText(self):
-        rtn = ['isol {0} {1} {2} {3} {4}'.format(self.name, self.S.value, self.nodes[0].name, self.nodes[1].name, self.nodes[2].name)]
+        if self._option == 0:
+            cmd = "isol"
+        elif self._option == 1:
+            cmd = "isol*"
+            
+        rtn = ['{cmd} {0} {1} {2} {3} {4}'.format(self.name, self.S.value, self.nodes[0].name, self.nodes[1].name, self.nodes[2].name, cmd=cmd)]
         
         for p in self._params:
             rtn.extend(p.getFinesseText())
diff --git a/pykat/finesse.py b/pykat/finesse.py
index 109fd27bcdf81f28174824494140b93595ab575d..e582425c44dd5b40591f36d34beab500e47c796e 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -1500,11 +1500,11 @@ class kat(object):
         for c in self.components.values():
             for n in c.nodes:
                 if n.isDump:
-                    while hasattr(kat.nodes, node_name):
+                    while hasattr(self.nodes, node_name):
                         node_name = "%s_%i" % (str(undumped_name_prefix), i)
                         i += 1
                         
-                    self.nodes.replaceNode(c, n, self.nodes.createNode(node_name % i))
+                    self.nodes.replaceNode(c, n, self.nodes.createNode(node_name))
         
   
     def getMatrices(self):