diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/BatchPresenterFactory.h b/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/BatchPresenterFactory.h
index a475849e0ab9732495d0371bcf45c4a90a0cb880..f72b0cd91d20d026b72808a25c193c494455cdf4 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/BatchPresenterFactory.h
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/BatchPresenterFactory.h
@@ -37,7 +37,7 @@ public:
         m_instrumentPresenterFactory(std::move(instrumentPresenterFactory)),
         m_savePresenterFactory(std::move(savePresenterFactory)) {}
 
-  std::shared_ptr<IBatchPresenter> make(IBatchView *view) override {
+  std::unique_ptr<IBatchPresenter> make(IBatchView *view) override {
     auto runsPresenter = m_runsPresenterFactory.make(view->runs());
     auto eventPresenter = m_eventPresenterFactory.make(view->eventHandling());
     auto experimentPresenter =
@@ -50,7 +50,7 @@ public:
         experimentPresenter->experiment(), instrumentPresenter->instrument(),
         runsPresenter->mutableRunsTable(), eventPresenter->slicing());
 
-    return std::make_shared<BatchPresenter>(
+    return std::make_unique<BatchPresenter>(
         view, std::move(model), std::move(runsPresenter),
         std::move(eventPresenter), std::move(experimentPresenter),
         std::move(instrumentPresenter), std::move(savePresenter));
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/IBatchPresenterFactory.h b/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/IBatchPresenterFactory.h
index 3b15e50fba014c79ca5b3039fd34e1d0cc07aa24..275de8fd54e981c45bfc08f0337e14852d123778 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/IBatchPresenterFactory.h
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Batch/IBatchPresenterFactory.h
@@ -18,7 +18,7 @@ class IBatchView;
 class IBatchPresenterFactory {
 public:
   virtual ~IBatchPresenterFactory() = default;
-  virtual std::shared_ptr<IBatchPresenter> make(IBatchView *view) = 0;
+  virtual std::unique_ptr<IBatchPresenter> make(IBatchView *view) = 0;
 };
 } // namespace ISISReflectometry
 } // namespace CustomInterfaces
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Decoder.cpp b/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Decoder.cpp
index 7d50cee9c0427bc863609e7969184a7381d8e7f7..42369c090ce4f3d833192b4c6e25e5881a0b2edf 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Decoder.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Decoder.cpp
@@ -17,9 +17,9 @@ namespace ISISReflectometry {
 BatchPresenter *Decoder::findBatchPresenter(const QtBatchView *gui,
                                             const QtMainWindowView &mwv) {
   for (auto &ipresenter : mwv.m_presenter->m_batchPresenters) {
-    auto presenter = std::dynamic_pointer_cast<BatchPresenter>(ipresenter);
+    auto presenter = dynamic_cast<BatchPresenter *>(ipresenter.get());
     if (presenter->m_view == gui) {
-      return presenter.get();
+      return presenter;
     }
   }
   return nullptr;
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Encoder.cpp b/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Encoder.cpp
index a637208263710da3b5ba3194633df9317302346b..a15a8cac04157286265fee20a045b6eac7b82b4f 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Encoder.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Common/Encoder.cpp
@@ -14,9 +14,9 @@ namespace ISISReflectometry {
 BatchPresenter *Encoder::findBatchPresenter(const QtBatchView *gui,
                                             const QtMainWindowView &mwv) {
   for (auto &ipresenter : mwv.m_presenter->m_batchPresenters) {
-    auto presenter = std::dynamic_pointer_cast<BatchPresenter>(ipresenter);
+    auto presenter = dynamic_cast<BatchPresenter *>(ipresenter.get());
     if (presenter->m_view == gui) {
-      return presenter.get();
+      return presenter;
     }
   }
   return nullptr;
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/MainWindow/MainWindowPresenter.h b/qt/scientific_interfaces/ISISReflectometry/GUI/MainWindow/MainWindowPresenter.h
index b95c2a5db954cbd567277ccd1a3b8ec9ccd1f22e..76056df6fb2456df58a36afac78453de355e7f0e 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/MainWindow/MainWindowPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/MainWindow/MainWindowPresenter.h
@@ -58,7 +58,7 @@ public:
 protected:
   IMainWindowView *m_view;
   IMessageHandler *m_messageHandler;
-  std::vector<std::shared_ptr<IBatchPresenter>> m_batchPresenters;
+  std::vector<std::unique_ptr<IBatchPresenter>> m_batchPresenters;
   std::unique_ptr<IBatchPresenterFactory> m_batchPresenterFactory;
 
 private:
diff --git a/qt/scientific_interfaces/test/ISISReflectometry/ReflMockObjects.h b/qt/scientific_interfaces/test/ISISReflectometry/ReflMockObjects.h
index 810cbf4b368d81ef5ed4a7b23d283102715da5a8..520b5f20d15a0329b616cdbee21b7d7ea3f294c7 100644
--- a/qt/scientific_interfaces/test/ISISReflectometry/ReflMockObjects.h
+++ b/qt/scientific_interfaces/test/ISISReflectometry/ReflMockObjects.h
@@ -45,8 +45,8 @@ GNU_DIAG_OFF_SUGGEST_OVERRIDE
 class MockBatchPresenterFactory : public IBatchPresenterFactory {
 public:
   MOCK_METHOD1(makeProxy, IBatchPresenter *(IBatchView *));
-  std::shared_ptr<IBatchPresenter> make(IBatchView *view) {
-    return std::shared_ptr<IBatchPresenter>(makeProxy(view));
+  std::unique_ptr<IBatchPresenter> make(IBatchView *view) {
+    return std::unique_ptr<IBatchPresenter>(makeProxy(view));
   }
 };