diff --git a/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.cpp b/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.cpp
index 16a0597fa8..6d10fd7ad4 100644
--- a/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.cpp
+++ b/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.cpp
@@ -1,52 +1,56 @@
 /*===================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center,
 Division of Medical and Biological Informatics.
 All rights reserved.
 
 This software is distributed WITHOUT ANY WARRANTY; without
 even the implied warranty of MERCHANTABILITY or FITNESS FOR
 A PARTICULAR PURPOSE.
 
 See LICENSE.txt or http://www.mitk.org for details.
 
 ===================================================================*/
 #include "mitkImageStatisticsContainerNodeHelper.h"
 
 #include <mitkProperties.h>
 #include "mitkPropertyRelations.h"
 #include "mitkGenericIDRelationRule.h"
 
 namespace mitk
 {
   DataNode::Pointer CreateImageStatisticsNode(StatisticsContainer::Pointer statistic, const std::string& name) {
     auto statisticsNode = mitk::DataNode::New();
     statisticsNode->SetName(name);
     statisticsNode->SetData(statistic);
     statisticsNode->SetProperty("helper object", mitk::BoolProperty::New(true));
     return statisticsNode;
   }
 
-  void CreateNodeRelations(mitk::BaseData::Pointer statistics, mitk::BaseData::Pointer image, mitk::BaseData::Pointer mask, mitk::BaseData::Pointer planarFigure)
+  mitk::GenericIDRelationRule::Pointer CreateNodeRelationImage(BaseData::Pointer statistics, BaseData::Pointer image)
   {
     using StatisticsImageRule = mitk::GenericIDRelationRule;
-    using StatisticsMaskImageRule = mitk::GenericIDRelationRule;
-    using StatisticsPlanarFigureRule = mitk::GenericIDRelationRule;
+    auto rule = StatisticsImageRule::New("statisticsToImage");
+    rule->Connect(statistics, image);
+    return rule;
+  }
 
-    auto ruleImage = StatisticsImageRule::New("ruleStatisticsToImage");
-    ruleImage->Connect(statistics, image);
-
-    if (mask) {
-      auto ruleMask = StatisticsMaskImageRule::New("ruleStatisticsToMask");
-      ruleMask->Connect(statistics, mask);
-    }
-    if (planarFigure) {
-      auto rulePlanarFigure = StatisticsPlanarFigureRule::New("ruleStatisticsToPlanarFigure");
-      rulePlanarFigure->Connect(statistics, planarFigure);
-    }
+  mitk::GenericIDRelationRule::Pointer CreateNodeRelationMask(BaseData::Pointer statistics, BaseData::Pointer mask)
+  {
+    using StatisticsMaskImageRule = mitk::GenericIDRelationRule;
+    auto rule = StatisticsMaskImageRule::New("statisticsToMask");
+    rule->Connect(statistics, mask);
+    return rule;
   }
 
+  mitk::GenericIDRelationRule::Pointer CreateNodeRelationPlanarFigure(BaseData::Pointer statistics, BaseData::Pointer planarFigure)
+  {
+    using StatisticsPlanarFigureRule = mitk::GenericIDRelationRule;
+    auto rule = StatisticsPlanarFigureRule::New("statisticsToPlanarFigure");
+    rule->Connect(statistics, planarFigure);
+    return rule;
+  }
 
 }
diff --git a/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.h b/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.h
index 0979c303c5..7defd69f91 100644
--- a/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.h
+++ b/Modules/ImageStatistics/mitkImageStatisticsContainerNodeHelper.h
@@ -1,31 +1,34 @@
 /*===================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center,
 Division of Medical and Biological Informatics.
 All rights reserved.
 
 This software is distributed WITHOUT ANY WARRANTY; without
 even the implied warranty of MERCHANTABILITY or FITNESS FOR
 A PARTICULAR PURPOSE.
 
 See LICENSE.txt or http://www.mitk.org for details.
 
 ===================================================================*/
 
 #ifndef MITKIMAGESTATISTICSCONTAINERNODEHELPER
 #define MITKIMAGESTATISTICSCONTAINERNODEHELPER
 
 #include <MitkImageStatisticsExports.h>
 
 #include <mitkImageStatisticsContainer.h>
 #include <mitkDataNode.h>
