diff --git a/Plugins/org.mitk.gui.qt.common/src/QmitkNodeSelectionPreferenceHelper.cpp b/Plugins/org.mitk.gui.qt.common/src/QmitkNodeSelectionPreferenceHelper.cpp
index 24c157539b..f80d85e67f 100644
--- a/Plugins/org.mitk.gui.qt.common/src/QmitkNodeSelectionPreferenceHelper.cpp
+++ b/Plugins/org.mitk.gui.qt.common/src/QmitkNodeSelectionPreferenceHelper.cpp
@@ -1,161 +1,191 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #include "QmitkNodeSelectionPreferenceHelper.h"
 
 #include <internal/QmitkNodeSelectionConstants.h>
 
 #include <berryIPreferencesService.h>
 
 #include <berryIPreferences.h>
 #include <berryIPreferencesService.h>
 #include <berryPlatform.h>
 
+#include <QmitkDataStorageSelectionHistoryInspector.h>
+#include <QmitkDataStorageFavoriteNodesInspector.h>
 
 #include "mitkExceptionMacro.h"
+#include "mitkDataStorageInspectorGenerator.h"
 
 void mitk::PutVisibleDataStorageInspectors(const VisibleDataStorageInspectorMapType &inspectors)
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
   berry::IPreferences::Pointer visNode =
     prefNode->Node(mitk::NodeSelectionConstants::VISIBLE_INSPECTORS_NODE_ID.c_str());
 
   visNode->RemoveNode();
   prefNode->Flush();
 
   // new empty preset node
   visNode = prefNode->Node(mitk::NodeSelectionConstants::VISIBLE_INSPECTORS_NODE_ID.c_str());
 
   // store map in new node
   for (const auto &inspector : inspectors)
   {
     std::ostringstream sstr;
     sstr << inspector.first;
     berry::IPreferences::Pointer aNode = visNode->Node(QString::fromStdString(sstr.str()));
 
     aNode->Put(mitk::NodeSelectionConstants::VISIBLE_INSPECTOR_ID.c_str(), inspector.second.c_str());
     aNode->Flush();
   }
 
   visNode->Flush();
 }
 
 mitk::VisibleDataStorageInspectorMapType mitk::GetVisibleDataStorageInspectors()
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
 
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
   berry::IPreferences::Pointer visNode =
     prefNode->Node(mitk::NodeSelectionConstants::VISIBLE_INSPECTORS_NODE_ID.c_str());
 
   typedef QStringList NamesType;
   NamesType names = visNode->ChildrenNames();
 
   VisibleDataStorageInspectorMapType visMap;
 
   if (!names.empty())
   {
     for (NamesType::const_iterator pos = names.begin(); pos != names.end(); ++pos)
     {
       berry::IPreferences::Pointer aNode = visNode->Node(*pos);
 
       if (aNode.IsNull())
       {
         mitkThrow() << "Error in preference interface. Cannot find preset node under given name. Name: "
                     << (*pos).toStdString();
       }
 
       std::istringstream isstr(pos->toStdString());
       unsigned int order = 0;
       isstr >> order;
 
       auto id = aNode->Get(mitk::NodeSelectionConstants::VISIBLE_INSPECTOR_ID.c_str(), "");
       if (id.isEmpty())
       {
         mitkThrow() << "Error in preference interface. ID of visible inspector is not set. Inspector position: "
                     << order;
       }
 
       visMap.insert(std::make_pair(order, id.toStdString()));
     }
   }
+
+  if (visMap.empty())
+  { //no visibility preferences set. Generate default
+    auto allProviders = mitk::DataStorageInspectorGenerator::GetProviders();
+
+    //fill inspector list
+    unsigned int pos = 0;
+    for (const auto& iter : allProviders)
+    {
+      if (iter.first != QmitkDataStorageFavoriteNodesInspector::INSPECTOR_ID() && iter.first != QmitkDataStorageSelectionHistoryInspector::INSPECTOR_ID())
+      {
+        visMap.insert(std::make_pair(pos, iter.first));
+        ++pos;
+      }
+    }
+  }
+
   return visMap;
 }
 
 mitk::DataStorageInspectorIDType mitk::GetPreferredDataStorageInspector()
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
 
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
 
   auto id = prefNode->Get(mitk::NodeSelectionConstants::PREFERRED_INSPECTOR_ID.c_str(), "");
 
   mitk::DataStorageInspectorIDType result = id.toStdString();
