diff --git a/pykat/finesse.py b/pykat/finesse.py
index b31af257260ed4b03e29125a7873c8021bb61251..1936dca9018df069111e54161c49dd89af350729 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -271,7 +271,7 @@ class kat(object):
                     obj = pykat.components.lens.parseFinesseText(line)
                 elif(first[0:3] == "mod"):
                     obj = pykat.components.modulator.parseFinesseText(line)
-                elif(first[0:2] == "pd"):
+                elif(first[0:2] == "pd" and first != "pdtype"):
                     obj = pykat.detectors.photodiode.parseFinesseText(line)
                 elif(first == "xaxis" or first == "xaxis*"):
                     obj = pykat.commands.xaxis.parseFinesseText(line)
@@ -339,6 +339,8 @@ class kat(object):
         Runs the current simulation setup that has been built thus far.
         It returns a katRun or katRun2D object which is populated with the various
         data from the simulation run.
+        printoutput=1 prints the Finesse banner
+        printerr shows the Finesse progress (set kat.verbose=1 to see warnings and errors)
         """
         start = datetime.datetime.now()
 
@@ -389,8 +391,11 @@ class kat(object):
                 
             katfile.writelines(r.katScript)
             katfile.flush()
-            
-            cmd=[kat_exec, '--perl1']
+
+            if printout == 1:
+                cmd=[kat_exec]
+            else:
+                cmd=[kat_exec, '--perl1']
             
             if self.__time_code:
                 cmd.append('--perf-timing')
@@ -409,21 +414,23 @@ class kat(object):
             err = ""
             
             #if self.verbose: print "Finesse output:"
-            
+ 
             for line in iter(p.stderr.readline, ""):
-                err += line 
                 
-                if len(line) > 0:
+                if len(line) > 0 and printerr == 1:
                     if line.rstrip().endswith('%'):
                         vals = line.split("-")
                         action = vals[0].strip()
                         prc = vals[1].strip()[:-1]
-                        if self.verbose: sys.stdout.write("\r{0} {1}%".format(action, prc))
+                        sys.stdout.write("\r{0} {1}%".format(action, prc))
                     elif line[0:3] == '** ':
                         if self.verbose: sys.stdout.write(line)
-                        
+
             [out,errpipe] = p.communicate()
-            
+            if printout == 1: 
+                print out
+            print ""
+
             # get the version number
             ix = out.find('build ') + 6
             ix2 = out.find(')',ix)
@@ -434,8 +441,8 @@ class kat(object):
             if p.returncode != 0:
                 raise pkex.FinesseRunError(err, katfile.name)
             
-            if printout == 1: print out
-            if printerr == 1: print err
+            #if printout == 1: print out
+            #if printerr == 1: print err
 
             root = os.path.splitext(katfile.name)
             base = os.path.basename(root[0])