diff --git a/GUI/Views/CommonWidgets/ItemComboToolBar.cpp b/GUI/Views/CommonWidgets/ItemComboToolBar.cpp
index 2966aaba7e62279d26e5a3038abf539da6a442ba..3b40ad0ebe255b875f440303fcfdf60b3f0190aa 100644
--- a/GUI/Views/CommonWidgets/ItemComboToolBar.cpp
+++ b/GUI/Views/CommonWidgets/ItemComboToolBar.cpp
@@ -40,8 +40,6 @@ void ItemComboToolBar::setPresentation(const QString& name)
 void ItemComboToolBar::setPresentationList(const QStringList& presentationList,
                                            const QStringList& activeList)
 {
-    ASSERT(presentationList.size());
-
     QString previous = currentPresentation();
 
     setComboConnected(false);
diff --git a/GUI/Views/CommonWidgets/ItemComboWidget.cpp b/GUI/Views/CommonWidgets/ItemComboWidget.cpp
index b4cfcc7a554374e75b1c09861403a2e840efba22..521f1215b9c931ebc3d84c06685a197277a5dedc 100644
--- a/GUI/Views/CommonWidgets/ItemComboWidget.cpp
+++ b/GUI/Views/CommonWidgets/ItemComboWidget.cpp
@@ -27,6 +27,8 @@ ItemComboWidget::ItemComboWidget(QWidget* parent)
 {
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     m_stackedWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    m_blankWidget = new QWidget(m_stackedWidget);
+    m_stackedWidget->addWidget(m_blankWidget);
 
     QVBoxLayout* layout = new QVBoxLayout;
     layout->setMargin(0);
@@ -37,6 +39,8 @@ ItemComboWidget::ItemComboWidget(QWidget* parent)
     setLayout(layout);
 
     connect(m_toolBar, &ItemComboToolBar::comboChanged, this, &ItemComboWidget::onComboChanged);
+
+    setToolBarVisible(false);
 }
 
 void ItemComboWidget::registerWidget(const QString& presentationType, factory_function_t f)
@@ -48,9 +52,16 @@ void ItemComboWidget::registerWidget(const QString& presentationType, factory_fu
 
 void ItemComboWidget::setPresentation(const QString& presentationType)
 {
+    if (presentationType.isEmpty()) {
+        m_stackedWidget->setCurrentWidget(m_blankWidget);
+        setToolBarVisible(false);
+        return;
+    }
+
     if (!activePresentationList(currentItem()).contains(presentationType))
         return;
 
+    setToolBarVisible(true);
     m_toolBar->setPresentation(presentationType);
 
     ASSERT(currentItem());
@@ -77,6 +88,14 @@ void ItemComboWidget::setToolBarVisible(bool value)
     m_toolBar->setVisible(value);
 }
 
+void ItemComboWidget::setItem(SessionItem* item)
+{
+    if (!item)
+        m_stackedWidget->setCurrentWidget(m_blankWidget);
+    SessionItemWidget::setItem(item);
+    setToolBarVisible(item && !itemPresentation().isEmpty());
+}
+
 //! Returns list of active presentations for given item. Active presentation is the one
 //! which is present in QComboBox selector and can be selected. For example, if JobItem
 //! is fittable, the list will contain "FitComparisonWidgetName".
diff --git a/GUI/Views/CommonWidgets/ItemComboWidget.h b/GUI/Views/CommonWidgets/ItemComboWidget.h
index b3cfdcb2684023c9b872ff1a8629dfde16a9b917..91f46f5ee557d90c2459970d4455d87ce268b69e 100644
--- a/GUI/Views/CommonWidgets/ItemComboWidget.h
+++ b/GUI/Views/CommonWidgets/ItemComboWidget.h
@@ -32,6 +32,11 @@ class QStackedWidget;
 //! For example, in JobOutputDataWidget the results of the job can be presented with either
 //! IntensityDataWidget or FitDataWidget, depending from the JobView's activity type.
 
+//! For the presentation the special value of an empty string can be used which results in an
+//! empty widget being shown (with the toolbar hidden). In this case the current item can also
+//! be \c nullptr and this presentation needs not to be listed in the (active)PresentationList
+//! functions.
+
 class ItemComboWidget : public SessionItemWidget {
     Q_OBJECT
 
@@ -45,14 +50,13 @@ public:
     virtual void setPresentation(const QString& presentationType);
 
     void setToolBarVisible(bool value);
+    void setItem(SessionItem* item) override;
 
 protected:
     virtual QStringList activePresentationList(SessionItem* item);
     virtual QStringList presentationList(SessionItem* item);
     virtual QString itemPresentation() const;
     QString selectedPresentation() const;
-    //    SessionItem* currentItem();
-    //    const SessionItem* currentItem() const;
     void subscribeToItem();
 
 private slots:
@@ -63,9 +67,9 @@ private:
 
     ItemComboToolBar* m_toolBar;
     QStackedWidget* m_stackedWidget;
-    //    SessionItem* m_currentItem;
     IFactory<QString, SessionItemWidget> m_widgetFactory;
     QMap<QString, SessionItemWidget*> m_presentationTypeToWidget;
+    QWidget* m_blankWidget;
 };
 
 #endif // BORNAGAIN_GUI_VIEWS_COMMONWIDGETS_ITEMCOMBOWIDGET_H
diff --git a/GUI/Views/JobWidgets/JobOutputDataWidget.cpp b/GUI/Views/JobWidgets/JobOutputDataWidget.cpp
deleted file mode 100644
index 828812cb9ff07642fb70808d95ef17569269061f..0000000000000000000000000000000000000000
--- a/GUI/Views/JobWidgets/JobOutputDataWidget.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/Views/JobWidgets/JobOutputDataWidget.cpp
-//! @brief     Implements class JobOutputDataWidget
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "GUI/Views/JobWidgets/JobOutputDataWidget.h"
-#include "GUI/Models/JobItem.h"
-#include "GUI/Models/JobModel.h"
-#include "GUI/Views/JobWidgets/JobResultsPresenter.h"
-#include <QVBoxLayout>
-
-namespace {
-const bool reuse_widget = true;
-}
-
-JobOutputDataWidget::JobOutputDataWidget(JobModel* jobModel, QWidget* parent)
-    : QWidget(parent), m_stackedWidget(new ItemStackPresenter<JobResultsPresenter>(reuse_widget))
-{
-    setWindowTitle(QLatin1String("Job OutputData"));
-    setObjectName("JobOutputDataWidget");
-
-    setMinimumSize(400, 400);
-    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-
-    QVBoxLayout* mainLayout = new QVBoxLayout;
-    mainLayout->setMargin(0);
-    mainLayout->setSpacing(0);
-
-    mainLayout->addWidget(m_stackedWidget);
-
-    m_stackedWidget->setMinimumSize(600, 600);
-    m_stackedWidget->setModel(jobModel);
-
-    setLayout(mainLayout);
-}
-
-void JobOutputDataWidget::setItem(JobItem* jobItem)
-{
-    if (!isValidJobItem(jobItem)) {
-        m_stackedWidget->hideWidgets();
-        return;
-    }
-
-    m_stackedWidget->setItem(jobItem);
-}
-
-void JobOutputDataWidget::onActivityChanged(JobViewActivity activity)
-{
-    if (auto widget = m_stackedWidget->currentWidget())
-        widget->setPresentation(activity);
-}
-
-bool JobOutputDataWidget::isValidJobItem(JobItem* item)
-{
-    if (!item)
-        return false;
-
-    // do not show running job items, the rest (canceled, fitted, etc) are shown
-    return !item->isRunning();
-}
diff --git a/GUI/Views/JobWidgets/JobOutputDataWidget.h b/GUI/Views/JobWidgets/JobOutputDataWidget.h
deleted file mode 100644
index 36ca1e577dba5573992f40c7923dd1ec56e7d82a..0000000000000000000000000000000000000000
--- a/GUI/Views/JobWidgets/JobOutputDataWidget.h
+++ /dev/null
@@ -1,43 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/Views/JobWidgets/JobOutputDataWidget.h
-//! @brief     Defines class JobOutputDataWidget
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#ifndef BORNAGAIN_GUI_VIEWS_JOBWIDGETS_JOBOUTPUTDATAWIDGET_H
-#define BORNAGAIN_GUI_VIEWS_JOBWIDGETS_JOBOUTPUTDATAWIDGET_H
-
-#include "GUI/Views/CommonWidgets/ItemStackPresenter.h"
-
-class JobResultsPresenter;
-class JobModel;
-class JobItem;
-enum class JobViewActivity;
-
-//! The JobOutputDataWidget class is a central widget of JobView, shows results of the simulation.
-
-class JobOutputDataWidget : public QWidget {
-    Q_OBJECT
-public:
-    JobOutputDataWidget(JobModel* jobModel, QWidget* parent = nullptr);
-
-public slots:
-    void setItem(JobItem* jobItem);
-    void onActivityChanged(JobViewActivity activity);
-
-protected:
-    virtual bool isValidJobItem(JobItem* item);
-
-private:
-    ItemStackPresenter<JobResultsPresenter>* m_stackedWidget;
-};
-
-#endif // BORNAGAIN_GUI_VIEWS_JOBWIDGETS_JOBOUTPUTDATAWIDGET_H
diff --git a/GUI/Views/JobWidgets/JobResultsPresenter.cpp b/GUI/Views/JobWidgets/JobResultsPresenter.cpp
index c6fcc76071535f8018d583939a1d6c611bb4fd6e..c98eb83672ab17a139d4e360c64e6cd55d61eff0 100644
--- a/GUI/Views/JobWidgets/JobResultsPresenter.cpp
+++ b/GUI/Views/JobWidgets/JobResultsPresenter.cpp
@@ -24,11 +24,17 @@
 
 JobResultsPresenter::JobResultsPresenter(QWidget* parent) : ItemComboWidget(parent)
 {
+    setWindowTitle("Job OutputData");
+    setObjectName("JobResultsPresenter");
+
     registerWidget("Color Map", create_new<IntensityDataWidget>);
     registerWidget("Projections", create_new<IntensityDataProjectionsWidget>);
     registerWidget("Fit 1D Data", create_new<FitComparisonWidget1D>);
     registerWidget("Fit 2D Data", create_new<FitComparisonWidget>);
     registerWidget("Reflectometry", create_new<SpecularDataWidget>);
+
+    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    setMinimumSize(600, 600);
 }
 
 QString JobResultsPresenter::itemPresentation() const
@@ -40,34 +46,40 @@ QString JobResultsPresenter::itemPresentation() const
     return value.isEmpty() ? selectedPresentation() : value;
 }
 
-void JobResultsPresenter::setPresentation(const QString& presentationType)
+void JobResultsPresenter::setItem(SessionItem* item)
 {
-    if (!currentItem())
-        return;
+    if (currentItem())
+        currentItem()->mapper()->unsubscribe(this);
+    if (item)
+        item->mapper()->setOnPropertyChange(
+            std::bind(&JobResultsPresenter::notifyJobPropertyChanged, this, std::placeholders::_1));
+    ItemComboWidget::setItem(item);
+}
 
+void JobResultsPresenter::setPresentation(const QString& presentationType)
+{
     ItemComboWidget::setPresentation(presentationType);
-    dynamic_cast<JobItem*>(currentItem())->setPresentationType(presentationType);
+    JobItem* item = dynamic_cast<JobItem*>(currentItem());
+    if (item && !presentationType.isEmpty())
+        item->setPresentationType(presentationType);
 }
 
 void JobResultsPresenter::setPresentation(JobViewActivity activity)
 {
-    if (!currentItem())
-        return;
-
-    JobItem* jobItem = dynamic_cast<JobItem*>(currentItem());
-    if (!jobItem)
-        return;
-
+    m_activity = activity;
     QString presentation;
-    switch (activity) {
-    case JobViewActivity::Fitting:
-        presentation = fitPresentationOfInstrument(jobItem->instrumentItem());
-        break;
-
-    case JobViewActivity::RealTime:
-    case JobViewActivity::JobView:
-        presentation = defaultPresentationOfInstrument(jobItem->instrumentItem());
-        break;
+    JobItem* jobItem = dynamic_cast<JobItem*>(currentItem());
+    if (jobItem && !jobItem->isRunning()) {
+        switch (activity) {
+        case JobViewActivity::Fitting:
+            presentation = fitPresentationOfInstrument(jobItem->instrumentItem());
+            break;
+
+        case JobViewActivity::RealTime:
+        case JobViewActivity::JobView:
+            presentation = defaultPresentationOfInstrument(jobItem->instrumentItem());
+            break;
+        }
     }
 
     setPresentation(presentation);
@@ -79,7 +91,7 @@ void JobResultsPresenter::setPresentation(JobViewActivity activity)
 QStringList JobResultsPresenter::activePresentationList(SessionItem* item)
 {
     JobItem* jobItem = dynamic_cast<JobItem*>(item);
-    if (!jobItem)
+    if (!jobItem || jobItem->isRunning())
         return {};
 
     ASSERT(jobItem->instrumentItem() != nullptr);
@@ -95,7 +107,7 @@ QStringList JobResultsPresenter::activePresentationList(SessionItem* item)
 QStringList JobResultsPresenter::presentationList(SessionItem* item)
 {
     JobItem* jobItem = dynamic_cast<JobItem*>(item);
-    if (!jobItem)
+    if (!jobItem || jobItem->isRunning())
         return {};
 
     ASSERT(jobItem->instrumentItem() != nullptr);
@@ -132,3 +144,9 @@ QString JobResultsPresenter::fitPresentationOfInstrument(InstrumentItem* instrum
 
     return "Fit 2D Data";
 }
+
+void JobResultsPresenter::notifyJobPropertyChanged(const QString& property)
+{
+    if (JobItem::isStatusPropertyName(property))
+        setPresentation(m_activity);
+}
diff --git a/GUI/Views/JobWidgets/JobResultsPresenter.h b/GUI/Views/JobWidgets/JobResultsPresenter.h
index a2454ecefc80c1dddb1054f35ed0034f2d62d635..7ebb7e26c0707de3b99c468f9b53bdf89ca351bc 100644
--- a/GUI/Views/JobWidgets/JobResultsPresenter.h
+++ b/GUI/Views/JobWidgets/JobResultsPresenter.h
@@ -18,6 +18,7 @@
 #include "GUI/Views/CommonWidgets/ItemComboWidget.h"
 
 class InstrumentItem;
+class JobItem;
 enum class JobViewActivity;
 
 //! Presents results of job (JobItem) using stack of different widgets and combo box in the
@@ -29,7 +30,10 @@ class JobResultsPresenter : public ItemComboWidget {
 public:
     explicit JobResultsPresenter(QWidget* parent = nullptr);
 
+    void setItem(SessionItem* item) override;
     void setPresentation(const QString& presentationType) override;
+
+public slots:
     void setPresentation(JobViewActivity activity);
 
 protected:
@@ -41,6 +45,10 @@ private:
     QString defaultPresentationOfInstrument(InstrumentItem* instrumentItem);
     QStringList defaultActivePresentationsOfInstrument(InstrumentItem* instrumentItem);
     QString fitPresentationOfInstrument(InstrumentItem* instrumentItem);
+    void notifyJobPropertyChanged(const QString& property);
+
+private:
+    JobViewActivity m_activity;
 };
 
 #endif // BORNAGAIN_GUI_VIEWS_JOBWIDGETS_JOBRESULTSPRESENTER_H
diff --git a/GUI/Views/JobWidgets/JobView.cpp b/GUI/Views/JobWidgets/JobView.cpp
index a3cb2dab0cbd80908413ff417fc6750db79f652f..8b807919054a38dcbb353711138ca5cae7bdba32 100644
--- a/GUI/Views/JobWidgets/JobView.cpp
+++ b/GUI/Views/JobWidgets/JobView.cpp
@@ -19,8 +19,8 @@
 #include "GUI/Views/FitWidgets/FitActivityPanel.h"
 #include "GUI/Views/FitWidgets/JobMessagePanel.h"
 #include "GUI/Views/FitWidgets/JobRealTimeWidget.h"
-#include "GUI/Views/JobWidgets/JobOutputDataWidget.h"
 #include "GUI/Views/JobWidgets/JobProgressAssistant.h"
+#include "GUI/Views/JobWidgets/JobResultsPresenter.h"
 #include "GUI/Views/JobWidgets/JobSelectorWidget.h"
 #include "GUI/Views/JobWidgets/JobViewActivities.h"
 #include "GUI/mainwindow/mainwindow.h"
@@ -91,14 +91,14 @@ void JobView::onSelectionChanged(const QVector<JobItem*>& jobs)
     JobItem* jobItem = nullptr;
     if (jobs.size() == 1)
         jobItem = jobs.front();
-    m_jobOutputDataWidget->setItem(jobItem);
+    m_jobResultsPresenter->setItem(jobItem);
     m_jobRealTimeWidget->setItem(jobItem);
     m_fitActivityPanel->setItem(jobItem);
 }
 
 void JobView::createSubWindows()
 {
-    m_jobOutputDataWidget = new JobOutputDataWidget(m_document->jobModel(), this);
+    m_jobResultsPresenter = new JobResultsPresenter(this);
     m_jobSelector = new JobSelectorWidget(m_document->jobModel(), this);
     m_jobRealTimeWidget = new JobRealTimeWidget(m_document->jobModel(), this);
     m_fitActivityPanel = new FitActivityPanel(m_document->jobModel(), this);
@@ -115,7 +115,7 @@ void JobView::createSubWindows()
     m_fitActivityPanel->setRealTimeWidget(m_jobRealTimeWidget);
     m_fitActivityPanel->setJobMessagePanel(m_jobMessagePanel);
 
-    setCentralWidget(m_jobOutputDataWidget);
+    setCentralWidget(m_jobResultsPresenter);
 
     resetLayout();
 }
@@ -141,9 +141,9 @@ void JobView::connectSignals()
 
 void JobView::connectActivityRelated()
 {
-    // Activity was changed: this -> JobOutputDataWidget
-    connect(this, &JobView::activityChanged, m_jobOutputDataWidget,
-            &JobOutputDataWidget::onActivityChanged);
+    // Activity was changed: this -> JobResultsPresenter
+    connect(this, &JobView::activityChanged, m_jobResultsPresenter,
+            qOverload<JobViewActivity>(&JobResultsPresenter::setPresentation));
 }
 
 //! Connects signals related to JobItem
diff --git a/GUI/Views/JobWidgets/JobView.h b/GUI/Views/JobWidgets/JobView.h
index d86456dac52e5a66abcae6d5c96a6bd0291818ec..ee1419a255f0d444c3f4090bd6b722fa53dd3cca 100644
--- a/GUI/Views/JobWidgets/JobView.h
+++ b/GUI/Views/JobWidgets/JobView.h
@@ -21,11 +21,11 @@
 class MainWindow;
 class JobView;
 class JobSelectorWidget;
-class JobOutputDataWidget;
 class JobRealTimeWidget;
 class FitActivityPanel;
 class JobMessagePanel;
 class JobProgressAssistant;
+class JobResultsPresenter;
 class JobItem;
 class DocksController;
 class ProjectDocument;
@@ -66,7 +66,7 @@ private:
     JobItem* m_currentItem;
 
     JobSelectorWidget* m_jobSelector = nullptr;
-    JobOutputDataWidget* m_jobOutputDataWidget = nullptr;
+    JobResultsPresenter* m_jobResultsPresenter = nullptr;
     JobRealTimeWidget* m_jobRealTimeWidget = nullptr;
     FitActivityPanel* m_fitActivityPanel = nullptr;
     JobMessagePanel* m_jobMessagePanel = nullptr;