diff --git a/qt/widgets/common/CMakeLists.txt b/qt/widgets/common/CMakeLists.txt
index 3b348f4aefb18904a8bd19092a46d92da294532e..ef7b75468f808d51c83d277a492a2e554b066311 100644
--- a/qt/widgets/common/CMakeLists.txt
+++ b/qt/widgets/common/CMakeLists.txt
@@ -75,6 +75,8 @@
 	src/DataProcessorUI/WhiteList.cpp
     src/DataProcessorUI/PostprocessingStep.cpp
 	src/DataProcessorUI/GenericDataProcessorPresenter.cpp
+    src/DataProcessorUI/Column.cpp
+    src/DataProcessorUI/ConstColumnIterator.cpp
 	src/ParseKeyValueString.cpp
 	src/ParseNumerics.cpp
 	src/DataProcessorUI/QOneLevelTreeModel.cpp
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/Column.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/Column.h
new file mode 100644
index 0000000000000000000000000000000000000000..2f676dd8ea86546bcb0cfeea7940e951d4c1f1ff
--- /dev/null
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/Column.h
@@ -0,0 +1,27 @@
+#ifndef MANTIDQTMANTIDWIDGETS_DATAPROCESSORCOLUMN_H
+#define MANTIDQTMANTIDWIDGETS_DATAPROCESSORCOLUMN_H
+#include <QString>
+namespace MantidQt {
+namespace MantidWidgets {
+namespace DataProcessor {
+class Column {
+public:
+  Column(QString const &name, QString const &algorithmProperty, bool isShown,
+         QString const &prefix, QString const &description);
+  QString const &name() const;
+  QString const &algorithmProperty() const;
+  bool isShown() const;
+  QString const &prefix() const;
+  QString const &description() const;
+
+private:
+  QString const &m_name;
+  QString const &m_algorithmProperty;
+  bool m_isShown;
+  QString const &m_prefix;
+  QString const &m_description;
+};
+}
+}
+}
+#endif // MANTIDQTMANTIDWIDGETS_DATAPROCESSORCOLUMN_H
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/ConstColumnIterator.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/ConstColumnIterator.h
new file mode 100644
index 0000000000000000000000000000000000000000..b33e9b004ebae4aa7f679e19ea9afec395c23094
--- /dev/null
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/ConstColumnIterator.h
@@ -0,0 +1,51 @@
+#ifndef MANTIDQTMANTIDWIDGETS_DATAPROCESSORCONSTCOLUMNITERATOR_H
+#define MANTIDQTMANTIDWIDGETS_DATAPROCESSORCONSTCOLUMNITERATOR_H
+#include "MantidQtWidgets/Common/DllOption.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/Column.h"
+#include <QString>
+#include <vector>
+namespace MantidQt {
+namespace MantidWidgets {
+namespace DataProcessor {
+class EXPORT_OPT_MANTIDQT_COMMON ConstColumnIterator {
+  using QStringIterator = std::vector<QString>::const_iterator;
+  using BoolIterator = std::vector<bool>::const_iterator;
+
+public:
+  using iterator_category = std::forward_iterator_tag;
+  using reference = const Column;
+  using pointer = const Column *;
+  using value_type = const Column;
+  using difference_type = typename QStringIterator::difference_type;
+  ConstColumnIterator(QStringIterator names, QStringIterator descriptions,
+                      QStringIterator algorithmProperties, BoolIterator isShown,
+                      QStringIterator prefixes);
+
+  ConstColumnIterator &operator++();
+  ConstColumnIterator operator++(int);
+  reference operator*() const;
+  bool operator==(const ConstColumnIterator &other) const;
+  bool operator!=(const ConstColumnIterator &other) const;
+  ConstColumnIterator &operator+=(difference_type n);
+  ConstColumnIterator &operator-=(difference_type n);
+
+private:
+  QStringIterator m_names;
+  QStringIterator m_descriptions;
+  QStringIterator m_algorithmProperties;
+  BoolIterator m_isShown;
+  QStringIterator m_prefixes;
+};
+
+ConstColumnIterator EXPORT_OPT_MANTIDQT_COMMON operator+(
+    const ConstColumnIterator &lhs, ConstColumnIterator::difference_type n);
+ConstColumnIterator EXPORT_OPT_MANTIDQT_COMMON operator+(
+    ConstColumnIterator::difference_type n, const ConstColumnIterator &rhs);
+ConstColumnIterator EXPORT_OPT_MANTIDQT_COMMON operator-(
+    const ConstColumnIterator &lhs, ConstColumnIterator::difference_type n);
+ConstColumnIterator EXPORT_OPT_MANTIDQT_COMMON operator-(
+    ConstColumnIterator::difference_type n, const ConstColumnIterator &rhs);
+}
+}
+}
+#endif // MANTIDQTMANTIDWIDGETS_DATAPROCESSORCONSTCOLUMNITERATOR_H
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/WhiteList.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/WhiteList.h
index b0c5025c28fa6130a80d15bdaf674e0e11b0f402..e0ac6b9f49b81853b2fb3d9a232c02fff6a38fe8 100644
--- a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/WhiteList.h
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/WhiteList.h
@@ -1,6 +1,8 @@
 #ifndef MANTIDQTMANTIDWIDGETS_DATAPROCESSORWHITELIST_H
 #define MANTIDQTMANTIDWIDGETS_DATAPROCESSORWHITELIST_H
 
