diff --git a/beat/web/reports/static/reports/app/directives/groupAddGroupMenu.js b/beat/web/reports/static/reports/app/directives/edit/addGroupMenu.js
similarity index 100%
rename from beat/web/reports/static/reports/app/directives/groupAddGroupMenu.js
rename to beat/web/reports/static/reports/app/directives/edit/addGroupMenu.js
diff --git a/beat/web/reports/static/reports/app/directives/groupAddItemsMenu.js b/beat/web/reports/static/reports/app/directives/edit/addItemsMenu.js
similarity index 100%
rename from beat/web/reports/static/reports/app/directives/groupAddItemsMenu.js
rename to beat/web/reports/static/reports/app/directives/edit/addItemsMenu.js
diff --git a/beat/web/reports/static/reports/app/directives/groupItemContainer.js b/beat/web/reports/static/reports/app/directives/edit/itemContainer.js
similarity index 100%
rename from beat/web/reports/static/reports/app/directives/groupItemContainer.js
rename to beat/web/reports/static/reports/app/directives/edit/itemContainer.js
diff --git a/beat/web/reports/static/reports/app/directives/groupsLayout.js b/beat/web/reports/static/reports/app/directives/edit/layout.js
similarity index 96%
rename from beat/web/reports/static/reports/app/directives/groupsLayout.js
rename to beat/web/reports/static/reports/app/directives/edit/layout.js
index 2e6af026fbdc0cb40bd240b2765b6a90cd1cd6dd..a9182b6a11f6262e20f08fe9356d07d147927f3a 100644
--- a/beat/web/reports/static/reports/app/directives/groupsLayout.js
+++ b/beat/web/reports/static/reports/app/directives/edit/layout.js
@@ -35,7 +35,7 @@ angular.module('reportApp').directive("groupsLayout", ['GroupsService', function
 			scope.groups = GroupsService.groups;
 			scope.GroupsService = GroupsService;
 			scope.sortableOptions = {
-				handle: '> .panel-heading'
+				handle: '> .panel-heading > .panel-title > .drag-handle'
 			};
 		},
 		template: `
diff --git a/beat/web/reports/static/reports/app/directives/groupPanelContent.js b/beat/web/reports/static/reports/app/directives/edit/panelContent.js
similarity index 94%
rename from beat/web/reports/static/reports/app/directives/groupPanelContent.js
rename to beat/web/reports/static/reports/app/directives/edit/panelContent.js
index d088c7c1a19d5a2b4b400f37dac9955ca0c353b7..7ad60891e1f56b6a668dbe7d6bb201ce881a6698 100644
--- a/beat/web/reports/static/reports/app/directives/groupPanelContent.js
+++ b/beat/web/reports/static/reports/app/directives/edit/panelContent.js
@@ -39,7 +39,7 @@ angular.module('reportApp').directive("groupPanelContent", ['GroupsService', fun
 			};
 		},
 		template: `
-<div id="{{group.name}}-heading" class="panel-heading" role="tab" style='cursor: grab;'>
+<div id="{{group.name}}-heading" class="panel-heading" role="tab">
 	<h4 class="panel-title">
 		<a
 			class=''
@@ -70,6 +70,9 @@ angular.module('reportApp').directive("groupPanelContent", ['GroupsService', fun
 		<div class='btn-group'>
 			<button ng-disabled='!isEditable' class='btn btn-danger' ng-click='deleteGroup(group.name)'>Delete Group</button>
 		</div>
+		<span class='btn btn-default drag-handle' data-toggle='tooltip' data-placement='top' title='Drag to re-order groups'>
+			<i class='fa fa-arrows'></i>
+		</span>
 	</h4>
 </div>
 <div id="collapse-{{group.name}}"
diff --git a/beat/web/reports/static/reports/app/directives/groupPanelExperiments.js b/beat/web/reports/static/reports/app/directives/edit/panelExperiments.js
similarity index 100%
rename from beat/web/reports/static/reports/app/directives/groupPanelExperiments.js
rename to beat/web/reports/static/reports/app/directives/edit/panelExperiments.js
diff --git a/beat/web/reports/static/reports/app/directives/groupPanelItems.js b/beat/web/reports/static/reports/app/directives/edit/panelItems.js
similarity index 97%
rename from beat/web/reports/static/reports/app/directives/groupPanelItems.js
rename to beat/web/reports/static/reports/app/directives/edit/panelItems.js
index 469c7fe9f8fe930066eb9f3b4d967f7d169bfabe..d1c0244692560d2bda95ac21855889bf83c129bb 100644
--- a/beat/web/reports/static/reports/app/directives/groupPanelItems.js
+++ b/beat/web/reports/static/reports/app/directives/edit/panelItems.js
@@ -32,7 +32,7 @@ angular.module('reportApp').directive("groupPanelItems", [function(){
 		},
 		link: function(scope){
 			scope.sortableOptions = {
-				handle: '.panel-heading'
+				handle: '.panel-heading > .panel-title > .drag-handle'
 			};
 		},
 		template: `
diff --git a/beat/web/reports/static/reports/app/directives/groupPlotItem.js b/beat/web/reports/static/reports/app/directives/edit/plotItem.js
similarity index 93%
rename from beat/web/reports/static/reports/app/directives/groupPlotItem.js
rename to beat/web/reports/static/reports/app/directives/edit/plotItem.js
index 2a08495e63a0cf09c4f00dd2d2f8ecf6b120d121..e1c35e52d9e59c3f509c16e72e7f416f942188a3 100644
--- a/beat/web/reports/static/reports/app/directives/groupPlotItem.js
+++ b/beat/web/reports/static/reports/app/directives/edit/plotItem.js
@@ -63,7 +63,11 @@ angular.module('reportApp')
 		</div>
 		<button class='btn btn-danger' ng-click='group.removeReportItem(id)'>
 			Delete Plot
-		</button
+		</button>
+
+		<span class='btn btn-default drag-handle' data-toggle='tooltip' data-placement='top' title='Drag to re-order item'>
+			<i class='fa fa-arrows'></i>
+		</span>
 	</h4>
 </div>
 <div id="collapse-{{domId}}"
diff --git a/beat/web/reports/static/reports/app/directives/groupTableFieldSelector.js b/beat/web/reports/static/reports/app/directives/edit/tableFieldSelector.js
similarity index 100%
rename from beat/web/reports/static/reports/app/directives/groupTableFieldSelector.js
rename to beat/web/reports/static/reports/app/directives/edit/tableFieldSelector.js
diff --git a/beat/web/reports/static/reports/app/directives/groupTableItem.js b/beat/web/reports/static/reports/app/directives/edit/tableItem.js
similarity index 97%
rename from beat/web/reports/static/reports/app/directives/groupTableItem.js
rename to beat/web/reports/static/reports/app/directives/edit/tableItem.js
index 24239408963f157038149a2df7f027a267c4a76b..3e1eab9de81a9d80cdb0029eea45994ca0ddadce 100644
--- a/beat/web/reports/static/reports/app/directives/groupTableItem.js
+++ b/beat/web/reports/static/reports/app/directives/edit/tableItem.js
@@ -213,7 +213,11 @@ angular.module('reportApp')
 		</div>
 		<button ng-disabled='!isEditable' class='btn btn-danger' ng-click='group.removeReportItem(id)'>
 			Delete Table
-		</button
+		</button>
+
+		<span class='btn btn-default drag-handle' data-toggle='tooltip' data-placement='top' title='Drag to re-order item'>
+			<i class='fa fa-arrows'></i>
+		</span>
 	</h4>
 </div>
 <div id="collapse-{{domId}}"
diff --git a/beat/web/reports/static/reports/app/directives/groupTextItem.js b/beat/web/reports/static/reports/app/directives/edit/textItem.js
similarity index 96%
rename from beat/web/reports/static/reports/app/directives/groupTextItem.js
rename to beat/web/reports/static/reports/app/directives/edit/textItem.js
index d74023bb4086f3ca1ae86e9535acfd76a52a0f07..cdce2cc6fe8fd505ce49dcf2e15ac59aa98c399e 100644
--- a/beat/web/reports/static/reports/app/directives/groupTextItem.js
+++ b/beat/web/reports/static/reports/app/directives/edit/textItem.js
@@ -109,7 +109,11 @@ angular.module('reportApp')
 
 		<button ng-disabled='!isEditable' class='btn btn-danger' ng-click='group.removeReportItem(item.id)'>
 			Delete Text Block
-		</button
+		</button>
+
+		<span class='btn btn-default drag-handle' data-toggle='tooltip' data-placement='top' title='Drag to re-order item'>
+			<i class='fa fa-arrows'></i>
+		</span>
 	</h4>
 </div>
 <div id="collapse-{{domId}}"
diff --git a/beat/web/reports/static/reports/app/directives/groupViewSerialized.js b/beat/web/reports/static/reports/app/directives/edit/viewSerialized.js
similarity index 100%
rename from beat/web/reports/static/reports/app/directives/groupViewSerialized.js
rename to beat/web/reports/static/reports/app/directives/edit/viewSerialized.js
diff --git a/beat/web/reports/templates/reports/report.html b/beat/web/reports/templates/reports/report.html
index 5db1915161da0eca3040eb75deb727be49b51a5c..2a4119abe6b0d99590cb79269192d743409a059c 100644
--- a/beat/web/reports/templates/reports/report.html
+++ b/beat/web/reports/templates/reports/report.html
@@ -107,19 +107,19 @@
     <script src="{% fingerprint "reports/app/directives/tableDynamic.js" %}" type="text/javascript" charset="utf-8"></script>
     <script src="{% fingerprint "reports/app/directives/tablePrecision.js" %}" type="text/javascript" charset="utf-8"></script>
     <script src="{% fingerprint "reports/app/directives/theColumn.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupsLayout.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupPanelContent.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupPanelExperiments.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupPanelItems.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupAddItemsMenu.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupItemContainer.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupTableItem.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupPlotItem.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupTextItem.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupTableFieldSelector.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupViewSerialized.js" %}" type="text/javascript" charset="utf-8"></script>
-    <script src="{% fingerprint "reports/app/directives/groupAddGroupMenu.js" %}" type="text/javascript" charset="utf-8"></script>
 
+    <script src="{% fingerprint "reports/app/directives/edit/addGroupMenu.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/addItemsMenu.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/itemContainer.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/layout.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/panelContent.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/panelExperiments.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/panelItems.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/plotItem.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/tableFieldSelector.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/tableItem.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/textItem.js" %}" type="text/javascript" charset="utf-8"></script>
+    <script src="{% fingerprint "reports/app/directives/edit/viewSerialized.js" %}" type="text/javascript" charset="utf-8"></script>
 
     <script src="{% fingerprint "ui/js/smartselector.js" %}" type="text/javascript" charset="utf-8"></script>
     <script src="{% fingerprint "ui/js/multipleselector.js" %}" type="text/javascript" charset="utf-8"></script>