diff --git a/beat/web/reports/static/reports/app/directives/edit/tableItem.js b/beat/web/reports/static/reports/app/directives/edit/tableItem.js
index 9fba43f28944e7eb73ef6d78ffa26a1077542509..bdc3711e492775fa493389276db451bc0823ca3d 100644
--- a/beat/web/reports/static/reports/app/directives/edit/tableItem.js
+++ b/beat/web/reports/static/reports/app/directives/edit/tableItem.js
@@ -129,7 +129,7 @@ angular.module('reportApp')
 	class="panel-collapse collapse in"
 	role="tabpanel"
 	aria-labelledby="{{domId}}-heading">
-	<div table-item group='group' content='content' is-viewing-csv='isViewingCSV'></div>
+	<div table-item class='panel-body' group='group' content='content' is-viewing-csv='isViewingCSV'></div>
 </div>
 `
 	};
diff --git a/beat/web/reports/static/reports/app/directives/tableItem.js b/beat/web/reports/static/reports/app/directives/tableItem.js
index d602cc8d79883a39bee60227623666ccc4accd21..3105eb9e0ac3ab06ae4373a482b63b3fa66f3718 100644
--- a/beat/web/reports/static/reports/app/directives/tableItem.js
+++ b/beat/web/reports/static/reports/app/directives/tableItem.js
@@ -141,10 +141,10 @@ angular.module('reportApp')
 			};
 		},
 		template: `
-<div ng-if='isViewingCsv.val' class='panel-body'>
+<div ng-if='isViewingCsv.val'>
 	<pre>{{ getCSV() }}</pre>
 </div>
-<div ng-if='!isViewingCsv.val' class='panel-body' style='height: 100%; overflow-x: auto;'>
+<div ng-if='!isViewingCsv.val' style='height: 100%; overflow-x: auto;'>
 	<table class="table table-striped table-hover">
 		<thead>
 			<tr ui-sortable ng-model='fields'>
diff --git a/beat/web/reports/static/reports/app/directives/view/itemContainer.js b/beat/web/reports/static/reports/app/directives/view/itemContainer.js
index 3aed999c49d25f8dd93bd3b9059a387d610ffb22..2950fbd6a4cb67bb22a12d1481d9f265833b3682 100644
--- a/beat/web/reports/static/reports/app/directives/view/itemContainer.js
+++ b/beat/web/reports/static/reports/app/directives/view/itemContainer.js
@@ -40,7 +40,6 @@ angular.module('reportApp')
 <div
 	group-table-item
 	ng-if="item.id.includes('table')"
-	class='panel panel-default'
 	group='group'
 	id='item.id'
 	content='item.content'
@@ -49,7 +48,6 @@ angular.module('reportApp')
 <div
 	group-plot-item
 	ng-if="item.id.includes('plot')"
-	class='panel panel-default'
 	group='group'
 	id='item.id'
 	content='item.content'
@@ -58,7 +56,6 @@ angular.module('reportApp')
 <div
 	group-text-item
 	ng-if="item.id.includes('text')"
-	class='panel panel-default'
 	group='group'
 	report-item='item'
 	>
diff --git a/beat/web/reports/static/reports/app/directives/view/layout.js b/beat/web/reports/static/reports/app/directives/view/layout.js
index b04199a46fb3d89e6af1b07338260fedf0bd0084..2a4f6675e7e555fa0403b1f7dc181710d227094f 100644
--- a/beat/web/reports/static/reports/app/directives/view/layout.js
+++ b/beat/web/reports/static/reports/app/directives/view/layout.js
@@ -33,24 +33,40 @@ angular.module('reportApp').directive("groupsLayout", ['GroupsService', function
 		},
 		link: function(scope, el, attr){
 			scope.groups = GroupsService.groups;
+			scope.isEmptyReportItem = (item) => {
+				if(!Object.keys(item).includes('content') || !item.content) {
+					return true;
+				}
+
+				const thing = item.content;
+
+				const isEmptyStr = (typeof thing === 'string' || thing instanceof String) && thing === '';
+				const isEmptyObj = Object.keys(thing).length === 0;
+				const isEmptyArr = Array.isArray(thing) && thing.length === 0;
+
+				return isEmptyStr || isEmptyObj || isEmptyArr;
+			};
 		},
 		template: `
 <div class='panel panel-default'>
-<div id="content-layout-heading" class="panel-heading" role="tab">
-	<h4 class="panel-title">
-		Content
-	</h4>
-</div>
-<div id='content-layout-body' class='panel-body'>
-	<div id='groupsLayout' class='panel-group'>
-		<div
-			group-panel-content
-			ng-repeat='group in groups track by $index'
+	<div id="content-layout-heading" class="panel-heading" role="tab">
+		<h4 class="panel-title">
+			Content
+		</h4>
+	</div>
+	<ul
+		class='list-group'
+		ng-repeat='group in groups'
+		>
+		<group-item-container
+			class='list-group-item'
+			ng-if='!isEmptyReportItem(item)'
+			ng-repeat='item in group.reportItems track by $index'
 			group='group'
+			report-item='item'
 			>
-		</div>
-	</div>
-</div>
+		</group-item-container>
+	</ul>
 </div>
 `
 	};
