diff --git a/pykat/testing/test.py b/pykat/testing/test.py
index 25483a71397e9aed86468f8bf6ed68b2e9bd31e8..fbd4894c84d9c75aef79bc9d3b9a1fa43ae3a219 100644
--- a/pykat/testing/test.py
+++ b/pykat/testing/test.py
@@ -31,7 +31,7 @@ class FinesseTestProcess(Thread):
     git_commit = ""
     test_id = -1
     finished_test = False
-    diff_rel_eps = 1e-13
+    diff_rel_eps = 1e-12
     running_kat = ""
     running_suite = ""
     cancelling = False
@@ -47,7 +47,7 @@ class FinesseTestProcess(Thread):
         
     def __init__(self, TEST_DIR, BASE_DIR, test_commit, 
                  run_fast=False, kats=[], test_id="0",
-                 git_bin="",emails="", nobuild=True,*args, **kqwargs):
+                 git_bin="",emails="", nobuild=False,*args, **kqwargs):
         
         Thread.__init__(self)
         self.git_commit = test_commit
@@ -179,7 +179,7 @@ class FinesseTestProcess(Thread):
             
         os.mkdir(OUTPUTS_DIR)
         
-        os.environ["KATINI"] = os.path.join(self.TEST_DIR,"kat_test","kat.ini")
+        os.environ["KATINI"] = os.path.join(BUILD_PATH,"kat.ini")
         
         self.cancelCheck()
         # Clean up and pull latest test repository
@@ -230,7 +230,10 @@ class FinesseTestProcess(Thread):
                 else:
                     try:
                         start = time.time()
-                        out,err = utils.runcmd([FINESSE_EXE, "--noheader", kat],cwd=SUITE_PATH)
+                        
+                        print "running", kat, FINESSE_EXE
+                        
+                        out,err = utils.runcmd([FINESSE_EXE, "--noheader", kat], cwd=SUITE_PATH)
                         
                         OUT_FILE = os.path.join(SUITE_PATH,basename + ".out")
                         shutil.move(OUT_FILE, SUITE_OUTPUT_DIR)
@@ -285,21 +288,21 @@ class FinesseTestProcess(Thread):
                 if not os.path.exists(ref_file):
                     raise DiffException("Reference file doesn't exist for " + out, out)
                     
-                ref_arr = np.loadtxt(ref_file)
-                out_arr = np.loadtxt(out_file)
-
+                ref_arr = np.loadtxt(ref_file, dtype=np.float64)
+                out_arr = np.loadtxt(out_file, dtype=np.float64)
+                                
                 if ref_arr.shape != out_arr.shape:
                     raise DiffException("Reference and output are different shapes", out)
 
                 # for computing relative errors we need to make sure we
                 # have no zeros in the data
-                ref_arr_c = np.where(ref_arr == 0, ref_arr, 1)
+                ref_arr_c = np.where(ref_arr == 0, 1, ref_arr)
                 ref_arr_c[ref_arr_c==0] = 1
 
                 rel_diff = np.abs(out_arr-ref_arr)/np.abs(ref_arr_c)
-
-                diff = np.any(rel_diff >= self.diff_rel_eps)
                 
+                diff = np.any(rel_diff >= self.diff_rel_eps)
+                                
                 if diff:
                     self.diffFound = True
                     
@@ -384,6 +387,10 @@ class FinesseTestProcess(Thread):
             
             self.errorOccurred = dict(value=str(exc_value), traceback=str(traceback.format_exc(5)))
             
+            if exc_type is utils.RunException:
+                self.errorOccurred["stdout"] = ex.out
+                self.errorOccurred["stderr"] = ex.err
+                
             print "*** Exception for test_id = " + str(self.test_id)
             traceback.print_exception(exc_type, exc_value, exc_traceback,
                                       limit=5, file=sys.stdout)
