diff --git a/bin/test_pass_though.py b/bin/test_pass_though.py
index 3a8c020228b49bd1cccb137632c57d6a19eacb6b..6f595e1da688889d6ae11b4dbf84dbdf41bef10b 100644
--- a/bin/test_pass_though.py
+++ b/bin/test_pass_though.py
@@ -16,6 +16,7 @@ l l1 1 0 0 n1
 s s1 10 1 n1 n2
 m m1 1 0 0 n2 n3
 gr4 grating 1500 n4 n5 n6 n7
+isol isolator 60 n8 n9
 
 pd refl n2
 
diff --git a/pykat/components.py b/pykat/components.py
index d914b06dcb81b633e4eaebde115c89de63dfaf89..172a85a4b20f1ee2947d08d39401ff907b38732f 100644
--- a/pykat/components.py
+++ b/pykat/components.py
@@ -368,9 +368,9 @@ class space(Component):
         values.pop(0) # remove initial value
         
         if len(values) == 5:
-            return space(values[0],values[3],values[4],L=values[1],n=values[2])
+            return space(values[0], values[3], values[4], values[1], values[2])
         elif len(values) == 4:
-            return space(values[0],values[2],values[3],L=values[1])
+            return space(values[0], values[2], values[3], values[1])
         else:
             raise exceptions.RuntimeError("Space Finesse code format incorrect '{0}'".format(text))
         
@@ -519,6 +519,43 @@ class grating(Component):
             self._QItem = pykat.gui.graphics.SpaceQGraphicsItem(self) # TODO: make SVG graphic for grating
         
         return self._QItem
+
+class isolator(Component):
+    def __init__(self, name, node1, node2, S = 0):
+        Component.__init__(self, name)
+        
+        self._requested_node_names.append(node1)
+        self._requested_node_names.append(node2)
+        
+        self.__S = SIfloat(S)
+        
+    @property
+    def S(self): return Param('S', self.__S)
+    @S.setter
+    def S(self, value): self.__S = SIfloat(value)
+    
+    @staticmethod
+    def parseFinesseText(text):
+        values = text.split(" ")
+
+        if values[0] != "isol":
+            raise exceptions.RuntimeError("'{0}' not a valid Finesse isolator command".format(text))
+
+        values.pop(0) # remove initial value
+        
+        if len(values) == 4:
+            return isolator(values[0], values[2], values[3], values[1])
+        else:
+            raise exceptions.RuntimeError("Isolator Finesse code format incorrect '{0}'".format(text))
+        
+    def getFinesseText(self):
+        return 'isol {0} {1} {2} {3}'.format(self.name, self.S, self.nodes[0].name, self.nodes[1].name)            
+
+    def getQGraphicsItem(self):
+        if self._QItem == None:
+            self._QItem = pykat.gui.graphics.SpaceQGraphicsItem(self) # TODO: make isolator graphic
+        
+        return self._QItem
     
 class laser(Component):
     def __init__(self,name,node,P=1,f_offset=0,phase=0):
diff --git a/pykat/finesse.py b/pykat/finesse.py
index 36415248855bce3cfbd6b738f6405e4eab28ef5b..cc31f32504d416a5ce9dc33e307aa66d134e8f09 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -207,6 +207,8 @@ class kat(object):
                     obj = pykat.components.beamSplitter.parseFinesseText(line)
                 elif(first[0:2] == "gr"):
                     obj = pykat.components.grating.parseFinesseText(line)
+                elif(first[0:4] == "isol"):
+                    obj = pykat.components.isolator.parseFinesseText(line)
                 elif(first[0:2] == "pd"):
                     obj = pykat.detectors.photodiode.parseFinesseText(line)
                 elif(first == "xaxis" or first == "x2axis" or first == "xaxis*" or first == "x2axis*"):