+
+  if (result.empty())
+  { //nothing set, deduce default preferred inspector
+    auto visibleInspectors = GetVisibleDataStorageInspectors();
+    if (!visibleInspectors.empty())
+    {
+      result = visibleInspectors.begin()->second;
+    }
+  }
+
   return result;
 }
 
 void mitk::PutPreferredDataStorageInspector(const DataStorageInspectorIDType &id)
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
 
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
 
   prefNode->Put(mitk::NodeSelectionConstants::PREFERRED_INSPECTOR_ID.c_str(), id.c_str());
   prefNode->Flush();
 }
 
 void mitk::PutShowFavoritesInspector(bool show)
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
 
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
 
   prefNode->PutBool(mitk::NodeSelectionConstants::SHOW_FAVORITE_INSPECTOR.c_str(), show);
   prefNode->Flush();
 }
 
 bool mitk::GetShowFavoritesInspector()
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
 
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
 
   return prefNode->GetBool(mitk::NodeSelectionConstants::SHOW_FAVORITE_INSPECTOR.c_str(), true);
 }
 
 void mitk::PutShowHistoryInspector(bool show)
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
 
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
 
   prefNode->PutBool(mitk::NodeSelectionConstants::SHOW_HISTORY_INSPECTOR.c_str(), show);
   prefNode->Flush();
 }
 
 bool mitk::GetShowHistoryInspector()
 {
   berry::IPreferencesService *prefService = berry::Platform::GetPreferencesService();
 
   berry::IPreferences::Pointer prefNode =
     prefService->GetSystemPreferences()->Node(mitk::NodeSelectionConstants::ROOT_PREFERENCE_NODE_ID.c_str());
 
   return prefNode->GetBool(mitk::NodeSelectionConstants::SHOW_HISTORY_INSPECTOR.c_str(), true);
 }
