diff --git a/tko/db.py b/tko/db.py
index 30de8fd..6749ef7 100644
--- a/tko/db.py
+++ b/tko/db.py
@@ -167,7 +167,7 @@
 	def insert_job(self, tag, job, commit = None):
 		job.machine_idx = self.lookup_machine(job.machine)
 		if not job.machine_idx:
-			job.machine_idx = self.insert_machine(job.machine,
+			job.machine_idx = self.insert_machine(job,
 		                                              commit=commit)
 		self.insert('jobs', {'tag':tag,
                                      'label': job.label,
@@ -208,16 +208,20 @@
 			self.machine_group[machine] = group
 
 
-	def insert_machine(self, hostname, group = None, commit = None):
+	def insert_machine(self, job, group = None, commit = None):
+		hostname = job.machine
 		if self.machine_map and not self.machine_group:
 			self.read_machine_map()
 
 		if not group:
 			group = self.machine_group.get(hostname, hostname)
-				
+			if group == hostname and job.machine_owner:
+				group = job.machine_owner + '/' + hostname
+
 		self.insert('machines',
                             { 'hostname' : hostname ,
-		              'machine_group' : group },
+		              'machine_group' : group ,
+			      'owner' : job.machine_owner },
 		            commit=commit)
 		return self.lookup_machine(hostname)
 
diff --git a/tko/delete_job_results b/tko/delete_job_results
index ec4c106..4977988 100644
--- a/tko/delete_job_results
+++ b/tko/delete_job_results
@@ -12,12 +12,10 @@
 tag = sys.argv[1]
 resultsdir = os.path.abspath(os.path.join(thisdir, '../results', tag))
 
-if not os.path.isdir(resultsdir):
-	raise "Results directory %s does not exist" % resultsdir
 db = db.db()
 if not db.find_job(tag):
 	raise "Job tag %s does not exist in database" % tag
 
-shutil.rmtree(resultsdir)
 db.delete_job(tag)
+shutil.rmtree(resultsdir)
 
diff --git a/tko/display.py b/tko/display.py
index 9d85a9d..d37b8ff 100755
--- a/tko/display.py
+++ b/tko/display.py
@@ -114,6 +114,9 @@
 		if tests.count(test):
 			results.append(test)
 			tests.remove(test)
+	if tests.count('boot'):
+		results.append('boot')
+		tests.remove('boot')
 	return results + sorted(tests)
 
 
@@ -126,3 +129,15 @@
 	print '&nbsp&nbsp&nbsp'
 	print '<a href="machine_benchmark.cgi">Performance</a>'
 	print '</h2><p>'
+
+
+def group_name(group):
+	name = re.sub('_', '<br>', group.name)
+	if re.search('/', name):
+		(owner, machine) = name.split('/', 1)
+		if len(owner) > 3:           # capitalize acroymns
+			owner = owner.capitalize()
+		else:
+			owner = owner.upper()
+		name = owner + '<br>' + machine
+	return name
diff --git a/tko/machine_kernel.cgi b/tko/machine_kernel.cgi
index d3da39d..c972860 100755
--- a/tko/machine_kernel.cgi
+++ b/tko/machine_kernel.cgi
@@ -32,7 +32,7 @@
 
 	groups = frontend.group.select(db)
 
-	group_names = [re.sub('_', '<br>', g.name) for g in groups]
+	group_names = [display.group_name(g) for g in groups]
 	headers = ['Version'] + group_names
 	header_row = [ display.box(x, header=True) for x in headers ] 
 
diff --git a/tko/parse.py b/tko/parse.py
index 178f86e..94b42c8 100755
--- a/tko/parse.py
+++ b/tko/parse.py
@@ -81,6 +81,7 @@
 		self.user = keyval.get('user', None)
 		self.label = keyval.get('label', None)
 		self.machine = keyval.get('hostname', None)
+		self.machine_owner = keyval.get('owner', None)
 
 		if not self.machine:
 			self.get_machine()
@@ -94,13 +95,13 @@
 
 	def get_machine(self):
 		try:
-			hostname = os.path.join(dir, "sysinfo/hostname")
+			hostname = os.path.join(self.dir, "sysinfo/hostname")
 			self.machine = open(hostname, 'r').readline().rstrip()
 			return
 		except:
 			pass
 		try:
-			uname = os.path.join(dir, "sysinfo/uname_-a")
+			uname = os.path.join(self.dir, "sysinfo/uname_-a")
 			self.machine = open(uname, 'r').readline().split()[1]
 			return
 		except:
