diff --git a/qt/scientific_interfaces/Indirect/ConvFitModel.cpp b/qt/scientific_interfaces/Indirect/ConvFitModel.cpp
index 5a4cf5973cfd9babae90849a93b4a1a446044c20..040fe7043d69736985eb7325cf7207c7038d2341 100644
--- a/qt/scientific_interfaces/Indirect/ConvFitModel.cpp
+++ b/qt/scientific_interfaces/Indirect/ConvFitModel.cpp
@@ -547,7 +547,7 @@ void ConvFitModel::setTemperature(const boost::optional<double> &temperature) {
 }
 
 void ConvFitModel::addWorkspace(MatrixWorkspace_sptr workspace,
-                                const Spectra &spectra) {
+                                const SpectraLegacy &spectra) {
   IndirectFittingModelLegacy::addWorkspace(workspace, spectra);
 
   const auto dataSize = numberOfWorkspaces();
diff --git a/qt/scientific_interfaces/Indirect/ConvFitModel.h b/qt/scientific_interfaces/Indirect/ConvFitModel.h
index 7ab51e5752ed1a31fa6823e431a5f5c7f34972a4..9ff5004e94246a5f683d5a78ac0175100bf62890 100644
--- a/qt/scientific_interfaces/Indirect/ConvFitModel.h
+++ b/qt/scientific_interfaces/Indirect/ConvFitModel.h
@@ -31,7 +31,7 @@ public:
   void setTemperature(const boost::optional<double> &temperature);
 
   void addWorkspace(Mantid::API::MatrixWorkspace_sptr workspace,
-                    const Spectra &spectra) override;
+                    const SpectraLegacy &spectra) override;
   void removeWorkspace(std::size_t index) override;
   void setResolution(const std::string &name, std::size_t index);
   void setResolution(Mantid::API::MatrixWorkspace_sptr resolution,
diff --git a/qt/scientific_interfaces/Indirect/FunctionTemplateBrowser.h b/qt/scientific_interfaces/Indirect/FunctionTemplateBrowser.h
index 5dcdd771b60f7f99628bef45200043752a5b0d11..4d047c85866f9a612b429aabc37ae762244a7107 100644
--- a/qt/scientific_interfaces/Indirect/FunctionTemplateBrowser.h
+++ b/qt/scientific_interfaces/Indirect/FunctionTemplateBrowser.h
@@ -65,7 +65,7 @@ public:
       DataForParameterEstimationCollection &&data) = 0;
   virtual void setBackgroundA0(double value) = 0;
   virtual void setResolution(std::string const &name,
-                             DatasetIndex const &index) = 0;
+                             TableDatasetIndex const &index) = 0;
 
 signals:
   void functionStructureChanged();
diff --git a/qt/scientific_interfaces/Indirect/IIndirectFitPlotView.h b/qt/scientific_interfaces/Indirect/IIndirectFitPlotView.h
index cc23aff0effa6e092adbebad1523fcd9303a8671..0528d23a2adedc73ed6c46aac62af320c630e5b6 100644
--- a/qt/scientific_interfaces/Indirect/IIndirectFitPlotView.h
+++ b/qt/scientific_interfaces/Indirect/IIndirectFitPlotView.h
@@ -26,9 +26,9 @@ public:
   virtual ~IIndirectFitPlotView(){};
 
   virtual WorkspaceIndex getSelectedSpectrum() const = 0;
-  virtual SpectrumRowIndex getSelectedSpectrumIndex() const = 0;
-  virtual DatasetIndex getSelectedDataIndex() const = 0;
-  virtual DatasetIndex dataSelectionSize() const = 0;
+  virtual TableRowIndex getSelectedSpectrumIndex() const = 0;
+  virtual TableDatasetIndex getSelectedDataIndex() const = 0;
+  virtual TableDatasetIndex dataSelectionSize() const = 0;
   virtual bool isPlotGuessChecked() const = 0;
 
   virtual void hideMultipleDataSelection() = 0;
@@ -45,7 +45,7 @@ public:
   virtual void setPlotSpectrum(WorkspaceIndex spectrum) = 0;
   virtual void appendToDataSelection(const std::string &dataName) = 0;
   virtual void setNameInDataSelection(const std::string &dataName,
-                                      DatasetIndex index) = 0;
+                                      TableDatasetIndex index) = 0;
   virtual void clearDataSelection() = 0;
 
   virtual void plotInTopPreview(const QString &name,
@@ -87,7 +87,7 @@ public slots:
   virtual void setHWHMMinimum(double maximum) = 0;
 
 signals:
-  void selectedFitDataChanged(DatasetIndex /*_t1*/);
+  void selectedFitDataChanged(TableDatasetIndex /*_t1*/);
   void plotCurrentPreview();
   void plotSpectrumChanged(WorkspaceIndex /*_t1*/);
   void plotGuessChanged(bool /*_t1*/);
diff --git a/qt/scientific_interfaces/Indirect/IndexTypes.cpp b/qt/scientific_interfaces/Indirect/IndexTypes.cpp
index 8440c6032669cee1a47c9b9de89aeb35c6664e05..4884699833e1f631a029ab65dfc04b40fe923153 100644
--- a/qt/scientific_interfaces/Indirect/IndexTypes.cpp
+++ b/qt/scientific_interfaces/Indirect/IndexTypes.cpp
@@ -12,10 +12,10 @@ namespace MantidQt {
 namespace CustomInterfaces {
 namespace IDA {
 
-int SpectrumRoqIndexId = qRegisterMetaType<SpectrumRowIndex>();
+int SpectrumRoqIndexId = qRegisterMetaType<TableRowIndex>();
 int WorkspaceIndexId = qRegisterMetaType<WorkspaceIndex>();
-int GrouppIndexId = qRegisterMetaType<GroupIndex>();
+int GrouppIndexId = qRegisterMetaType<WorkspaceGroupIndex>();
 
 } // namespace IDA
 } // namespace CustomInterfaces
-} // namespace MantidQt
+} // namespace MantidQt
\ No newline at end of file
diff --git a/qt/scientific_interfaces/Indirect/IndexTypes.h b/qt/scientific_interfaces/Indirect/IndexTypes.h
index 1801cdef32fc8e11d279f382219f65c15afea1b7..48ac3c5ab21273c63ac1b16b7d2712d7151c1dcc 100644
--- a/qt/scientific_interfaces/Indirect/IndexTypes.h
+++ b/qt/scientific_interfaces/Indirect/IndexTypes.h
@@ -4,6 +4,10 @@
 //     NScD Oak Ridge National Laboratory, European Spallation Source
 //     & Institut Laue - Langevin
 // SPDX - License - Identifier: GPL - 3.0 +
+// 
+// This file contains the implimentation of type safe indices for use
+// in the indirect interface code.
+// TODO merge this to use the generic index framework from IndexType.h 
 #ifndef MANTIDQTCUSTOMINTERFACESIDA_INDEXTYPE_H_
 #define MANTIDQTCUSTOMINTERFACESIDA_INDEXTYPE_H_
 
