diff --git a/applications/rfigui.cpp b/applications/rfigui.cpp
index b8f7d674f7a0a9517e29dbb5fd9aba2957687ebc..99857222d8ea5164555fadd4ccdc675398ec47de 100644
--- a/applications/rfigui.cpp
+++ b/applications/rfigui.cpp
@@ -4,6 +4,7 @@
 #include "../rfigui/controllers/rfiguicontroller.h"
 
 #include "../util/logger.h"
+#include "../util/progress/stdoutreporter.h"
 
 #include "../imagesets/msimageset.h"
 #include "../imagesets/msoptions.h"
@@ -152,16 +153,24 @@ static void run(int argc, char* argv[]) {
       if (imageSet == nullptr)
         throw std::runtime_error(
             "Option -save-baseline can only be used for measurement sets.\n");
-      MaskedHeatMap& plot = controller.TFController().Plot();
-      plot.SetShowOriginalMask(plotFlags);
-      plot.SetShowXAxisDescription(true);
-      plot.SetShowYAxisDescription(true);
-      plot.SetShowZAxisDescription(true);
       for (const SavedBaseline& b : savedBaselines) {
         auto index =
             imageSet->Index(b.a1Index, b.a2Index, b.bandIndex, b.sequenceIndex);
         if (!index) throw std::runtime_error("Baseline not found!");
         controller.SetImageSetIndex(*index);
+        StdOutReporter reporter;
+        reporter.SignalFinished().connect([&](bool success) {
+          std::cout << "FINISH\n";
+          //controller.LoadCurrentTFDataFinish(success);
+        });
+        std::thread thread(
+          [&]() { controller.LoadCurrentTFDataAsync(reporter); });
+        thread.join();
+        MaskedHeatMap& plot = controller.TFController().Plot();
+        plot.SetShowOriginalMask(plotFlags);
+        plot.SetShowXAxisDescription(true);
+        plot.SetShowYAxisDescription(true);
+        plot.SetShowZAxisDescription(true);
         plot.SaveByExtension(b.filename, 800, 480);
       }
     }
diff --git a/util/progress/stdoutreporter.h b/util/progress/stdoutreporter.h
index 9ff62e781d14a675d19e274f78686ddea4409e19..9ae2a30125d8400705523ea1b49f24d2d820b35e 100644
--- a/util/progress/stdoutreporter.h
+++ b/util/progress/stdoutreporter.h
@@ -7,6 +7,8 @@
 #include <string>
 #include <iostream>
 
+#include <sigc++/signal.h>
+
 class StdOutReporter final : public ProgressListener {
  public:
   void OnStartTask(const std::string& description) override {
@@ -21,10 +23,20 @@ class StdOutReporter final : public ProgressListener {
         std::cout << '.' << std::flush;
     }
   }
-  void OnFinish() override { std::cout << "100\n"; }
+  void OnFinish() override { std::cout << "100\n"; _signalFinished(true); }
   void OnException(std::exception& thrown_exception) override {
     std::cerr << "ERROR! " << thrown_exception.what() << '\n';
+    _signalError(thrown_exception.what());
+    _signalFinished(false);
+  }
+  sigc::signal<void, bool /*errors occurred? */>& SignalFinished() {
+    return _signalFinished;
   }
+  sigc::signal<void, const std::string&>& SignalError() { return _signalError; }
+
+private:
+  sigc::signal<void, bool> _signalFinished;
+  sigc::signal<void, const std::string&> _signalError;
 };
 
 #endif  // UTIL_PROGRESS_STD_OUT_REPORTER_H_