diff --git a/pykat/testing/web/templates/finesse_test_view.html b/pykat/testing/web/templates/finesse_test_view.html
index 240deda1c07c0564d0ebbf601e3a2aee25c4e94b..23e7d388e39084d2cf6c4d4954cc82d26784f612 100644
--- a/pykat/testing/web/templates/finesse_test_view.html
+++ b/pykat/testing/web/templates/finesse_test_view.html
@@ -23,7 +23,7 @@
                 <li>{{ suite }}</li>
                 <ul>
                     {% for item in kats[suite] %}
-                    <li><span style="width: 200px">{{item[0]}}</span> - Max rel diff = {{item[1]}}</li>
+                    <li><span style="display:inline-block;width: 300px">{{item[0]}}</span>Max rel diff = {{item[1]}}</li>
                     {% if item[2][0] != "" %}
                     <ul>
                         <li>stdout: <pre>{{item[2][0]}}</pre></li>
diff --git a/pykat/testing/web/web_interface.py b/pykat/testing/web/web_interface.py
index 27ae5aa38eff7552ba48bac11beb31c3356db26c..8e78996d9dc024caa01840d06cc1ec759e4d2ae4 100644
--- a/pykat/testing/web/web_interface.py
+++ b/pykat/testing/web/web_interface.py
@@ -152,14 +152,17 @@ class FinesseProcessWatcher(Thread):
                                             
                         try:
                             doc = db.get('kattest', key, with_doc=True)["doc"]
+                            
+                            doc["max_diff"].append(max_diff)
                             doc["test_id"].append(self.process_to_watch.test_id)
                             doc["commit"].append(self.process_to_watch.get_version())
                             doc["timing"].append(self.process_to_watch.run_times[suite][kat])
                             db.update(doc)
                             
                         except RecordNotFound:
-                            doc = dict(t="kattest",test_id=[],commit=[],timing=[],suite=suite,kat=kat)
-
+                            doc = dict(t="kattest",max_diff=[],test_id=[],commit=[],timing=[],suite=suite,kat=kat)
+                            
+                            doc["max_diff"].append(max_diff)
                             doc["test_id"].append(self.process_to_watch.test_id)
                             doc["commit"].append(self.process_to_watch.get_version())
                             doc["timing"].append(self.process_to_watch.run_times[suite][kat])
@@ -468,14 +471,18 @@ def finesse_get_prev_tests(count):
             else:
                 status = "OK"
             
-            dt = datetime.strptime(endTime,"%Y-%m-%d %H:%M:%S.%f")-datetime.strptime(startTime,"%Y-%m-%d %H:%M:%S.%f")
+            if len(endTime) > 0 and len(startTime) > 0:
+                difftime = datetime.strptime(endTime,"%Y-%m-%d %H:%M:%S.%f")-datetime.strptime(startTime,"%Y-%m-%d %H:%M:%S.%f")
+                dt = float(difftime.seconds)
+            else:
+                dt = float(0)
             
             obj = dict(test_id=i['test_id'],
                            git_commit=i['git_commit'],
                            status=status,
                            startTime=startTime,
                            endTime=endTime,
-                           duration=float(dt.seconds))
+                           duration=dt)
             
             rtn.insert(0,obj)
            
@@ -539,17 +546,25 @@ def finesse_view(view_test_id):
     doc = doc["doc"]
     kats = {}
     
-    for run in doc["kats_run"]:
-        suite = run["suite"]
-        if not suite in kats:
-            kats[suite] = []
-            
-        kats[suite].append((run["kat"], run["max_diff"], run["runexception"]))
-        
+    if "kats_run" in doc:
+        for run in doc["kats_run"]:
+            suite = run["suite"]
+            if not suite in kats:
+                kats[suite] = []
+                
+            kats[suite].append((run["kat"], run["max_diff"], run["runexception"]))
+    else:
+        kats = {}
     
     if "error" in doc and doc["error"] is not None:
         traceback = doc["error"]["traceback"]
         message = doc["error"]["value"]
+        
+        if "stdout" in doc["error"]:
+            message += "\n\nstdout: " + doc["error"]["stdout"]
+            
+        if "stderr" in doc["error"]:
+            message += "\n\nstderr: " + doc["error"]["stderr"]
     else:
         traceback = ""
         message = "No test exceptions thrown"