@@ -15,6 +19,10 @@ namespace MantidQt {
 namespace CustomInterfaces {
 namespace IDA {
 
+/** A struct to impliment strongly typed integers, without implicit conversion.
+ * Currently operations and comparitors are only defined between instances of the
+ * same type.
+*/
 template <int Class> struct IndexType {
   using IntImplementationType = int;
   IntImplementationType value = 0;
@@ -47,11 +55,18 @@ template <int Class> struct IndexType {
   }
 }; // namespace IDA
 
-using SpectrumRowIndex = IndexType<0>;
+// Used to index table rows in the GUI
+using TableRowIndex = IndexType<0>;
+// Used to index spectra in workspaces
 using WorkspaceIndex = IndexType<1>;
-using GroupIndex = IndexType<2>;
-using DatasetIndex = IndexType<3>;
+// Used to index worspaces in workspace groups
+using WorkspaceGroupIndex = IndexType<2>;
+// Used to index 
+using TableDatasetIndex = IndexType<3>;
 
+/** A class which wraps a vector so that you supply not only the value
+ * type but also the expected index type.
+*/
 template <class CollectionIndexType, class CollectionValueType>
 class IndexCollectionType {
 public:
@@ -115,8 +130,8 @@ operator<<(std::ostream &out,
   return out;
 }
 
-Q_DECLARE_METATYPE(MantidQt::CustomInterfaces::IDA::SpectrumRowIndex)
+Q_DECLARE_METATYPE(MantidQt::CustomInterfaces::IDA::TableRowIndex)
 Q_DECLARE_METATYPE(MantidQt::CustomInterfaces::IDA::WorkspaceIndex)
-Q_DECLARE_METATYPE(MantidQt::CustomInterfaces::IDA::GroupIndex)
+Q_DECLARE_METATYPE(MantidQt::CustomInterfaces::IDA::WorkspaceGroupIndex)
 
 #endif /* MANTIDQTCUSTOMINTERFACESIDA_INDEXTYPE_H_ */
diff --git a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.cpp b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.cpp
index e1b8f2f64f72c3952f6ee3d329e0c3aa5d25c5c7..57ccf96eb3e256e78135ba4276944b3c0bf7da38 100644
--- a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.cpp
@@ -16,7 +16,7 @@
 #include <QRegExpValidator>
 
 namespace {
-using MantidQt::CustomInterfaces::IDA::SpectraNew;
+using MantidQt::CustomInterfaces::IDA::Spectra;
 using MantidQt::CustomInterfaces::IDA::WorkspaceIndex;
 
 namespace Regexes {
@@ -84,13 +84,13 @@ std::string pairsToString(
   return boost::algorithm::join(pairStrings, ",");
 }
 
-boost::optional<SpectraNew> pairsToSpectra(
+boost::optional<Spectra> pairsToSpectra(
     const std::vector<std::pair<WorkspaceIndex, WorkspaceIndex>> &pairs) {
   if (pairs.empty())
     return boost::none;
   else if (pairs.size() == 1)
-    return SpectraNew(pairs[0].first, pairs[0].second);
-  return SpectraNew(pairsToString(pairs));
+    return Spectra(pairs[0].first, pairs[0].second);
+  return Spectra(pairsToString(pairs));
 }
 
 QVariant getVariant(std::size_t i) {
@@ -143,90 +143,92 @@ int IndirectDataTablePresenter::endXColumn() const { return 3; }
 
 int IndirectDataTablePresenter::excludeColumn() const { return 4; }
 
-double IndirectDataTablePresenter::startX(SpectrumRowIndex row) const {
+double IndirectDataTablePresenter::startX(TableRowIndex row) const {
   return getDouble(row, startXColumn());
 }
 
-double IndirectDataTablePresenter::endX(SpectrumRowIndex row) const {
+double IndirectDataTablePresenter::endX(TableRowIndex row) const {
   return getDouble(row, endXColumn());
 }
 
 std::string
-IndirectDataTablePresenter::getExcludeString(SpectrumRowIndex row) const {
+IndirectDataTablePresenter::getExcludeString(TableRowIndex row) const {
   return getString(row, excludeColumn());
 }
 
 std::string
-IndirectDataTablePresenter::getWorkspaceName(SpectrumRowIndex row) const {
+IndirectDataTablePresenter::getWorkspaceName(TableRowIndex row) const {
   return getString(row, 0);
 }
 
 WorkspaceIndex
-IndirectDataTablePresenter::getWorkspaceIndex(SpectrumRowIndex row) const {
+IndirectDataTablePresenter::getWorkspaceIndex(TableRowIndex row) const {
   const auto item = m_dataTable->item(row.value, workspaceIndexColumn());
   return WorkspaceIndex{static_cast<int>(item->text().toULongLong())};
 }
 
-double IndirectDataTablePresenter::getDouble(SpectrumRowIndex row,
+double IndirectDataTablePresenter::getDouble(TableRowIndex row,
                                              int column) const {
   return getText(row, column).toDouble();
 }
 
-std::string IndirectDataTablePresenter::getString(SpectrumRowIndex row,
+std::string IndirectDataTablePresenter::getString(TableRowIndex row,
                                                   int column) const {
   return getText(row, column).toStdString();
 }
 
-QString IndirectDataTablePresenter::getText(SpectrumRowIndex row,
+QString IndirectDataTablePresenter::getText(TableRowIndex row,
                                             int column) const {
   return m_dataTable->item(row.value, column)->text();
 }
 
-SpectrumRowIndex
-IndirectDataTablePresenter::getNextPosition(DatasetIndex index) const {
-  if (m_dataPositions.size() > index + DatasetIndex{1})
-    return m_dataPositions[index + DatasetIndex{1}];
-  return SpectrumRowIndex{m_dataTable->rowCount()};
+TableRowIndex
+IndirectDataTablePresenter::getNextPosition(TableDatasetIndex index) const {
+  if (m_dataPositions.size() > index + TableDatasetIndex{1})
+    return m_dataPositions[index + TableDatasetIndex{1}];
+  return TableRowIndex{m_dataTable->rowCount()};
 }
 
-SpectrumRowIndex
-IndirectDataTablePresenter::getFirstRow(DatasetIndex dataIndex) const {
+TableRowIndex
+IndirectDataTablePresenter::getFirstRow(TableDatasetIndex dataIndex) const {
   if (m_dataPositions.size() > dataIndex)
     return m_dataPositions[dataIndex];
-  return SpectrumRowIndex{-1};
+  return TableRowIndex{-1};
 }
 
-DatasetIndex
-IndirectDataTablePresenter::getDataIndex(SpectrumRowIndex row) const {
-  return DatasetIndex{
+TableDatasetIndex
+IndirectDataTablePresenter::getDataIndex(TableRowIndex row) const {
+  return TableDatasetIndex{
       m_dataTable->item(row.value, 0)->data(Qt::UserRole).toInt()};
 }
 
-boost::optional<SpectraNew>
-IndirectDataTablePresenter::getSpectra(DatasetIndex dataIndex) const {
+boost::optional<Spectra>
+IndirectDataTablePresenter::getSpectra(TableDatasetIndex dataIndex) const {
   if (m_dataPositions.size() > dataIndex)
     return getSpectra(m_dataPositions[dataIndex], getNextPosition(dataIndex));
   return boost::none;
 }
 
-boost::optional<SpectraNew>
-IndirectDataTablePresenter::getSpectra(SpectrumRowIndex start,
-                                       SpectrumRowIndex end) const {
+boost::optional<Spectra>
+IndirectDataTablePresenter::getSpectra(TableRowIndex start,
+                                       TableRowIndex end) const {
   std::vector<std::pair<WorkspaceIndex, WorkspaceIndex>> spectraPairs;
   while (start < end) {
     WorkspaceIndex minimum = getWorkspaceIndex(start);
     WorkspaceIndex maximum = minimum;
-
-    while (++start < end &&
-           getWorkspaceIndex(start) == maximum + WorkspaceIndex{1})
+    start++;
+    while (start < end &&
+           getWorkspaceIndex(start) == maximum + WorkspaceIndex{1}){
       ++maximum;
+      start++;
+           }
     spectraPairs.emplace_back(minimum, maximum);
   }
   return pairsToSpectra(spectraPairs);
 }
 
-boost::optional<SpectrumRowIndex>
-IndirectDataTablePresenter::getRowIndex(DatasetIndex dataIndex,
+boost::optional<TableRowIndex>
+IndirectDataTablePresenter::getRowIndex(TableDatasetIndex dataIndex,
                                         WorkspaceIndex spectrumIndex) const {
   if (!m_dataPositions.empty()) {
     const auto position = m_model->getDomainIndex(dataIndex, spectrumIndex);
@@ -237,14 +239,14 @@ IndirectDataTablePresenter::getRowIndex(DatasetIndex dataIndex,
 }
 
 void IndirectDataTablePresenter::setStartX(double startX,
-                                           DatasetIndex dataIndex,
+                                           TableDatasetIndex dataIndex,
                                            WorkspaceIndex spectrumIndex) {
   if (auto const row = getRowIndex(dataIndex, spectrumIndex))
     setStartX(startX, *row);
 }
 
 void IndirectDataTablePresenter::setStartX(double startX,
-                                           DatasetIndex dataIndex) {
+                                           TableDatasetIndex dataIndex) {
   if (auto const spectra = getSpectra(dataIndex)) {
     for (auto const spectrumIndex : *spectra) {
       if (auto const row = getRowIndex(dataIndex, spectrumIndex))
@@ -254,7 +256,7 @@ void IndirectDataTablePresenter::setStartX(double startX,
 }
 
 void IndirectDataTablePresenter::setStartX(double startX,
-                                           SpectrumRowIndex index) {
+                                           TableRowIndex index) {
   MantidQt::API::SignalBlocker blocker(m_dataTable);
   m_dataTable->item(index.value, startXColumn())->setText(makeNumber(startX));
 }
@@ -263,13 +265,13 @@ void IndirectDataTablePresenter::setStartX(double startX) {
   setColumnValues(startXColumn(), makeNumber(startX));
 }
 
-void IndirectDataTablePresenter::setEndX(double endX, DatasetIndex dataIndex,
+void IndirectDataTablePresenter::setEndX(double endX, TableDatasetIndex dataIndex,
                                          WorkspaceIndex spectrumIndex) {
   if (auto const row = getRowIndex(dataIndex, spectrumIndex))
     setEndX(endX, *row);
 }
 
-void IndirectDataTablePresenter::setEndX(double endX, DatasetIndex dataIndex) {
+void IndirectDataTablePresenter::setEndX(double endX, TableDatasetIndex dataIndex) {
   if (auto const spectra = getSpectra(dataIndex)) {
     for (auto const spectrumIndex : *spectra) {
       if (auto const row = getRowIndex(dataIndex, spectrumIndex))
@@ -278,7 +280,7 @@ void IndirectDataTablePresenter::setEndX(double endX, DatasetIndex dataIndex) {
   }
 }
 
-void IndirectDataTablePresenter::setEndX(double endX, SpectrumRowIndex index) {
+void IndirectDataTablePresenter::setEndX(double endX, TableRowIndex index) {
   MantidQt::API::SignalBlocker blocker(m_dataTable);
   m_dataTable->item(index.value, endXColumn())->setText(makeNumber(endX));
 }
@@ -288,7 +290,7 @@ void IndirectDataTablePresenter::setEndX(double endX) {
 }
 
 void IndirectDataTablePresenter::setExclude(const std::string &exclude,
-                                            DatasetIndex dataIndex,
+                                            TableDatasetIndex dataIndex,
                                             WorkspaceIndex spectrumIndex) {
   auto const row = getRowIndex(dataIndex, spectrumIndex);
   if (FittingMode::SEQUENTIAL == m_model->getFittingMode() || !row)
@@ -298,7 +300,7 @@ void IndirectDataTablePresenter::setExclude(const std::string &exclude,
 }
 
 void IndirectDataTablePresenter::setExcludeRegion(const std::string &exclude,
-                                                  SpectrumRowIndex index) {
+                                                  TableRowIndex index) {
   MantidQt::API::SignalBlocker blocker(m_dataTable);
   if (FittingMode::SEQUENTIAL == m_model->getFittingMode())
     setExcludeRegion(exclude);
@@ -315,16 +317,16 @@ void IndirectDataTablePresenter::setExcludeRegion(const QString &exclude) {
   setColumnValues(excludeColumn(), exclude);
 }
 
-void IndirectDataTablePresenter::addData(DatasetIndex index) {
+void IndirectDataTablePresenter::addData(TableDatasetIndex index) {
   if (m_dataPositions.size() > index)
     updateData(index);
   else
     addNewData(index);
 }
 
-void IndirectDataTablePresenter::addNewData(DatasetIndex index) {
+void IndirectDataTablePresenter::addNewData(TableDatasetIndex index) {
   MantidQt::API::SignalBlocker blocker(m_dataTable);
-  const auto start = SpectrumRowIndex{m_dataTable->rowCount()};
+  const auto start = TableRowIndex{m_dataTable->rowCount()};
 
   const auto addRow = [&](WorkspaceIndex spectrum) {
     addTableEntry(index, spectrum);
@@ -335,14 +337,14 @@ void IndirectDataTablePresenter::addNewData(DatasetIndex index) {
     m_dataPositions.emplace_back(start);
 }
 
-void IndirectDataTablePresenter::updateData(DatasetIndex index) {
+void IndirectDataTablePresenter::updateData(TableDatasetIndex index) {
   if (m_dataPositions.size() > index)
     updateExistingData(index);
   else
     addNewData(index);
 }
 
-void IndirectDataTablePresenter::updateExistingData(DatasetIndex index) {
+void IndirectDataTablePresenter::updateExistingData(TableDatasetIndex index) {
   MantidQt::API::SignalBlocker blocker(m_dataTable);
   auto position = m_dataPositions[index];
   const auto nextPosition = getNextPosition(index);
@@ -359,22 +361,22 @@ void IndirectDataTablePresenter::updateExistingData(DatasetIndex index) {
   collapseData(position, nextPosition, initialSize, index);
 }
 
-void IndirectDataTablePresenter::collapseData(SpectrumRowIndex from,
-                                              SpectrumRowIndex to,
-                                              SpectrumRowIndex initialSize,
-                                              DatasetIndex dataIndex) {
+void IndirectDataTablePresenter::collapseData(TableRowIndex from,
+                                              TableRowIndex to,
+                                              TableRowIndex initialSize,
+                                              TableDatasetIndex dataIndex) {
   const auto shift = from - to;
-  if (shift != SpectrumRowIndex{0}) {
+  if (shift != TableRowIndex{0}) {
     for (auto i = from; i < to; ++i)
       removeTableEntry(from);
 
-    if (initialSize + shift == SpectrumRowIndex{0} &&
+    if (initialSize + shift == TableRowIndex{0} &&
         m_dataPositions.size() > dataIndex) {
       m_dataPositions.remove(dataIndex);
       shiftDataPositions(shift, dataIndex, m_dataPositions.size());
       updateDataPositionsInCells(dataIndex, m_dataPositions.size());
     } else
-      shiftDataPositions(shift, dataIndex + DatasetIndex{1},
+      shiftDataPositions(shift, dataIndex + TableDatasetIndex{1},
                          m_dataPositions.size());
   }
 }
@@ -387,20 +389,20 @@ void IndirectDataTablePresenter::removeSelectedData() {
   auto &modifiedIndices = modifiedIndicesAndCount.first;
 
   for (auto i = 0u; i < modifiedIndices.size(); ++i)
-    shiftDataPositions(-modifiedCount[i], modifiedIndices[i] + DatasetIndex{1},
+    shiftDataPositions(-modifiedCount[i], modifiedIndices[i] + TableDatasetIndex{1},
                        m_dataPositions.size());
 
   if (!modifiedIndices.empty()) {
     updateFromRemovedIndices(modifiedIndices);
-    updateDataPositionsInCells(modifiedIndices.back() > DatasetIndex{0}
-                                   ? modifiedIndices.back() - DatasetIndex{1}
-                                   : DatasetIndex{0},
+    updateDataPositionsInCells(modifiedIndices.back() > TableDatasetIndex{0}
+                                   ? modifiedIndices.back() - TableDatasetIndex{1}
+                                   : TableDatasetIndex{0},
                                m_dataPositions.size());
   }
 }
 
 void IndirectDataTablePresenter::updateFromRemovedIndices(
-    const std::vector<DatasetIndex> &indices) {
+    const std::vector<TableDatasetIndex> &indices) {
   for (const auto &index : indices) {
     const auto existingSpectra = getSpectra(index);
     if (existingSpectra)
@@ -411,21 +413,21 @@ void IndirectDataTablePresenter::updateFromRemovedIndices(
       m_dataPositions.remove(index);
 
       if (m_model->numberOfWorkspaces() ==
-          originalNumberOfWorkspaces - DatasetIndex{2})
+          originalNumberOfWorkspaces - TableDatasetIndex{2})
         m_dataPositions.remove(index);
     }
   }
 }
 
-std::pair<std::vector<DatasetIndex>, std::vector<SpectrumRowIndex>>
+std::pair<std::vector<TableDatasetIndex>, std::vector<TableRowIndex>>
 IndirectDataTablePresenter::removeTableRows(QModelIndexList &selectedRows) {
-  std::vector<DatasetIndex> modifiedIndices;
-  std::vector<SpectrumRowIndex> modifiedCount;
-  SpectrumRowIndex previous{-1};
+  std::vector<TableDatasetIndex> modifiedIndices;
+  std::vector<TableRowIndex> modifiedCount;
+  TableRowIndex previous{-1};
 
   qSort(selectedRows);
   for (auto i = selectedRows.count() - 1; i >= 0; --i) {
-    const auto current = SpectrumRowIndex{selectedRows[i].row()};
+    const auto current = TableRowIndex{selectedRows[i].row()};
     if (current != previous) {
       auto modifiedIndex = removeTableEntry(current);
 
@@ -433,7 +435,7 @@ IndirectDataTablePresenter::removeTableRows(QModelIndexList &selectedRows) {
         ++modifiedCount.back();
       else {
         modifiedIndices.emplace_back(modifiedIndex);
-        modifiedCount.emplace_back(SpectrumRowIndex{1});
+        modifiedCount.emplace_back(TableRowIndex{1});
       }
       previous = current;
     }
@@ -442,7 +444,7 @@ IndirectDataTablePresenter::removeTableRows(QModelIndexList &selectedRows) {
 }
 
 void IndirectDataTablePresenter::setModelFittingRange(int irow, int column) {
-  SpectrumRowIndex row{irow};
+  TableRowIndex row{irow};
   const auto workspaceIndex = getWorkspaceIndex(row);
   const auto dataIndex = getDataIndex(row);
 
@@ -456,19 +458,19 @@ void IndirectDataTablePresenter::setModelFittingRange(int irow, int column) {
 }
 
 void IndirectDataTablePresenter::setModelStartXAndEmit(
-    double startX, DatasetIndex dataIndex, WorkspaceIndex workspaceIndex) {
+    double startX, TableDatasetIndex dataIndex, WorkspaceIndex workspaceIndex) {
   m_model->setStartX(startX, dataIndex, workspaceIndex);
   emit startXChanged(startX, dataIndex, workspaceIndex);
 }
 
 void IndirectDataTablePresenter::setModelEndXAndEmit(
-    double endX, DatasetIndex dataIndex, WorkspaceIndex workspaceIndex) {
+    double endX, TableDatasetIndex dataIndex, WorkspaceIndex workspaceIndex) {
   m_model->setEndX(endX, dataIndex, workspaceIndex);
   emit endXChanged(endX, dataIndex, workspaceIndex);
 }
 
 void IndirectDataTablePresenter::setModelExcludeAndEmit(
-    const std::string &exclude, DatasetIndex dataIndex,
+    const std::string &exclude, TableDatasetIndex dataIndex,
     WorkspaceIndex workspaceIndex) {
   m_model->setExcludeRegion(exclude, dataIndex, workspaceIndex);
   emit excludeRegionChanged(exclude, dataIndex, workspaceIndex);
@@ -483,7 +485,7 @@ void IndirectDataTablePresenter::setGlobalFittingRange(bool global) {
 
 void IndirectDataTablePresenter::updateAllFittingRangeFrom(int irow,
                                                            int column) {
-  SpectrumRowIndex row{irow};
+  TableRowIndex row{irow};
   MantidQt::API::SignalBlocker blocker(m_dataTable);
   if (startXColumn() == column)
     setStartX(getDouble(row, column));
@@ -496,11 +498,11 @@ void IndirectDataTablePresenter::updateAllFittingRangeFrom(int irow,
 void IndirectDataTablePresenter::enableGlobalFittingRange() {
   MantidQt::API::SignalBlocker blocker(m_dataTable);
   const auto range =
-      m_model->getFittingRange(DatasetIndex{0}, WorkspaceIndex{0});
+      m_model->getFittingRange(TableDatasetIndex{0}, WorkspaceIndex{0});
   setStartX(range.first);
   setEndX(range.second);
   setExcludeRegion(
-      m_model->getExcludeRegion(DatasetIndex{0}, WorkspaceIndex{0}));
+      m_model->getExcludeRegion(TableDatasetIndex{0}, WorkspaceIndex{0}));
   connect(m_dataTable, SIGNAL(cellChanged(int, int)), this,
           SLOT(updateAllFittingRangeFrom(int, int)));
 }
@@ -539,17 +541,17 @@ void IndirectDataTablePresenter::setHorizontalHeaders(
   header->setResizeMode(0, QHeaderView::Stretch);
 }
 
-void IndirectDataTablePresenter::addTableEntry(DatasetIndex dataIndex,
+void IndirectDataTablePresenter::addTableEntry(TableDatasetIndex dataIndex,
                                                WorkspaceIndex spectrum) {
-  const auto row = SpectrumRowIndex{m_dataTable->rowCount()};
+  const auto row = TableRowIndex{m_dataTable->rowCount()};
   addTableEntry(dataIndex, spectrum, row);
   m_dataTable->item(row.value, 0)
       ->setData(Qt::UserRole, getVariant(dataIndex.value));
 }
 
-void IndirectDataTablePresenter::addTableEntry(DatasetIndex dataIndex,
+void IndirectDataTablePresenter::addTableEntry(TableDatasetIndex dataIndex,
                                                WorkspaceIndex spectrum,
-                                               SpectrumRowIndex row) {
+                                               TableRowIndex row) {
   m_dataTable->insertRow(row.value);
 
   const auto &name = m_model->getWorkspace(dataIndex)->getName();
@@ -576,13 +578,13 @@ void IndirectDataTablePresenter::addTableEntry(DatasetIndex dataIndex,
 }
 
 void IndirectDataTablePresenter::setCell(std::unique_ptr<QTableWidgetItem> cell,
-                                         SpectrumRowIndex row, int column) {
+                                         TableRowIndex row, int column) {
   m_dataTable->setItem(row.value, column, cell.release());
 }
 
-void IndirectDataTablePresenter::updateTableEntry(DatasetIndex dataIndex,
+void IndirectDataTablePresenter::updateTableEntry(TableDatasetIndex dataIndex,
                                                   WorkspaceIndex spectrum,
-                                                  SpectrumRowIndex row) {
+                                                  TableRowIndex row) {
   const auto &name = m_model->getWorkspace(dataIndex)->getName();
   setCellText(QString::fromStdString(name), row, 0);
   setCellText(QString::number(spectrum.value), row, workspaceIndexColumn());
@@ -596,26 +598,26 @@ void IndirectDataTablePresenter::updateTableEntry(DatasetIndex dataIndex,
 }
 
 void IndirectDataTablePresenter::setCellText(const QString &text,
-                                             SpectrumRowIndex row, int column) {
+                                             TableRowIndex row, int column) {
   m_dataTable->item(row.value, column)->setText(text);
 }
 
-DatasetIndex
-IndirectDataTablePresenter::removeTableEntry(SpectrumRowIndex row) {
+TableDatasetIndex
+IndirectDataTablePresenter::removeTableEntry(TableRowIndex row) {
   const auto dataIndex = m_dataTable->item(row.value, 0)->data(Qt::UserRole);
   m_dataTable->removeRow(row.value);
-  return DatasetIndex{dataIndex.toInt()};
+  return TableDatasetIndex{dataIndex.toInt()};
 }
 
-void IndirectDataTablePresenter::shiftDataPositions(SpectrumRowIndex shift,
-                                                    DatasetIndex from,
-                                                    DatasetIndex to) {
+void IndirectDataTablePresenter::shiftDataPositions(TableRowIndex shift,
+                                                    TableDatasetIndex from,
+                                                    TableDatasetIndex to) {
   for (auto i = from; i < to; ++i)
     m_dataPositions[i] += shift;
 }
 
-void IndirectDataTablePresenter::updateDataPositionsInCells(DatasetIndex from,
-                                                            DatasetIndex to) {
+void IndirectDataTablePresenter::updateDataPositionsInCells(TableDatasetIndex from,
+                                                            TableDatasetIndex to) {
   for (auto i = from; i < to; ++i) {
     const auto nextPosition = getNextPosition(i);
     for (auto row = m_dataPositions[i]; row < nextPosition; ++row)
diff --git a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.h b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.h
index 6919730ae7575cbc7bab4f24614823376c01a07a..fee70335b89679171fb371d253edcc7c3fa4ca0c 100644
--- a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.h
+++ b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenter.h
@@ -19,7 +19,7 @@ namespace MantidQt {
 namespace CustomInterfaces {
 namespace IDA {
 
-using DataPositionType = IndexCollectionType<DatasetIndex, SpectrumRowIndex>;
+using DataPositionType = IndexCollectionType<TableDatasetIndex, TableRowIndex>;
 
 /**
   Presenter for a table of indirect fitting data.
@@ -37,30 +37,30 @@ public:
   bool tableDatasetsMatchModel() const;
   bool isTableEmpty() const;
 
-  void setStartX(double startX, DatasetIndex dataIndex,
+  void setStartX(double startX, TableDatasetIndex dataIndex,
                  WorkspaceIndex spectrumIndex);
-  void setStartX(double startX, DatasetIndex dataIndex);
-  void setEndX(double endX, DatasetIndex dataIndex,
+  void setStartX(double startX, TableDatasetIndex dataIndex);
+  void setEndX(double endX, TableDatasetIndex dataIndex,
                WorkspaceIndex spectrumIndex);
-  void setEndX(double endX, DatasetIndex dataIndex);
-  void setExclude(const std::string &exclude, DatasetIndex dataIndex,
+  void setEndX(double endX, TableDatasetIndex dataIndex);
+  void setExclude(const std::string &exclude, TableDatasetIndex dataIndex,
                   WorkspaceIndex spectrumIndex);
 
 signals:
-  void startXChanged(double /*_t1*/, DatasetIndex /*_t2*/,
+  void startXChanged(double /*_t1*/, TableDatasetIndex /*_t2*/,
                      WorkspaceIndex /*_t3*/);
-  void endXChanged(double /*_t1*/, DatasetIndex /*_t2*/,
+  void endXChanged(double /*_t1*/, TableDatasetIndex /*_t2*/,
                    WorkspaceIndex /*_t3*/);
-  void excludeRegionChanged(const std::string & /*_t1*/, DatasetIndex /*_t2*/,
+  void excludeRegionChanged(const std::string & /*_t1*/, TableDatasetIndex /*_t2*/,
                             WorkspaceIndex /*_t3*/);
 
 public slots:
-  void addData(DatasetIndex index);
-  void updateData(DatasetIndex index);
+  void addData(TableDatasetIndex index);
+  void updateData(TableDatasetIndex index);
   void removeSelectedData();
-  void setStartX(double startX, SpectrumRowIndex index);
-  void setEndX(double endX, SpectrumRowIndex index);
-  void setExcludeRegion(const std::string &exclude, SpectrumRowIndex index);
+  void setStartX(double startX, TableRowIndex index);
+  void setEndX(double endX, TableRowIndex index);
+  void setExcludeRegion(const std::string &exclude, TableRowIndex index);
   void setGlobalFittingRange(bool global);
   void enableTable();
   void disableTable();
@@ -71,53 +71,53 @@ private slots:
   void updateAllFittingRangeFrom(int row, int column);
 
 protected:
-  SpectrumRowIndex getFirstRow(DatasetIndex dataIndex) const;
-  std::string getString(SpectrumRowIndex row, int column) const;
+  TableRowIndex getFirstRow(TableDatasetIndex dataIndex) const;
+  std::string getString(TableRowIndex row, int column) const;
 
-  virtual void addTableEntry(DatasetIndex dataIndex, WorkspaceIndex spectrum,
-                             SpectrumRowIndex row);
-  void setCell(std::unique_ptr<QTableWidgetItem> cell, SpectrumRowIndex row,
+  virtual void addTableEntry(TableDatasetIndex dataIndex, WorkspaceIndex spectrum,
+                             TableRowIndex row);
+  void setCell(std::unique_ptr<QTableWidgetItem> cell, TableRowIndex row,
                int column);
-  virtual void updateTableEntry(DatasetIndex dataIndex, WorkspaceIndex spectrum,
-                                SpectrumRowIndex row);
-  void setCellText(const QString &text, SpectrumRowIndex row, int column);
+  virtual void updateTableEntry(TableDatasetIndex dataIndex, WorkspaceIndex spectrum,
+                                TableRowIndex row);
+  void setCellText(const QString &text, TableRowIndex row, int column);
 
 private:
   virtual int workspaceIndexColumn() const;
   virtual int startXColumn() const;
   virtual int endXColumn() const;
   virtual int excludeColumn() const;
-  double startX(SpectrumRowIndex row) const;
-  double endX(SpectrumRowIndex row) const;
-  std::string getExcludeString(SpectrumRowIndex row) const;
-  std::string getWorkspaceName(SpectrumRowIndex row) const;
-  WorkspaceIndex getWorkspaceIndex(SpectrumRowIndex row) const;
-  double getDouble(SpectrumRowIndex row, int column) const;
-  QString getText(SpectrumRowIndex row, int column) const;
-  SpectrumRowIndex getNextPosition(DatasetIndex index) const;
-  DatasetIndex getDataIndex(SpectrumRowIndex row) const;
-  boost::optional<SpectraNew> getSpectra(DatasetIndex dataIndex) const;
-  boost::optional<SpectraNew> getSpectra(SpectrumRowIndex start,
-                                         SpectrumRowIndex end) const;
-  boost::optional<SpectrumRowIndex>
-  getRowIndex(DatasetIndex dataIndex, WorkspaceIndex spectrumIndex) const;
-
-  void setModelStartXAndEmit(double startX, DatasetIndex dataIndex,
+  double startX(TableRowIndex row) const;
+  double endX(TableRowIndex row) const;
+  std::string getExcludeString(TableRowIndex row) const;
+  std::string getWorkspaceName(TableRowIndex row) const;
+  WorkspaceIndex getWorkspaceIndex(TableRowIndex row) const;
+  double getDouble(TableRowIndex row, int column) const;
+  QString getText(TableRowIndex row, int column) const;
+  TableRowIndex getNextPosition(TableDatasetIndex index) const;
+  TableDatasetIndex getDataIndex(TableRowIndex row) const;
+  boost::optional<Spectra> getSpectra(TableDatasetIndex dataIndex) const;
+  boost::optional<Spectra> getSpectra(TableRowIndex start,
+                                         TableRowIndex end) const;
+  boost::optional<TableRowIndex>
+  getRowIndex(TableDatasetIndex dataIndex, WorkspaceIndex spectrumIndex) const;
+
+  void setModelStartXAndEmit(double startX, TableDatasetIndex dataIndex,
                              WorkspaceIndex workspaceIndex);
-  void setModelEndXAndEmit(double endX, DatasetIndex dataIndex,
+  void setModelEndXAndEmit(double endX, TableDatasetIndex dataIndex,
                            WorkspaceIndex workspaceIndex);
   void setModelExcludeAndEmit(const std::string &exclude,
-                              DatasetIndex dataIndex,
+                              TableDatasetIndex dataIndex,
                               WorkspaceIndex workspaceIndex);
 
   void enableGlobalFittingRange();
   void disableGlobalFittingRange();
 
-  void updateExistingData(DatasetIndex index);
-  void addNewData(DatasetIndex index);
-  void addTableEntry(DatasetIndex dataIndex, WorkspaceIndex spectrum);
-  DatasetIndex removeTableEntry(SpectrumRowIndex row);
-  std::pair<std::vector<DatasetIndex>, std::vector<SpectrumRowIndex>>
+  void updateExistingData(TableDatasetIndex index);
+  void addNewData(TableDatasetIndex index);
+  void addTableEntry(TableDatasetIndex dataIndex, WorkspaceIndex spectrum);
+  TableDatasetIndex removeTableEntry(TableRowIndex row);
+  std::pair<std::vector<TableDatasetIndex>, std::vector<TableRowIndex>>
   removeTableRows(QModelIndexList &selectedRows);
   void setStartX(double startX);
   void setEndX(double endX);
@@ -126,12 +126,12 @@ private:
   void setColumnValues(int column, const QString &value);
   void setHorizontalHeaders(const QStringList &headers);
 
-  void collapseData(SpectrumRowIndex from, SpectrumRowIndex to,
-                    SpectrumRowIndex initialSize, DatasetIndex dataIndex);
-  void updateFromRemovedIndices(const std::vector<DatasetIndex> &indices);
-  void shiftDataPositions(SpectrumRowIndex value, DatasetIndex from,
-                          DatasetIndex to);
-  void updateDataPositionsInCells(DatasetIndex from, DatasetIndex to);
+  void collapseData(TableRowIndex from, TableRowIndex to,
+                    TableRowIndex initialSize, TableDatasetIndex dataIndex);
+  void updateFromRemovedIndices(const std::vector<TableDatasetIndex> &indices);
+  void shiftDataPositions(TableRowIndex value, TableDatasetIndex from,
+                          TableDatasetIndex to);
+  void updateDataPositionsInCells(TableDatasetIndex from, TableDatasetIndex to);
 
   DataPositionType m_dataPositions;
   IndirectFittingModel *m_model;
diff --git a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.cpp b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.cpp
index 3d3a78472564e64ae31c39bef27303afc57398c4..7dd9c45c66ecbbf20f86631984ed2736dad450d6 100644
--- a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.cpp
@@ -17,7 +17,7 @@
 
 namespace {
 using MantidQt::CustomInterfaces::IDA::DiscontinuousSpectra;
-using MantidQt::CustomInterfaces::IDA::Spectra;
+using MantidQt::CustomInterfaces::IDA::SpectraLegacy;
 
 namespace Regexes {
 const QString EMPTY = "^$";
@@ -84,13 +84,13 @@ pairsToString(const std::vector<std::pair<std::size_t, std::size_t>> &pairs) {
   return boost::algorithm::join(pairStrings, ",");
 }
 
-boost::optional<Spectra>
+boost::optional<SpectraLegacy>
 pairsToSpectra(const std::vector<std::pair<std::size_t, std::size_t>> &pairs) {
   if (pairs.empty())
     return boost::none;
   else if (pairs.size() == 1)
-    return boost::optional<Spectra>(pairs[0]);
-  return boost::optional<Spectra>(
+    return boost::optional<SpectraLegacy>(pairs[0]);
+  return boost::optional<SpectraLegacy>(
       DiscontinuousSpectra<std::size_t>(pairsToString(pairs)));
 }
 
@@ -196,14 +196,14 @@ std::size_t IndirectDataTablePresenterLegacy::getDataIndex(int row) const {
   return m_dataTable->item(row, 0)->data(Qt::UserRole).toULongLong();
 }
 
-boost::optional<Spectra>
+boost::optional<SpectraLegacy>
 IndirectDataTablePresenterLegacy::getSpectra(std::size_t dataIndex) const {
   if (m_dataPositions.size() > dataIndex)
     return getSpectra(m_dataPositions[dataIndex], getNextPosition(dataIndex));
   return boost::none;
 }
 
-boost::optional<Spectra>
+boost::optional<SpectraLegacy>
 IndirectDataTablePresenterLegacy::getSpectra(int start, int end) const {
   std::vector<std::pair<std::size_t, std::size_t>> spectraPairs;
   while (start < end) {
diff --git a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.h b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.h
index 1363f1a34d67557059c17cea9928757501bdb34e..18566cad6ab0e7b5e8f540dd6f1dcf870057ffeb 100644
--- a/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.h
+++ b/qt/scientific_interfaces/Indirect/IndirectDataTablePresenterLegacy.h
@@ -86,8 +86,8 @@ private:
   QString getText(int row, int column) const;
   int getNextPosition(std::size_t index) const;
   std::size_t getDataIndex(int row) const;
-  boost::optional<Spectra> getSpectra(std::size_t dataIndex) const;
-  boost::optional<Spectra> getSpectra(int start, int end) const;
+  boost::optional<SpectraLegacy> getSpectra(std::size_t dataIndex) const;
+  boost::optional<SpectraLegacy> getSpectra(int start, int end) const;
   boost::optional<int> getRowIndex(std::size_t dataIndex,
                                    int spectrumIndex) const;
 
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.cpp b/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.cpp
index 334fd85c474273717d813525f4c119fda815fe66..1d92ee6f859e5b55364193673d6f685a81258a9a 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.cpp
@@ -5,10 +5,7 @@
 //     & Institut Laue - Langevin
 // SPDX - License - Identifier: GPL - 3.0 +
 #include "IndirectFitAnalysisTab.h"
-// #include "ui_ConvFit.h"
 #include "ui_IqtFit.h"
-// #include "ui_JumpFit.h"
-// #include "ui_MSDFit.h"
 
 #include "MantidAPI/FunctionFactory.h"
 #include "MantidAPI/MultiDomainFunction.h"
@@ -23,6 +20,9 @@
 
 #include <algorithm>
 
+/// Logger
+Mantid::Kernel::Logger g_log("IndirectFitAnalysisTab");
+
 using namespace Mantid::API;
 
 namespace {
@@ -62,16 +62,16 @@ void IndirectFitAnalysisTab::setup() {
 
 void IndirectFitAnalysisTab::connectDataPresenter() {
   connect(m_dataPresenter.get(),
-          SIGNAL(startXChanged(double, DatasetIndex, WorkspaceIndex)), this,
-          SLOT(tableStartXChanged(double, DatasetIndex, WorkspaceIndex)));
+          SIGNAL(startXChanged(double, TableDatasetIndex, WorkspaceIndex)), this,
+          SLOT(tableStartXChanged(double, TableDatasetIndex, WorkspaceIndex)));
   connect(m_dataPresenter.get(),
-          SIGNAL(endXChanged(double, DatasetIndex, WorkspaceIndex)), this,
-          SLOT(tableEndXChanged(double, DatasetIndex, WorkspaceIndex)));
+          SIGNAL(endXChanged(double, TableDatasetIndex, WorkspaceIndex)), this,
+          SLOT(tableEndXChanged(double, TableDatasetIndex, WorkspaceIndex)));
   connect(m_dataPresenter.get(),
-          SIGNAL(excludeRegionChanged(const std::string &, DatasetIndex,
+          SIGNAL(excludeRegionChanged(const std::string &, TableDatasetIndex,
                                       WorkspaceIndex)),
           this,
-          SLOT(tableExcludeChanged(const std::string &, DatasetIndex,
+          SLOT(tableExcludeChanged(const std::string &, TableDatasetIndex,
                                    WorkspaceIndex)));
   connect(m_dataPresenter.get(), SIGNAL(startXChanged(double)), this,
           SLOT(startXChanged(double)));
@@ -94,8 +94,8 @@ void IndirectFitAnalysisTab::connectDataPresenter() {
 
 void IndirectFitAnalysisTab::connectPlotPresenter() {
   connect(m_plotPresenter.get(),
-          SIGNAL(fitSingleSpectrum(DatasetIndex, WorkspaceIndex)), this,
-          SLOT(singleFit(DatasetIndex, WorkspaceIndex)));
+          SIGNAL(fitSingleSpectrum(TableDatasetIndex, WorkspaceIndex)), this,
+          SLOT(singleFit(TableDatasetIndex, WorkspaceIndex)));
   connect(m_plotPresenter.get(),
           SIGNAL(runAsPythonScript(const QString &, bool)), this,
           SIGNAL(runAsPythonScript(const QString &, bool)));
@@ -103,8 +103,8 @@ void IndirectFitAnalysisTab::connectPlotPresenter() {
           SLOT(setDataTableStartX(double)));
   connect(m_plotPresenter.get(), SIGNAL(endXChanged(double)), this,
           SLOT(setDataTableEndX(double)));
-  connect(m_plotPresenter.get(), SIGNAL(selectedFitDataChanged(DatasetIndex)),
-          this, SLOT(respondToSelectedFitDataChanged(DatasetIndex)));
+  connect(m_plotPresenter.get(), SIGNAL(selectedFitDataChanged(TableDatasetIndex)),
+          this, SLOT(respondToSelectedFitDataChanged(TableDatasetIndex)));
   connect(m_plotPresenter.get(), SIGNAL(noFitDataSelected()), this,
           SLOT(respondToNoFitDataSelected()));
   connect(m_plotPresenter.get(), SIGNAL(plotSpectrumChanged(WorkspaceIndex)),
@@ -116,8 +116,8 @@ void IndirectFitAnalysisTab::connectPlotPresenter() {
 }
 
 void IndirectFitAnalysisTab::connectSpectrumPresenter() {
-  connect(m_spectrumPresenter.get(), SIGNAL(spectraChanged(DatasetIndex)), this,
-          SLOT(respondToChangeOfSpectraRange(DatasetIndex)));
+  connect(m_spectrumPresenter.get(), SIGNAL(spectraChanged(TableDatasetIndex)), this,
+          SLOT(respondToChangeOfSpectraRange(TableDatasetIndex)));
   connect(m_spectrumPresenter.get(), SIGNAL(maskChanged(const std::string &)),
           this, SLOT(setDataTableExclude(const std::string &)));
 }
@@ -203,7 +203,7 @@ void IndirectFitAnalysisTab::setResolutionFBSuffixes(
   m_dataPresenter->setResolutionFBSuffices(suffices);
 }
 
-DatasetIndex IndirectFitAnalysisTab::getSelectedDataIndex() const {
+TableDatasetIndex IndirectFitAnalysisTab::getSelectedDataIndex() const {
   return m_plotPresenter->getSelectedDataIndex();
 }
 
@@ -212,7 +212,7 @@ WorkspaceIndex IndirectFitAnalysisTab::getSelectedSpectrum() const {
 }
 
 bool IndirectFitAnalysisTab::isRangeCurrentlySelected(
-    DatasetIndex dataIndex, WorkspaceIndex spectrum) const {
+    TableDatasetIndex dataIndex, WorkspaceIndex spectrum) const {
   return m_plotPresenter->isCurrentlySelected(dataIndex, spectrum);
 }
 
@@ -270,7 +270,7 @@ void IndirectFitAnalysisTab::setDataTableExclude(const std::string &exclude) {
 }
 
 void IndirectFitAnalysisTab::tableStartXChanged(double startX,
-                                                DatasetIndex dataIndex,
+                                                TableDatasetIndex dataIndex,
                                                 WorkspaceIndex spectrum) {
   if (isRangeCurrentlySelected(dataIndex, spectrum)) {
     m_plotPresenter->setStartX(startX);
@@ -281,7 +281,7 @@ void IndirectFitAnalysisTab::tableStartXChanged(double startX,
 }
 
 void IndirectFitAnalysisTab::tableEndXChanged(double endX,
-                                              DatasetIndex dataIndex,
+                                              TableDatasetIndex dataIndex,
                                               WorkspaceIndex spectrum) {
   if (isRangeCurrentlySelected(dataIndex, spectrum)) {
     m_plotPresenter->setEndX(endX);
@@ -292,7 +292,7 @@ void IndirectFitAnalysisTab::tableEndXChanged(double endX,
 }
 
 void IndirectFitAnalysisTab::tableExcludeChanged(const std::string & /*unused*/,
-                                                 DatasetIndex dataIndex,
+                                                 TableDatasetIndex dataIndex,
                                                  WorkspaceIndex spectrum) {
   if (isRangeCurrentlySelected(dataIndex, spectrum))
     m_spectrumPresenter->displayBinMask();
@@ -335,10 +335,10 @@ void IndirectFitAnalysisTab::updateSingleFitOutput(bool error) {
              SLOT(updateSingleFitOutput(bool)));
 
   if (error) {
-    m_fittingModel->cleanFailedSingleRun(m_fittingAlgorithm, DatasetIndex{0});
+    m_fittingModel->cleanFailedSingleRun(m_fittingAlgorithm, TableDatasetIndex{0});
     m_fittingAlgorithm.reset();
   } else
-    m_fittingModel->addSingleFitOutput(m_fittingAlgorithm, DatasetIndex{0});
+    m_fittingModel->addSingleFitOutput(m_fittingAlgorithm, TableDatasetIndex{0});
 }
 
 /**
@@ -379,7 +379,9 @@ void IndirectFitAnalysisTab::updateParameterValues(
   try {
     updateFitBrowserParameterValues();
   } catch (const std::out_of_range &) {
+    g_log.warning("Warning issue updating parameter values in fit property browser");
   } catch (const std::invalid_argument &) {
+    g_log.warning("Warning issue updating parameter values in fit property browser");
   }
 }
 
@@ -463,7 +465,7 @@ void IndirectFitAnalysisTab::singleFit() {
   singleFit(getSelectedDataIndex(), getSelectedSpectrum());
 }
 
-void IndirectFitAnalysisTab::singleFit(DatasetIndex dataIndex,
+void IndirectFitAnalysisTab::singleFit(TableDatasetIndex dataIndex,
                                        WorkspaceIndex spectrum) {
   if (validate()) {
     m_plotPresenter->setFitSingleSpectrumIsFitting(true);
@@ -494,7 +496,7 @@ bool IndirectFitAnalysisTab::validate() {
   const auto invalidFunction = m_fittingModel->isInvalidFunction();
   if (invalidFunction)
     validator.addErrorMessage(QString::fromStdString(*invalidFunction));
-  if (m_fittingModel->numberOfWorkspaces() == DatasetIndex{0})
+  if (m_fittingModel->numberOfWorkspaces() == TableDatasetIndex{0})
     validator.addErrorMessage(
         QString::fromStdString("No data has been selected for a fit."));
 
@@ -630,12 +632,13 @@ void IndirectFitAnalysisTab::setupFit(IAlgorithm_sptr fitAlgorithm) {
 QStringList IndirectFitAnalysisTab::getDatasetNames() const {
   QStringList datasetNames;
   auto const numberWorkspaces = m_fittingModel->numberOfWorkspaces();
-  for (DatasetIndex i{0}; i < numberWorkspaces; ++i) {
+  for (int i{0}; i < numberWorkspaces.value; ++i) {
+    TableDatasetIndex index{i};
     auto const name =
-        QString::fromStdString(m_fittingModel->getWorkspace(i)->getName());
-    auto const numberSpectra = m_fittingModel->getNumberOfSpectra(i);
-    for (SpectrumRowIndex j{0}; j < numberSpectra; ++j) {
-      datasetNames << name + " (" + QString::number(j.value) + ")";
+        QString::fromStdString(m_fittingModel->getWorkspace(index)->getName());
+    auto const numberSpectra = m_fittingModel->getNumberOfSpectra(index);
+    for (int j{0}; j < numberSpectra.value; ++j) {
+      datasetNames << name + " (" + QString::number(j) + ")";
     }
   }
   return datasetNames;
@@ -661,7 +664,7 @@ void IndirectFitAnalysisTab::updateResultOptions() {
   m_outOptionsPresenter->setSaveEnabled(isFit);
 }
 
-void IndirectFitAnalysisTab::respondToChangeOfSpectraRange(DatasetIndex i) {
+void IndirectFitAnalysisTab::respondToChangeOfSpectraRange(TableDatasetIndex i) {
   m_plotPresenter->updateSelectedDataName();
   m_plotPresenter->updateAvailableSpectra();
   m_dataPresenter->updateSpectraInTable(i);
@@ -708,7 +711,7 @@ void IndirectFitAnalysisTab::respondToDataRemoved() {
   updateParameterEstimationData();
 }
 
-void IndirectFitAnalysisTab::respondToSelectedFitDataChanged(DatasetIndex i) {
+void IndirectFitAnalysisTab::respondToSelectedFitDataChanged(TableDatasetIndex i) {
   m_spectrumPresenter->setActiveModelIndex(i);
   updateParameterValues();
 }
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.h b/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.h
index 52b8e2305432c8c5577fde135d3129bee419f67f..1d517bf0a5343bda0db8fd53d192ea58978763e7 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitAnalysisTab.h
@@ -40,9 +40,9 @@ public:
   void setSpectrumSelectionView(IndirectSpectrumSelectionView *view);
   void setOutputOptionsView(IIndirectFitOutputOptionsView *view);
   void setFitPropertyBrowser(IndirectFitPropertyBrowser *browser);
-  DatasetIndex getSelectedDataIndex() const;
+  TableDatasetIndex getSelectedDataIndex() const;
   WorkspaceIndex getSelectedSpectrum() const;
-  bool isRangeCurrentlySelected(DatasetIndex dataIndex,
+  bool isRangeCurrentlySelected(TableDatasetIndex dataIndex,
                                 WorkspaceIndex spectrum) const;
 
   virtual std::string tabName() const = 0;
@@ -85,11 +85,11 @@ protected slots:
   void setDataTableStartX(double startX);
   void setDataTableEndX(double endX);
   void setDataTableExclude(const std::string &exclude);
-  void tableStartXChanged(double startX, DatasetIndex dataIndex,
+  void tableStartXChanged(double startX, TableDatasetIndex dataIndex,
                           WorkspaceIndex spectrum);
-  void tableEndXChanged(double endX, DatasetIndex dataIndex,
+  void tableEndXChanged(double endX, TableDatasetIndex dataIndex,
                         WorkspaceIndex spectrum);
-  void tableExcludeChanged(const std::string &exclude, DatasetIndex dataIndex,
+  void tableExcludeChanged(const std::string &exclude, TableDatasetIndex dataIndex,
                            WorkspaceIndex spectrum);
   void startXChanged(double startX);
   void endXChanged(double endX);
@@ -97,7 +97,7 @@ protected slots:
   void updateSingleFitOutput(bool error);
   void fitAlgorithmComplete(bool error);
   void singleFit();
-  void singleFit(DatasetIndex dataIndex, WorkspaceIndex spectrum);
+  void singleFit(TableDatasetIndex dataIndex, WorkspaceIndex spectrum);
   void executeFit();
   void updateParameterValues();
   void updateParameterValues(
@@ -108,14 +108,14 @@ protected slots:
 
 private slots:
   void plotSelectedSpectra();
-  void respondToChangeOfSpectraRange(DatasetIndex);
+  void respondToChangeOfSpectraRange(TableDatasetIndex);
   void respondToSingleResolutionLoaded();
   void respondToDataChanged();
   void respondToSingleDataViewSelected();
   void respondToMultipleDataViewSelected();
   void respondToDataAdded();
   void respondToDataRemoved();
-  void respondToSelectedFitDataChanged(DatasetIndex);
+  void respondToSelectedFitDataChanged(TableDatasetIndex);
   void respondToNoFitDataSelected();
   void respondToPlotSpectrumChanged(WorkspaceIndex);
   void respondToFwhmChanged(double);
@@ -123,7 +123,6 @@ private slots:
   void respondToFunctionChanged();
 
 private:
-  /// Overidden by child class.
   void setup() override;
   void loadSettings(const QSettings &settings) override;
   bool validate() override;
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitData.cpp b/qt/scientific_interfaces/Indirect/IndirectFitData.cpp
index 667762c3ffb6a18b930431d262a470939778d5a3..d343bd6bb778be4dd7acafd242ad297310ecf270 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitData.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitData.cpp
@@ -18,7 +18,6 @@ using namespace Mantid::API;
 namespace {
 using namespace MantidQt::CustomInterfaces::IDA;
 using namespace Mantid::Kernel::Strings;
-using WorkspaceIndexType = MantidQt::CustomInterfaces::IDA::WorkspaceIndex;
 
 std::string constructSpectraString(std::vector<int> const &spectras) {
   return joinCompress(spectras.begin(), spectras.end());
@@ -81,12 +80,6 @@ std::string join(const std::vector<T> &values, const char *delimiter) {
   return stream.str();
 }
 
-template <typename T, typename... Ts>
-std::vector<T, Ts...> subvector(const std::vector<T, Ts...> vec, size_t start,
-                                size_t end) {
-  return std::vector<T, Ts...>(vec.begin() + start, vec.begin() + end);
-}
-
 std::string cutLastOf(const std::string &str, const std::string &delimiter) {
   const auto cutIndex = str.rfind(delimiter);
   if (cutIndex != std::string::npos)
@@ -162,12 +155,12 @@ namespace MantidQt {
 namespace CustomInterfaces {
 namespace IDA {
 
-SpectraNew::SpectraNew(const std::string &str)
+Spectra::Spectra(const std::string &str)
     : m_vec(workspaceIndexVectorFromString(str)), m_isContinuous(true) {
   checkContinuous();
 }
 
-SpectraNew::SpectraNew(WorkspaceIndex minimum, WorkspaceIndex maximum) {
+Spectra::Spectra(WorkspaceIndex minimum, WorkspaceIndex maximum) {
   if (maximum < minimum) {
     std::swap(minimum, maximum);
   }
@@ -175,32 +168,32 @@ SpectraNew::SpectraNew(WorkspaceIndex minimum, WorkspaceIndex maximum) {
   std::iota(m_vec.begin(), m_vec.end(), minimum);
 }
 
-SpectraNew::SpectraNew(const SpectraNew &vec)
+Spectra::Spectra(const Spectra &vec)
     : m_vec(vec.m_vec), m_isContinuous(vec.m_isContinuous) {}
 
-SpectraNew::SpectraNew(SpectraNew &&vec)
+Spectra::Spectra(Spectra &&vec)
     : m_vec(std::move(vec.m_vec)),
       m_isContinuous(std::move(vec.m_isContinuous)) {}
 
-SpectraNew &SpectraNew::operator=(const SpectraNew &vec) {
+Spectra &Spectra::operator=(const Spectra &vec) {
   m_vec = vec.m_vec;
   m_isContinuous = vec.m_isContinuous;
   return *this;
 }
 
-SpectraNew &SpectraNew::operator=(SpectraNew &&vec) {
+Spectra &Spectra::operator=(Spectra &&vec) {
   m_vec = std::move(vec.m_vec);
   m_isContinuous = std::move(vec.m_isContinuous);
   return *this;
 }
 
-bool SpectraNew::empty() const { return m_vec.empty(); }
+bool Spectra::empty() const { return m_vec.empty(); }
 
-SpectrumRowIndex SpectraNew::size() const {
-  return SpectrumRowIndex{static_cast<int>(m_vec.size())};
+TableRowIndex Spectra::size() const {
+  return TableRowIndex{static_cast<int>(m_vec.size())};
 }
 
-std::string SpectraNew::getString() const {
+std::string Spectra::getString() const {
   if (empty())
     return "";
   if (m_isContinuous)
@@ -213,39 +206,39 @@ std::string SpectraNew::getString() const {
   return Mantid::Kernel::Strings::toString(out);
 }
 
-std::pair<WorkspaceIndex, WorkspaceIndex> SpectraNew::getMinMax() const {
+std::pair<WorkspaceIndex, WorkspaceIndex> Spectra::getMinMax() const {
   if (empty())
     return std::make_pair(WorkspaceIndex{0}, WorkspaceIndex{0});
   return std::make_pair(m_vec.front(), m_vec.back());
 }
 
-bool SpectraNew::operator==(SpectraNew const &spec) const {
+bool Spectra::operator==(Spectra const &spec) const {
   return this->getString() == spec.getString();
 }
 
-bool SpectraNew::isContinuous() const { return m_isContinuous; }
+bool Spectra::isContinuous() const { return m_isContinuous; }
 
-SpectrumRowIndex SpectraNew::indexOf(WorkspaceIndex i) const {
+TableRowIndex Spectra::indexOf(WorkspaceIndex i) const {
   auto const it = std::find(begin(), end(), i);
   if (it == end()) {
     throw std::runtime_error("Spectrum index " + std::to_string(i.value) +
                              " not found.");
   }
-  return SpectrumRowIndex{static_cast<int>(std::distance(begin(), it))};
+  return TableRowIndex{static_cast<int>(std::distance(begin(), it))};
 }
 
-SpectraNew SpectraNew::combine(const SpectraNew &other) const {
+Spectra Spectra::combine(const Spectra &other) const {
   std::set<WorkspaceIndex> indices(begin(), end());
   indices.insert(other.begin(), other.end());
-  return SpectraNew(indices);
+  return Spectra(indices);
 }
 
-SpectraNew::SpectraNew(const std::set<WorkspaceIndex> &indices)
+Spectra::Spectra(const std::set<WorkspaceIndex> &indices)
     : m_vec(indices.begin(), indices.end()) {
   checkContinuous();
 }
 
-void SpectraNew::checkContinuous() {
+void Spectra::checkContinuous() {
   m_isContinuous = true;
   if (m_vec.size() > 1) {
     for (size_t i = 1; i < m_vec.size(); ++i) {
@@ -258,8 +251,8 @@ void SpectraNew::checkContinuous() {
 }
 
 IndirectFitData::IndirectFitData(MatrixWorkspace_sptr workspace,
-                                 const SpectraNew &spectra)
-    : m_workspace(workspace), m_spectra(SpectraNew("")) {
+                                 const Spectra &spectra)
+    : m_workspace(workspace), m_spectra(Spectra("")) {
   setSpectra(spectra);
   auto const range =
       !spectra.empty() ? getBinRange(workspace) : std::make_pair(0.0, 0.0);
@@ -300,13 +293,13 @@ Mantid::API::MatrixWorkspace_sptr IndirectFitData::workspace() const {
   return m_workspace;
 }
 
-const SpectraNew &IndirectFitData::spectra() const { return m_spectra; }
+const Spectra &IndirectFitData::spectra() const { return m_spectra; }
 
-WorkspaceIndex IndirectFitData::getSpectrum(SpectrumRowIndex index) const {
+WorkspaceIndex IndirectFitData::getSpectrum(TableRowIndex index) const {
   return m_spectra[index];
 }
 
-SpectrumRowIndex IndirectFitData::numberOfSpectra() const {
+TableRowIndex IndirectFitData::numberOfSpectra() const {
   return m_spectra.size();
 }
 
@@ -322,7 +315,7 @@ IndirectFitData::getRange(WorkspaceIndex spectrum) const {
   if (range != m_ranges.end()) {
     return range->second;
   }
-  range = m_ranges.find(getSpectrum(SpectrumRowIndex{0}));
+  range = m_ranges.find(getSpectrum(TableRowIndex{0}));
   if (range != m_ranges.end()) {
     return range->second;
   }
@@ -343,25 +336,25 @@ IndirectFitData::excludeRegionsVector(WorkspaceIndex spectrum) const {
 
 void IndirectFitData::setSpectra(std::string const &spectra) {
   try {
-    const SpectraNew spec = SpectraNew(createSpectraString(spectra));
+    const Spectra spec = Spectra(createSpectraString(spectra));
     setSpectra(spec);
   } catch (std::exception &ex) {
-    throw std::runtime_error("SpectraNew too large for cast: " +
+    throw std::runtime_error("Spectra too large for cast: " +
                              std::string(ex.what()));
   }
 }
 
-void IndirectFitData::setSpectra(SpectraNew &&spectra) {
+void IndirectFitData::setSpectra(Spectra &&spectra) {
   validateSpectra(spectra);
   m_spectra = std::move(spectra);
 }
 
-void IndirectFitData::setSpectra(SpectraNew const &spectra) {
+void IndirectFitData::setSpectra(Spectra const &spectra) {
   validateSpectra(spectra);
   m_spectra = spectra;
 }
 
-void IndirectFitData::validateSpectra(SpectraNew const &spectra) {
+void IndirectFitData::validateSpectra(Spectra const &spectra) {
   int maxValue = static_cast<int>(workspace()->getNumberHistograms()) - 1;
   std::vector<int> notInRange;
   for (auto const i : spectra) {
@@ -370,9 +363,9 @@ void IndirectFitData::validateSpectra(SpectraNew const &spectra) {
   }
   if (!notInRange.empty()) {
     if (notInRange.size() > 5)
-      throw std::runtime_error("SpectraNew out of range: " +
-                               join(subvector(notInRange, 0, 5), ",") + "...");
-    throw std::runtime_error("SpectraNew out of range: " +
+      throw std::runtime_error("Spectra out of range: " +
+                               join(std::vector<int>(notInRange.begin(), notInRange.begin()+ 5), ",") + "...");
+    throw std::runtime_error("Spectra out of range: " +
                              join(notInRange, ","));
   }
 }
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitData.h b/qt/scientific_interfaces/Indirect/IndirectFitData.h
index 96ba28a94c8df05f92d04efa86b7a13d5d4ce0ee..e6495a5a4f3ef12528a1f8f862a70cc021026e66 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitData.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitData.h
@@ -30,38 +30,36 @@ namespace IDA {
  *
  * Holds a string and vector representation.
  */
-class MANTIDQT_INDIRECT_DLL SpectraNew {
+class MANTIDQT_INDIRECT_DLL Spectra {
 public:
-  explicit SpectraNew(const std::string &str);
-  SpectraNew(WorkspaceIndex minimum, WorkspaceIndex maximum);
-  SpectraNew(const SpectraNew &vec);
-  SpectraNew(SpectraNew &&vec);
-  SpectraNew &operator=(const SpectraNew &vec);
-  SpectraNew &operator=(SpectraNew &&vec);
+  explicit Spectra(const std::string &str);
+  Spectra(WorkspaceIndex minimum, WorkspaceIndex maximum);
+  Spectra(const Spectra &vec);
+  Spectra(Spectra &&vec);
+  Spectra &operator=(const Spectra &vec);
+  Spectra &operator=(Spectra &&vec);
   bool empty() const;
-  SpectrumRowIndex size() const;
+  TableRowIndex size() const;
   std::string getString() const;
   std::pair<WorkspaceIndex, WorkspaceIndex> getMinMax() const;
   WorkspaceIndex front() const { return m_vec.front(); }
   WorkspaceIndex back() const { return m_vec.back(); }
-  std::vector<WorkspaceIndex>::iterator begin() { return m_vec.begin(); }
-  std::vector<WorkspaceIndex>::iterator end() { return m_vec.end(); }
   std::vector<WorkspaceIndex>::const_iterator begin() const {
-    return m_vec.begin();
+    return m_vec.cbegin();
   }
   std::vector<WorkspaceIndex>::const_iterator end() const {
-    return m_vec.end();
+    return m_vec.cend();
   }
-  const WorkspaceIndex &operator[](SpectrumRowIndex index) const {
+  const WorkspaceIndex &operator[](TableRowIndex index) const {
     return m_vec[index.value];
   }
-  bool operator==(SpectraNew const &spec) const;
+  bool operator==(Spectra const &spec) const;
   bool isContinuous() const;
-  SpectrumRowIndex indexOf(WorkspaceIndex i) const;
-  SpectraNew combine(const SpectraNew &other) const;
+  TableRowIndex indexOf(WorkspaceIndex i) const;
+  Spectra combine(const Spectra &other) const;
 
 private:
-  explicit SpectraNew(const std::set<WorkspaceIndex> &indices);
+  explicit Spectra(const std::set<WorkspaceIndex> &indices);
   void checkContinuous();
   std::vector<WorkspaceIndex> m_vec;
   bool m_isContinuous;
@@ -70,7 +68,7 @@ private:
 template <typename F> struct ApplySpectraNew {
   explicit ApplySpectraNew(F &&functor) : m_functor(std::forward<F>(functor)) {}
 
-  void operator()(const SpectraNew &spectra) const {
+  void operator()(const Spectra &spectra) const {
     for (const auto &spectrum : spectra)
       m_functor(spectrum);
   }
@@ -84,7 +82,7 @@ template <typename F> struct ApplyEnumeratedSpectraNew {
                             WorkspaceIndex start = WorkspaceIndex{0})
       : m_start(start), m_functor(std::forward<F>(functor)) {}
 
-  WorkspaceIndex operator()(const SpectraNew &spectra) const {
+  WorkspaceIndex operator()(const Spectra &spectra) const {
     auto i = m_start;
     for (const auto &spectrum : spectra)
       m_functor(i++, spectrum);
@@ -113,7 +111,7 @@ std::vector<T> vectorFromStringNew(const std::string &listString) {
 class MANTIDQT_INDIRECT_DLL IndirectFitData {
 public:
   IndirectFitData(Mantid::API::MatrixWorkspace_sptr workspace,
-                  const SpectraNew &spectra);
+                  const Spectra &spectra);
 
   std::string displayName(const std::string &formatString,
                           const std::string &rangeDelimiter) const;
@@ -122,9 +120,9 @@ public:
   std::string getBasename() const;
 
   Mantid::API::MatrixWorkspace_sptr workspace() const;
-  const SpectraNew &spectra() const;
-  WorkspaceIndex getSpectrum(SpectrumRowIndex index) const;
-  SpectrumRowIndex numberOfSpectra() const;
+  const Spectra &spectra() const;
+  WorkspaceIndex getSpectrum(TableRowIndex index) const;
+  TableRowIndex numberOfSpectra() const;
   bool zeroSpectra() const;
   std::pair<double, double> getRange(WorkspaceIndex spectrum) const;
   std::string getExcludeRegion(WorkspaceIndex spectrum) const;
@@ -145,8 +143,8 @@ public:
   }
 
   void setSpectra(std::string const &spectra);
-  void setSpectra(SpectraNew &&spectra);
-  void setSpectra(SpectraNew const &spectra);
+  void setSpectra(Spectra &&spectra);
+  void setSpectra(Spectra const &spectra);
   void setStartX(double const &startX, WorkspaceIndex const &index);
   void setStartX(double const &startX);
   void setEndX(double const &endX, WorkspaceIndex const &spectrum);
@@ -155,10 +153,10 @@ public:
                               WorkspaceIndex const &spectrum);
 
 private:
-  void validateSpectra(SpectraNew const &spectra);
+  void validateSpectra(Spectra const &spectra);
 
   Mantid::API::MatrixWorkspace_sptr m_workspace;
-  SpectraNew m_spectra;
+  Spectra m_spectra;
   std::map<WorkspaceIndex, std::string> m_excludeRegions;
   std::map<WorkspaceIndex, std::pair<double, double>> m_ranges;
 };
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.cpp b/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.cpp
index 5135fdd54d6f1769b55512d996392184d11a969e..045f3b221c222ce3481ef77782f3babfc32f2d51 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.cpp
@@ -153,8 +153,8 @@ std::string createSpectraString(std::string string) {
   return constructSpectraString(spectras);
 }
 
-struct CombineSpectra : boost::static_visitor<Spectra> {
-  Spectra
+struct CombineSpectra : boost::static_visitor<SpectraLegacy> {
+  SpectraLegacy
   operator()(const std::pair<std::size_t, std::size_t> &spectra1,
              const std::pair<std::size_t, std::size_t> &spectra2) const {
     if (spectra1.second + 1 == spectra2.first)
@@ -167,7 +167,7 @@ struct CombineSpectra : boost::static_visitor<Spectra> {
     }
   }
 
-  Spectra operator()(const Spectra &spectra1, const Spectra &spectra2) const {
+  SpectraLegacy operator()(const SpectraLegacy &spectra1, const SpectraLegacy &spectra2) const {
     return DiscontinuousSpectra<std::size_t>(createSpectraString(
         boost::apply_visitor(SpectraToString(), spectra1) + "," +
         boost::apply_visitor(SpectraToString(), spectra2)));
@@ -273,7 +273,7 @@ namespace CustomInterfaces {
 namespace IDA {
 
 IndirectFitDataLegacy::IndirectFitDataLegacy(MatrixWorkspace_sptr workspace,
-                                             const Spectra &spectra)
+                                             const SpectraLegacy &spectra)
     : m_workspace(workspace), m_spectra(DiscontinuousSpectra<std::size_t>("")) {
   setSpectra(spectra);
 }
@@ -312,7 +312,7 @@ Mantid::API::MatrixWorkspace_sptr IndirectFitDataLegacy::workspace() const {
   return m_workspace;
 }
 
-const Spectra &IndirectFitDataLegacy::spectra() const { return m_spectra; }
+const SpectraLegacy &IndirectFitDataLegacy::spectra() const { return m_spectra; }
 
 std::size_t IndirectFitDataLegacy::getSpectrum(std::size_t index) const {
   return boost::apply_visitor(GetSpectrum(index), m_spectra);
@@ -351,7 +351,7 @@ IndirectFitDataLegacy::excludeRegionsVector(std::size_t spectrum) const {
 
 void IndirectFitDataLegacy::setSpectra(std::string const &spectra) {
   try {
-    const Spectra spec =
+    const SpectraLegacy spec =
         DiscontinuousSpectra<std::size_t>(createSpectraString(spectra));
     setSpectra(spec);
   } catch (std::exception &ex) {
@@ -360,25 +360,25 @@ void IndirectFitDataLegacy::setSpectra(std::string const &spectra) {
   }
 }
 
-void IndirectFitDataLegacy::setSpectra(Spectra &&spectra) {
+void IndirectFitDataLegacy::setSpectra(SpectraLegacy &&spectra) {
   validateSpectra(spectra);
   m_spectra = std::move(spectra);
 }
 
-void IndirectFitDataLegacy::setSpectra(Spectra const &spectra) {
+void IndirectFitDataLegacy::setSpectra(SpectraLegacy const &spectra) {
   validateSpectra(spectra);
   m_spectra = spectra;
 }
 
-void IndirectFitDataLegacy::validateSpectra(Spectra const &spectra) {
+void IndirectFitDataLegacy::validateSpectra(SpectraLegacy const &spectra) {
   const auto visitor =
       SpectraOutOfRange<std::size_t>(0, workspace()->getNumberHistograms() - 1);
   auto notInRange = boost::apply_visitor(visitor, spectra);
   if (!notInRange.empty()) {
     if (notInRange.size() > 5)
-      throw std::runtime_error("Spectra out of range: " +
+      throw std::runtime_error("SpectraLegacy out of range: " +
                                join(subvector(notInRange, 0, 5), ",") + "...");
-    throw std::runtime_error("Spectra out of range: " + join(notInRange, ","));
+    throw std::runtime_error("SpectraLegacy out of range: " + join(notInRange, ","));
   }
 }
 
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.h b/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.h
index c09ed1add3f5e612967a1e64cad46ddee9f5f93d..5f6640554150edfb30496d212e1f0ddd3ef809cd 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitDataLegacy.h
@@ -90,7 +90,7 @@ private:
  * A variant is used, such that faster operations can be employed when using
  * a continuous range.
  */
-using Spectra = boost::variant<DiscontinuousSpectra<std::size_t>,
+using SpectraLegacy = boost::variant<DiscontinuousSpectra<std::size_t>,
                                std::pair<std::size_t, std::size_t>>;
 
 template <typename F> struct ApplySpectra : boost::static_visitor<> {
@@ -144,7 +144,7 @@ private:
 class MANTIDQT_INDIRECT_DLL IndirectFitDataLegacy {
 public:
   IndirectFitDataLegacy(Mantid::API::MatrixWorkspace_sptr workspace,
-                        const Spectra &spectra);
+                        const SpectraLegacy &spectra);
 
   std::string displayName(const std::string &formatString,
                           const std::string &rangeDelimiter) const;
@@ -153,7 +153,7 @@ public:
   std::string getBasename() const;
 
   Mantid::API::MatrixWorkspace_sptr workspace() const;
-  const Spectra &spectra() const;
+  const SpectraLegacy &spectra() const;
   std::size_t getSpectrum(std::size_t index) const;
   std::size_t numberOfSpectra() const;
   bool zeroSpectra() const;
@@ -174,18 +174,18 @@ public:
   }
 
   void setSpectra(std::string const &spectra);
-  void setSpectra(Spectra &&spectra);
-  void setSpectra(Spectra const &spectra);
+  void setSpectra(SpectraLegacy &&spectra);
+  void setSpectra(SpectraLegacy const &spectra);
   void setStartX(double const &startX, std::size_t const &index);
   void setEndX(double const &endX, std::size_t const &spectrum);
   void setExcludeRegionString(std::string const &excludeRegion,
                               std::size_t const &spectrum);
 
 private:
-  void validateSpectra(Spectra const &spectra);
+  void validateSpectra(SpectraLegacy const &spectra);
 
   Mantid::API::MatrixWorkspace_sptr m_workspace;
-  Spectra m_spectra;
+  SpectraLegacy m_spectra;
   std::unordered_map<std::size_t, std::string> m_excludeRegions;
   std::unordered_map<std::size_t, std::pair<double, double>> m_ranges;
 };
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.cpp b/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.cpp
index a0d5c80f7a96d5a48edaa56c8efdb50edec94f1d..6351b74304c2d4a94878d91c4b7b708d51fcb683 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.cpp
@@ -53,16 +53,16 @@ IndirectFitDataPresenter::IndirectFitDataPresenter(
           SIGNAL(endXChanged(double)));
 
   connect(m_tablePresenter.get(),
-          SIGNAL(startXChanged(double, DatasetIndex, WorkspaceIndex)), this,
-          SIGNAL(startXChanged(double, DatasetIndex, WorkspaceIndex)));
+          SIGNAL(startXChanged(double, TableDatasetIndex, WorkspaceIndex)), this,
+          SIGNAL(startXChanged(double, TableDatasetIndex, WorkspaceIndex)));
   connect(m_tablePresenter.get(),
-          SIGNAL(endXChanged(double, DatasetIndex, WorkspaceIndex)), this,
-          SIGNAL(endXChanged(double, DatasetIndex, WorkspaceIndex)));
+          SIGNAL(endXChanged(double, TableDatasetIndex, WorkspaceIndex)), this,
+          SIGNAL(endXChanged(double, TableDatasetIndex, WorkspaceIndex)));
   connect(m_tablePresenter.get(),
-          SIGNAL(excludeRegionChanged(const std::string &, DatasetIndex,
+          SIGNAL(excludeRegionChanged(const std::string &, TableDatasetIndex,
                                       WorkspaceIndex)),
           this,
-          SIGNAL(excludeRegionChanged(const std::string &, DatasetIndex,
+          SIGNAL(excludeRegionChanged(const std::string &, TableDatasetIndex,
                                       WorkspaceIndex)));
 }
 
@@ -121,31 +121,31 @@ void IndirectFitDataPresenter::setMultiInputResolutionWSSuffixes(
     IAddWorkspaceDialog *dialog) {
   UNUSED_ARG(dialog);
 }
-void IndirectFitDataPresenter::setStartX(double startX, DatasetIndex dataIndex,
+void IndirectFitDataPresenter::setStartX(double startX, TableDatasetIndex dataIndex,
                                          WorkspaceIndex spectrumIndex) {
   m_tablePresenter->setStartX(startX, dataIndex, spectrumIndex);
   m_view->setStartX(startX);
 }
 
 void IndirectFitDataPresenter::setStartX(double startX,
-                                         DatasetIndex dataIndex) {
+                                         TableDatasetIndex dataIndex) {
   m_tablePresenter->setStartX(startX, dataIndex);
   m_view->setStartX(startX);
 }
 
-void IndirectFitDataPresenter::setEndX(double endX, DatasetIndex dataIndex,
+void IndirectFitDataPresenter::setEndX(double endX, TableDatasetIndex dataIndex,
                                        WorkspaceIndex spectrumIndex) {
   m_tablePresenter->setEndX(endX, dataIndex, spectrumIndex);
   m_view->setEndX(endX);
 }
 
-void IndirectFitDataPresenter::setEndX(double endX, DatasetIndex dataIndex) {
+void IndirectFitDataPresenter::setEndX(double endX, TableDatasetIndex dataIndex) {
   m_tablePresenter->setEndX(endX, dataIndex);
   m_view->setEndX(endX);
 }
 
 void IndirectFitDataPresenter::setExclude(const std::string &exclude,
-                                          DatasetIndex dataIndex,
+                                          TableDatasetIndex dataIndex,
                                           WorkspaceIndex spectrumIndex) {
   m_tablePresenter->setExclude(exclude, dataIndex, spectrumIndex);
 }
@@ -162,12 +162,12 @@ void IndirectFitDataPresenter::setModelFromMultipleData() {
   emit dataChanged();
 }
 
-void IndirectFitDataPresenter::updateSpectraInTable(DatasetIndex dataIndex) {
+void IndirectFitDataPresenter::updateSpectraInTable(TableDatasetIndex dataIndex) {
   if (m_view->isMultipleDataTabSelected())
     m_tablePresenter->updateData(dataIndex);
 }
 
-void IndirectFitDataPresenter::updateDataInTable(DatasetIndex dataIndex) {
+void IndirectFitDataPresenter::updateDataInTable(TableDatasetIndex dataIndex) {
   if (m_tablePresenter->isTableEmpty())
     m_tablePresenter->addData(dataIndex);
   else
@@ -222,8 +222,6 @@ void IndirectFitDataPresenter::showAddWorkspaceDialog() {
   m_addWorkspaceDialog->setWSSuffices(m_view->getSampleWSSuffices());
   m_addWorkspaceDialog->setFBSuffices(m_view->getSampleFBSuffices());
   m_addWorkspaceDialog->updateSelectedSpectra();
-  //  setMultiInputSampleWSSuffixes();
-  //  setMultiInputSampleFBSuffixes();
   m_addWorkspaceDialog->show();
   connect(m_addWorkspaceDialog.get(), SIGNAL(addData()), this, SLOT(addData()));
   connect(m_addWorkspaceDialog.get(), SIGNAL(closeDialog()), this,
@@ -250,7 +248,7 @@ void IndirectFitDataPresenter::closeDialog() {
 void IndirectFitDataPresenter::addData(IAddWorkspaceDialog const *dialog) {
   try {
     addDataToModel(dialog);
-    m_tablePresenter->addData(m_model->numberOfWorkspaces() - DatasetIndex{1});
+    m_tablePresenter->addData(m_model->numberOfWorkspaces() - TableDatasetIndex{1});
     emit dataAdded();
     emit dataChanged();
   } catch (const std::runtime_error &ex) {
@@ -269,7 +267,7 @@ void IndirectFitDataPresenter::addDataToModel(
 void IndirectFitDataPresenter::setSingleModelData(const std::string &name) {
   m_model->clearWorkspaces();
   addModelData(name);
-  auto const dataIndex = DatasetIndex{0};
+  auto const dataIndex = TableDatasetIndex{0};
   auto const spectra = m_model->getSpectra(dataIndex);
   if (!spectra.empty()) {
     auto const range = m_model->getFittingRange(dataIndex, spectra.front());
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.h b/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.h
index 8b74c4d1fc4d2999c72b463613a7c93d2de43299..69d000216a0fa433a3cb135b6edef14fa428f05a 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitDataPresenter.h
@@ -44,13 +44,13 @@ public:
   void setMultiInputResolutionWSSuffixes();
   void setMultiInputResolutionFBSuffixes();
 
-  void setStartX(double startX, DatasetIndex dataIndex,
+  void setStartX(double startX, TableDatasetIndex dataIndex,
                  WorkspaceIndex spectrumIndex);
-  void setStartX(double startX, DatasetIndex dataIndex);
-  void setEndX(double endX, DatasetIndex dataIndex,
+  void setStartX(double startX, TableDatasetIndex dataIndex);
+  void setEndX(double endX, TableDatasetIndex dataIndex,
                WorkspaceIndex spectrumIndex);
-  void setEndX(double endX, DatasetIndex dataIndex);
-  void setExclude(const std::string &exclude, DatasetIndex dataIndex,
+  void setEndX(double endX, TableDatasetIndex dataIndex);
+  void setExclude(const std::string &exclude, TableDatasetIndex dataIndex,
                   WorkspaceIndex spectrumIndex);
 
   void loadSettings(const QSettings &settings);
@@ -62,7 +62,7 @@ public:
   getDataForParameterEstimation(EstimationDataSelector selector) const;
 
 public slots:
-  void updateSpectraInTable(DatasetIndex dataIndex);
+  void updateSpectraInTable(TableDatasetIndex dataIndex);
 
 protected slots:
   void setModelWorkspace(const QString &name);
@@ -77,11 +77,11 @@ signals:
   void dataAdded();
   void dataRemoved();
   void dataChanged();
-  void startXChanged(double, DatasetIndex, WorkspaceIndex);
+  void startXChanged(double, TableDatasetIndex, WorkspaceIndex);
   void startXChanged(double);
-  void endXChanged(double, DatasetIndex, WorkspaceIndex);
+  void endXChanged(double, TableDatasetIndex, WorkspaceIndex);
   void endXChanged(double);
-  void excludeRegionChanged(const std::string &, DatasetIndex, WorkspaceIndex);
+  void excludeRegionChanged(const std::string &, TableDatasetIndex, WorkspaceIndex);
   void multipleDataViewSelected();
   void singleDataViewSelected();
   void requestedAddWorkspaceDialog();
@@ -102,7 +102,7 @@ private slots:
 private:
   virtual std::unique_ptr<IAddWorkspaceDialog>
   getAddWorkspaceDialog(QWidget *parent) const;
-  void updateDataInTable(DatasetIndex dataIndex);
+  void updateDataInTable(TableDatasetIndex dataIndex);
   void selectReplacedWorkspace(const QString &workspaceName);
 
   virtual void setMultiInputResolutionFBSuffixes(IAddWorkspaceDialog *dialog);
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp b/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp
index c13f7d999b2870bf46a26db9c389322d7d33daa0..2f84aac7f2106d4535ea8ab9ae6583515dfcd810 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitOutput.cpp
@@ -226,9 +226,9 @@ typename Map::mapped_type &findOrCreateDefaultInMap(Map &map, const Key &key) {
   return map[key] = typename Map::mapped_type();
 }
 
-SpectrumRowIndex numberOfSpectraIn(const FitDataIteratorNew &fitDataBegin,
+TableRowIndex numberOfSpectraIn(const FitDataIteratorNew &fitDataBegin,
                                    const FitDataIteratorNew &fitDataEnd) {
-  SpectrumRowIndex spectra{0};
+  TableRowIndex spectra{0};
   for (auto it = fitDataBegin; it < fitDataEnd; ++it)
     spectra += (*it)->numberOfSpectra();
   return spectra;
@@ -344,7 +344,7 @@ void IndirectFitOutput::addOutput(WorkspaceGroup_sptr resultGroup,
   TableRowExtractor extractRowFromTable(parameterTable);
   m_parameters[fitData][spectrum] = extractRowFromTable(WorkspaceIndex{0});
   m_outputResultLocations[fitData][spectrum] =
-      ResultLocationNew(resultGroup, GroupIndex{0});
+      ResultLocationNew(resultGroup, WorkspaceGroupIndex{0});
   renameResult(resultWorkspace, fitData);
   m_resultWorkspace = resultWorkspace;
   m_resultGroup = resultGroup;
@@ -375,9 +375,9 @@ void IndirectFitOutput::updateParameters(ITableWorkspace_sptr parameterTable,
 void IndirectFitOutput::updateFitResultsFromUnstructured(
     WorkspaceGroup_sptr resultGroup, const FitDataIteratorNew &fitDataBegin,
     const FitDataIteratorNew &fitDataEnd) {
-  std::unordered_map<MatrixWorkspace *, std::map<WorkspaceIndex, GroupIndex>>
+  std::unordered_map<MatrixWorkspace *, std::map<WorkspaceIndex, WorkspaceGroupIndex>>
       resultIndices;
-  GroupIndex index{0};
+  WorkspaceGroupIndex index{0};
   for (auto fitData = fitDataBegin; fitData < fitDataEnd; ++fitData) {
     auto &fitResults = m_outputResultLocations[fitData->get()];
     auto ws = (*fitData)->workspace().get();
@@ -399,7 +399,7 @@ void IndirectFitOutput::updateFitResultsFromUnstructured(
 void IndirectFitOutput::updateFitResultsFromStructured(
     WorkspaceGroup_sptr resultGroup, const FitDataIteratorNew &fitDataBegin,
     const FitDataIteratorNew &fitDataEnd) {
-  GroupIndex index;
+  WorkspaceGroupIndex index;
   for (auto fitData = fitDataBegin; fitData < fitDataEnd; ++fitData) {
     auto &fitResults = m_outputResultLocations[fitData->get()];
     for (const auto &spectrum : (**fitData).spectra()) {
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitOutput.h b/qt/scientific_interfaces/Indirect/IndirectFitOutput.h
index 1668deae746649bfe4dad09e5c9ce1f375a11452..cd8a2c87c61dcfd2a7a1e5ca177dd939522b0594 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitOutput.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitOutput.h
@@ -31,10 +31,10 @@ struct ParameterValueNew {
 
 struct ResultLocationNew {
   ResultLocationNew() = default;
-  ResultLocationNew(Mantid::API::WorkspaceGroup_sptr group, GroupIndex i)
+  ResultLocationNew(Mantid::API::WorkspaceGroup_sptr group, WorkspaceGroupIndex i)
       : result(group), index(i) {}
   boost::weak_ptr<Mantid::API::WorkspaceGroup> result;
-  GroupIndex index = GroupIndex{0};
+  WorkspaceGroupIndex index = WorkspaceGroupIndex{0};
 };
 
 using ParameterValuesNew =
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.cpp b/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.cpp
index df37ff7faf1a105859fac6f51348b6dbdf9c71a7..b0cb27dc1c6154ac4054e1e7589af3cf409f16f3 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.cpp
@@ -128,7 +128,7 @@ IndirectFitPlotModel::~IndirectFitPlotModel() {
   deleteExternalGuessWorkspace();
 }
 
-void IndirectFitPlotModel::setActiveIndex(DatasetIndex index) {
+void IndirectFitPlotModel::setActiveIndex(TableDatasetIndex index) {
   m_activeIndex = index;
 }
 
@@ -166,7 +166,7 @@ MatrixWorkspace_sptr IndirectFitPlotModel::getWorkspace() const {
   return m_fittingModel->getWorkspace(m_activeIndex);
 }
 
-SpectraNew IndirectFitPlotModel::getSpectra() const {
+Spectra IndirectFitPlotModel::getSpectra() const {
   return m_fittingModel->getSpectra(m_activeIndex);
 }
 
@@ -184,7 +184,7 @@ std::pair<double, double> IndirectFitPlotModel::getResultRange() const {
   return {xValues.front(), xValues.back()};
 }
 
-DatasetIndex IndirectFitPlotModel::getActiveDataIndex() const {
+TableDatasetIndex IndirectFitPlotModel::getActiveDataIndex() const {
   return m_activeIndex;
 }
 
@@ -192,15 +192,15 @@ WorkspaceIndex IndirectFitPlotModel::getActiveSpectrum() const {
   return m_activeSpectrum;
 }
 
-DatasetIndex IndirectFitPlotModel::numberOfWorkspaces() const {
+TableDatasetIndex IndirectFitPlotModel::numberOfWorkspaces() const {
   return m_fittingModel->numberOfWorkspaces();
 }
 
-SpectrumRowIndex IndirectFitPlotModel::getActiveDomainIndex() const {
-  SpectrumRowIndex index{0};
-  for (DatasetIndex iws{0}; iws < numberOfWorkspaces(); ++iws) {
+TableRowIndex IndirectFitPlotModel::getActiveDomainIndex() const {
+  TableRowIndex index{0};
+  for (TableDatasetIndex iws{0}; iws < numberOfWorkspaces(); ++iws) {
     if (iws < m_activeIndex) {
-      index += SpectrumRowIndex{m_fittingModel->getNumberOfSpectra(iws)};
+      index += TableRowIndex{m_fittingModel->getNumberOfSpectra(iws)};
     } else {
       auto const spectra = m_fittingModel->getSpectra(iws);
       try {
@@ -215,7 +215,7 @@ SpectrumRowIndex IndirectFitPlotModel::getActiveDomainIndex() const {
   return index;
 }
 
-std::string IndirectFitPlotModel::getFitDataName(DatasetIndex index) const {
+std::string IndirectFitPlotModel::getFitDataName(TableDatasetIndex index) const {
   if (m_fittingModel->getWorkspace(index))
     return m_fittingModel->createDisplayName("%1% (%2%)", "-", index);
   return "";
@@ -228,7 +228,7 @@ std::string IndirectFitPlotModel::getFitDataName() const {
 std::string IndirectFitPlotModel::getLastFitDataName() const {
   auto const workspaceCount = m_fittingModel->numberOfWorkspaces();
   if (workspaceCount.value > 0)
-    return getFitDataName(workspaceCount - DatasetIndex{1});
+    return getFitDataName(workspaceCount - TableDatasetIndex{1});
   return "";
 }
 
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.h b/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.h
index 78321be7bb5f3a0c8e7028684c07a218a692e2a7..336b09537e245524dfc0ac76925d9ea7aab57245 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotModel.h
@@ -29,16 +29,16 @@ public:
   Mantid::API::MatrixWorkspace_sptr getWorkspace() const;
   Mantid::API::MatrixWorkspace_sptr getResultWorkspace() const;
   Mantid::API::MatrixWorkspace_sptr getGuessWorkspace() const;
-  SpectraNew getSpectra() const;
+  Spectra getSpectra() const;
 
   Mantid::API::MatrixWorkspace_sptr
   appendGuessToInput(Mantid::API::MatrixWorkspace_sptr guessWorkspace) const;
 
-  DatasetIndex getActiveDataIndex() const;
+  TableDatasetIndex getActiveDataIndex() const;
   WorkspaceIndex getActiveSpectrum() const;
-  DatasetIndex numberOfWorkspaces() const;
-  SpectrumRowIndex getActiveDomainIndex() const;
-  std::string getFitDataName(DatasetIndex index) const;
+  TableDatasetIndex numberOfWorkspaces() const;
+  TableRowIndex getActiveDomainIndex() const;
+  std::string getFitDataName(TableDatasetIndex index) const;
   std::string getFitDataName() const;
   std::string getLastFitDataName() const;
   std::pair<double, double> getRange() const;
@@ -51,7 +51,7 @@ public:
   double calculateHWHMMinimum(double maximum) const;
   bool canCalculateGuess() const;
 
-  void setActiveIndex(DatasetIndex index);
+  void setActiveIndex(TableDatasetIndex index);
   void setActiveSpectrum(WorkspaceIndex spectrum);
   void setStartX(double startX);
   void setEndX(double endX);
@@ -94,7 +94,7 @@ private:
   void deleteWorkspace(const std::string &name) const;
 
   IndirectFittingModel *m_fittingModel;
-  DatasetIndex m_activeIndex;
+  TableDatasetIndex m_activeIndex;
   WorkspaceIndex m_activeSpectrum;
 };
 
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.cpp b/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.cpp
index fcc113e5f0d019256624e70d5ee8645b817ddb11..62d6b175a05c825cdcedd829e8edfe344f8a6d87 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.cpp
@@ -159,7 +159,7 @@ MatrixWorkspace_sptr IndirectFitPlotModelLegacy::getWorkspace() const {
   return m_fittingModel->getWorkspace(m_activeIndex);
 }
 
-Spectra IndirectFitPlotModelLegacy::getSpectra() const {
+SpectraLegacy IndirectFitPlotModelLegacy::getSpectra() const {
   return m_fittingModel->getSpectra(m_activeIndex);
 }
 
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.h b/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.h
index d275f509cc605a03f052c35e1d72cac56611a66b..3446f85031eefff43f98905d60e9dba44f28356e 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotModelLegacy.h
@@ -28,7 +28,7 @@ public:
   Mantid::API::MatrixWorkspace_sptr getWorkspace() const;
   Mantid::API::MatrixWorkspace_sptr getResultWorkspace() const;
   Mantid::API::MatrixWorkspace_sptr getGuessWorkspace() const;
-  Spectra getSpectra() const;
+  SpectraLegacy getSpectra() const;
 
   Mantid::API::MatrixWorkspace_sptr
   appendGuessToInput(Mantid::API::MatrixWorkspace_sptr guessWorkspace) const;
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.cpp b/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.cpp
index 120e458e07885ba11aa7a20c96eccf7fbf0cd897..b6ba8ebe27ae1e1bcdbdfb1ed733b843a38b51fb 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.cpp
@@ -10,14 +10,14 @@
 
 namespace {
 using MantidQt::CustomInterfaces::IDA::IIndirectFitPlotView;
-using MantidQt::CustomInterfaces::IDA::SpectraNew;
+using MantidQt::CustomInterfaces::IDA::Spectra;
 using MantidQt::CustomInterfaces::IDA::WorkspaceIndex;
 
 struct UpdateAvailableSpectra : public boost::static_visitor<> {
 public:
   explicit UpdateAvailableSpectra(IIndirectFitPlotView *view) : m_view(view) {}
 
-  void operator()(const SpectraNew &spectra) {
+  void operator()(const Spectra &spectra) {
     if (spectra.isContinuous()) {
       auto const minmax = spectra.getMinMax();
       m_view->setAvailableSpectra(minmax.first, minmax.second);
@@ -43,18 +43,18 @@ IndirectFitPlotPresenter::IndirectFitPlotPresenter(IndirectFittingModel *model,
     : m_model(new IndirectFitPlotModel(model)), m_view(view),
       m_plotGuessInSeparateWindow(false),
       m_plotter(std::make_unique<IndirectPlotter>(pythonRunner)) {
-  connect(m_view, SIGNAL(selectedFitDataChanged(DatasetIndex)), this,
-          SLOT(setActiveIndex(DatasetIndex)));
-  connect(m_view, SIGNAL(selectedFitDataChanged(DatasetIndex)), this,
+  connect(m_view, SIGNAL(selectedFitDataChanged(TableDatasetIndex)), this,
+          SLOT(setActiveIndex(TableDatasetIndex)));
+  connect(m_view, SIGNAL(selectedFitDataChanged(TableDatasetIndex)), this,
           SLOT(updateAvailableSpectra()));
-  connect(m_view, SIGNAL(selectedFitDataChanged(DatasetIndex)), this,
+  connect(m_view, SIGNAL(selectedFitDataChanged(TableDatasetIndex)), this,
           SLOT(updatePlots()));
-  connect(m_view, SIGNAL(selectedFitDataChanged(DatasetIndex)), this,
+  connect(m_view, SIGNAL(selectedFitDataChanged(TableDatasetIndex)), this,
           SLOT(updateFitRangeSelector()));
-  connect(m_view, SIGNAL(selectedFitDataChanged(DatasetIndex)), this,
+  connect(m_view, SIGNAL(selectedFitDataChanged(TableDatasetIndex)), this,
           SLOT(updateGuess()));
-  connect(m_view, SIGNAL(selectedFitDataChanged(DatasetIndex)), this,
-          SIGNAL(selectedFitDataChanged(DatasetIndex)));
+  connect(m_view, SIGNAL(selectedFitDataChanged(TableDatasetIndex)), this,
+          SIGNAL(selectedFitDataChanged(TableDatasetIndex)));
 
   connect(m_view, SIGNAL(plotSpectrumChanged(WorkspaceIndex)), this,
           SLOT(setActiveSpectrum(WorkspaceIndex)));
@@ -102,7 +102,7 @@ IndirectFitPlotPresenter::IndirectFitPlotPresenter(IndirectFittingModel *model,
   updateAvailableSpectra();
 }
 
-DatasetIndex IndirectFitPlotPresenter::getSelectedDataIndex() const {
+TableDatasetIndex IndirectFitPlotPresenter::getSelectedDataIndex() const {
   return m_model->getActiveDataIndex();
 }
 
@@ -110,21 +110,21 @@ WorkspaceIndex IndirectFitPlotPresenter::getSelectedSpectrum() const {
   return m_model->getActiveSpectrum();
 }
 
-SpectrumRowIndex IndirectFitPlotPresenter::getSelectedSpectrumIndex() const {
+TableRowIndex IndirectFitPlotPresenter::getSelectedSpectrumIndex() const {
   return m_view->getSelectedSpectrumIndex();
 }
 
-SpectrumRowIndex IndirectFitPlotPresenter::getSelectedDomainIndex() const {
+TableRowIndex IndirectFitPlotPresenter::getSelectedDomainIndex() const {
   return m_model->getActiveDomainIndex();
 }
 
 bool IndirectFitPlotPresenter::isCurrentlySelected(
-    DatasetIndex dataIndex, WorkspaceIndex spectrum) const {
+    TableDatasetIndex dataIndex, WorkspaceIndex spectrum) const {
   return getSelectedDataIndex() == dataIndex &&
          getSelectedSpectrum() == spectrum;
 }
 
-void IndirectFitPlotPresenter::setActiveIndex(DatasetIndex index) {
+void IndirectFitPlotPresenter::setActiveIndex(TableDatasetIndex index) {
   m_model->setActiveIndex(index);
 }
 
@@ -200,7 +200,7 @@ void IndirectFitPlotPresenter::appendLastDataToSelection() {
   const auto workspaceCount = m_model->numberOfWorkspaces();
   if (m_view->dataSelectionSize() == workspaceCount)
     m_view->setNameInDataSelection(m_model->getLastFitDataName(),
-                                   workspaceCount - DatasetIndex{1});
+                                   workspaceCount - TableDatasetIndex{1});
   else
     m_view->appendToDataSelection(m_model->getLastFitDataName());
 }
@@ -213,9 +213,9 @@ void IndirectFitPlotPresenter::updateSelectedDataName() {
 void IndirectFitPlotPresenter::updateDataSelection() {
   MantidQt::API::SignalBlocker blocker(m_view);
   m_view->clearDataSelection();
-  for (DatasetIndex i{0}; i < m_model->numberOfWorkspaces(); ++i)
+  for (TableDatasetIndex i{0}; i < m_model->numberOfWorkspaces(); ++i)
     m_view->appendToDataSelection(m_model->getFitDataName(i));
-  setActiveIndex(DatasetIndex{0});
+  setActiveIndex(TableDatasetIndex{0});
   updateAvailableSpectra();
   emitSelectedFitDataChanged();
 }
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.h b/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.h
index 44ad7c9fa1c69313709ae2e0120c19eb4b931cd1..3d8629af9bcad97064ede89960b2aaf928856f9a 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotPresenter.h
@@ -27,11 +27,11 @@ public:
                            IIndirectFitPlotView *view,
                            IPyRunner *pythonRunner = nullptr);
 
-  DatasetIndex getSelectedDataIndex() const;
+  TableDatasetIndex getSelectedDataIndex() const;
   WorkspaceIndex getSelectedSpectrum() const;
-  SpectrumRowIndex getSelectedSpectrumIndex() const;
-  SpectrumRowIndex getSelectedDomainIndex() const;
-  bool isCurrentlySelected(DatasetIndex dataIndex,
+  TableRowIndex getSelectedSpectrumIndex() const;
+  TableRowIndex getSelectedDomainIndex() const;
+  bool isCurrentlySelected(TableDatasetIndex dataIndex,
                            WorkspaceIndex spectrum) const;
 
   void setFitSingleSpectrumIsFitting(bool fitting);
@@ -55,10 +55,10 @@ public slots:
   void disablePlotGuessInSeparateWindow();
 
 signals:
-  void selectedFitDataChanged(DatasetIndex /*_t1*/);
+  void selectedFitDataChanged(TableDatasetIndex /*_t1*/);
   void noFitDataSelected();
   void plotSpectrumChanged(WorkspaceIndex /*_t1*/);
-  void fitSingleSpectrum(DatasetIndex /*_t1*/, WorkspaceIndex /*_t2*/);
+  void fitSingleSpectrum(TableDatasetIndex /*_t1*/, WorkspaceIndex /*_t2*/);
   void startXChanged(double /*_t1*/);
   void endXChanged(double /*_t1*/);
   void fwhmChanged(double /*_t1*/);
@@ -70,7 +70,7 @@ private slots:
   void setModelEndX(double value);
   void setModelHWHM(double minimum, double maximum);
   void setModelBackground(double background);
-  void setActiveIndex(DatasetIndex index);
+  void setActiveIndex(TableDatasetIndex index);
   void setActiveSpectrum(WorkspaceIndex spectrum);
   void setHWHMMaximum(double minimum);
   void setHWHMMinimum(double maximum);
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotView.cpp b/qt/scientific_interfaces/Indirect/IndirectFitPlotView.cpp
index 181e7096a9f9665318c8352b7a2adc207d9ba498..c97136235ccf66a59377235b468a174e9e8d93b5 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotView.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotView.cpp
@@ -54,19 +54,19 @@ WorkspaceIndex IndirectFitPlotView::getSelectedSpectrum() const {
   return WorkspaceIndex{0};
 }
 
-SpectrumRowIndex IndirectFitPlotView::getSelectedSpectrumIndex() const {
+TableRowIndex IndirectFitPlotView::getSelectedSpectrumIndex() const {
   if (m_plotForm->swPlotSpectrum->currentIndex() == 0)
-    return SpectrumRowIndex{m_plotForm->spPlotSpectrum->value() -
+    return TableRowIndex{m_plotForm->spPlotSpectrum->value() -
                             m_plotForm->spPlotSpectrum->minimum()};
-  return SpectrumRowIndex{m_plotForm->cbPlotSpectrum->currentIndex()};
+  return TableRowIndex{m_plotForm->cbPlotSpectrum->currentIndex()};
 }
 
-DatasetIndex IndirectFitPlotView::getSelectedDataIndex() const {
-  return DatasetIndex{m_plotForm->cbDataSelection->currentIndex()};
+TableDatasetIndex IndirectFitPlotView::getSelectedDataIndex() const {
+  return TableDatasetIndex{m_plotForm->cbDataSelection->currentIndex()};
 }
 
-DatasetIndex IndirectFitPlotView::dataSelectionSize() const {
-  return DatasetIndex{m_plotForm->cbDataSelection->count()};
+TableDatasetIndex IndirectFitPlotView::dataSelectionSize() const {
+  return TableDatasetIndex{m_plotForm->cbDataSelection->count()};
 }
 
 bool IndirectFitPlotView::isPlotGuessChecked() const {
@@ -143,7 +143,7 @@ void IndirectFitPlotView::appendToDataSelection(const std::string &dataName) {
 }
 
 void IndirectFitPlotView::setNameInDataSelection(const std::string &dataName,
-                                                 DatasetIndex index) {
+                                                 TableDatasetIndex index) {
   m_plotForm->cbDataSelection->setItemText(index.value,
                                            QString::fromStdString(dataName));
 }
@@ -275,7 +275,7 @@ void IndirectFitPlotView::displayMessage(const std::string &message) const {
 
 void IndirectFitPlotView::emitSelectedFitDataChanged(int index) {
   if (index >= 0)
-    emit selectedFitDataChanged(DatasetIndex{index});
+    emit selectedFitDataChanged(TableDatasetIndex{index});
 }
 
 void IndirectFitPlotView::emitPlotSpectrumChanged(int spectrum) {
@@ -283,7 +283,10 @@ void IndirectFitPlotView::emitPlotSpectrumChanged(int spectrum) {
 }
 
 void IndirectFitPlotView::emitPlotSpectrumChanged(const QString &spectrum) {
-  emit plotSpectrumChanged(WorkspaceIndex{spectrum.toInt()});
+  bool successState{false};
+  int spectrumInt = spectrum.toInt(&successState);
+  if(successState)
+    emit plotSpectrumChanged(WorkspaceIndex{spectrumInt});
 }
 
 void IndirectFitPlotView::emitPlotGuessChanged(int doPlotGuess) {
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPlotView.h b/qt/scientific_interfaces/Indirect/IndirectFitPlotView.h
index d62368c96a5b66e5a4892cdc6ecbd603ce89be4e..6537a6595a5a0bfe1c1cc115c3a142ed2ad8d7dc 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPlotView.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPlotView.h
@@ -25,9 +25,9 @@ public:
   virtual ~IndirectFitPlotView() override;
 
   WorkspaceIndex getSelectedSpectrum() const override;
-  SpectrumRowIndex getSelectedSpectrumIndex() const override;
-  DatasetIndex getSelectedDataIndex() const override;
-  DatasetIndex dataSelectionSize() const override;
+  TableRowIndex getSelectedSpectrumIndex() const override;
+  TableDatasetIndex getSelectedDataIndex() const override;
+  TableDatasetIndex dataSelectionSize() const override;
   bool isPlotGuessChecked() const override;
 
   void hideMultipleDataSelection() override;
@@ -44,7 +44,7 @@ public:
   void setPlotSpectrum(WorkspaceIndex spectrum) override;
   void appendToDataSelection(const std::string &dataName) override;
   void setNameInDataSelection(const std::string &dataName,
-                              DatasetIndex index) override;
+                              TableDatasetIndex index) override;
   void clearDataSelection() override;
 
   void plotInTopPreview(const QString &name,
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.cpp b/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.cpp
index 341e483b49fe862b279d7c841be29035714a4c8d..a826dccd03dbcda8c7304b91b32b37047363dc21 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.cpp
@@ -305,7 +305,7 @@ void IndirectFitPropertyBrowser::setBackgroundA0(double value) {
   }
 }
 
-void IndirectFitPropertyBrowser::setCurrentDataset(SpectrumRowIndex i) {
+void IndirectFitPropertyBrowser::setCurrentDataset(TableRowIndex i) {
   if (m_functionBrowser->getNumberOfDatasets() == 0)
     return;
   if (isFullFunctionBrowserActive()) {
@@ -315,12 +315,12 @@ void IndirectFitPropertyBrowser::setCurrentDataset(SpectrumRowIndex i) {
   }
 }
 
-SpectrumRowIndex IndirectFitPropertyBrowser::currentDataset() const {
-  return SpectrumRowIndex{m_functionBrowser->getCurrentDataset()};
+TableRowIndex IndirectFitPropertyBrowser::currentDataset() const {
+  return TableRowIndex{m_functionBrowser->getCurrentDataset()};
 }
 
 void IndirectFitPropertyBrowser::updateFunctionBrowserData(
-    SpectrumRowIndex nData, const QStringList &datasetNames) {
+    TableRowIndex nData, const QStringList &datasetNames) {
   m_functionBrowser->setNumberOfDatasets(nData.value);
   m_functionBrowser->setDatasetNames(datasetNames);
   m_templateBrowser->setNumberOfDatasets(nData.value);
@@ -344,7 +344,7 @@ void IndirectFitPropertyBrowser::sequentialFit() {
 }
 
 void IndirectFitPropertyBrowser::setModelResolution(std::string const &name,
-                                                    DatasetIndex const &index) {
+                                                    TableDatasetIndex const &index) {
   if (isFullFunctionBrowserActive()) {
     showFullFunctionBrowser(false);
   }
diff --git a/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.h b/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.h
index 2b8ad12b6eb319c1d98583e237cb4eb08a3698bd..8e158b6b721340a0b0686abc9578a1fa1541b194 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFitPropertyBrowser.h
@@ -60,9 +60,9 @@ public:
   QString selectedFitType() const;
   void setConvolveMembers(bool convolveMembers);
   void setFitEnabled(bool enable);
-  void setCurrentDataset(SpectrumRowIndex i);
-  SpectrumRowIndex currentDataset() const;
-  void updateFunctionBrowserData(SpectrumRowIndex nData,
+  void setCurrentDataset(TableRowIndex i);
+  TableRowIndex currentDataset() const;
+  void updateFunctionBrowserData(TableRowIndex nData,
                                  const QStringList &datasetNames);
   void updatePlotGuess(MatrixWorkspace_const_sptr sampleWorkspace);
   void setErrorsEnabled(bool enabled);
@@ -73,7 +73,7 @@ public:
 public slots:
   void fit();
   void sequentialFit();
-  void setModelResolution(std::string const &name, DatasetIndex const &index);
+  void setModelResolution(std::string const &name, TableDatasetIndex const &index);
 
 protected slots:
   void clear();
diff --git a/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp b/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp
index 43f66290b716176eb1673e5a739bb12e3baf9666..23c8daa9673f72233cffd92236feb2101823f8da 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp
@@ -334,7 +334,7 @@ bool IndirectFittingModel::hasWorkspace(
 }
 
 MatrixWorkspace_sptr
-IndirectFittingModel::getWorkspace(DatasetIndex index) const {
+IndirectFittingModel::getWorkspace(TableDatasetIndex index) const {
   if (index < m_fittingData.size())
     return m_fittingData[index]->workspace();
   return nullptr;
@@ -348,14 +348,14 @@ std::vector<std::string> IndirectFittingModel::getWorkspaceNames() const {
   return names;
 }
 
-SpectraNew IndirectFittingModel::getSpectra(DatasetIndex index) const {
+Spectra IndirectFittingModel::getSpectra(TableDatasetIndex index) const {
   if (index < m_fittingData.size())
     return m_fittingData[index]->spectra();
-  return SpectraNew("");
+  return Spectra("");
 }
 
 std::pair<double, double>
-IndirectFittingModel::getFittingRange(DatasetIndex dataIndex,
+IndirectFittingModel::getFittingRange(TableDatasetIndex dataIndex,
                                       WorkspaceIndex spectrum) const {
   if (dataIndex < m_fittingData.size() &&
       !m_fittingData[dataIndex]->zeroSpectra()) {
@@ -365,7 +365,7 @@ IndirectFittingModel::getFittingRange(DatasetIndex dataIndex,
 }
 
 std::string
-IndirectFittingModel::getExcludeRegion(DatasetIndex dataIndex,
+IndirectFittingModel::getExcludeRegion(TableDatasetIndex dataIndex,
                                        WorkspaceIndex spectrum) const {
   if (dataIndex < m_fittingData.size() &&
       !m_fittingData[dataIndex]->zeroSpectra()) {
@@ -377,7 +377,7 @@ IndirectFittingModel::getExcludeRegion(DatasetIndex dataIndex,
 std::string
 IndirectFittingModel::createDisplayName(const std::string &formatString,
                                         const std::string &rangeDelimiter,
-                                        DatasetIndex dataIndex) const {
+                                        TableDatasetIndex dataIndex) const {
   if (m_fittingData.size() > dataIndex)
     return m_fittingData[dataIndex]->displayName(formatString, rangeDelimiter);
   else
@@ -388,7 +388,7 @@ IndirectFittingModel::createDisplayName(const std::string &formatString,
 std::string
 IndirectFittingModel::createOutputName(const std::string &formatString,
                                        const std::string &rangeDelimiter,
-                                       DatasetIndex dataIndex) const {
+                                       TableDatasetIndex dataIndex) const {
   return createDisplayName(formatString, rangeDelimiter, dataIndex) +
          "_Results";
 }
@@ -397,7 +397,7 @@ bool IndirectFittingModel::isMultiFit() const {
   return numberOfWorkspaces().value > 1;
 }
 
-bool IndirectFittingModel::isPreviouslyFit(DatasetIndex dataIndex,
+bool IndirectFittingModel::isPreviouslyFit(TableDatasetIndex dataIndex,
                                            WorkspaceIndex spectrum) const {
   if (!m_previousModelSelected || !m_fitOutput ||
       m_fittingData.size() <= dataIndex)
@@ -417,12 +417,12 @@ boost::optional<std::string> IndirectFittingModel::isInvalidFunction() const {
   return boost::none;
 }
 
-DatasetIndex IndirectFittingModel::numberOfWorkspaces() const {
-  return DatasetIndex{m_fittingData.size()};
+TableDatasetIndex IndirectFittingModel::numberOfWorkspaces() const {
+  return TableDatasetIndex{m_fittingData.size()};
 }
 
-SpectrumRowIndex
-IndirectFittingModel::getNumberOfSpectra(DatasetIndex index) const {
+TableRowIndex
+IndirectFittingModel::getNumberOfSpectra(TableDatasetIndex index) const {
   if (index < m_fittingData.size())
     return m_fittingData[index]->numberOfSpectra();
   else
@@ -431,18 +431,18 @@ IndirectFittingModel::getNumberOfSpectra(DatasetIndex index) const {
         "index provided is too large.");
 }
 
-SpectrumRowIndex IndirectFittingModel::getNumberOfDomains() const {
-  SpectrumRowIndex sum{0};
+TableRowIndex IndirectFittingModel::getNumberOfDomains() const {
+  TableRowIndex sum{0};
   for (auto i = m_fittingData.zero(); i < m_fittingData.size(); ++i) {
     sum += m_fittingData[i]->numberOfSpectra();
   }
   return sum;
 }
 
-SpectrumRowIndex
-IndirectFittingModel::getDomainIndex(DatasetIndex dataIndex,
+TableRowIndex
+IndirectFittingModel::getDomainIndex(TableDatasetIndex dataIndex,
                                      WorkspaceIndex spectrum) const {
-  SpectrumRowIndex index{0};
+  TableRowIndex index{0};
   for (auto iws = m_fittingData.zero(); iws < m_fittingData.size(); ++iws) {
     if (iws < dataIndex) {
       index += getNumberOfSpectra(iws);
@@ -476,52 +476,52 @@ void IndirectFittingModel::setFittingData(PrivateFittingData &&fittingData) {
 }
 
 void IndirectFittingModel::setSpectra(const std::string &spectra,
-                                      DatasetIndex dataIndex) {
-  setSpectra(SpectraNew(spectra), dataIndex);
+                                      TableDatasetIndex dataIndex) {
+  setSpectra(Spectra(spectra), dataIndex);
 }
 
-void IndirectFittingModel::setSpectra(SpectraNew &&spectra,
-                                      DatasetIndex dataIndex) {
+void IndirectFittingModel::setSpectra(Spectra &&spectra,
+                                      TableDatasetIndex dataIndex) {
   if (m_fittingData.empty())
     return;
-  m_fittingData[dataIndex]->setSpectra(std::forward<SpectraNew>(spectra));
+  m_fittingData[dataIndex]->setSpectra(std::forward<Spectra>(spectra));
 }
 
-void IndirectFittingModel::setSpectra(const SpectraNew &spectra,
-                                      DatasetIndex dataIndex) {
+void IndirectFittingModel::setSpectra(const Spectra &spectra,
+                                      TableDatasetIndex dataIndex) {
   if (m_fittingData.empty())
     return;
   m_fittingData[dataIndex]->setSpectra(spectra);
 }
 
-void IndirectFittingModel::setStartX(double startX, DatasetIndex dataIndex,
+void IndirectFittingModel::setStartX(double startX, TableDatasetIndex dataIndex,
                                      WorkspaceIndex spectrum) {
   if (m_fittingData.empty())
     return;
   m_fittingData[dataIndex]->setStartX(startX, spectrum);
 }
 
-void IndirectFittingModel::setStartX(double startX, DatasetIndex dataIndex) {
+void IndirectFittingModel::setStartX(double startX, TableDatasetIndex dataIndex) {
   if (m_fittingData.empty())
     return;
   m_fittingData[dataIndex]->setStartX(startX);
 }
 
-void IndirectFittingModel::setEndX(double endX, DatasetIndex dataIndex,
+void IndirectFittingModel::setEndX(double endX, TableDatasetIndex dataIndex,
                                    WorkspaceIndex spectrum) {
   if (m_fittingData.empty())
     return;
   m_fittingData[dataIndex]->setEndX(endX, spectrum);
 }
 
-void IndirectFittingModel::setEndX(double endX, DatasetIndex dataIndex) {
+void IndirectFittingModel::setEndX(double endX, TableDatasetIndex dataIndex) {
   if (m_fittingData.empty())
     return;
   m_fittingData[dataIndex]->setEndX(endX);
 }
 
 void IndirectFittingModel::setExcludeRegion(const std::string &exclude,
-                                            DatasetIndex dataIndex,
+                                            TableDatasetIndex dataIndex,
                                             WorkspaceIndex spectrum) {
   if (m_fittingData.empty())
     return;
@@ -532,7 +532,7 @@ void IndirectFittingModel::addWorkspace(const std::string &workspaceName) {
   auto ws = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
       workspaceName);
   addWorkspace(
-      ws, SpectraNew(
+      ws, Spectra(
               WorkspaceIndex{0},
               WorkspaceIndex{static_cast<int>(ws->getNumberHistograms()) - 1}));
 }
@@ -545,18 +545,18 @@ void IndirectFittingModel::addWorkspace(const std::string &workspaceName,
   if (workspaceName.empty() || !doesExistInADS(workspaceName))
     throw std::runtime_error("A valid sample file needs to be selected.");
 
-  addWorkspace(workspaceName, SpectraNew(spectra));
+  addWorkspace(workspaceName, Spectra(spectra));
 }
 
 void IndirectFittingModel::addWorkspace(const std::string &workspaceName,
-                                        const SpectraNew &spectra) {
+                                        const Spectra &spectra) {
   auto ws = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
       workspaceName);
   addWorkspace(ws, spectra);
 }
 
 void IndirectFittingModel::addWorkspace(MatrixWorkspace_sptr workspace,
-                                        const SpectraNew &spectra) {
+                                        const Spectra &spectra) {
   if (!m_fittingData.empty() &&
       equivalentWorkspaces(workspace, m_fittingData.back()->workspace()))
     m_fittingData.back()->combine(IndirectFitData(workspace, spectra));
@@ -565,14 +565,14 @@ void IndirectFittingModel::addWorkspace(MatrixWorkspace_sptr workspace,
 }
 
 void IndirectFittingModel::addNewWorkspace(MatrixWorkspace_sptr workspace,
-                                           const SpectraNew &spectra) {
+                                           const Spectra &spectra) {
   m_fittingData.emplace_back(new IndirectFitData(workspace, spectra));
   m_defaultParameters.emplace_back(
       createDefaultParameters(m_fittingData.last()));
 }
 
 void IndirectFittingModel::removeWorkspaceFromFittingData(
-    DatasetIndex const &index) {
+    TableDatasetIndex const &index) {
   if (m_fittingData.size() > index)
     removeFittingData(index);
   else
@@ -580,21 +580,21 @@ void IndirectFittingModel::removeWorkspaceFromFittingData(
                              "the workspace index provided is too large.");
 }
 
-void IndirectFittingModel::removeWorkspace(DatasetIndex index) {
+void IndirectFittingModel::removeWorkspace(TableDatasetIndex index) {
   removeWorkspaceFromFittingData(index);
 
   if (index > m_fittingData.zero() && m_fittingData.size() > index) {
-    const auto previousWS = m_fittingData[index - DatasetIndex{1}]->workspace();
+    const auto previousWS = m_fittingData[index - TableDatasetIndex{1}]->workspace();
     const auto subsequentWS = m_fittingData[index]->workspace();
 
     if (equivalentWorkspaces(previousWS, subsequentWS)) {
-      m_fittingData[index - DatasetIndex{1}]->combine(*m_fittingData[index]);
+      m_fittingData[index - TableDatasetIndex{1}]->combine(*m_fittingData[index]);
       m_fittingData.remove(index);
     }
   }
 }
 
-void IndirectFittingModel::removeFittingData(DatasetIndex index) {
+void IndirectFittingModel::removeFittingData(TableDatasetIndex index) {
   if (m_fitOutput)
     m_fitOutput->removeOutput(m_fittingData[index].get());
   m_fittingData.remove(index);
@@ -618,7 +618,7 @@ void IndirectFittingModel::setFitFunction(MultiDomainFunction_sptr function) {
 
 void IndirectFittingModel::setDefaultParameterValue(const std::string &name,
                                                     double value,
-                                                    DatasetIndex dataIndex) {
+                                                    TableDatasetIndex dataIndex) {
   if (m_defaultParameters.size() > dataIndex)
     m_defaultParameters[dataIndex][name] = ParameterValueNew(value);
 }
@@ -639,7 +639,7 @@ void IndirectFittingModel::addOutput(IAlgorithm_sptr fitAlgorithm,
 }
 
 void IndirectFittingModel::addSingleFitOutput(IAlgorithm_sptr fitAlgorithm,
-                                              DatasetIndex index) {
+                                              TableDatasetIndex index) {
   auto group = getOutputGroup(fitAlgorithm);
   auto parameters = getOutputParameters(fitAlgorithm);
   auto result = getOutputResult(fitAlgorithm);
@@ -719,7 +719,7 @@ FittingMode IndirectFittingModel::getFittingMode() const {
 }
 
 std::unordered_map<std::string, ParameterValueNew>
-IndirectFittingModel::getParameterValues(DatasetIndex index,
+IndirectFittingModel::getParameterValues(TableDatasetIndex index,
                                          WorkspaceIndex spectrum) const {
   if (m_fittingData.size() > index) {
     const auto parameters = getFitParameters(index, spectrum);
@@ -733,7 +733,7 @@ IndirectFittingModel::getParameterValues(DatasetIndex index,
 }
 
 std::unordered_map<std::string, ParameterValueNew>
-IndirectFittingModel::getFitParameters(DatasetIndex index,
+IndirectFittingModel::getFitParameters(TableDatasetIndex index,
                                        WorkspaceIndex spectrum) const {
   if (m_fitOutput)
     return m_fitOutput->getParameters(m_fittingData[index].get(), spectrum);
@@ -741,7 +741,7 @@ IndirectFittingModel::getFitParameters(DatasetIndex index,
 }
 
 std::unordered_map<std::string, ParameterValueNew>
-IndirectFittingModel::getDefaultParameters(DatasetIndex index) const {
+IndirectFittingModel::getDefaultParameters(TableDatasetIndex index) const {
   if (index < m_defaultParameters.size())
     return mapKeys(m_defaultParameters[index], mapDefaultParameterNames());
   return std::unordered_map<std::string, ParameterValueNew>();
@@ -755,7 +755,7 @@ IndirectFittingModel::mapDefaultParameterNames() const {
 }
 
 std::unordered_map<std::string, ParameterValueNew>
-IndirectFittingModel::createDefaultParameters(DatasetIndex /*unused*/) const {
+IndirectFittingModel::createDefaultParameters(TableDatasetIndex /*unused*/) const {
   return std::unordered_map<std::string, ParameterValueNew>();
 }
 
@@ -766,7 +766,7 @@ std::string IndirectFittingModel::getResultXAxisUnit() const {
 std::string IndirectFittingModel::getResultLogName() const { return "axis-1"; }
 
 boost::optional<ResultLocationNew>
-IndirectFittingModel::getResultLocation(DatasetIndex index,
+IndirectFittingModel::getResultLocation(TableDatasetIndex index,
                                         WorkspaceIndex spectrum) const {
   if (/*m_previousModelSelected && */ m_fitOutput &&
       m_fittingData.size() > index)
@@ -807,7 +807,7 @@ IndirectFittingModel::getFittingAlgorithm(FittingMode mode) const {
 }
 
 IAlgorithm_sptr
-IndirectFittingModel::getSingleFit(DatasetIndex dataIndex,
+IndirectFittingModel::getSingleFit(TableDatasetIndex dataIndex,
                                    WorkspaceIndex spectrum) const {
   const auto &fitData = m_fittingData[dataIndex];
   const auto ws = fitData->workspace();
@@ -823,7 +823,7 @@ IndirectFittingModel::getSingleFit(DatasetIndex dataIndex,
 }
 
 Mantid::API::IFunction_sptr
-IndirectFittingModel::getSingleFunction(DatasetIndex dataIndex,
+IndirectFittingModel::getSingleFunction(TableDatasetIndex dataIndex,
                                         WorkspaceIndex spectrum) const {
   auto function = getFittingFunction();
   assert(function->getNumberDomains() == getNumberOfDomains().value);
@@ -863,7 +863,7 @@ IAlgorithm_sptr IndirectFittingModel::createSequentialFit(
   fitAlgorithm->setProperty("PassWSIndexToFunction", true);
   fitAlgorithm->setProperty("LogName", getResultLogName());
 
-  auto const firstWsIndex = initialFitData->getSpectrum(SpectrumRowIndex{0});
+  auto const firstWsIndex = initialFitData->getSpectrum(TableRowIndex{0});
   const auto range = initialFitData->getRange(firstWsIndex);
   fitAlgorithm->setProperty("StartX", range.first);
   fitAlgorithm->setProperty("EndX", range.second);
@@ -889,7 +889,7 @@ IAlgorithm_sptr IndirectFittingModel::createSimultaneousFitWithEqualRange(
   auto fitAlgorithm = simultaneousFitAlgorithm();
   addFitProperties(*fitAlgorithm, function, getResultXAxisUnit());
 
-  auto const dataIndex = DatasetIndex{0};
+  auto const dataIndex = TableDatasetIndex{0};
   auto const workspaceIndex = getSpectra(dataIndex).front();
   auto exclude =
       vectorFromStringNew<double>(getExcludeRegion(dataIndex, workspaceIndex));
@@ -902,7 +902,7 @@ IAlgorithm_sptr IndirectFittingModel::createSimultaneousFitWithEqualRange(
 
 std::string
 IndirectFittingModel::createSingleFitOutputName(const std::string &formatString,
-                                                DatasetIndex index,
+                                                TableDatasetIndex index,
                                                 WorkspaceIndex spectrum) const {
   if (m_fittingData.size() > index)
     return m_fittingData[index]->displayName(formatString, spectrum);
@@ -920,7 +920,7 @@ void IndirectFittingModel::cleanFailedRun(IAlgorithm_sptr fittingAlgorithm) {
 }
 
 void IndirectFittingModel::cleanFailedSingleRun(
-    IAlgorithm_sptr fittingAlgorithm, DatasetIndex index) {
+    IAlgorithm_sptr fittingAlgorithm, TableDatasetIndex index) {
   const auto base =
       "__" + fittingAlgorithm->name() + "_ws" + std::to_string(index.value + 1);
   removeFromADSIfExists(base);
diff --git a/qt/scientific_interfaces/Indirect/IndirectFittingModel.h b/qt/scientific_interfaces/Indirect/IndirectFittingModel.h
index 925a9596a9c86bc6283995ae2cfbecf745205237..b24a1eb84ed05b00286362c275b424a7a4f1697b 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFittingModel.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFittingModel.h
@@ -28,9 +28,9 @@ enum class FittingMode { SEQUENTIAL, SIMULTANEOUS };
 class IndirectFittingModel;
 
 using IndirectFitDataCollectionType =
-    IndexCollectionType<DatasetIndex, std::unique_ptr<IndirectFitData>>;
+    IndexCollectionType<TableDatasetIndex, std::unique_ptr<IndirectFitData>>;
 using DefaultParametersType =
-    IndexCollectionType<DatasetIndex,
+    IndexCollectionType<TableDatasetIndex,
                         std::unordered_map<std::string, ParameterValueNew>>;
 
 struct PrivateFittingData {
@@ -57,25 +57,25 @@ public:
 
   virtual bool hasWorkspace(std::string const &workspaceName) const;
   virtual Mantid::API::MatrixWorkspace_sptr
-  getWorkspace(DatasetIndex index) const;
-  SpectraNew getSpectra(DatasetIndex index) const;
+  getWorkspace(TableDatasetIndex index) const;
+  Spectra getSpectra(TableDatasetIndex index) const;
   virtual std::pair<double, double>
-  getFittingRange(DatasetIndex dataIndex, WorkspaceIndex spectrum) const;
-  virtual std::string getExcludeRegion(DatasetIndex dataIndex,
+  getFittingRange(TableDatasetIndex dataIndex, WorkspaceIndex spectrum) const;
+  virtual std::string getExcludeRegion(TableDatasetIndex dataIndex,
                                        WorkspaceIndex index) const;
   virtual std::string createDisplayName(const std::string &formatString,
                                         const std::string &rangeDelimiter,
-                                        DatasetIndex dataIndex) const;
+                                        TableDatasetIndex dataIndex) const;
   std::string createOutputName(const std::string &formatString,
                                const std::string &rangeDelimiter,
-                               DatasetIndex dataIndex) const;
+                               TableDatasetIndex dataIndex) const;
   virtual bool isMultiFit() const;
-  bool isPreviouslyFit(DatasetIndex dataIndex, WorkspaceIndex spectrum) const;
+  bool isPreviouslyFit(TableDatasetIndex dataIndex, WorkspaceIndex spectrum) const;
   virtual boost::optional<std::string> isInvalidFunction() const;
-  virtual DatasetIndex numberOfWorkspaces() const;
-  SpectrumRowIndex getNumberOfSpectra(DatasetIndex index) const;
-  SpectrumRowIndex getNumberOfDomains() const;
-  virtual SpectrumRowIndex getDomainIndex(DatasetIndex dataIndex,
+  virtual TableDatasetIndex numberOfWorkspaces() const;
+  TableRowIndex getNumberOfSpectra(TableDatasetIndex index) const;
+  TableRowIndex getNumberOfDomains() const;
+  virtual TableRowIndex getDomainIndex(TableDatasetIndex dataIndex,
                                           WorkspaceIndex spectrum) const;
   std::vector<std::string> getFitParameterNames() const;
   virtual Mantid::API::MultiDomainFunction_sptr getFittingFunction() const;
@@ -83,60 +83,60 @@ public:
   virtual std::vector<std::string> getSpectrumDependentAttributes() const = 0;
 
   void setFittingData(PrivateFittingData &&fittingData);
-  void setSpectra(const std::string &spectra, DatasetIndex dataIndex);
-  void setSpectra(SpectraNew &&spectra, DatasetIndex dataIndex);
-  void setSpectra(const SpectraNew &spectra, DatasetIndex dataIndex);
-  virtual void setStartX(double startX, DatasetIndex dataIndex,
+  void setSpectra(const std::string &spectra, TableDatasetIndex dataIndex);
+  void setSpectra(Spectra &&spectra, TableDatasetIndex dataIndex);
+  void setSpectra(const Spectra &spectra, TableDatasetIndex dataIndex);
+  virtual void setStartX(double startX, TableDatasetIndex dataIndex,
                          WorkspaceIndex spectrum);
-  virtual void setStartX(double startX, DatasetIndex dataIndex);
-  virtual void setEndX(double endX, DatasetIndex dataIndex,
+  virtual void setStartX(double startX, TableDatasetIndex dataIndex);
+  virtual void setEndX(double endX, TableDatasetIndex dataIndex,
                        WorkspaceIndex spectrum);
-  virtual void setEndX(double endX, DatasetIndex dataIndex);
+  virtual void setEndX(double endX, TableDatasetIndex dataIndex);
   virtual void setExcludeRegion(const std::string &exclude,
-                                DatasetIndex dataIndex,
+                                TableDatasetIndex dataIndex,
                                 WorkspaceIndex spectrum);
 
   virtual void addWorkspace(const std::string &workspaceName);
   void addWorkspace(const std::string &workspaceName,
                     const std::string &spectra);
   void addWorkspace(const std::string &workspaceName,
-                    const SpectraNew &spectra);
+                    const Spectra &spectra);
   virtual void addWorkspace(Mantid::API::MatrixWorkspace_sptr workspace,
-                            const SpectraNew &spectra);
-  virtual void removeWorkspace(DatasetIndex index);
+                            const Spectra &spectra);
+  virtual void removeWorkspace(TableDatasetIndex index);
   virtual PrivateFittingData clearWorkspaces();
   void setFittingMode(FittingMode mode);
   virtual void setFitFunction(Mantid::API::MultiDomainFunction_sptr function);
   virtual void setDefaultParameterValue(const std::string &name, double value,
-                                        DatasetIndex dataIndex);
+                                        TableDatasetIndex dataIndex);
   void addSingleFitOutput(Mantid::API::IAlgorithm_sptr fitAlgorithm,
-                          DatasetIndex index);
+                          TableDatasetIndex index);
   virtual void addOutput(Mantid::API::IAlgorithm_sptr fitAlgorithm);
 
   template <typename F>
-  void applySpectra(DatasetIndex index, const F &functor) const;
+  void applySpectra(TableDatasetIndex index, const F &functor) const;
 
   FittingMode getFittingMode() const;
   std::unordered_map<std::string, ParameterValueNew>
-  getParameterValues(DatasetIndex dataIndex, WorkspaceIndex spectrum) const;
+  getParameterValues(TableDatasetIndex dataIndex, WorkspaceIndex spectrum) const;
   std::unordered_map<std::string, ParameterValueNew>
-  getFitParameters(DatasetIndex dataIndex, WorkspaceIndex spectrum) const;
+  getFitParameters(TableDatasetIndex dataIndex, WorkspaceIndex spectrum) const;
   std::unordered_map<std::string, ParameterValueNew>
-  getDefaultParameters(DatasetIndex dataIndex) const;
+  getDefaultParameters(TableDatasetIndex dataIndex) const;
   boost::optional<ResultLocationNew>
-  getResultLocation(DatasetIndex dataIndex, WorkspaceIndex spectrum) const;
+  getResultLocation(TableDatasetIndex dataIndex, WorkspaceIndex spectrum) const;
   Mantid::API::WorkspaceGroup_sptr getResultWorkspace() const;
   Mantid::API::WorkspaceGroup_sptr getResultGroup() const;
   virtual Mantid::API::IAlgorithm_sptr getFittingAlgorithm() const;
-  Mantid::API::IAlgorithm_sptr getSingleFit(DatasetIndex dataIndex,
+  Mantid::API::IAlgorithm_sptr getSingleFit(TableDatasetIndex dataIndex,
                                             WorkspaceIndex spectrum) const;
-  Mantid::API::IFunction_sptr getSingleFunction(DatasetIndex dataIndex,
+  Mantid::API::IFunction_sptr getSingleFunction(TableDatasetIndex dataIndex,
                                                 WorkspaceIndex spectrum) const;
   std::string getOutputBasename() const;
 
   void cleanFailedRun(Mantid::API::IAlgorithm_sptr fittingAlgorithm);
   void cleanFailedSingleRun(Mantid::API::IAlgorithm_sptr fittingAlgorithm,
-                            DatasetIndex index);
+                            TableDatasetIndex index);
   DataForParameterEstimationCollection
   getDataForParameterEstimation(EstimationDataSelector selector) const;
 
@@ -152,16 +152,16 @@ protected:
   virtual std::unordered_map<std::string, std::string>
   mapDefaultParameterNames() const;
   std::string createSingleFitOutputName(const std::string &formatString,
-                                        DatasetIndex index,
+                                        TableDatasetIndex index,
                                         WorkspaceIndex spectrum) const;
   void addNewWorkspace(Mantid::API::MatrixWorkspace_sptr workspace,
-                       const SpectraNew &spectra);
-  void removeFittingData(DatasetIndex index);
+                       const Spectra &spectra);
+  void removeFittingData(TableDatasetIndex index);
 
 private:
   std::vector<std::string> getWorkspaceNames() const;
 
-  void removeWorkspaceFromFittingData(DatasetIndex const &index);
+  void removeWorkspaceFromFittingData(TableDatasetIndex const &index);
 
   Mantid::API::IAlgorithm_sptr
   createSequentialFit(Mantid::API::IFunction_sptr function,
@@ -171,10 +171,10 @@ private:
   virtual Mantid::API::IAlgorithm_sptr simultaneousFitAlgorithm() const;
   virtual std::string sequentialFitOutputName() const = 0;
   virtual std::string simultaneousFitOutputName() const = 0;
-  virtual std::string singleFitOutputName(DatasetIndex index,
+  virtual std::string singleFitOutputName(TableDatasetIndex index,
                                           WorkspaceIndex spectrum) const = 0;
   virtual std::unordered_map<std::string, ParameterValueNew>
-  createDefaultParameters(DatasetIndex index) const;
+  createDefaultParameters(TableDatasetIndex index) const;
 
   virtual std::string getResultXAxisUnit() const;
   virtual std::string getResultLogName() const;
@@ -229,7 +229,7 @@ private:
 };
 
 template <typename F>
-void IndirectFittingModel::applySpectra(DatasetIndex index,
+void IndirectFittingModel::applySpectra(TableDatasetIndex index,
                                         const F &functor) const {
   if (m_fittingData.size() > m_fittingData.zero())
     m_fittingData[index]->applySpectra(functor);
diff --git a/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.cpp b/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.cpp
index 2b0eb06b6407a1611ffee9d65086e1143f2f4c0a..da674c45a8bc5b235c4fa3f64f4cc2212be13949 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.cpp
@@ -363,7 +363,7 @@ std::vector<std::string> IndirectFittingModelLegacy::getWorkspaceNames() const {
   return names;
 }
 
-Spectra IndirectFittingModelLegacy::getSpectra(std::size_t index) const {
+SpectraLegacy IndirectFittingModelLegacy::getSpectra(std::size_t index) const {
   if (index < m_fittingData.size())
     return m_fittingData[index]->spectra();
   return DiscontinuousSpectra<std::size_t>("");
@@ -479,12 +479,12 @@ void IndirectFittingModelLegacy::setSpectra(const std::string &spectra,
   setSpectra(DiscontinuousSpectra<std::size_t>(spectra), dataIndex);
 }
 
-void IndirectFittingModelLegacy::setSpectra(Spectra &&spectra,
+void IndirectFittingModelLegacy::setSpectra(SpectraLegacy &&spectra,
                                             std::size_t dataIndex) {
-  m_fittingData[dataIndex]->setSpectra(std::forward<Spectra>(spectra));
+  m_fittingData[dataIndex]->setSpectra(std::forward<SpectraLegacy>(spectra));
 }
 
-void IndirectFittingModelLegacy::setSpectra(const Spectra &spectra,
+void IndirectFittingModelLegacy::setSpectra(const SpectraLegacy &spectra,
                                             std::size_t dataIndex) {
   m_fittingData[dataIndex]->setSpectra(spectra);
 }
@@ -533,14 +533,14 @@ void IndirectFittingModelLegacy::addWorkspace(const std::string &workspaceName,
 }
 
 void IndirectFittingModelLegacy::addWorkspace(const std::string &workspaceName,
-                                              const Spectra &spectra) {
+                                              const SpectraLegacy &spectra) {
   auto ws = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
       workspaceName);
   addWorkspace(ws, spectra);
 }
 
 void IndirectFittingModelLegacy::addWorkspace(MatrixWorkspace_sptr workspace,
-                                              const Spectra &spectra) {
+                                              const SpectraLegacy &spectra) {
   if (!m_fittingData.empty() &&
       equivalentWorkspaces(workspace, m_fittingData.back()->workspace()))
     m_fittingData.back()->combine(IndirectFitDataLegacy(workspace, spectra));
@@ -549,7 +549,7 @@ void IndirectFittingModelLegacy::addWorkspace(MatrixWorkspace_sptr workspace,
 }
 
 void IndirectFittingModelLegacy::addNewWorkspace(MatrixWorkspace_sptr workspace,
-                                                 const Spectra &spectra) {
+                                                 const SpectraLegacy &spectra) {
   m_fittingData.emplace_back(new IndirectFitDataLegacy(workspace, spectra));
   m_defaultParameters.emplace_back(
       createDefaultParameters(m_fittingData.size() - 1));
diff --git a/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.h b/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.h
index 6fe64c20d85294df2165dacf256d1c0a2e7a1908..58d4057505849726b68b5582c3a64841ffa752c5 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFittingModelLegacy.h
@@ -51,7 +51,7 @@ public:
   virtual bool hasWorkspace(std::string const &workspaceName) const;
   virtual Mantid::API::MatrixWorkspace_sptr
   getWorkspace(std::size_t index) const;
-  Spectra getSpectra(std::size_t index) const;
+  SpectraLegacy getSpectra(std::size_t index) const;
   virtual std::pair<double, double> getFittingRange(std::size_t dataIndex,
                                                     std::size_t spectrum) const;
   virtual std::string getExcludeRegion(std::size_t dataIndex,
@@ -75,8 +75,8 @@ public:
 
   void setFittingData(PrivateFittingDataLegacy &&fittingData);
   void setSpectra(const std::string &spectra, std::size_t dataIndex);
-  void setSpectra(Spectra &&spectra, std::size_t dataIndex);
-  void setSpectra(const Spectra &spectra, std::size_t dataIndex);
+  void setSpectra(SpectraLegacy &&spectra, std::size_t dataIndex);
+  void setSpectra(const SpectraLegacy &spectra, std::size_t dataIndex);
   virtual void setStartX(double startX, std::size_t dataIndex,
                          std::size_t spectrum);
   virtual void setEndX(double endX, std::size_t dataIndex,
@@ -87,9 +87,9 @@ public:
   virtual void addWorkspace(const std::string &workspaceName);
   void addWorkspace(const std::string &workspaceName,
                     const std::string &spectra);
-  void addWorkspace(const std::string &workspaceName, const Spectra &spectra);
+  void addWorkspace(const std::string &workspaceName, const SpectraLegacy &spectra);
   virtual void addWorkspace(Mantid::API::MatrixWorkspace_sptr workspace,
-                            const Spectra &spectra);
+                            const SpectraLegacy &spectra);
   virtual void removeWorkspace(std::size_t index);
   virtual PrivateFittingDataLegacy clearWorkspaces();
   void setFittingMode(FittingModeLegacy mode);
@@ -139,7 +139,7 @@ protected:
                                         std::size_t index,
                                         std::size_t spectrum) const;
   void addNewWorkspace(Mantid::API::MatrixWorkspace_sptr workspace,
-                       const Spectra &spectra);
+                       const SpectraLegacy &spectra);
   void removeFittingData(std::size_t index);
 
 private:
diff --git a/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/IqtTemplateBrowser.h b/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/IqtTemplateBrowser.h
index 0d89cd893fbba190945e972a52c6210d17df8b10..70a93eda01c47fd09902ea259ba3d21e62513745 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/IqtTemplateBrowser.h
+++ b/qt/scientific_interfaces/Indirect/IndirectFunctionBrowser/IqtTemplateBrowser.h
@@ -69,7 +69,7 @@ public:
   void updateParameterEstimationData(
       DataForParameterEstimationCollection &&data) override;
   void setBackgroundA0(double value) override;
-  void setResolution(std::string const &, DatasetIndex const &) override {}
+  void setResolution(std::string const &, TableDatasetIndex const &) override {}
 
 protected slots:
   void intChanged(QtProperty *) override;
diff --git a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.cpp b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.cpp
index 21bb570e99d894eea07e4679e95359a0bdcad9af..57bf64c73b4cb89503be4a79385875d55b2277ba 100644
--- a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.cpp
@@ -23,7 +23,7 @@ using namespace Mantid::Kernel::Strings;
 struct SetViewSpectra {
   explicit SetViewSpectra(IndirectSpectrumSelectionView *view) : m_view(view) {}
 
-  void operator()(const SpectraNew &spectra) const {
+  void operator()(const Spectra &spectra) const {
     if (spectra.isContinuous()) {
       m_view->displaySpectra(spectra.getMinMax());
     } else {
@@ -168,7 +168,7 @@ void IndirectSpectrumSelectionPresenter::initSpectraSelectionWidget(int index) {
 }
 
 void IndirectSpectrumSelectionPresenter::setActiveIndexToZero() {
-  setActiveModelIndex(DatasetIndex{0});
+  setActiveModelIndex(TableDatasetIndex{0});
 }
 
 void IndirectSpectrumSelectionPresenter::updateSpectra() {
@@ -185,7 +185,7 @@ void IndirectSpectrumSelectionPresenter::updateSpectra() {
 }
 
 void IndirectSpectrumSelectionPresenter::setActiveModelIndex(
-    DatasetIndex index) {
+    TableDatasetIndex index) {
   m_activeIndex = index;
   updateSpectra();
 }
@@ -196,7 +196,7 @@ void IndirectSpectrumSelectionPresenter::setSpectraRange(
 }
 
 void IndirectSpectrumSelectionPresenter::setModelSpectra(
-    SpectraNew const &spectra) {
+    Spectra const &spectra) {
   try {
     m_model->setSpectra(spectra, m_activeIndex);
     m_spectraError.clear();
@@ -211,13 +211,13 @@ void IndirectSpectrumSelectionPresenter::setModelSpectra(
 
 void IndirectSpectrumSelectionPresenter::updateSpectraList(
     std::string const &spectraList) {
-  setModelSpectra(SpectraNew(createSpectraString(spectraList)));
+  setModelSpectra(Spectra(createSpectraString(spectraList)));
   emit spectraChanged(m_activeIndex);
 }
 
 void IndirectSpectrumSelectionPresenter::updateSpectraRange(
     WorkspaceIndex minimum, WorkspaceIndex maximum) {
-  setModelSpectra(SpectraNew(minimum, maximum));
+  setModelSpectra(Spectra(minimum, maximum));
   emit spectraChanged(m_activeIndex);
 }
 
diff --git a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.h b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.h
index 1bbcc0a1d17a487a20e62d9b7cb43ead2ce9e8e6..61983d19b57796a66fec8d15686cb961a8fbd982 100644
--- a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.h
+++ b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenter.h
@@ -33,13 +33,13 @@ public:
   UserInputValidator &validate(UserInputValidator &validator);
 
 signals:
-  void spectraChanged(DatasetIndex /*_t1*/);
+  void spectraChanged(TableDatasetIndex /*_t1*/);
   void maskChanged(std::string const & /*_t1*/);
   void invalidSpectraString(QString const &errorMessage);
   void invalidMaskBinsString(QString const &errorMessage);
 
 public slots:
-  void setActiveModelIndex(DatasetIndex index);
+  void setActiveModelIndex(TableDatasetIndex index);
   void setActiveIndexToZero();
   void updateSpectra();
   void displayBinMask();
@@ -57,7 +57,7 @@ private slots:
 
 private:
   void setSpectraRange(WorkspaceIndex minimum, WorkspaceIndex maximum);
-  void setModelSpectra(SpectraNew const &spectra);
+  void setModelSpectra(Spectra const &spectra);
 
   UserInputValidator validateSpectraString();
   UserInputValidator &validateSpectraString(UserInputValidator &validator);
@@ -65,7 +65,7 @@ private:
 
   IndirectFittingModel *m_model;
   std::unique_ptr<IndirectSpectrumSelectionView> m_view;
-  DatasetIndex m_activeIndex;
+  TableDatasetIndex m_activeIndex;
   WorkspaceIndex m_maskIndex;
   std::string m_spectraError;
 };
diff --git a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.cpp b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.cpp
index 3469f4c2216fc9cf26fd5c9c5fc7f3cd5f154c61..e83e0eae4cd30b365821ea37cd9e2551d36bdd81 100644
--- a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.cpp
@@ -192,7 +192,7 @@ void IndirectSpectrumSelectionPresenterLegacy::setSpectraRange(
 }
 
 void IndirectSpectrumSelectionPresenterLegacy::setModelSpectra(
-    Spectra const &spectra) {
+    SpectraLegacy const &spectra) {
   try {
     m_model->setSpectra(spectra, m_activeIndex);
     m_spectraError.clear();
diff --git a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.h b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.h
index 2268dbf015d7abdd5535a43c2dd32197fa27b9b1..10da46f7367e9e5bd9cf8a7f3bb2945dcb312860 100644
--- a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.h
+++ b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionPresenterLegacy.h
@@ -57,7 +57,7 @@ private slots:
 
 private:
   void setSpectraRange(std::size_t minimum, std::size_t maximum);
-  void setModelSpectra(Spectra const &spectra);
+  void setModelSpectra(SpectraLegacy const &spectra);
 
   UserInputValidator validateSpectraString();
   UserInputValidator &validateSpectraString(UserInputValidator &validator);
diff --git a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionView.cpp b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionView.cpp
index 33192f34c595335178b086576bcdbe36e9eca0ba..0bc300ebe4029189eb650eebebba48d7746e239c 100644
--- a/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionView.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectSpectrumSelectionView.cpp
@@ -210,7 +210,7 @@ IndirectSpectrumSelectionView::createValidator(const QString &regex) {
 UserInputValidator &IndirectSpectrumSelectionView::validateSpectraString(
     UserInputValidator &uiv) const {
   if (selectionMode() == SpectrumSelectionMode::STRING)
-    uiv.checkFieldIsValid("SpectraNew", m_selector->leSpectra,
+    uiv.checkFieldIsValid("Spectra", m_selector->leSpectra,
                           m_selector->lbSpectraError);
   return uiv;
 }
diff --git a/qt/scientific_interfaces/Indirect/IqtFitModel.cpp b/qt/scientific_interfaces/Indirect/IqtFitModel.cpp
index 7bbbd9c236d1e5e148acfdf247e098adb28fa60f..a0b55c7a15c3414c178108c0469c1754cc55f30f 100644
--- a/qt/scientific_interfaces/Indirect/IqtFitModel.cpp
+++ b/qt/scientific_interfaces/Indirect/IqtFitModel.cpp
@@ -219,22 +219,22 @@ IAlgorithm_sptr IqtFitModel::simultaneousFitAlgorithm() const {
 std::string IqtFitModel::sequentialFitOutputName() const {
   if (isMultiFit())
     return "MultiIqtFit_" + m_fitType + "_Results";
-  auto const fitString = getFitString(getWorkspace(DatasetIndex{0}));
+  auto const fitString = getFitString(getWorkspace(TableDatasetIndex{0}));
   return createOutputName("%1%" + fitString + "_" + m_fitType + "_s%2%", "_to_",
-                          DatasetIndex{0});
+                          TableDatasetIndex{0});
 }
 
 std::string IqtFitModel::simultaneousFitOutputName() const {
   if (isMultiFit())
     return "MultiSimultaneousIqtFit_" + m_fitType + "_Results";
-  auto const fitString = getFitString(getWorkspace(DatasetIndex{0}));
+  auto const fitString = getFitString(getWorkspace(TableDatasetIndex{0}));
   return createOutputName("%1%" + fitString + "_mult" + m_fitType + "_s%2%",
-                          "_to_", DatasetIndex{0});
+                          "_to_", TableDatasetIndex{0});
 }
 
-std::string IqtFitModel::singleFitOutputName(DatasetIndex index,
+std::string IqtFitModel::singleFitOutputName(TableDatasetIndex index,
                                              WorkspaceIndex spectrum) const {
-  auto const fitString = getFitString(getWorkspace(DatasetIndex{0}));
+  auto const fitString = getFitString(getWorkspace(TableDatasetIndex{0}));
   return createSingleFitOutputName(
       "%1%" + fitString + "_" + m_fitType + "_s%2%_Results", index, spectrum);
 }
@@ -251,7 +251,7 @@ void IqtFitModel::setFitFunction(
 }
 
 std::unordered_map<std::string, ParameterValueNew>
-IqtFitModel::createDefaultParameters(DatasetIndex index) const {
+IqtFitModel::createDefaultParameters(TableDatasetIndex index) const {
   std::unordered_map<std::string, ParameterValueNew> parameters;
   parameters["Height"] =
       ParameterValueNew(computeHeightApproximation(getFittingFunction()));
@@ -270,7 +270,7 @@ IqtFitModel::createFunctionWithGlobalBeta(IFunction_sptr function) const {
   boost::shared_ptr<MultiDomainFunction> multiDomainFunction(
       new MultiDomainFunction);
   const auto functionString = function->asString();
-  for (auto i = DatasetIndex{0}; i < numberOfWorkspaces(); ++i) {
+  for (auto i = TableDatasetIndex{0}; i < numberOfWorkspaces(); ++i) {
     auto addDomains = [&](WorkspaceIndex /*unused*/) {
       const auto index = multiDomainFunction->nFunctions();
       multiDomainFunction->addFunction(createFunction(functionString));
diff --git a/qt/scientific_interfaces/Indirect/IqtFitModel.h b/qt/scientific_interfaces/Indirect/IqtFitModel.h
index 3f3aa320421cf65955294fa8b4b1a852f82ee67a..a5f24eb8d477567d2a2dc0e77ee3242626987b2b 100644
--- a/qt/scientific_interfaces/Indirect/IqtFitModel.h
+++ b/qt/scientific_interfaces/Indirect/IqtFitModel.h
@@ -28,10 +28,10 @@ private:
   Mantid::API::IAlgorithm_sptr simultaneousFitAlgorithm() const override;
   std::string sequentialFitOutputName() const override;
   std::string simultaneousFitOutputName() const override;
-  std::string singleFitOutputName(DatasetIndex index,
+  std::string singleFitOutputName(TableDatasetIndex index,
                                   WorkspaceIndex spectrum) const override;
   std::unordered_map<std::string, ParameterValueNew>
-  createDefaultParameters(DatasetIndex index) const override;
+  createDefaultParameters(TableDatasetIndex index) const override;
   Mantid::API::MultiDomainFunction_sptr
   createFunctionWithGlobalBeta(Mantid::API::IFunction_sptr function) const;
 
diff --git a/qt/scientific_interfaces/Indirect/JumpFitModel.cpp b/qt/scientific_interfaces/Indirect/JumpFitModel.cpp
index 9b0c7a3b743f9998554cc2785535352d8729ae84..c98df472710f0759c12a5771737611d2f5f81572 100644
--- a/qt/scientific_interfaces/Indirect/JumpFitModel.cpp
+++ b/qt/scientific_interfaces/Indirect/JumpFitModel.cpp
@@ -55,7 +55,7 @@ findAxisLabels(MatrixWorkspace const *workspace, Predicate const &predicate) {
   return std::make_pair(std::vector<std::string>(), std::vector<std::size_t>());
 }
 
-Spectra createSpectra(std::size_t spectrum) {
+SpectraLegacy createSpectra(std::size_t spectrum) {
   return std::make_pair(spectrum, spectrum);
 }
 
@@ -213,7 +213,7 @@ namespace CustomInterfaces {
 namespace IDA {
 
 void JumpFitModel::addWorkspace(Mantid::API::MatrixWorkspace_sptr workspace,
-                                const Spectra & /*spectra*/) {
+                                const SpectraLegacy & /*spectra*/) {
   const auto name = getHWHMName(workspace->getName());
   const auto parameters = addJumpFitParameters(workspace.get(), name);
 
diff --git a/qt/scientific_interfaces/Indirect/JumpFitModel.h b/qt/scientific_interfaces/Indirect/JumpFitModel.h
index 72b83771c25d040be12347f100e9d8d628939dcf..795f6e71693b27dd96a0806ce82bfceda920c711 100644
--- a/qt/scientific_interfaces/Indirect/JumpFitModel.h
+++ b/qt/scientific_interfaces/Indirect/JumpFitModel.h
@@ -25,7 +25,7 @@ public:
   using IndirectFittingModelLegacy::addWorkspace;
 
   void addWorkspace(Mantid::API::MatrixWorkspace_sptr workspace,
-                    const Spectra & /*spectra*/) override;
+                    const SpectraLegacy & /*spectra*/) override;
   void removeWorkspace(std::size_t index) override;
   void setFitType(const std::string &fitType);
 
diff --git a/qt/scientific_interfaces/Indirect/test/ConvFitModelTest.h b/qt/scientific_interfaces/Indirect/test/ConvFitModelTest.h
index cbd10b79384580e285ca77ae72344cc24e1fe949..c5dfe2429c304c0870ea1127af4aef90c0bcb492 100644
--- a/qt/scientific_interfaces/Indirect/test/ConvFitModelTest.h
+++ b/qt/scientific_interfaces/Indirect/test/ConvFitModelTest.h
@@ -64,7 +64,7 @@ public:
   }
 
   void test_that_the_model_is_instantiated_and_can_hold_a_workspace() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     m_model->addWorkspace(m_workspace, spectra);
 
@@ -72,7 +72,7 @@ public:
   }
 
   void test_that_addWorkspace_will_add_multiple_workspaces() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspace(3, 3);
     auto const workspace3 = createWorkspace(3, 2);
     auto const workspace4 = createWorkspace(3, 6);
@@ -86,7 +86,7 @@ public:
 
   void
   test_that_getFittingFunction_will_return_the_fitting_function_which_has_been_set() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
     m_model->setFitFunction(getFunction(getFunctionString("Name")));
@@ -98,7 +98,7 @@ public:
 
   void
   test_that_getInstrumentResolution_will_return_none_if_the_index_provided_is_larger_than_the_number_of_workspaces() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspace(3, 3);
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -112,7 +112,7 @@ public:
     /// A unit test for a positive response from getInstrumentResolution needs
     /// to be added. The workspace used in the test will need to have an
     /// analyser attached to its instrument
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspace(3, 3);
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -123,7 +123,7 @@ public:
 
   void
   test_that_getNumberHistograms_will_get_the_number_of_spectra_for_the_workspace_specified() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspace(5, 3);
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -134,7 +134,7 @@ public:
 
   void
   test_that_getResolution_will_return_the_a_nullptr_when_the_resolution_has_not_been_set() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const resolution = createWorkspace(5, 3);
 
     addWorkspacesToModel(spectra, m_workspace);
@@ -143,7 +143,7 @@ public:
   }
 
   void test_that_getResolution_will_return_the_workspace_which_it_was_set_at() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const resolution = createWorkspace(6, 3);
 
     addWorkspacesToModel(spectra, m_workspace);
@@ -154,7 +154,7 @@ public:
 
   void
   test_that_getResolution_will_return_the_a_nullptr_when_the_index_provided_is_out_of_range() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const resolution = createWorkspace(6, 3);
 
     addWorkspacesToModel(spectra, m_workspace);
@@ -174,7 +174,7 @@ public:
 
   void
   test_that_removeWorkspace_will_remove_the_workspace_specified_from_the_model() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
     m_model->removeWorkspace(0);
@@ -202,13 +202,13 @@ public:
 
 private:
   template <typename Workspace, typename... Workspaces>
-  void addWorkspacesToModel(Spectra const &spectra, Workspace const &workspace,
+  void addWorkspacesToModel(SpectraLegacy const &spectra, Workspace const &workspace,
                             Workspaces const &... workspaces) {
     m_model->addWorkspace(workspace, spectra);
     addWorkspacesToModel(spectra, workspaces...);
   }
 
-  void addWorkspacesToModel(Spectra const &spectra,
+  void addWorkspacesToModel(SpectraLegacy const &spectra,
                             MatrixWorkspace_sptr const &workspace) {
     m_model->addWorkspace(workspace, spectra);
   }
diff --git a/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h b/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h
index df6e612698dbbb569dea06bec046b347d6899f52..d3423098c988c2cd0891944863e25c8aae6d094c 100644
--- a/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h
+++ b/qt/scientific_interfaces/Indirect/test/IndirectFitDataTest.h
@@ -25,7 +25,7 @@ namespace {
 std::unique_ptr<IndirectFitDataLegacy>
 getIndirectFitData(int const &numberOfSpectra) {
   auto const workspace = createWorkspace(numberOfSpectra);
-  Spectra const spec = std::make_pair(0u, workspace->getNumberHistograms() - 1);
+  SpectraLegacy const spec = std::make_pair(0u, workspace->getNumberHistograms() - 1);
   IndirectFitDataLegacy data(workspace, spec);
   return std::make_unique<IndirectFitDataLegacy>(data);
 }
@@ -44,7 +44,7 @@ public:
 
   void test_data_is_instantiated() {
     auto const workspace = createWorkspace(1);
-    Spectra const spec =
+    SpectraLegacy const spec =
         std::make_pair(0u, workspace->getNumberHistograms() - 1);
 
     workspace->setTitle("Test Title");
@@ -72,7 +72,7 @@ public:
     auto data = getIndirectFitData(11);
 
     std::string const inputString = "8,0-7,6,10";
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-8,10");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-8,10");
     data->setSpectra(inputString);
 
     TS_ASSERT(
@@ -84,7 +84,7 @@ public:
     auto data = getIndirectFitData(11);
 
     std::string const inputString = "1,2,4-3,10";
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("1-4,10");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("1-4,10");
     data->setSpectra(inputString);
 
     TS_ASSERT(
@@ -96,7 +96,7 @@ public:
     auto data = getIndirectFitData(11);
 
     std::string const inputString = "  8,10,  7";
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("7-8,10");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("7-8,10");
     data->setSpectra(inputString);
 
     TS_ASSERT(
@@ -158,7 +158,7 @@ public:
   void
   test_that_true_is_returned_from_zeroSpectra_if_data_contains_empty_workspace() {
     auto workspace = boost::make_shared<Workspace2D>();
-    Spectra const spec = std::make_pair(0u, 0u);
+    SpectraLegacy const spec = std::make_pair(0u, 0u);
     IndirectFitDataLegacy const data(workspace, spec);
 
     TS_ASSERT_EQUALS(data.zeroSpectra(), true);
@@ -263,7 +263,7 @@ public:
   void test_throws_when_setSpectra_is_provided_an_out_of_range_spectra() {
     auto data = getIndirectFitData(10);
 
-    std::vector<Spectra> const spectraPairs{
+    std::vector<SpectraLegacy> const spectraPairs{
         std::make_pair(0u, 11u), std::make_pair(0u, 1000000000000000000u),
         std::make_pair(10u, 10u)};
     std::vector<std::string> const spectraStrings{
@@ -280,7 +280,7 @@ public:
   void test_no_throw_when_setSpectra_is_provided_a_valid_spectra() {
     auto data = getIndirectFitData(10);
 
-    std::vector<Spectra> const spectraPairs{
+    std::vector<SpectraLegacy> const spectraPairs{
         std::make_pair(0u, 9u), std::make_pair(4u, 4u), std::make_pair(7u, 4u)};
     std::vector<std::string> const spectraStrings{"0", "9", "0,9,6,4,5",
                                                   "1,2,3,4,5,6"};
@@ -381,7 +381,7 @@ public:
     data1->setSpectra(std::make_pair(0u, 4u));
     data2->setSpectra(std::make_pair(5u, 9u));
     auto const combinedData = data2->combine(*data1);
-    Spectra const spec(std::make_pair(0u, 9u));
+    SpectraLegacy const spec(std::make_pair(0u, 9u));
 
     TS_ASSERT(
         boost::apply_visitor(AreSpectraEqual(), combinedData.spectra(), spec));
@@ -395,7 +395,7 @@ public:
     data1->setSpectra(std::make_pair(0u, 4u));
     data2->setSpectra(std::make_pair(8u, 9u));
     auto const combinedData = data2->combine(*data1);
-    Spectra const spec(DiscontinuousSpectra<std::size_t>("0-4,8-9"));
+    SpectraLegacy const spec(DiscontinuousSpectra<std::size_t>("0-4,8-9"));
 
     TS_ASSERT(
         boost::apply_visitor(AreSpectraEqual(), combinedData.spectra(), spec));
@@ -409,7 +409,7 @@ public:
     data1->setSpectra(std::make_pair(0u, 8u));
     data2->setSpectra(std::make_pair(4u, 9u));
     auto const combinedData = data2->combine(*data1);
-    Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9"));
+    SpectraLegacy const spec(DiscontinuousSpectra<std::size_t>("0-9"));
 
     TS_ASSERT(
         boost::apply_visitor(AreSpectraEqual(), combinedData.spectra(), spec));
@@ -423,7 +423,7 @@ public:
     data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-4"));
     data2->setSpectra(DiscontinuousSpectra<std::size_t>("5-9"));
     auto const combinedData = data2->combine(*data1);
-    Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9"));
+    SpectraLegacy const spec(DiscontinuousSpectra<std::size_t>("0-9"));
 
     TS_ASSERT(
         boost::apply_visitor(AreSpectraEqual(), combinedData.spectra(), spec));
@@ -437,7 +437,7 @@ public:
     data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-7"));
     data2->setSpectra(DiscontinuousSpectra<std::size_t>("2-9"));
     auto const combinedData = data2->combine(*data1);
-    Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9"));
+    SpectraLegacy const spec(DiscontinuousSpectra<std::size_t>("0-9"));
 
     TS_ASSERT(
         boost::apply_visitor(AreSpectraEqual(), combinedData.spectra(), spec));
@@ -451,7 +451,7 @@ public:
     data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-4"));
     data2->setSpectra(std::make_pair(5u, 9u));
     auto const combinedData = data2->combine(*data1);
-    Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9"));
+    SpectraLegacy const spec(DiscontinuousSpectra<std::size_t>("0-9"));
 
     TS_ASSERT(
         boost::apply_visitor(AreSpectraEqual(), combinedData.spectra(), spec));
@@ -465,7 +465,7 @@ public:
     data1->setSpectra(DiscontinuousSpectra<std::size_t>("0-7"));
     data2->setSpectra(std::make_pair(4u, 9u));
     auto const combinedData = data2->combine(*data1);
-    Spectra const spec(DiscontinuousSpectra<std::size_t>("0-9"));
+    SpectraLegacy const spec(DiscontinuousSpectra<std::size_t>("0-9"));
 
     TS_ASSERT(
         boost::apply_visitor(AreSpectraEqual(), combinedData.spectra(), spec));
diff --git a/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h b/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h
index b8de2b7d0e3a5424a43a8eb1273c82a43b6aec9f..d4ebae7915e1a7fa673dcec3b72f47781e063de2 100644
--- a/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h
+++ b/qt/scientific_interfaces/Indirect/test/IndirectFitOutputTest.h
@@ -57,7 +57,7 @@ MatrixWorkspace_sptr createPopulatedworkspace(int const &numberOfSpectra) {
 
 IndirectFitDataLegacy getIndirectFitData(int const &numberOfSpectra) {
   auto const workspace = createWorkspace(numberOfSpectra);
-  Spectra const spec = std::make_pair(0u, workspace->getNumberHistograms() - 1);
+  SpectraLegacy const spec = std::make_pair(0u, workspace->getNumberHistograms() - 1);
   IndirectFitDataLegacy data(workspace, spec);
   return data;
 }
diff --git a/qt/scientific_interfaces/Indirect/test/IndirectFitPlotModelTest.h b/qt/scientific_interfaces/Indirect/test/IndirectFitPlotModelTest.h
index b9ab0da6fc0f51b9a10812acdc2eaf100f84b251..d897d8508ba5f88a1ce3dee7e3c2dd8dd33ac667 100644
--- a/qt/scientific_interfaces/Indirect/test/IndirectFitPlotModelTest.h
+++ b/qt/scientific_interfaces/Indirect/test/IndirectFitPlotModelTest.h
@@ -230,8 +230,8 @@ public:
   test_that_getSpectra_returns_the_same_spectra_range_which_was_provided_as_input() {
     auto const model = getFitPlotModel();
 
-    Spectra const spectra = std::make_pair(0u, 9u);
-    Spectra const storedSpectra = model.getSpectra();
+    SpectraLegacy const spectra = std::make_pair(0u, 9u);
+    SpectraLegacy const storedSpectra = model.getSpectra();
 
     TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), storedSpectra, spectra));
   }
diff --git a/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h b/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h
index 99dea2567f006a5451991a2e843763259890bb9b..cb0287584b4aaf2831b23c9ac34347dbc9d2f4d7 100644
--- a/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h
+++ b/qt/scientific_interfaces/Indirect/test/IndirectFittingModelTest.h
@@ -255,9 +255,9 @@ public:
   test_that_getSpectra_returns_a_correct_spectra_when_the_index_provided_is_valid() {
     auto model = createModelWithSingleWorkspace("WorkspaceName", 3);
 
-    Spectra const inputSpectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const inputSpectra = DiscontinuousSpectra<std::size_t>("0-1");
     model->setSpectra(inputSpectra, 0);
-    Spectra const spectra = model->getSpectra(0);
+    SpectraLegacy const spectra = model->getSpectra(0);
 
     TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, inputSpectra));
   }
@@ -266,8 +266,8 @@ public:
   test_that_getSpectra_returns_an_empty_DiscontinuousSpectra_when_provided_an_out_of_range_index() {
     auto model = createModelWithSingleWorkspace("WorkspaceName", 3);
 
-    Spectra const emptySpectra(DiscontinuousSpectra<std::size_t>(""));
-    Spectra const spectra = model->getSpectra(3);
+    SpectraLegacy const emptySpectra(DiscontinuousSpectra<std::size_t>(""));
+    SpectraLegacy const spectra = model->getSpectra(3);
 
     TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, emptySpectra));
   }
@@ -556,9 +556,9 @@ public:
   test_that_setSpectra_will_set_the_spectra_to_the_provided_inputSpectra() {
     auto model = createModelWithSingleWorkspace("WorkspaceName", 10);
 
-    Spectra const inputSpectra = DiscontinuousSpectra<std::size_t>("2,4,6-8");
+    SpectraLegacy const inputSpectra = DiscontinuousSpectra<std::size_t>("2,4,6-8");
     model->setSpectra(inputSpectra, 0);
-    Spectra const spectra = model->getSpectra(0);
+    SpectraLegacy const spectra = model->getSpectra(0);
 
     TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, inputSpectra));
   }
@@ -567,9 +567,9 @@ public:
   test_that_setSpectra_will_set_the_spectra_when_provided_a_spectra_pair() {
     auto model = createModelWithSingleWorkspace("WorkspaceName", 10);
 
-    Spectra const inputSpectra = std::make_pair(0u, 5u);
+    SpectraLegacy const inputSpectra = std::make_pair(0u, 5u);
     model->setSpectra(inputSpectra, 0);
-    Spectra const spectra = model->getSpectra(0);
+    SpectraLegacy const spectra = model->getSpectra(0);
 
     TS_ASSERT(boost::apply_visitor(AreSpectraEqual(), spectra, inputSpectra));
   }
diff --git a/qt/scientific_interfaces/Indirect/test/IqtFitModelTest.h b/qt/scientific_interfaces/Indirect/test/IqtFitModelTest.h
index add9269b176ae6a1817f682af2df2326bdcb9e71..bbb06a4e7c7ff91065ddb35de3af425ba2374be2 100644
--- a/qt/scientific_interfaces/Indirect/test/IqtFitModelTest.h
+++ b/qt/scientific_interfaces/Indirect/test/IqtFitModelTest.h
@@ -68,11 +68,11 @@ public:
   }
 
   void test_that_the_model_is_instantiated_and_can_hold_a_workspace() {
-    SpectraNew const spectra = SpectraNew("0-1");
+    Spectra const spectra = Spectra("0-1");
 
     m_model->addWorkspace(m_workspace, spectra);
 
-    TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), DatasetIndex{1});
+    TS_ASSERT_EQUALS(m_model->numberOfWorkspaces(), TableDatasetIndex{1});
   }
 
   void test_that_getSpectrumDependentAttributes_will_return_an_empty_vector() {
diff --git a/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h b/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h
index 23afd7fcc3b557fb2e8ead97d2fb4d721c1b83b6..49ce438633ea69518053f5f89fd63c31475838ad 100644
--- a/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h
+++ b/qt/scientific_interfaces/Indirect/test/JumpFitModelTest.h
@@ -56,7 +56,7 @@ public:
   }
 
   void test_that_the_model_is_instantiated_and_can_hold_a_workspace() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -65,7 +65,7 @@ public:
 
   void
   test_that_removeWorkspace_will_remove_the_specified_workspace_from_the_model() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
     m_model->removeWorkspace(0);
@@ -75,7 +75,7 @@ public:
 
   void
   test_that_setFitType_will_change_the_fit_type_in_the_sequentialFitOutputName() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
     m_model->setFitType("ChudleyElliot");
@@ -86,7 +86,7 @@ public:
 
   void
   test_that_setFitType_will_change_the_fit_type_in_the_simultaneousFitOutputName() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
     m_model->setFitType("ChudleyElliot");
@@ -96,7 +96,7 @@ public:
   }
 
   void test_that_zeroWidths_returns_false_if_the_workspace_contains_widths() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -104,7 +104,7 @@ public:
   }
 
   void test_that_zeroWidths_returns_true_if_the_workspace_contains_no_widths() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoWidthLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -114,7 +114,7 @@ public:
   }
 
   void test_that_zeroEISF_returns_false_if_the_workspace_contains_EISFs() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -122,7 +122,7 @@ public:
   }
 
   void test_that_zeroEISF_returns_true_if_the_workspace_contains_no_EISFs() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -133,7 +133,7 @@ public:
 
   void
   test_that_isMultiFit_returns_false_if_the_model_contains_one_workspace() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -142,7 +142,7 @@ public:
 
   void
   test_that_isMultiFit_returns_true_if_the_model_contains_multiple_workspace() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -153,7 +153,7 @@ public:
 
   void
   test_that_isMultiFit_returns_false_if_the_model_contains_multiple_workspace_which_are_identical() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace, m_workspace);
 
@@ -166,7 +166,7 @@ public:
 
   void
   test_that_getFitParameterName_will_return_the_name_of_the_expected_parameter() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -176,7 +176,7 @@ public:
 
   void
   test_that_getWidths_will_return_an_empty_vector_if_there_are_no_widths() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoWidthLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -186,7 +186,7 @@ public:
   }
 
   void test_that_getWidths_will_return_the_width_parameter_names() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -195,7 +195,7 @@ public:
   }
 
   void test_that_getEISF_will_return_an_empty_vector_if_there_are_no_EISFs() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -205,7 +205,7 @@ public:
   }
 
   void test_that_getEISF_will_return_the_EISF_parameter_names() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -214,7 +214,7 @@ public:
   }
 
   void test_that_getWidthSpectrum_will_return_none_when_there_are_no_widths() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoWidthLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -224,7 +224,7 @@ public:
   }
 
   void test_that_getWidthSpectrum_will_return_the_width_spectrum_number() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -233,7 +233,7 @@ public:
   }
 
   void test_that_getEISFSpectrum_will_return_none_when_there_are_no_EISFs() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -243,7 +243,7 @@ public:
   }
 
   void test_that_getEISFSpectrum_will_return_the_EISF_spectrum_number() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
 
@@ -253,7 +253,7 @@ public:
 
   void
   test_that_sequentialFitOutputName_returns_the_correct_name_for_a_multi_fit() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -266,7 +266,7 @@ public:
 
   void
   test_that_simultaneousFitOutputName_returns_the_correct_name_for_a_multi_fit() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
     auto const workspace2 = createWorkspaceWithTextAxis(2, getNoEISFLabels());
     m_ads->addOrReplace("Name2", workspace2);
 
@@ -279,7 +279,7 @@ public:
 
   void
   test_that_singleFitOutputName_returns_the_correct_name_for_a_single_data_set_fit() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     addWorkspacesToModel(spectra, m_workspace);
     m_model->setFitType("ChudleyElliot");
@@ -290,13 +290,13 @@ public:
 
 private:
   template <typename Workspace, typename... Workspaces>
-  void addWorkspacesToModel(Spectra const &spectra, Workspace const &workspace,
+  void addWorkspacesToModel(SpectraLegacy const &spectra, Workspace const &workspace,
                             Workspaces const &... workspaces) {
     m_model->addWorkspace(workspace, spectra);
     addWorkspacesToModel(spectra, workspaces...);
   }
 
-  void addWorkspacesToModel(Spectra const &spectra,
+  void addWorkspacesToModel(SpectraLegacy const &spectra,
                             MatrixWorkspace_sptr const &workspace) {
     m_model->addWorkspace(workspace, spectra);
   }
diff --git a/qt/scientific_interfaces/Indirect/test/MSDFitModelTest.h b/qt/scientific_interfaces/Indirect/test/MSDFitModelTest.h
index aeccaff2718e032af04f6490b68b3bc21854623b..97d52a9b0c3f24815086569b5f4d36ffa625086a 100644
--- a/qt/scientific_interfaces/Indirect/test/MSDFitModelTest.h
+++ b/qt/scientific_interfaces/Indirect/test/MSDFitModelTest.h
@@ -44,7 +44,7 @@ public:
   }
 
   void test_that_the_model_is_instantiated_and_can_hold_a_workspace() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     m_model->addWorkspace(m_workspace, spectra);
 
@@ -53,7 +53,7 @@ public:
 
   void
   test_that_sequentialFitOutputName_returns_the_correct_name_which_uses_the_fit_string_set() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     m_model->addWorkspace(m_workspace, spectra);
     m_model->setFitType("Gaussian");
@@ -63,7 +63,7 @@ public:
 
   void
   test_that_simultaneousFitOutputName_returns_the_correct_name_which_uses_the_fit_string_set() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     m_model->addWorkspace(m_workspace, spectra);
     m_model->setFitType("Gaussian");
@@ -73,7 +73,7 @@ public:
 
   void
   test_that_singleFitOutputName_returns_the_correct_name_which_uses_the_fit_string_set() {
-    Spectra const spectra = DiscontinuousSpectra<std::size_t>("0-1");
+    SpectraLegacy const spectra = DiscontinuousSpectra<std::size_t>("0-1");
 
     m_model->addWorkspace(m_workspace, spectra);
     m_model->setFitType("Gaussian");