+#include <mitkGenericIDRelationRule.h>
 
 namespace mitk
 {
   MITKIMAGESTATISTICS_EXPORT DataNode::Pointer CreateImageStatisticsNode(StatisticsContainer::Pointer statistic, const std::string& name = "statistics");
-  MITKIMAGESTATISTICS_EXPORT void CreateNodeRelations(mitk::BaseData::Pointer statistics, mitk::BaseData::Pointer image, mitk::BaseData::Pointer mask, mitk::BaseData::Pointer planarFigure);
+  MITKIMAGESTATISTICS_EXPORT mitk::GenericIDRelationRule::Pointer CreateNodeRelationImage(mitk::BaseData::Pointer statistics, mitk::BaseData::Pointer image);
+  MITKIMAGESTATISTICS_EXPORT mitk::GenericIDRelationRule::Pointer CreateNodeRelationMask(mitk::BaseData::Pointer statistics, mitk::BaseData::Pointer mask);
+  MITKIMAGESTATISTICS_EXPORT mitk::GenericIDRelationRule::Pointer CreateNodeRelationPlanarFigure(mitk::BaseData::Pointer statistics, mitk::BaseData::Pointer planarFigure);
 }
 #endif // MITKIMAGESTATISTICSCONTAINERNODEHELPER
 
