diff --git a/qt/scientific_interfaces/Muon/MuonAnalysis.cpp b/qt/scientific_interfaces/Muon/MuonAnalysis.cpp
index bd3a6f2f9fbc68caa93af1e165312994164c7cdc..f44a068e6f6401da8def27461f2e93351383b2d6 100644
--- a/qt/scientific_interfaces/Muon/MuonAnalysis.cpp
+++ b/qt/scientific_interfaces/Muon/MuonAnalysis.cpp
@@ -358,12 +358,18 @@ void MuonAnalysis::initLayout() {
 }
 
 void MuonAnalysis::setChosenGroupAndPeriods(const QString &wsName) {
+	return;
   const auto wsParams =
       MuonAnalysisHelper::parseWorkspaceName(wsName.toStdString());
 
   const QString &groupToSet = QString::fromStdString(wsParams.itemName);
+  auto safd = groupToSet.toStdString();
   const QString &periodToSet = QString::fromStdString(wsParams.periods);
   const auto &groups = m_dataSelector->getChosenGroups();
+  std::vector<std::string> fsa;
+  for (auto name : groups) {
+	  fsa.push_back(name.toStdString());
+  }
   const auto &periods = m_dataSelector->getPeriodSelections();
   if (!groups.contains(groupToSet)) {
     m_uiForm.fitBrowser->setChosenGroup(groupToSet);
@@ -478,8 +484,8 @@ std::string MuonAnalysis::addItem(ItemType itemType, int tableRow,
 void MuonAnalysis::plotItem(ItemType itemType, int tableRow,
                             PlotType plotType) {
   m_updating = true;
-  m_uiForm.fitBrowser->clearChosenGroups();
-  m_uiForm.fitBrowser->clearChosenPeriods();
+  //m_uiForm.fitBrowser->clearChosenGroups();
+  //m_uiForm.fitBrowser->clearChosenPeriods();
   try {
     auto wsName = addItem(itemType, tableRow, plotType);
 
diff --git a/qt/widgets/common/src/MuonFitPropertyBrowser.cpp b/qt/widgets/common/src/MuonFitPropertyBrowser.cpp
index dc8226383e9125d2139e0cbc78e46778dece3437..849b28bf029310046d2cc0b9bd2854ff3bae8de9 100644
--- a/qt/widgets/common/src/MuonFitPropertyBrowser.cpp
+++ b/qt/widgets/common/src/MuonFitPropertyBrowser.cpp
@@ -424,7 +424,6 @@ void MuonFitPropertyBrowser::enumChanged(QtProperty *prop) {
 */
 void MuonFitPropertyBrowser::updateGroupDisplay() {
   m_showGroupValue.clear();
-  auto tmp = getChosenGroups().join(",").toStdString();
   m_showGroupValue << getChosenGroups().join(",");
   m_enumManager->setEnumNames(m_showGroup, m_showGroupValue);
   m_multiFitSettingsGroup->property()->addSubProperty(m_showGroup);
@@ -1246,10 +1245,10 @@ bool MuonFitPropertyBrowser::hasGuess() const {
 * By default sets all unchecked
 * @param groups :: [input] List of group names
 */
-void MuonFitPropertyBrowser::setAvailableGroups(const QStringList &groups) {
-
-  m_enumManager->setValue(m_groupsToFit, 0);
+void MuonFitPropertyBrowser::setAvailableGroups(const QStringList &groups){
+//  m_enumManager->setValue(m_groupsToFit, 0);
   // If it's the same list, do nothing
+	auto selected = getChosenGroups();
   if (groups.size() == m_groupBoxes.size()) {
     auto existingGroups = m_groupBoxes.keys();
     auto newGroups = groups;
@@ -1264,6 +1263,16 @@ void MuonFitPropertyBrowser::setAvailableGroups(const QStringList &groups) {
   for (const auto &group : groups) {
     addGroupCheckbox(group);
   }
+  //sets the same selection as before
+  for (const auto &group : selected) {
+
+	  for (auto iter = m_groupBoxes.constBegin(); iter != m_groupBoxes.constEnd();
+		  ++iter) {
+		  if (iter.key().toStdString() == group.toStdString()) {
+			  m_boolManager->setValue(iter.value(), true);
+		  }
+	  }
+  }
 }
 /**
 * Selects a single group/pair
@@ -1297,11 +1306,11 @@ void MuonFitPropertyBrowser::addGroupCheckbox(const QString &name) {
   m_groupBoxes.insert(name, m_boolManager->addProperty(name));
   int j = m_enumManager->value(m_groupsToFit);
   auto option = m_groupsToFitOptions[j].toStdString();
-  if (option == "All groups") {
+  /*if (option == "All groups") {
     setAllGroups();
   } else if (option == "All Pairs") {
     setAllPairs();
-  }
+  }*/
 }
 /**
 * Returns a list of the selected groups (checked boxes)
@@ -1642,15 +1651,56 @@ void MuonFitPropertyBrowser::setSingleFitLabel(std::string name) {
 * @param isItGroup :: [input] if it is a group (true)
 */
 void MuonFitPropertyBrowser::setAllGroupsOrPairs(const bool isItGroup) {
-  if (isItGroup) {
-    // all groups is index 0
-    m_enumManager->setValue(m_groupsToFit, 0);
-    setAllGroups();
-  } else {
-    // all pairs is index 1
-    m_enumManager->setValue(m_groupsToFit, 1);
-    setAllPairs();
-  }
+
+	auto index = m_enumManager->value(m_groupsToFit);
+	QString name = m_groupsToFitOptions[index];
+	if (name == CUSTOM_LABEL) {
+		bool match = false;
+		auto vals = getChosenGroups();
+		auto tt = vals.size();
+		clearChosenGroups();
+		for (const auto &group : vals) {
+
+			for (auto iter = m_groupBoxes.constBegin(); iter != m_groupBoxes.constEnd();
+				++iter) {
+				auto a = iter.key().toStdString();
+				auto b = group.toStdString();
+				if (iter.key().toStdString() == group.toStdString()) {
+					m_boolManager->setValue(iter.value(), true);
+					match = true;
+				}
+			}
+
+		}
+	}
+	else if (name == ALL_GROUPS_LABEL) {
+		m_enumManager->setValue(m_groupsToFit, 0);
+		setAllGroups();
+		if (getChosenGroups().size() > 0) { return; }
+	}
+	else if (name == ALL_PAIRS_LABEL)
+	{			// all pairs is index 1
+		m_enumManager->setValue(m_groupsToFit, 1);
+		setAllPairs();
+
+	}
+	if (getChosenGroups().size() > 0) {
+		return;
+	}
+	else {
+
+
+		if (isItGroup) {
+			// all groups is index 0
+			m_enumManager->setValue(m_groupsToFit, 0);
+			setAllGroups();
+		}
+		else {
+			// all pairs is index 1
+			m_enumManager->setValue(m_groupsToFit, 1);
+			setAllPairs();
+		}
+	}
 }
 void MuonFitPropertyBrowser::setGroupNames(
     std::vector<std::string> groupNames) {