diff --git a/Plugins/org.mitk.gui.qt.common/src/internal/QmitkNodeSelectionPreferencePage.cpp b/Plugins/org.mitk.gui.qt.common/src/internal/QmitkNodeSelectionPreferencePage.cpp
index be25ed2846..62e9815bbd 100644
--- a/Plugins/org.mitk.gui.qt.common/src/internal/QmitkNodeSelectionPreferencePage.cpp
+++ b/Plugins/org.mitk.gui.qt.common/src/internal/QmitkNodeSelectionPreferencePage.cpp
@@ -1,221 +1,215 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 
 #include "QmitkNodeSelectionPreferencePage.h"
 
 #include "QmitkNodeSelectionPreferenceHelper.h"
 
 #include <QmitkDataStorageSelectionHistoryInspector.h>
 #include <QmitkDataStorageFavoriteNodesInspector.h>
 
 //-----------------------------------------------------------------------------
 QmitkNodeSelectionPreferencePage::QmitkNodeSelectionPreferencePage()
   : m_MainControl(nullptr), m_Controls(nullptr)
 {
 
 }
 
 
 //-----------------------------------------------------------------------------
 QmitkNodeSelectionPreferencePage::~QmitkNodeSelectionPreferencePage()
 {
   delete m_Controls;
 }
 
 
 //-----------------------------------------------------------------------------
 void QmitkNodeSelectionPreferencePage::Init(berry::IWorkbench::Pointer )
 {
 
 }
 
 
 //-----------------------------------------------------------------------------
 void QmitkNodeSelectionPreferencePage::CreateQtControl(QWidget* parent)
 {
   m_MainControl = new QWidget(parent);
   m_Controls = new Ui::QmitkNodeSelectionPreferencePage;
   m_Controls->setupUi( m_MainControl );
 
   connect(m_Controls->comboPreferred, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateWidgets()));
   connect(m_Controls->btnUp, SIGNAL(clicked(bool)), this, SLOT(MoveUp()));
   connect(m_Controls->btnDown, SIGNAL(clicked(bool)), this, SLOT(MoveDown()));
   connect(m_Controls->listInspectors, &QListWidget::itemSelectionChanged, this, &QmitkNodeSelectionPreferencePage::UpdateWidgets);
 
   this->Update();
 }
 
 
 //-----------------------------------------------------------------------------
 QWidget* QmitkNodeSelectionPreferencePage::GetQtControl() const
 {
   return m_MainControl;
 }
 
 //-----------------------------------------------------------------------------
 bool QmitkNodeSelectionPreferencePage::PerformOk()
 {
-  //store favorite
+  //store preferred
   auto id = m_Controls->comboPreferred->currentData().toString();
   mitk::PutPreferredDataStorageInspector(id.toStdString());
 
   //store visible
   mitk::VisibleDataStorageInspectorMapType visibles;
 
   unsigned int visiblePos = 0;
 
   for (int i = 0; i < m_Controls->listInspectors->count(); ++i)
   {
     auto item = m_Controls->listInspectors->item(i);
     if (item->checkState() == Qt::Checked)
     {
       visibles.insert(std::make_pair(visiblePos++, item->data(Qt::UserRole).toString().toStdString()));
     }
   }
   mitk::PutVisibleDataStorageInspectors(visibles);
   mitk::PutShowFavoritesInspector(m_Controls->checkShowFav->isChecked());
   mitk::PutShowHistoryInspector(m_Controls->checkShowHistory->isChecked());
 
   return true;
 }
 
 
 //-----------------------------------------------------------------------------
 void QmitkNodeSelectionPreferencePage::PerformCancel()
 {
 }
 
 
 //-----------------------------------------------------------------------------
 void QmitkNodeSelectionPreferencePage::Update()
 {
   m_Providers = mitk::DataStorageInspectorGenerator::GetProviders();
 
   auto visibleProviders = mitk::GetVisibleDataStorageInspectors();
   auto allProviders = mitk::DataStorageInspectorGenerator::GetProviders();
-  auto favorite = mitk::GetPreferredDataStorageInspector();
+  auto preferredInspectorID = mitk::GetPreferredDataStorageInspector();
 
-  auto finding = m_Providers.find(favorite);
-  if (finding == m_Providers.cend())
-  {
-    favorite = m_Providers.begin()->first;
-  }
-
-  //fill favorite combo
+  //fill preferred combo
   int index = 0;
   int currentIndex = 0;
   m_Controls->comboPreferred->clear();
   for (auto iter : m_Providers)
   {
-    m_Controls->comboPreferred->addItem(QString::fromStdString(iter.second->GetInspectorDisplayName()),QVariant::fromValue(QString::fromStdString(iter.first)));
-    if (iter.first == favorite)
+    m_Controls->comboPreferred->addItem(QString::fromStdString(iter.second->GetInspectorDisplayName()), QVariant::fromValue(QString::fromStdString(iter.first)));
+    if (iter.first == preferredInspectorID)
     {
       currentIndex = index;
     };
     ++index;
   }
   m_Controls->comboPreferred->setCurrentIndex(currentIndex);
 
   //fill inspector list
   m_Controls->listInspectors->clear();
   for (const auto iter : allProviders)
   {
     if (iter.first != QmitkDataStorageFavoriteNodesInspector::INSPECTOR_ID() && iter.first != QmitkDataStorageSelectionHistoryInspector::INSPECTOR_ID())
     {
       auto currentID = iter.first;
       QListWidgetItem* item = new QListWidgetItem;
       item->setText(QString::fromStdString(iter.second->GetInspectorDisplayName()));
       item->setData(Qt::UserRole, QVariant::fromValue(QString::fromStdString(currentID)));
       item->setToolTip(QString::fromStdString(iter.second->GetInspectorDescription()));
 
       auto finding = std::find_if(visibleProviders.cbegin(), visibleProviders.cend(), [&currentID](auto v) {return v.second == currentID; });
       if (finding == visibleProviders.cend())
       {
         item->setCheckState(Qt::Unchecked);
         m_Controls->listInspectors->addItem(item);
       }
       else
       {
         item->setCheckState(Qt::Checked);
         m_Controls->listInspectors->insertItem(finding->first, item);
       }
     }
   }
 
   m_Controls->checkShowFav->setChecked(mitk::GetShowFavoritesInspector());
   m_Controls->checkShowHistory->setChecked(mitk::GetShowHistoryInspector());
 
   this->UpdateWidgets();
 }
 
 void QmitkNodeSelectionPreferencePage::UpdateWidgets()
 {
   int currentIndex = m_Controls->listInspectors->currentRow();
   m_Controls->btnUp->setEnabled(!m_Controls->listInspectors->selectedItems().empty() && currentIndex > 0);
   m_Controls->btnDown->setEnabled(!m_Controls->listInspectors->selectedItems().empty() && currentIndex + 1 < m_Controls->listInspectors->count());
 
   for (int i = 0; i < m_Controls->listInspectors->count(); ++i)
   {
     auto item = m_Controls->listInspectors->item(i);
     if (item->data(Qt::UserRole).toString() == m_Controls->comboPreferred->currentData().toString())
     {
       //preferred inspector is always visible.
       item->setCheckState(Qt::Checked);
       item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled);
     }
     else
     {
       item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsUserCheckable);
     }
   }
 
   auto isFavSelected =
     QmitkDataStorageFavoriteNodesInspector::INSPECTOR_ID() == m_Controls->comboPreferred->currentData().toString();
   if (isFavSelected)
   {
     m_Controls->checkShowFav->setChecked(true);
   }
   m_Controls->checkShowFav->setEnabled(!isFavSelected);
 
   auto isHistorySelected =
     QmitkDataStorageSelectionHistoryInspector::INSPECTOR_ID() == m_Controls->comboPreferred->currentData().toString();
   if (isHistorySelected)
   {
     m_Controls->checkShowHistory->setChecked(true);
   }
   m_Controls->checkShowHistory->setEnabled(!isHistorySelected);
 }
 
 void QmitkNodeSelectionPreferencePage::MoveDown()
 {
   int currentIndex = m_Controls->listInspectors->currentRow();
   if (currentIndex+1 < m_Controls->listInspectors->count())
   {
     QListWidgetItem *currentItem = m_Controls->listInspectors->takeItem(currentIndex);
     m_Controls->listInspectors->insertItem(currentIndex + 1, currentItem);
     m_Controls->listInspectors->setCurrentRow(currentIndex + 1);
   }
   this->UpdateWidgets();
 }
 
 void QmitkNodeSelectionPreferencePage::MoveUp()
 {
   int currentIndex = m_Controls->listInspectors->currentRow();
   if (currentIndex > 0)
   {
     QListWidgetItem *currentItem = m_Controls->listInspectors->takeItem(currentIndex);
     m_Controls->listInspectors->insertItem(currentIndex - 1, currentItem);
     m_Controls->listInspectors->setCurrentRow(currentIndex - 1);
   }
   this->UpdateWidgets();
 }