diff --git a/beat/web/reports/static/reports/app/directives/view/panelContent.js b/beat/web/reports/static/reports/app/directives/view/panelContent.js
index 8fb5f28c17ab09d7610d42937cf94c8183d6fe1d..29940bcc483127984729c8d19ab753221a677473 100644
--- a/beat/web/reports/static/reports/app/directives/view/panelContent.js
+++ b/beat/web/reports/static/reports/app/directives/view/panelContent.js
@@ -33,11 +33,6 @@ angular.module('reportApp').directive("groupPanelContent", ['GroupsService', fun
 		link: function(scope){
 		},
 		template: `
-<div
-	ng-if='group.experiments.length > 0'
-	group-panel-items
-	group='group'>
-</div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/panelItems.js b/beat/web/reports/static/reports/app/directives/view/panelItems.js
index 4d8161c9e03bf0fff15ba91edc3438655c6e357d..b805824dda251ce36fb1423670216ef7db8b61c4 100644
--- a/beat/web/reports/static/reports/app/directives/view/panelItems.js
+++ b/beat/web/reports/static/reports/app/directives/view/panelItems.js
@@ -33,16 +33,6 @@ angular.module('reportApp').directive("groupPanelItems", [function(){
 		link: function(scope){
 		},
 		template: `
-<div>
-	<div
-		group-item-container
-		ng-repeat='item in group.reportItems track by $index'
-		group='group'
-		report-item='item'
-		style='margin-bottom: 5px;'
-		>
-	</div>
-</div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/plotItem.js b/beat/web/reports/static/reports/app/directives/view/plotItem.js
index d853e89200fee6536ff48166e7bd6566d75ac99a..96cd0055eae65b250c8bc7d6f5c41abeefb3e0c4 100644
--- a/beat/web/reports/static/reports/app/directives/view/plotItem.js
+++ b/beat/web/reports/static/reports/app/directives/view/plotItem.js
@@ -43,11 +43,7 @@ angular.module('reportApp')
 			});
 		},
 		template: `
-<div class='panel-body'>
-	<div class='panel-body'>
-		<div id='{{ renderDivId }}'></div>
-	</div>
-</div>
+<div id='{{ renderDivId }}'></div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/tableItem.js b/beat/web/reports/static/reports/app/directives/view/tableItem.js
index 39bd27a0fcc478eeeaf3cc4d7bd8356113eeaac2..318131645dc5af992a05f46d23208b34185a46db 100644
--- a/beat/web/reports/static/reports/app/directives/view/tableItem.js
+++ b/beat/web/reports/static/reports/app/directives/view/tableItem.js
@@ -45,18 +45,16 @@ angular.module('reportApp')
 			};
 		},
 		template: `
-<div class='panel-body'>
-	<div class='row'>
-		<div class='col-sm-12'>
-			<div class="btn-group" role="group" role='tab'>
-				<button class='btn btn-default' ng-click='toggleViewingCSV()'>
-					Toggle CSV View
-				</button>
-			</div>
+<div class='row'>
+	<div class='col-sm-12'>
+		<div class="btn-group pull-right" role="group" role='tab'>
+			<button class='btn btn-primary' ng-click='toggleViewingCSV()'>
+				Toggle CSV View
+			</button>
 		</div>
 	</div>
-	<div table-item group='group' content='content' is-viewing-csv='isViewingCSV'></div>
 </div>
+<div table-item group='group' content='content' is-viewing-csv='isViewingCSV'></div>
 `
 	};
 }]);
diff --git a/beat/web/reports/static/reports/app/directives/view/textItem.js b/beat/web/reports/static/reports/app/directives/view/textItem.js
index 23650951ae49a9aec23c16b46b508874f007939f..ceb725593509c9a3661dc6ad14a0b0d76f89956c 100644
--- a/beat/web/reports/static/reports/app/directives/view/textItem.js
+++ b/beat/web/reports/static/reports/app/directives/view/textItem.js
@@ -63,24 +63,22 @@ angular.module('reportApp')
 			scope.compileContent();
 		},
 		template: `
-<div class='panel-body'>
-	<div class='row'>
-		<div class='col-sm-12'>
-			<div class="btn-group" role="group" role='tab'>
-				<!-- dont show split view, just toggle between html/rst view !-->
-				<button class='btn btn-default' ng-click='isViewingSrc.val = !isViewingSrc.val'>
-					Toggle Source View
-				</button>
-			</div>
+<div class='row'>
+	<div class='col-sm-12'>
+		<div class="btn-group pull-right" role="group" role='tab'>
+			<!-- dont show split view, just toggle between html/rst view !-->
+			<button class='btn btn-primary' ng-click='isViewingSrc.val = !isViewingSrc.val'>
+				Toggle Source View
+			</button>
 		</div>
 	</div>
-	<div class='row' style='margin-top: 5px;'>
-		<div class='col-sm-12'>
-			<div ng-if='!isViewingSrc.val' ng-bind-html='trustAsHtml(compiledContent.val)'></div>
-			<div ng-if='isViewingSrc.val'>
-				<i>Readonly view</i>
-				<ui-codemirror ng-model='item.content' ui-codemirror-opts='srccmOptions'></ui-codemirror>
-			</div>
+</div>
+<div class='row' style='margin-top: 5px;'>
+	<div class='col-sm-12'>
+		<div ng-if='!isViewingSrc.val' ng-bind-html='trustAsHtml(compiledContent.val)'></div>
+		<div ng-if='isViewingSrc.val'>
+			<i>Readonly view</i>
+			<ui-codemirror ng-model='item.content' ui-codemirror-opts='srccmOptions'></ui-codemirror>
 		</div>
 	</div>
 </div>