diff --git a/beat/web/experiments/static/experiments/js/utils.js b/beat/web/experiments/static/experiments/js/utils.js
index c5e797e455d4f3e9ea64240df05381beb565b971..d762b413c1b8833780c537c9238fa76a73f68d52 100644
--- a/beat/web/experiments/static/experiments/js/utils.js
+++ b/beat/web/experiments/static/experiments/js/utils.js
@@ -1861,6 +1861,92 @@ beat.experiments.utils.modal_add_to_report = function (names, report_list_url) {
 		return form_group;
 	}
 
+	function sendAddToReportRequest(post_info, url){
+		console.log(`Sending: ${JSON.stringify(post_info)}`);
+
+		var d = $.ajax({
+			type: "POST",
+			data: JSON.stringify(post_info),
+			url: url,
+			contentType: "application/json; charset=utf-8",
+			dataType: 'json',
+		});
+
+		d.done(function(data, status) {
+
+			var message = $(document.createElement('div'));
+			message.addClass('report-results');
+
+			var sent = post_info.experiments.length;
+			var successful = sent;
+
+			var description = $(document.createElement('h5'));
+			message.append(description);
+
+			if (data !== undefined) {
+				// some experiments have failed
+
+				// adds information about failed/incompatible experiments
+				function _add_list(message, objects, title) {
+					if (objects === undefined) return;
+					var length = objects.length;
+					if (length > 0) {
+						var _title = $(document.createElement('h5'));
+						_title.text(title);
+						message.append(_title);
+						var ul = $(document.createElement('ul'));
+						for (var i = 0; i < length; ++i) {
+							var li = $(document.createElement('li'));
+							li.text(objects[i]);
+							ul.append(li);
+						}
+						message.append(ul);
+					}
+					return length;
+				}
+				if (data.inaccessible_experiments !== undefined)
+					successful -= _add_list(message, data.inaccessible_experiments,
+						'These experiments have failed (and cannot be added):');
+				if (data.incompatible_experiments !== undefined)
+					successful -= _add_list(message, data.incompatible_experiments,
+						'These experiments have different analyzers (and cannot be added):');
+			}
+
+			var size = BootstrapDialog.SIZE_NORMAL;
+			var type = BootstrapDialog.TYPE_PRIMARY;
+			var title = '<i class="fa fa-check"></i> Report changes';
+			var btn_type = 'btn-primary';
+			if (successful == sent) {
+				description.text('Successfully added ' + sent + ' experiment(s) to report');
+			}
+			else {
+				description.text('Added ' + successful + ' (out of ' + sent + ' in total) experiment(s) to report');
+				size = BootstrapDialog.SIZE_WIDE;
+				type = BootstrapDialog.TYPE_WARNING;
+				btn_type = 'btn-warning';
+				title = '<i class="fa fa-warning"></i> Report changes';
+			}
+
+			BootstrapDialog.show({
+				title: title,
+				message: message,
+				size: size,
+				type: type,
+				buttons: [{
+					label: 'OK',
+					cssClass: btn_type,
+					action: function(dialog){dialog.close();},
+				}]
+			});
+
+			return true;
+		});
+
+		d.fail(function(data, status) {
+			process_error(data, status);
+		});
+	}
+
 	// select a group in the report for the experiment to go in
 	function addToGroup(reportData, names, selectedVal) {
 		console.log(reportData);
@@ -1881,10 +1967,10 @@ beat.experiments.utils.modal_add_to_report = function (names, report_list_url) {
 				console.log(rawData);
 				// the spread operator wont put a single array in an array,
 				// but we always want an arr of arrs
-				let expData = typeof rawData[0] === 'array' ? rawData : [rawData];
+				let expData = Array.isArray(rawData[0]) ? rawData : [rawData];
 				// the expData is an array of arrays,
 				// with the first element of the subarray being the exp data
-				let experiments = expData
+				const experiments = expData
 				// instead of just an arr of exp objs,
 				// make it:
 				// {
@@ -1895,6 +1981,43 @@ beat.experiments.utils.modal_add_to_report = function (names, report_list_url) {
 				.reduce((o, e) => Object.assign(o, e), {});
 				let groups = reportData.content.groups;
 
+				console.log(groups);
+				console.log(experiments);
+				const buildRequest = (groupName) => {
+					console.log(`Got group of ${JSON.stringify(groupName)}`);
+					var post_info = {
+						experiments: names,
+						group: groupName
+					};
+					sendAddToReportRequest(post_info, selectedVal);
+				}
+
+				const getAnalyzerFromExpName = (expName) => {
+					let analyzers = experiments[expName].declaration.analyzers;
+					let analyzer = analyzers[Object.keys(analyzers)[0]];
+					return analyzer.algorithm;
+				};
+				let analyzerSet = (new Set(Object.keys(experiments).map(e => getAnalyzerFromExpName(e))));
+				console.log(analyzerSet);
+				if(analyzerSet.size !== 1){
+					console.log(`multiple analyzers, just adding to report`);
+					buildRequest('');
+					return;
+				}
+
+				let possibleGroups = Object.entries(groups)
+				.filter(([groupName, groupData]) => {
+					// get the analyzer name from the fetched data
+
+					return groupData.analyzer === ''
+					|| groupData.analyzer === getAnalyzerFromExpName(Object.keys(experiments)[0]);
+				});
+				if(possibleGroups.length === 1){
+					let groupName = possibleGroups[0][0];
+					buildRequest(groupName);
+					return;
+				}
+
 				let message = $(document.createElement('div'));
 				message.append($(document.createElement('p')).text('By clicking Add, the experiment(s) will be added to the selected group in the report (if possible). You can cancel the operation by clicking Cancel.'));
 				let form_group = $(document.createElement('div')).addClass('form-group');
@@ -1917,32 +2040,9 @@ beat.experiments.utils.modal_add_to_report = function (names, report_list_url) {
 				select.on('chosen:showing_dropdown', function(e, params) {
 					select.find('option:gt(0)').remove();
 					select.find('option:eq(0)').attr('selected', true);
-					console.log(groups);
-					console.log(experiments);
-					Object.entries(groups)
-					.filter(([groupName, groupData]) => {
-						// get the analyzer name from the fetched data
-						const getAnalyzerFromExpName = (expName) => {
-							let analyzers = experiments[expName].declaration.analyzers;
-							let analyzer = analyzers[Object.keys(analyzers)[0]];
-							return analyzer.algorithm;
-						};
-
-						// if the selected experiments dont all have the same analyzer,
-						// the only group they can all be added to is 'default',
-						// the default group
-						let analyzerSet = (new Set(Object.keys(experiments).map(e => getAnalyzerFromExpName(e))));
-						console.log(analyzerSet);
-						if(analyzerSet.size !== 1){
-							console.log(`multi analyzers, returning dfeault group only`);
-							return groupName === 'default';
-						}
 
-						// one analyzer, just return groups with that analyzer
-						return groupData.analyzer === ''
-						|| groupData.analyzer === getAnalyzerFromExpName(Object.keys(experiments)[0]);
-					})
-					.forEach(([groupName, groupData]) => {
+					console.log(possibleGroups);
+					possibleGroups.forEach(([groupName, groupData]) => {
 						let opt = $(document.createElement('option'));
 						select.append(opt);
 						opt.val(groupName);
@@ -1950,12 +2050,13 @@ beat.experiments.utils.modal_add_to_report = function (names, report_list_url) {
 						opt.append(div);
 						opt.data('name', groupName);
 						div.text(groupName);
-						if (groupData.experiments) {
+						if (groupData.experiments.length > 0) {
 							let help = $(document.createElement('span')).addClass('help');
 							help.text(` (${groupData.experiments.reduce((s, n) => s + n, '')})`);
 							div.append(help);
 						}
 					});
+
 					select.trigger('chosen:updated');
 					select.trigger('chosen:open');
 				});
@@ -1983,8 +2084,9 @@ beat.experiments.utils.modal_add_to_report = function (names, report_list_url) {
 						{
 							label: 'Add',
 							cssClass: 'btn-primary',
-							action: function(the_dialog) {
-								if (!select.val()) {
+							action: function(the_dialog){
+								let selGroup = select.val();
+								if (!selGroup) {
 									BootstrapDialog.alert({
 										title: '<i class="fa fa-warning"></i> Error',
 										message: 'You must select a group to add experiments to',
@@ -1994,96 +2096,7 @@ beat.experiments.utils.modal_add_to_report = function (names, report_list_url) {
 								}
 								the_dialog.close();
 
-								console.log(`Got group of ${JSON.stringify(select.val())}`);
-
-								var post_info = {
-									experiments: names,
-									group: select.val()
-								};
-								console.log(`Sending: ${JSON.stringify(post_info)}`);
-
-								var d = $.ajax({
-									type: "POST",
-									data: JSON.stringify(post_info),
-									url: selectedVal,
-									contentType: "application/json; charset=utf-8",
-									dataType: 'json',
-								});
-
-								d.done(function(data, status) {
-
-									var message = $(document.createElement('div'));
-									message.addClass('report-results');
-
-									var sent = post_info.experiments.length;
-									var successful = sent;
-
-									var description = $(document.createElement('h5'));
-									message.append(description);
-
-									if (data !== undefined) {
-										// some experiments have failed
-
-										// adds information about failed/incompatible experiments
-										function _add_list(message, objects, title) {
-											if (objects === undefined) return;
-											var length = objects.length;
-											if (length > 0) {
-												var _title = $(document.createElement('h5'));
-												_title.text(title);
-												message.append(_title);
-												var ul = $(document.createElement('ul'));
-												for (var i = 0; i < length; ++i) {
-													var li = $(document.createElement('li'));
-													li.text(objects[i]);
-													ul.append(li);
-												}
-												message.append(ul);
-											}
-											return length;
-										}
-										if (data.inaccessible_experiments !== undefined)
-											successful -= _add_list(message, data.inaccessible_experiments,
-												'These experiments have failed (and cannot be added):');
-										if (data.incompatible_experiments !== undefined)
-											successful -= _add_list(message, data.incompatible_experiments,
-												'These experiments have different analyzers (and cannot be added):');
-									}
-
-									var size = BootstrapDialog.SIZE_NORMAL;
-									var type = BootstrapDialog.TYPE_PRIMARY;
-									var title = '<i class="fa fa-check"></i> Report changes';
-									var btn_type = 'btn-primary';
-									if (successful == sent) {
-										description.text('Successfully added ' + sent + ' experiment(s) to report');
-									}
-									else {
-										description.text('Added ' + successful + ' (out of ' + sent + ' in total) experiment(s) to report');
-										size = BootstrapDialog.SIZE_WIDE;
-										type = BootstrapDialog.TYPE_WARNING;
-										btn_type = 'btn-warning';
-										title = '<i class="fa fa-warning"></i> Report changes';
-									}
-
-									BootstrapDialog.show({
-										title: title,
-										message: message,
-										size: size,
-										type: type,
-										buttons: [{
-											label: 'OK',
-											cssClass: btn_type,
-											action: function(dialog){dialog.close();},
-										}]
-									});
-
-									return true;
-								});
-
-								d.fail(function(data, status) {
-									process_error(data, status);
-								});
-
+								buildRequest(selGroup);
 							},
 						},
 					],