diff --git a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp
index 1fe3d06cf0..194378fadd 100644
--- a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp
+++ b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp
@@ -1,292 +1,305 @@
 /*===================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center,
 Division of Medical and Biological Informatics.
 All rights reserved.
 
 This software is distributed WITHOUT ANY WARRANTY; without
 even the implied warranty of MERCHANTABILITY or FITNESS FOR
 A PARTICULAR PURPOSE.
 
 See LICENSE.txt or http://www.mitk.org for details.
 
 ===================================================================*/
 
 #include "QmitkImageStatisticsReloadedView.h"
 
 #include <utility>
 
 // berry includes
 #include <berryWorkbenchPlugin.h>
 #include <berryIQtStyleManager.h>
 
 #include <QmitkChartWidget.h>
 #include <mitkNodePredicateOr.h>
 #include <mitkStatusBar.h>
 #include <mitkIntensityProfile.h>
 #include <mitkImageStatisticsPredicateHelper.h>
 #include <mitkImageStatisticsContainerNodeHelper.h>
 #include <mitkNodePredicateAnd.h>
 
 #include <mitkPlanarFigureInteractor.h>
 
 const std::string QmitkImageStatisticsReloadedView::VIEW_ID = "org.mitk.views.imagestatisticsReloaded";
 
 QmitkImageStatisticsReloadedView::QmitkImageStatisticsReloadedView(QObject* /*parent*/, const char* /*name*/)
 {
   this->m_CalculationThread = new QmitkImageStatisticsCalculationJob();
 }
 
 QmitkImageStatisticsReloadedView::~QmitkImageStatisticsReloadedView()
 {
   if (m_selectedPlanarFigure)
     m_selectedPlanarFigure->RemoveObserver(m_PlanarFigureObserverTag);
 }
 
 void QmitkImageStatisticsReloadedView::CreateQtPartControl(QWidget *parent)
 {
   m_Controls.setupUi(parent);
   m_Controls.widget_histogram->SetTheme(this->GetColorTheme());
   m_Controls.widget_intensityProfile->SetTheme(this->GetColorTheme());
   m_Controls.groupBox_histogram->setVisible(true);
   m_Controls.groupBox_intensityProfile->setVisible(false);
   m_Controls.label_currentlyComputingStatistics->setVisible(false);
   PrepareDataStorageComboBoxes();
   CreateConnections();
 }
 
 void QmitkImageStatisticsReloadedView::CreateConnections()
 {
   connect(this->m_CalculationThread, &QmitkImageStatisticsCalculationJob::finished, this, &QmitkImageStatisticsReloadedView::OnStatisticsCalculationEnds, Qt::QueuedConnection);
 }
 
 void QmitkImageStatisticsReloadedView::PartClosed(const berry::IWorkbenchPartReference::Pointer& )
 {
 }
 
 void QmitkImageStatisticsReloadedView::FillStatisticsWidget(const std::vector<mitk::StatisticsContainer::ConstPointer>& statistics)
 {
   m_Controls.widget_statistics->Reset();
   m_Controls.widget_statistics->SetStatistics(statistics);
   m_Controls.widget_statistics->SetImageNodes({ m_selectedImageNode });
   if (m_selectedMaskNode) {
     m_Controls.widget_statistics->SetMaskNodes({ m_selectedMaskNode });
   }
   m_Controls.widget_statistics->setEnabled(true);
 }
 
 void QmitkImageStatisticsReloadedView::FillHistogramWidget(const std::vector<HistogramType::ConstPointer>& histogram, const std::vector<std::string>& dataLabels)
 {
   m_Controls.groupBox_histogram->setVisible(true);
   m_Controls.widget_histogram->SetTheme(this->GetColorTheme());
   m_Controls.widget_histogram->Reset();
   m_Controls.widget_histogram->SetHistogram(histogram.front(), dataLabels.front());
   connect(m_Controls.widget_histogram, &QmitkHistogramVisualizationWidget::RequestHistogramUpdate, this, &QmitkImageStatisticsReloadedView::OnRequestHistogramUpdate);
 }
 
 QmitkChartWidget::ChartStyle QmitkImageStatisticsReloadedView::GetColorTheme() const
 {
   ctkPluginContext* context = berry::WorkbenchPlugin::GetDefault()->GetPluginContext();
   ctkServiceReference styleManagerRef = context->getServiceReference<berry::IQtStyleManager>();
   if (styleManagerRef)
   {
     auto styleManager = context->getService<berry::IQtStyleManager>(styleManagerRef);
     if (styleManager->GetStyle().name == "Dark") {
       return QmitkChartWidget::ChartStyle::darkstyle;
     }
     else {
       return QmitkChartWidget::ChartStyle::lightstyle;
     }
   }
   return QmitkChartWidget::ChartStyle::darkstyle;
 }
 
 void QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged()
 {
   if (this->m_selectedPlanarFigure)
   {
     this->m_selectedPlanarFigure->RemoveObserver(this->m_PlanarFigureObserverTag);
     this->m_selectedPlanarFigure = nullptr;
   }
 
   m_selectedImageNode = m_Controls.imageSelector->GetSelectedNode();
   m_selectedMaskNode = m_Controls.maskImageSelector->GetSelectedNode();
 
   m_Controls.groupBox_intensityProfile->setVisible(false);
 
+  m_statisticContainerRules.clear();
+
   if (m_selectedImageNode != nullptr) {
     auto image = dynamic_cast<mitk::Image*>(m_selectedImageNode->GetData());
     mitk::Image::Pointer mask = nullptr;
     mitk::PlanarFigure::Pointer maskPlanarFigure = nullptr;
     if (m_selectedMaskNode != nullptr) {
       mask = dynamic_cast<mitk::Image*>(m_selectedMaskNode->GetData());
       if (mask == nullptr) {
         maskPlanarFigure = dynamic_cast<mitk::PlanarFigure*>(m_selectedMaskNode->GetData());
       }
     }
     if (mask) {
       //compute statistics with given mask
       CalculateStatistics(image, mask);
     }
     else if (maskPlanarFigure) {
       m_selectedPlanarFigure = maskPlanarFigure;
       ITKCommandType::Pointer changeListener = ITKCommandType::New();
       changeListener->SetCallbackFunction(this, &QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged);
       this->m_PlanarFigureObserverTag =
         m_selectedPlanarFigure->AddObserver(mitk::EndInteractionPlanarFigureEvent(), changeListener);
       if (!maskPlanarFigure->IsClosed()) {
         //compute line profile and display statistics for voxels on line
         auto intensityProfile = mitk::ComputeIntensityProfile(image, maskPlanarFigure);
         //Don't show histogram for intensity profiles
         m_Controls.groupBox_histogram->setVisible(false);
         m_Controls.groupBox_intensityProfile->setVisible(true);
         m_Controls.widget_intensityProfile->Reset();
         m_Controls.widget_intensityProfile->SetIntensityProfile(intensityProfile.GetPointer(), "Intensity Profile of " + m_selectedImageNode->GetName());
       }
       //for all planar figures: compute statistics with planarFigure as mask
       CalculateStatistics(image, maskPlanarFigure);
     }
     else {
       //compute statistics with image only
       CalculateStatistics(image);
     }
   }
   else {
     ResetGUI();
   }
 }
 
 void QmitkImageStatisticsReloadedView::ResetGUI()
 {
   m_Controls.widget_statistics->Reset();
   m_Controls.widget_statistics->setEnabled(false);
   m_Controls.widget_histogram->Reset();
   m_Controls.widget_histogram->setEnabled(false);
 }
 
 void QmitkImageStatisticsReloadedView::OnStatisticsCalculationEnds()
 {
   mitk::StatusBar::GetInstance()->Clear();
 
   if (this->m_CalculationThread->GetStatisticsUpdateSuccessFlag()) {
     auto statistics = m_CalculationThread->GetStatisticsData();
     for (auto& statistic : statistics) {
       auto statisticNonConst = statistic->Clone();
       auto statisticsNode = mitk::CreateImageStatisticsNode(statisticNonConst);
-      CreateNodeRelations(statisticNonConst.GetPointer(), m_CalculationThread->GetStatisticsImage().GetPointer(), m_CalculationThread->GetMaskImage().GetPointer(), m_CalculationThread->GetPlanarFigure().GetPointer());
+      auto imageRule = CreateNodeRelationImage(statisticNonConst.GetPointer(), m_CalculationThread->GetStatisticsImage().GetPointer());
+      m_statisticContainerRules.push_back(imageRule.GetPointer());
+
+      if (m_CalculationThread->GetMaskImage()) {
+        auto maskRule = CreateNodeRelationMask(statisticNonConst.GetPointer(), m_CalculationThread->GetMaskImage().GetPointer());
+        m_statisticContainerRules.push_back(maskRule.GetPointer());
+      }
+      if (m_CalculationThread->GetPlanarFigure()) {
+        auto planarFigureRule = CreateNodeRelationPlanarFigure(statisticNonConst.GetPointer(), m_CalculationThread->GetPlanarFigure().GetPointer());
+        m_statisticContainerRules.push_back(planarFigureRule.GetPointer());
+      }
+
       this->GetDataStorage()->Add(statisticsNode);
     }
 
     this->FillStatisticsWidget(statistics);
     if (!m_selectedPlanarFigure || m_selectedPlanarFigure->IsClosed()) {
       this->FillHistogramWidget({ m_CalculationThread->GetTimeStepHistogram() }, { m_selectedImageNode->GetName() });
     }
   }
   else {
     mitk::StatusBar::GetInstance()->DisplayErrorText(m_CalculationThread->GetLastErrorMessage().c_str());
     m_Controls.widget_histogram->setEnabled(false);
     m_Controls.widget_statistics->setEnabled(false);
   }
   m_Controls.label_currentlyComputingStatistics->setVisible(false);
 }
 
 void QmitkImageStatisticsReloadedView::OnRequestHistogramUpdate(unsigned int nBins)
 {
   m_CalculationThread->SetHistogramNBins(nBins);
   m_CalculationThread->start();
 }
 
 void QmitkImageStatisticsReloadedView::CalculateStatistics(mitk::Image::Pointer image, mitk::Image::Pointer mask)
 {
   CalculateStatisticsInternal(image, mask);
 
 }
 
 void QmitkImageStatisticsReloadedView::CalculateStatistics(mitk::Image::Pointer image, mitk::PlanarFigure::Pointer mask) {
   CalculateStatisticsInternal(image, nullptr, mask);
 }
 
 void QmitkImageStatisticsReloadedView::CalculateStatisticsInternal(mitk::Image::Pointer image, mitk::Image::Pointer mask, mitk::PlanarFigure::Pointer maskPlanarFigure)
 {
   this->m_StatisticsUpdatePending = true;
   this->m_CalculationThread->Initialize(image, mask, maskPlanarFigure);
 
   try
   {
     // Compute statistics
     this->m_CalculationThread->start();
     m_Controls.label_currentlyComputingStatistics->setVisible(true);
   }
   catch (const mitk::Exception& e)
   {
     mitk::StatusBar::GetInstance()->DisplayErrorText(e.GetDescription());
     this->m_StatisticsUpdatePending = false;
     m_Controls.label_currentlyComputingStatistics->setVisible(false);
   }
   catch (const std::runtime_error &e)
   {
     mitk::StatusBar::GetInstance()->DisplayErrorText(e.what());
     this->m_StatisticsUpdatePending = false;
     m_Controls.label_currentlyComputingStatistics->setVisible(false);
   }
   catch (const std::exception &e)
   {
     mitk::StatusBar::GetInstance()->DisplayErrorText(e.what());
     this->m_StatisticsUpdatePending = false;
     m_Controls.label_currentlyComputingStatistics->setVisible(false);
   }
 }
 
 void QmitkImageStatisticsReloadedView::OnSelectionChanged( berry::IWorkbenchPart::Pointer part, const QList<mitk::DataNode::Pointer> &nodes )
 {
     Q_UNUSED(part);
     Q_UNUSED(nodes);
 }
 
 void QmitkImageStatisticsReloadedView::PrepareDataStorageComboBoxes()
 {
   auto isPlanarFigurePredicate = mitk::GetImageStatisticsPlanarFigurePredicate();
   auto isMaskPredicate = mitk::GetImageStatisticsMaskPredicate();
   auto isImagePredicate = mitk::GetImageStatisticsImagePredicate();
   auto isMaskOrPlanarFigurePredicate = mitk::NodePredicateOr::New(isPlanarFigurePredicate, isMaskPredicate);
 
   m_Controls.imageSelector->SetDataStorage(GetDataStorage());
   m_Controls.imageSelector->SetPredicate(isImagePredicate);
 
   m_Controls.maskImageSelector->SetDataStorage(GetDataStorage());
   m_Controls.maskImageSelector->SetPredicate(isMaskOrPlanarFigurePredicate);
   m_Controls.maskImageSelector->SetZeroEntryText("<none>");
 }
 
 void QmitkImageStatisticsReloadedView::Activated()
 {
 }
 
 void QmitkImageStatisticsReloadedView::Deactivated()
 {
 }
 
 void QmitkImageStatisticsReloadedView::Visible()
 {
   connect(m_Controls.imageSelector, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged);
   connect(m_Controls.maskImageSelector, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged);
   m_selectedImageNode = m_Controls.imageSelector->GetSelectedNode();
   if (m_selectedImageNode) {
     OnImageOrMaskSelectorChanged();
   }
   else {
     ResetGUI();
   }
 }
 
 void QmitkImageStatisticsReloadedView::Hidden()
 {
   m_Controls.imageSelector->disconnect();
   m_Controls.maskImageSelector->disconnect();
 }
 
 void QmitkImageStatisticsReloadedView::SetFocus()
 {
 }