+#include "MantidQtWidgets/Common/DataProcessorUI/Column.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/ConstColumnIterator.h"
 #include "MantidQtWidgets/Common/DllOption.h"
 
 #include <map>
@@ -37,62 +39,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 File change history is stored at: <https://github.com/mantidproject/mantid>.
 Code Documentation is available at: <http://doxygen.mantidproject.org>
 */
-class Column {
-public:
-  Column(QString const &name, QString const &algorithmProperty, bool isShown,
-         QString const &prefix, QString const &description);
-  QString const &name() const;
-  QString const &algorithmProperty() const;
-  bool isShown() const;
-  QString const &prefix() const;
-  QString const &description() const;
-
-private:
-  QString const &m_name;
-  QString const &m_algorithmProperty;
-  bool m_isShown;
-  QString const &m_prefix;
-  QString const &m_description;
-};
-
-class ConstColumnIterator {
-  using QStringIterator = std::vector<QString>::const_iterator;
-  using BoolIterator = std::vector<bool>::const_iterator;
-
-public:
-  using iterator_category = std::forward_iterator_tag;
-  using reference = const Column;
-  using pointer = const Column *;
-  using value_type = const Column;
-  using difference_type = typename QStringIterator::difference_type;
-  ConstColumnIterator(QStringIterator names, QStringIterator descriptions,
-                      QStringIterator algorithmProperties, BoolIterator isShown,
-                      QStringIterator prefixes);
-
-  ConstColumnIterator &operator++();
-  ConstColumnIterator operator++(int);
-  reference operator*() const;
-  bool operator==(const ConstColumnIterator &other) const;
-  bool operator!=(const ConstColumnIterator &other) const;
-  ConstColumnIterator &operator+=(difference_type n);
-  ConstColumnIterator &operator-=(difference_type n);
-
-private:
-  QStringIterator m_names;
-  QStringIterator m_descriptions;
-  QStringIterator m_algorithmProperties;
-  BoolIterator m_isShown;
-  QStringIterator m_prefixes;
-};
-
-ConstColumnIterator operator+(const ConstColumnIterator &lhs,
-                              ConstColumnIterator::difference_type n);
-ConstColumnIterator operator+(ConstColumnIterator::difference_type n,
-                              const ConstColumnIterator &rhs);
-ConstColumnIterator operator-(const ConstColumnIterator &lhs,
-                              ConstColumnIterator::difference_type n);
-ConstColumnIterator operator-(ConstColumnIterator::difference_type n,
-                              const ConstColumnIterator &rhs);
 
 class EXPORT_OPT_MANTIDQT_COMMON WhiteList {
 public:
diff --git a/qt/widgets/common/src/DataProcessorUI/Column.cpp b/qt/widgets/common/src/DataProcessorUI/Column.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..539efd8ba27d91b21667043ab13c6da6c7ed3b53
--- /dev/null
+++ b/qt/widgets/common/src/DataProcessorUI/Column.cpp
@@ -0,0 +1,22 @@
+#include "MantidQtWidgets/Common/DataProcessorUI/Column.h"
+namespace MantidQt {
+namespace MantidWidgets {
+namespace DataProcessor {
+
+Column::Column(QString const &name, QString const &algorithmProperty,
+               bool isShown, QString const &prefix, QString const &description)
+    : m_name(name), m_algorithmProperty(algorithmProperty), m_isShown(isShown),
+      m_prefix(prefix), m_description(description) {}
+
+QString const &Column::algorithmProperty() const { return m_algorithmProperty; }
+
+bool Column::isShown() const { return m_isShown; }
+
+QString const &Column::prefix() const { return m_prefix; }
+
+QString const &Column::description() const { return m_description; }
+
+QString const &Column::name() const { return m_name; }
+}
+}
+}
diff --git a/qt/widgets/common/src/DataProcessorUI/ConstColumnIterator.cpp b/qt/widgets/common/src/DataProcessorUI/ConstColumnIterator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..435b1edf1b12676cb0dd87596246c8635db179c4
--- /dev/null
+++ b/qt/widgets/common/src/DataProcessorUI/ConstColumnIterator.cpp
@@ -0,0 +1,61 @@
+#include "MantidQtWidgets/Common/DataProcessorUI/ConstColumnIterator.h"
+namespace MantidQt {
+namespace MantidWidgets {
+namespace DataProcessor {
+ConstColumnIterator::ConstColumnIterator(QStringIterator names,
+                                         QStringIterator descriptions,
+                                         QStringIterator algorithmProperties,
+                                         BoolIterator isShown,
+                                         QStringIterator prefixes)
+    : m_names(names), m_descriptions(descriptions),
+      m_algorithmProperties(algorithmProperties), m_isShown(isShown),
+      m_prefixes(prefixes) {}
+
+ConstColumnIterator &ConstColumnIterator::operator++() {
+  ++m_names;
+  ++m_descriptions;
+  ++m_algorithmProperties;
+  ++m_isShown;
+  ++m_prefixes;
+  return (*this);
+}
+
+ConstColumnIterator ConstColumnIterator::operator++(int) {
+  auto result = (*this);
+  ++result;
+  return result;
+}
+
+bool ConstColumnIterator::operator==(const ConstColumnIterator &other) const {
+  return m_names == other.m_names;
+}
+
+bool ConstColumnIterator::operator!=(const ConstColumnIterator &other) const {
+  return !((*this) == other);
+}
+
+auto ConstColumnIterator::operator*() const -> reference {
+  return reference(*m_names, *m_algorithmProperties, *m_isShown, *m_prefixes,
+                   *m_descriptions);
+}
+
+ConstColumnIterator &ConstColumnIterator::operator+=(difference_type n) {
+  m_names += n;
+  m_algorithmProperties += n;
+  m_isShown += n;
+  m_prefixes += n;
+  m_descriptions += n;
+  return (*this);
+}
+
+ConstColumnIterator &ConstColumnIterator::operator-=(difference_type n) {
+  m_names -= n;
+  m_algorithmProperties -= n;
+  m_isShown -= n;
+  m_prefixes -= n;
+  m_descriptions -= n;
+  return (*this);
+}
+}
+}
+}
diff --git a/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp b/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp
index 22d5ff7fe34ebf0ea2debda8c9efda55bc7a9a5e..7c82fae70f061fcf0317a2a1b61ab2cd1d26d4ae 100644
--- a/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp
+++ b/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp
@@ -122,15 +122,15 @@ GenericDataProcessorPresenter::GenericDataProcessorPresenter(
     const PostprocessingAlgorithm &postprocessor,
     const std::map<QString, QString> &postprocessMap, const QString &loader)
     : WorkspaceObserver(), m_view(nullptr), m_progressView(nullptr),
-      m_mainPresenter(), m_loader(loader), m_whitelist(whitelist),
-      m_processor(processor),
+      m_mainPresenter(), m_loader(loader),
       m_postprocessing(
           postprocessor.name().isEmpty()
               ? boost::optional<PostprocessingStep>()
               : PostprocessingStep(QString(), postprocessor, postprocessMap)),
-      m_progressReporter(nullptr), m_preprocessing(QString(), preprocessMap),
-      m_promptUser(true), m_tableDirty(false), m_pauseReduction(false),
-      m_reductionPaused(true), m_nextActionFlag(ReductionFlag::StopReduceFlag) {
+      m_preprocessing(QString(), preprocessMap), m_whitelist(whitelist),
+      m_processor(processor), m_progressReporter(nullptr), m_promptUser(true),
+      m_tableDirty(false), m_pauseReduction(false), m_reductionPaused(true),
+      m_nextActionFlag(ReductionFlag::StopReduceFlag) {
 
   // Column Options must be added to the whitelist
   m_whitelist.addElement("Options", "Options",
@@ -556,8 +556,8 @@ void GenericDataProcessorPresenter::saveNotebook(const TreeData &data) {
 
     auto notebook = Mantid::Kernel::make_unique<GenerateNotebook>(
         m_wsName, m_view->getProcessInstrument(), m_whitelist,
-        m_preprocessing.m_map, m_processor, *m_postprocessing, preprocessingOptionsMap,
-         m_processingOptions);
+        m_preprocessing.m_map, m_processor, *m_postprocessing,
+        preprocessingOptionsMap, m_processingOptions);
     auto generatedNotebook =
         std::string(notebook->generateNotebook(data).toStdString());
 
diff --git a/qt/widgets/common/src/DataProcessorUI/WhiteList.cpp b/qt/widgets/common/src/DataProcessorUI/WhiteList.cpp
index 80661083c49f66ede9adc7c7bd1f72b5de8b3068..77e7bd2fe4a93bdedb8795806b335c90aac32688 100644
--- a/qt/widgets/common/src/DataProcessorUI/WhiteList.cpp
+++ b/qt/widgets/common/src/DataProcessorUI/WhiteList.cpp
@@ -1,81 +1,9 @@
 #include "MantidQtWidgets/Common/DataProcessorUI/WhiteList.h"
-
 #include <QString>
 
 namespace MantidQt {
 namespace MantidWidgets {
 namespace DataProcessor {
-
-Column::Column(QString const &name, QString const &algorithmProperty,
-               bool isShown, QString const &prefix, QString const &description)
-    : m_name(name), m_algorithmProperty(algorithmProperty), m_isShown(isShown),
-      m_prefix(prefix), m_description(description) {}
-
-QString const &Column::algorithmProperty() const { return m_algorithmProperty; }
-
-bool Column::isShown() const { return m_isShown; }
-
-QString const &Column::prefix() const { return m_prefix; }
-
-QString const &Column::description() const { return m_description; }
-
-QString const &Column::name() const { return m_name; }
-
-ConstColumnIterator::ConstColumnIterator(QStringIterator names,
-                                         QStringIterator descriptions,
-                                         QStringIterator algorithmProperties,
-                                         BoolIterator isShown,
-                                         QStringIterator prefixes)
-    : m_names(names), m_descriptions(descriptions),
-      m_algorithmProperties(algorithmProperties), m_isShown(isShown),
-      m_prefixes(prefixes) {}
-
-ConstColumnIterator &ConstColumnIterator::operator++() {
-  ++m_names;
-  ++m_descriptions;
-  ++m_algorithmProperties;
-  ++m_isShown;
-  ++m_prefixes;
-  return (*this);
-}
-
-ConstColumnIterator ConstColumnIterator::operator++(int) {
-  auto result = (*this);
-  ++result;
-  return result;
-}
-
-bool ConstColumnIterator::operator==(const ConstColumnIterator &other) const {
-  return m_names == other.m_names;
-}
-
-bool ConstColumnIterator::operator!=(const ConstColumnIterator &other) const {
-  return !((*this) == other);
-}
-
-auto ConstColumnIterator::operator*() const -> reference {
-  return reference(*m_names, *m_algorithmProperties, *m_isShown, *m_prefixes,
-                   *m_descriptions);
-}
-
-ConstColumnIterator &ConstColumnIterator::operator+=(difference_type n) {
-  m_names += n;
-  m_algorithmProperties += n;
-  m_isShown += n;
-  m_prefixes += n;
-  m_descriptions += n;
-  return (*this);
-}
-
-ConstColumnIterator &ConstColumnIterator::operator-=(difference_type n) {
-  m_names -= n;
-  m_algorithmProperties -= n;
-  m_isShown -= n;
-  m_prefixes -= n;
-  m_descriptions -= n;
-  return (*this);
-}
-
 /** Adds an element to the whitelist
 * @param colName : the name of the column to be added
 * @param algProperty : the name of the property linked to this column