diff --git a/pykat/components.py b/pykat/components.py
index 5ae2630aae9d3ecc7dceaf3e68f9a8f911926bf1..d6a62ff7b3cdcd7b040b48533b0851b46c3f5fcf 100644
--- a/pykat/components.py
+++ b/pykat/components.py
@@ -159,7 +159,7 @@ class AbstractMirrorComponent(Component):
         super(AbstractMirrorComponent, self).__init__(name)
  
         if (L != None and R != None and T != None) and SIfloat(R)+SIfloat(T)+SIfloat(L) != 1: 
-            raise pkex.BasePyKatException('L+R+T must equal 1 if all are specified')
+            raise pkex.BasePyKatException('L+R+T must equal 1 if all are specified at {0}'.format(self.name))
         elif (R != None and L is None and T != None):
             L = 1- (SIfloat(R)+SIfloat(T))
         elif (R is None and L != None and T != None):
@@ -320,20 +320,17 @@ class beamSplitter(AbstractMirrorComponent):
 
         if len(values[0])==2:
             values.pop(0) # remove initial value
-            return beamSplitter(values[0], values[5], values[6], values[7], values[8], values[1], values[2], values[3], values[4])
+            return beamSplitter(values[0], values[5], values[6], values[7], values[8], values[1], values[2], None, values[3], values[4])
+        elif values[0][2]=="1":
+            values.pop(0) # remove initial value
+            return beamSplitter(values[0], values[5], values[6],
+            values[7], values[8], None, values[1], values[2], values[3], values[4])
         else:
-            if values[0][2]=="1":
-                values.pop(0) # remove initial value
-                return beamSplitter(values[0], values[5], values[6],
-                values[7], values[8], 1.0 - SIfloat(values[1]) -
-                SIfloat(values[2]), values[1], values[3], values[4])
-            else:
-                values.pop(0) # remove initial value
-                return beamSplitter(values[0], values[5], values[6],
-                values[7], values[8], values[1], 1.0 -
-                SIfloat(values[1]) - SIfloat(values[2]), values[3],
-                values[4])
-            
+            values.pop(0) # remove initial value
+            return beamSplitter(values[0], values[5], values[6],
+            values[7], values[8], values[1], None, values[3],
+            values[4])
+        
     def getFinesseText(self):
         if self.R+self.T+self.L > 1:
             raise pkex.BasePyKatException("Beamsplitter {0} has R+T+L > 1".format(self.name))
diff --git a/pykat/finesse.py b/pykat/finesse.py
index f196cf75850a544165c71c5b8f458cb3e7ccee1a..f920cda09055aec82abc959d87089b05d47a08f2 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -507,11 +507,11 @@ class kat(object):
                     if component_name in self.__detectors :
                         self.__detectors[component_name].scale = SIfloat(v[1])
                     else:
-                        raise pkex.BasePyKatException("scale command `{0}` refers to non-existing output".format(text))
+                        raise pkex.BasePyKatException("scale command `{0}` refers to non-existing output".format(component_name))
                 elif len(values) == 2:
                     self.scale = SIfloat(v[1])
                 else:
-                    raise pkex.BasePyKatException("scale command `{0}` is incorrect.".format(text))
+                    raise pkex.BasePyKatException("scale command `{0}` is incorrect.".format(line))
             elif (first == "pdtype"):
                 v = line.split()
                 if len(v) == 3:
@@ -519,9 +519,9 @@ class kat(object):
                     if component_name in self.__detectors :
                         self.__detectors[component_name].pdtype = v[2]
                     else:
-                        raise pkex.BasePyKatException("pdtype command `{0}` refers to non-existing detector".format(text))
+                        raise pkex.BasePyKatException("pdtype command `{0}` refers to non-existing detector".format(component_name))
                 else:
-                    raise pkex.BasePyKatException("pdtype command `{0}` is incorrect.".format(text))
+                    raise pkex.BasePyKatException("pdtype command `{0}` is incorrect.".format(line))
                     
         self.__currentTag = NO_BLOCK 
 
diff --git a/pykat/param.py b/pykat/param.py
index 798535afd103226921d0cd5eec9e19f3663e8b7d..c6e0ba0a381ae5c5e05462d9424577123adcac24 100644
--- a/pykat/param.py
+++ b/pykat/param.py
@@ -138,7 +138,8 @@ class Param(putable, putter):
     def __isub__(self, a):
         return self.value - (a)
         
-    __rsub__ = __sub__
+    def __rsub__(self, a):
+        return (a) - self.value
     
     def __div__(self, a):
         return self.value / (a)
diff --git a/pykat/utilities/optics/gaussian_beams.py b/pykat/utilities/optics/gaussian_beams.py
index 8179373756a527dc66ac62972145d46791351025..ea2fa94ade9c8815f36be9b41a8c03d8b375b153 100644
--- a/pykat/utilities/optics/gaussian_beams.py
+++ b/pykat/utilities/optics/gaussian_beams.py
@@ -117,7 +117,8 @@ class gauss_param(object):
         self.__q -= complex(a)
         return self
         
-    __rsub__ = __sub__
+    def __rsub__(self, a):
+        return gauss_param(self.__lambda, self.__nr, complex(a) - self.__q)
     
     def __div__(self, a):
         return gauss_param(self.__lambda, self.__nr, self.__q / complex(a))