diff --git a/bin/test_plot.py b/bin/test_plot.py
index 0fc55def1e3ec2fc893396a57953c55e4039d4b1..bb186301b90de38d4a49301bf42bc4df888666b9 100644
--- a/bin/test_plot.py
+++ b/bin/test_plot.py
@@ -14,16 +14,17 @@ m m1 0.5 0.5 0 n2 n3
 s s2 10 1 n3 n4
 m m2 0.5 0.5 0 n4 n5
 s s3 10 1 n5 n6
+
+yaxis abs:deg
 """
 
-#kat = finesse.kat(katexe='/Users/adf/work/bin/kat')
 kat = finesse.kat()
 
 kat.parseCommands(code)
 
 kat.add(cavity('cav1', 'm1', 'n3', 'm2', 'n4'))
 
-kat.add(photodiode('pd_cav','n4'))
+kat.add(photodiode('pd_cav','n4',num_demods=1, demods=[1]))
 kat.add(photodiode('pd_ref','n2'))
 kat.add(photodiode('pd_trs','n5'))
 
@@ -40,6 +41,7 @@ out = kat.run(printout=0,printerr=0)
 
 pl.figure()
 pl.plot(out.x, out["pd_cav"])
+pl.plot(out.x, out["pd_ref"])
 pl.xlabel(out.xlabel)
 pl.ylabel("Intensity [W]")
 pl.legend(out.ylabels)
diff --git a/pykat/detectors.py b/pykat/detectors.py
index 67434f87f3b98f988f6de5e57479c5230a720380..a24d4d98a4951bb482243c60fd0fe957149cb51c 100644
--- a/pykat/detectors.py
+++ b/pykat/detectors.py
@@ -21,6 +21,7 @@ class Detector(object) :
         self.tag = None
         self.__node = None
         self._params = []
+        self._mask = {}
         
         if node.find('*'):
             self._alternate_beam = True
@@ -59,8 +60,18 @@ class Detector(object) :
 
     def __str__(self): return self.name
 
-class pd(Detector):
+    def mask(self, n, m, factor):
+        id = str(n)+"_"+str(m)
+        
+        # if the mask is 1 then remove this so it doesn't get 
+        # printed as by default the value is 1.0
+        if id in self._mask and factor == 1.0:
+            del self._mask[id]
+                
+        self._mask[id] = factor
     
+class pd(Detector):
+
     def __init__(self, name, num_demods, node_name, senstype=None, alternate_beam=False, **kwargs):
         Detector.__init__(self, name, node_name)
         
diff --git a/pykat/finesse.py b/pykat/finesse.py
index a3cf55b2bb508d37b53e32b8699d05980ceeffc2..e2c8f51d518e80aafc66783254cf459c2159cb0f 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -70,14 +70,16 @@ class katRun(object):
     def get(self, value): return self[value]
     
     def __getitem__(self, value):
-        if value in self.ylabels:
-            idx = self.ylabels.index(value)
-            if len(self.y.shape) == 1:
-                return self.y
-            else:
-                return self.y[:, idx]
+        idx = [i for i in range(len(self.ylabels)) if self.ylabels[i].split(" ")[0] == str(value)]
+        
+        if len(idx) == 1 and len(self.y.shape) == 1:
+            return self.y.squeeze()
+        elif len(idx) > 0:
+            return self.y[:,idx].squeeze()
+        elif len(idx) == 1:
+            return self.y[idx].squeeze()
         else:
-            raise  pkex.BasePyKatException("No output by the name {0} found".format(value))
+            raise  pkex.BasePyKatException("No output by the name {0} found".format(str(value)))
       
 class katRun2D(object):
     def __init__(self):