diff --git a/bin/parse.kat b/bin/parse.kat
index 84fdb8754fda61d0efbaffe28da99bddd16301be..8b779fb01e464323d788b19f9086e4d66dcfe829 100644
--- a/bin/parse.kat
+++ b/bin/parse.kat
@@ -6,4 +6,4 @@ m m2 0.5 0.5 0 n4 dump
 
 pd PD1 n2
 
-xaxis m1 phi lin 0 360 360
+xaxis m1 phi lin 0 360 10000
diff --git a/bin/test_parser.py b/bin/test_parser.py
index 5cae9e5c83440ee6c97abea40318fc4a130db389..ad51e261baba5e42f67bb007bee74e0885f07f7e 100644
--- a/bin/test_parser.py
+++ b/bin/test_parser.py
@@ -2,18 +2,17 @@ import sys
 sys.path.append("../")
 
 from pykat import finesse
+import pykat.profiling
 import numpy as np
 import pylab as pl
 
 kat = finesse.kat()
-kat.load("parse.kat")
+#kat.load("D:\\finesse\\test\\kat_test\\physics\\mirror_astig_tilt_all_BH.kat")
+kat.load('parse.kat')
+kat.getPerformanceData = True
 
-run = kat.run(printout=0,printerr=0)
+[run, perfdata] = kat.run(printout=0,printerr=0)
 
-pl.figure()
+pykat.profiling.plotReducedPerformanceData(perfdata)
 
-pl.plot(run.x,run.y)
-pl.xlabel(run.xlabel)
-pl.legend(run.ylabels)
-pl.show()
 
diff --git a/pykat/finesse.py b/pykat/finesse.py
index 52b9a82e0b3e17367a4f810375c459bf2fd29e40..e6a1a156624ba03331bc36f507fa8c58f2b76638 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -89,6 +89,7 @@ class kat(object):
         self.__phase = None
         self.__maxtem = None
         self.__noxaxis = None
+        self.__time_code = None
         
     @property
     def maxtem(self): return self.__maxtem
@@ -100,6 +101,11 @@ class kat(object):
     @phase.setter
     def phase(self,value): self.__phase = int(value)
     
+    @property
+    def getPerformanceData(self): return self.__time_code
+    @getPerformanceData.setter
+    def getPerformanceData(self,value): self.__time_code = bool(value)
+    
     @property
     def noxaxis(self): return self.__noxaxis
     @noxaxis.setter
@@ -147,7 +153,12 @@ class kat(object):
         katfile.writelines(r.katScript)
         katfile.flush()
         
-        kat_exec = "{0} {1}".format(kat_exec, katfile.name)
+        flags = ""
+        
+        if self.__time_code:
+            flags = flags + " --perf-timing "
+            
+        kat_exec = "{0} {1} {2}".format(kat_exec, flags, katfile.name)
                                                             
         p=subprocess.Popen(kat_exec, 
                          stdout=subprocess.PIPE, 
@@ -180,7 +191,6 @@ class kat(object):
         r.ylabels = hdr[1:]
         
         if save_output:        
-            
             newoutfile = "{0}.out".format(base)
             
             cwd = os.path.os.getcwd()
@@ -209,8 +219,18 @@ class kat(object):
             
 
         katfile.close()
+        perfData = []
         
-        return r
+        if self.__time_code:
+            perffile = open(root[0] + ".perf",'r')
+            
+            for l in perffile.readlines():
+                vals = l.strip().split(' ')
+                perfData.append((vals[0], float(vals[1]), float(vals[2]), float(vals[3])))
+                
+            return [r, perfData]
+        else:
+            return r
         
     def add(self, obj) :
         
diff --git a/pykat/profiling.py b/pykat/profiling.py
new file mode 100644
index 0000000000000000000000000000000000000000..d018f6656f033ddad731b120cb74f7c144465046
--- /dev/null
+++ b/pykat/profiling.py
@@ -0,0 +1,26 @@
+import numpy as np
+import pylab as pl
+
+def plotReducedPerformanceData(perfdata, ordered=False):
+    labels = []
+    times = []
+
+    for pd in perfdata:
+        if pd[0] in labels:
+            times[labels.index(pd[0])] += pd[3]
+        else:
+            labels.append(pd[0])
+            times.append(pd[3])
+
+    if ordered:
+        times,labels = (list(t) for t in zip(*sorted(zip(times,labels))))
+            
+    ind = np.arange(len(labels))
+
+    fig = pl.figure()
+    plt = fig.add_subplot(111)
+    plt.barh(ind, times, height=0.5, log=True, align='center')
+    pl.yticks(ind, labels)
+    pl.show()
+    
+    return labels, times
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 5d8d23fb71fe6ae7f048fe35ad416b7fd946d6f1..6f9b1fab8797808d1205867fd050c57c547c9087 100644
--- a/setup.py
+++ b/setup.py
@@ -9,7 +9,7 @@ from distutils.core import setup
 
 setup(
     name='PyKat',
-    version='0.0.1',
+    version='0.0.2',
     author='Daniel Brown',
     author_email='ddb@star.sr.bham.ac.uk',
     packages=['pykat','pykat.gui','pykat.gui.resources'],