diff --git a/beat/web/reports/static/reports/app/directives/addReportItem.js b/beat/web/reports/static/reports/app/directives/addReportItem.js
index 4e57c6a54b4c1d4bb51618ae2fc87b5ff10e7ec7..8be08f9b4cd6a2a4fc1ee0f04b3f0d9ea1079ecc 100644
--- a/beat/web/reports/static/reports/app/directives/addReportItem.js
+++ b/beat/web/reports/static/reports/app/directives/addReportItem.js
@@ -21,7 +21,7 @@
  */
 //Directive for opening smart_selector list on "Add a report item" button click that displays options
 
-angular.module('reportApp').directive("addreportitem", function($compile){
+angular.module('reportApp').directive("addreportitem", ['$compile', 'ReportService', function($compile, ReportService){
 	return function(scope, element, attrs){
 		scope.$on("addSavedElement", function(event, id_content, type){
 			let num_tables_in_content = 0;
@@ -494,126 +494,6 @@ angular.module('reportApp').directive("addreportitem", function($compile){
 
 		}
 
-		//Retrieve chart from api and display on proper item
-		function _get_chart(scope, sub_content, content_type, chart_id){
-			let required_plotter = [];
-			let set_plotter = '';
-			if(sub_content.selected_plotter != undefined){
-				//required_plotter.push(sub_content.selected_plotter);
-				set_plotter = sub_content.selected_plotter;
-				let requested_dataformat = '';
-				//Get other plotters for required dataformat
-				for (let i = 0; i < scope.report.plotters.length; i++){
-					if(scope.report.plotters[i].name == sub_content.selected_plotter){
-						requested_dataformat = scope.report.plotters[i].dataformat;
-						break;
-					}
-				}
-
-				//Get default plotter for required dataformat
-				for (let i = 0; i < scope.report.defaultplotters.length; i++){
-					if(scope.report.defaultplotters[i].dataformat == requested_dataformat){
-						sub_content.defaultplotter = scope.report.defaultplotters[i];
-						break;
-					}
-				}
-
-				required_plotter.push(sub_content.defaultplotter.plotter);
-
-				//Get other plotters for required dataformat
-				for (let i = 0; i < scope.report.plotters.length; i++){
-					if(scope.report.plotters[i].dataformat == requested_dataformat && scope.report.plotters[i].name != sub_content.defaultplotter.plotter){
-						required_plotter.push(scope.report.plotters[i].name);
-					}
-				}
-			}
-			else{
-				//Get default plotter for required dataformat
-				for (let i = 0; i < scope.report.defaultplotters.length; i++){
-					if(scope.report.defaultplotters[i].dataformat == sub_content.description){
-						sub_content.defaultplotter = scope.report.defaultplotters[i];
-						break;
-					}
-				}
-
-				required_plotter.push(sub_content.defaultplotter.plotter);
-				set_plotter = sub_content.defaultplotter.plotter;
-
-				//Get other plotters for required dataformat
-				for (let i = 0; i < scope.report.plotters.length; i++){
-					if(scope.report.plotters[i].dataformat == sub_content.description && scope.report.plotters[i].name != sub_content.defaultplotter.plotter){
-						required_plotter.push(scope.report.plotters[i].name);
-					}
-				}
-			}
-
-			let plotterparameter = [];
-			//Get other plotterparameter
-			for (let i = 0; i < scope.report.plotterparameter.length; i++){
-				plotterparameter.push(scope.report.plotterparameter[i].name);
-			}
-
-			let chart_name = sub_content.name;
-
-			let legend_experiments = '';
-			let alias_experiments = [];
-			for(let i = 0; i < scope.report.experiments.length; i++){
-				if(i == 0)
-					legend_experiments = scope.report_experiments_alias[scope.report.experiments[i]];
-				else
-					legend_experiments = legend_experiments+ "&" +scope.report_experiments_alias[scope.report.experiments[i]];
-
-				alias_experiments.push(scope.report_experiments_alias[scope.report.experiments[i]]);
-			}
-
-			let request_data = {
-				experiment:   alias_experiments,
-				analyzer:     [scope.report.analyzer],
-				output:       [chart_name],
-				plotter:      set_plotter,
-				legend:       legend_experiments,
-				report_number:  scope.report.number,
-				//height:       300,
-				//width:        400,
-			};
-
-			base_url = scope.report.url_prefix;
-
-			let plot_detail = {};
-			plot_detail["required_plotter"] = required_plotter;
-			plot_detail["data"] =  {
-				analyzer:     [scope.report.analyzer],
-				output:       [chart_name],
-				plotter:      set_plotter,
-			};
-
-			if(sub_content.selected_template != undefined){// && sub_content.selected_template != "Default")
-				plot_detail["selected_template"] = sub_content.selected_template;
-				request_data.parameter = plot_detail["selected_template"];
-			}
-			else{
-				plot_detail["selected_template"] = sub_content.defaultplotter.parameter;
-				request_data.parameter = plot_detail["selected_template"];
-			}
-
-			if(sub_content.merged != undefined){// && sub_content.selected_template != "Default")
-				plot_detail["merged"] = sub_content.merged;
-				request_data.merged = plot_detail["merged"];
-			}
-			else{
-				plot_detail["merged"] = true;
-				request_data.merged = plot_detail["merged"];
-			}
-
-			beat.experiments.utils.getPlotData(base_url,
-				request_data, required_plotter, plotterparameter, content_type,
-				function(r_image_data, selected_content_type) {
-					download(r_image_data, chart_id + "." + content_type.toLowerCase(), selected_content_type);
-				}
-			);
-		}
-
-
 		//Retrieve chart from api and display on proper item
 		function _retrieve_chart(scope, sub_content, container){
 			let required_plotter = [];
@@ -704,10 +584,24 @@ angular.module('reportApp').directive("addreportitem", function($compile){
 			base_url = scope.report.url_prefix;
 			//scope.plots_details[container.id];
 
+			let getAnalyzerFromExpName = (expName) => {
+				let e = scope.report.all_experiments[expName];
+				if(!e){
+					return null;
+				}
+				return e.declaration.analyzers.analysis.algorithm;
+			};
+
+			let analyzers = [scope.report.analyzer];
+			if(ReportService.activeGroup){
+				analyzers = ReportService.getGroupExperiments(ReportService.activeGroup)
+				.map(expName => getAnalyzerFromExpName(expName));
+			}
+
 			let plot_detail = {};
 			plot_detail["required_plotter"] = required_plotter;
 			plot_detail["data"] =  {
-				analyzer:     [scope.report.analyzer],
+				analyzer:     analyzers,
 				output:       [chart_name],
 				plotter:      set_plotter,
 			};
@@ -732,6 +626,9 @@ angular.module('reportApp').directive("addreportitem", function($compile){
 			}
 
 			scope.plots_details[container.id]= plot_detail;
+			if(ReportService.activeGroup){
+				ReportService.addReportItemToGroup(container.id, ReportService.activeGroup);
+			}
 
 			if(scope.report.status == "editable" && scope.report.number != scope.report_number){
 				beat.experiments.utils.displayPlot(base_url, $(container).find('.panel-body')[0],
@@ -774,5 +671,5 @@ angular.module('reportApp').directive("addreportitem", function($compile){
 		}
 
 	};
-});
+}]);
 
diff --git a/beat/web/reports/static/reports/app/services/reportService.js b/beat/web/reports/static/reports/app/services/reportService.js
index 988b79147364423a54acb1c1151a15e9856f1670..926381fbe5fbd8a94515e673bb671edbc6bae9fe 100644
--- a/beat/web/reports/static/reports/app/services/reportService.js
+++ b/beat/web/reports/static/reports/app/services/reportService.js
@@ -133,7 +133,6 @@ angular.module('reportApp').factory('ReportService', ['$http', function($http){
 		.forEach(([groupName, expNames]) => {
 			let g = reportServiceInstance.createGroup(groupName);
 			expNames.forEach(n => g.addExperiment(n));
-			groupData.push(g);
 		});
 	};
 
@@ -169,6 +168,21 @@ angular.module('reportApp').factory('ReportService', ['$http', function($http){
 		return groupData.filter(g => g.experiments.includes(expName)).map(g => g.name);
 	};
 
+	// add report item to group
+	reportServiceInstance.addReportItemToGroup = (id, groupName) => {
+		checkForGroup(groupName);
+
+		let group = groupData.find(g => g.name === groupName);
+		group.addReportItem(id);
+	};
+
+	// rm report item id from group
+	reportServiceInstance.removeReportItemFromGroup = (id, groupName) => {
+		checkForGroup(groupName);
+		let group = groupData.find(g => g.name === groupName);
+		return group.removeReportItem(id);
+	};
+
 	// gets group for a report item's id
 	reportServiceInstance.getReportItemGroup = (id) => {
 		return groupData.find(g => g.reportItemIds.includes(id));
diff --git a/beat/web/reports/templates/reports/panels/viewer.html b/beat/web/reports/templates/reports/panels/viewer.html
index 8c17e06d55ce95fdb815510648cb4a22d515716d..a3a4326fd6528d38039c4d193a9bfbc204fbe34f 100644
--- a/beat/web/reports/templates/reports/panels/viewer.html
+++ b/beat/web/reports/templates/reports/panels/viewer.html
@@ -107,6 +107,13 @@
 										</li>
 									</ul>
 								</div>
+								<p>Saved Report Items Associated to Group</p>
+								<ul class='list-group' style='margin-top: 1em'>
+									<li class='list-group-item' ng-repeat='id in group.reportItemIds'>
+										{$ id $}
+									</li>
+								</ul>
+								<p>Experiments in Group</p>
 								<ul class='list-group' style='margin-top: 1em'>
 									<li class='list-group-item' ng-repeat='expName in group.experiments'>
 										{$ expName $}