diff --git a/Plugins/org.mitk.gui.qt.pointsetinteraction/files.cmake b/Plugins/org.mitk.gui.qt.pointsetinteraction/files.cmake
index 10c9760fe6..0255405a6f 100644
--- a/Plugins/org.mitk.gui.qt.pointsetinteraction/files.cmake
+++ b/Plugins/org.mitk.gui.qt.pointsetinteraction/files.cmake
@@ -1,35 +1,31 @@
-set(SRC_CPP_FILES
-
-)
-
 set(INTERNAL_CPP_FILES
   QmitkPointSetInteractionView.cpp
   mitkPluginActivator.cpp
 )
 
 set(UI_FILES
   src/internal/QmitkPointSetInteractionViewControls.ui
 )
 
 set(MOC_H_FILES
   src/internal/mitkPluginActivator.h
   src/internal/QmitkPointSetInteractionView.h
 )
 
 set(CACHED_RESOURCE_FILES
   resources/pointset_interaction.svg
   plugin.xml
 )
 
 set(QRC_FILES
   resources/QmitkPointSetInteractionView.qrc
 )
 
 foreach(file ${SRC_CPP_FILES})
   set(CPP_FILES ${CPP_FILES} src/${file})
 endforeach(file ${SRC_CPP_FILES})
 
 foreach(file ${INTERNAL_CPP_FILES})
   set(CPP_FILES ${CPP_FILES} src/internal/${file})
 endforeach(file ${INTERNAL_CPP_FILES})
 
diff --git a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.cmake b/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.cmake
deleted file mode 100755
index 3734c47189..0000000000
--- a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.cmake
+++ /dev/null
@@ -1,11 +0,0 @@
-# QmitkPointSetInteractionView
-
-message(STATUS "processing QmitkPointSetInteractionView.cmake")
-message(STATUS "APPMOD_CPP before: ${APPMOD_CPP}")
-
-set( APPMOD_H ${APPMOD_H} QmitkPointSetInteractionView.h )
-set( APPMOD_MOC_H ${APPMOD_MOC_H} QmitkPointSetInteractionView.h )
-set( APPMOD_CPP ${APPMOD_CPP} QmitkPointSetInteractionView.cpp )
-set(APPMOD_FORMS ${APPMOD_FORMS} QmitkPointSetInteractionControls.ui)
-message(STATUS "APPMOD_CPP after: ${APPMOD_CPP}")
-
diff --git a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.cpp b/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.cpp
index 1c1d18734f..d63cf1e9d6 100755
--- a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.cpp
+++ b/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.cpp
@@ -1,147 +1,127 @@
 /*============================================================================
 
 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.
 
 ============================================================================*/
 
-// Qmitk related includes
 #include "QmitkPointSetInteractionView.h"
-#include "ui_QmitkPointSetInteractionViewControls.h"
 
-#include <berryIWorkbenchWindow.h>
-#include <berryISelectionService.h>
 #include <QInputDialog>
 #include <QLineEdit>
 
-#include <mitkDataNodeObject.h>
-#include <mitkDataNodeSelection.h>
-#include <mitkProperties.h>
+#include <mitkNodePredicateDataType.h>
+#include <mitkNodePredicateAnd.h>
+#include <mitkNodePredicateNot.h>
+#include <mitkNodePredicateProperty.h>
 
 #include <QmitkPointListWidget.h>
 #include <QmitkRenderWindow.h>
 
 const std::string QmitkPointSetInteractionView::VIEW_ID = "org.mitk.views.pointsetinteraction";
 
-
-QmitkPointSetInteractionView::QmitkPointSetInteractionView( QObject* /*parent*/ )
-: m_Controls(nullptr)
+QmitkPointSetInteractionView::QmitkPointSetInteractionView()
+  : m_Controls(nullptr)
 {
 }
 
 QmitkPointSetInteractionView::~QmitkPointSetInteractionView()
 {
 }
 
-void QmitkPointSetInteractionView::CreateQtPartControl( QWidget *parent )
+void QmitkPointSetInteractionView::CreateQtPartControl(QWidget *parent)
 {
-  m_Controls = new Ui::QmitkPointSetInteractionControls;
+  m_Controls = new Ui::QmitkPointSetInteractionViewControls;
   m_Controls->setupUi(parent);
-  m_Controls->m_PbAddPointSet->connect( m_Controls->m_PbAddPointSet, SIGNAL( clicked() )
-    , this, SLOT( OnAddPointSetClicked() ) );
 
-    if (mitk::IRenderWindowPart *renderWindowPart = GetRenderWindowPart())
+  m_Controls->selectedPointSetWidget->SetDataStorage(GetDataStorage());
+  m_Controls->selectedPointSetWidget->SetNodePredicate(mitk::NodePredicateAnd::New(
+    mitk::TNodePredicateDataType<mitk::PointSet>::New(),
+    mitk::NodePredicateNot::New(mitk::NodePredicateProperty::New("helper object"))));
+
+  m_Controls->selectedPointSetWidget->SetSelectionIsOptional(true);
+  m_Controls->selectedPointSetWidget->SetAutoSelectNewNodes(true);
+  m_Controls->selectedPointSetWidget->SetEmptyInfo(QString("Please select a point set"));
+  m_Controls->selectedPointSetWidget->SetPopUpTitel(QString("Select point set"));
+
+  connect(m_Controls->selectedPointSetWidget, &QmitkSingleNodeSelectionWidget::CurrentSelectionChanged,
+    this, &QmitkPointSetInteractionView::OnCurrentSelectionChanged);
+
+  connect(m_Controls->addPointSetPushButton, &QPushButton::clicked,
+    this, &QmitkPointSetInteractionView::OnAddPointSetClicked);
+
+  if (mitk::IRenderWindowPart* renderWindowPart = GetRenderWindowPart())
   {
-    // let the point set widget know about the render window part (crosshair updates)
     RenderWindowPartActivated(renderWindowPart);
   }
 }
 
 void QmitkPointSetInteractionView::SetFocus()
 {
-  m_Controls->m_PbAddPointSet->setFocus();
-}
-
-void QmitkPointSetInteractionView::OnAddPointSetClicked()
-{
-  //Ask for the name of the point set
-  bool ok = false;
-  QString name = QInputDialog::getText( QApplication::activeWindow()
-    , tr("Add point set..."), tr("Enter name for the new point set"), QLineEdit::Normal, tr("PointSet"), &ok );
-  if ( ! ok || name.isEmpty() )
-    return;
-
-  //
-  //Create a new empty pointset
-  //
-  mitk::PointSet::Pointer pointSet = mitk::PointSet::New();
-  //
-  // Create a new data tree node
-  //
-  mitk::DataNode::Pointer pointSetNode = mitk::DataNode::New();
-  //
-  // fill the data tree node with the appropriate information
-  //
-  pointSetNode->SetData( pointSet );
-  pointSetNode->SetProperty( "name", mitk::StringProperty::New( name.toStdString() ) );
-  pointSetNode->SetProperty( "opacity", mitk::FloatProperty::New( 1 ) );
-  pointSetNode->SetColor( 1.0, 1.0, 0.0 );
-  //
-  // add the node to the ds
-  //
-  this->GetDataStorage()->Add(pointSetNode);
-
-  // make new selection and emulate selection for this
-  berry::IWorkbenchPart::Pointer nullPart;
-  QList<mitk::DataNode::Pointer> selection;
-  selection.push_back(pointSetNode);
-  this->OnSelectionChanged(nullPart, selection);
+  m_Controls->addPointSetPushButton->setFocus();
 }
 
-void QmitkPointSetInteractionView::OnSelectionChanged(berry::IWorkbenchPart::Pointer, const QList<mitk::DataNode::Pointer>& nodes)
+void QmitkPointSetInteractionView::OnCurrentSelectionChanged(QList<mitk::DataNode::Pointer> nodes)
 {
-  mitk::DataNode::Pointer selectedNode;
-
-  if(!nodes.empty())
-    selectedNode = nodes.front();
-
-  mitk::PointSet::Pointer pointSet;
-
-  if(selectedNode.IsNotNull())
-    pointSet = dynamic_cast<mitk::PointSet*>(selectedNode->GetData());
-
-  if (pointSet.IsNotNull())
+  if (nodes.empty() || nodes.front().IsNull())
   {
-    m_SelectedPointSetNode = selectedNode;
-    m_Controls->m_CurrentPointSetLabel->setText(QString::fromStdString(selectedNode->GetName()));
-    m_Controls->m_PointListWidget->SetPointSetNode(selectedNode);
+    m_Controls->poinSetListWidget->SetPointSetNode(nullptr);
+    return;
   }
-  else
+
+  auto selectedPointSet = dynamic_cast<mitk::PointSet*>(nodes.front()->GetData());
+  if (nullptr == selectedPointSet)
   {
-    m_Controls->m_CurrentPointSetLabel->setText(tr("None"));
-    m_Controls->m_PointListWidget->SetPointSetNode(nullptr);
+    m_Controls->poinSetListWidget->SetPointSetNode(nullptr);
+    return;
   }
+
+  m_Controls->poinSetListWidget->SetPointSetNode(nodes.front());
 }
 
-void QmitkPointSetInteractionView::NodeChanged( const mitk::DataNode* node )
+void QmitkPointSetInteractionView::RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart)
 {
-  if(node == m_SelectedPointSetNode && m_Controls->m_CurrentPointSetLabel->text().toStdString() != node->GetName())
+  if (nullptr != m_Controls)
   {
-    m_Controls->m_CurrentPointSetLabel->setText(QString::fromStdString(node->GetName()));
+    m_Controls->poinSetListWidget->AddSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController());
+    m_Controls->poinSetListWidget->AddSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController());
+    m_Controls->poinSetListWidget->AddSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController());
   }
 }
 
-void QmitkPointSetInteractionView::RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart)
+void QmitkPointSetInteractionView::RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart)
 {
-  if(m_Controls)
+  if (nullptr != m_Controls)
   {
-    m_Controls->m_PointListWidget->AddSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController());
-    m_Controls->m_PointListWidget->AddSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController());
-    m_Controls->m_PointListWidget->AddSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController());
+    m_Controls->poinSetListWidget->RemoveSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController());
+    m_Controls->poinSetListWidget->RemoveSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController());
+    m_Controls->poinSetListWidget->RemoveSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController());
   }
 }
 
-void QmitkPointSetInteractionView::RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart)
+void QmitkPointSetInteractionView::OnAddPointSetClicked()
 {
-  if(m_Controls)
+  // ask for the name of the point set
+  bool ok = false;
+  QString name = QInputDialog::getText(QApplication::activeWindow(),
+    tr("Add point set..."), tr("Enter name for the new point set"), QLineEdit::Normal, tr("PointSet"), &ok);
+  if (!ok || name.isEmpty())
   {
-    m_Controls->m_PointListWidget->RemoveSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController());
-    m_Controls->m_PointListWidget->RemoveSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController());
-    m_Controls->m_PointListWidget->RemoveSliceNavigationController(renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController());
+    return;
   }
+
+  mitk::PointSet::Pointer pointSet = mitk::PointSet::New();
+  mitk::DataNode::Pointer pointSetNode = mitk::DataNode::New();
+  pointSetNode->SetData(pointSet);
+  pointSetNode->SetProperty("name", mitk::StringProperty::New(name.toStdString()));
+  pointSetNode->SetProperty("opacity", mitk::FloatProperty::New(1));
+  pointSetNode->SetColor(1.0, 1.0, 0.0);
+  this->GetDataStorage()->Add(pointSetNode);
+
+  m_Controls->selectedPointSetWidget->SetCurrentSelectedNode(pointSetNode);
 }
diff --git a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.h b/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.h
index 2087d208e8..769d6dc3ab 100755
--- a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.h
+++ b/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionView.h
@@ -1,59 +1,61 @@
 /*============================================================================
 
 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.
 
 ============================================================================*/
 
-#if !defined(QmitkPointSetInteraction_H__INCLUDED)
-#define QmitkPointSetInteraction_H__INCLUDED
+#ifndef QMITKPOINTSETINTERACTIONVIEW_H
+#define QMITKPOINTSETINTERACTIONVIEW_H
 
-#include <berryISelectionListener.h>
-#include <QmitkAbstractView.h>
-#include <mitkILifecycleAwarePart.h>
-#include <mitkIRenderWindowPartListener.h>
-#include <mitkWeakPointer.h>
+#include "ui_QmitkPointSetInteractionViewControls.h"
+
+// mitk core
 #include <mitkDataNode.h>
 
-namespace Ui
-{
-class QmitkPointSetInteractionControls;
-};
+// org mitk gui common plugin
+#include <mitkIRenderWindowPartListener.h>
+
+// org mitk gui qt common plugin
+#include <QmitkAbstractView.h>
 
-/*!
-\brief QmitkPointSetInteractionView
+/**
+* @brief
+*
+*
 */
 class QmitkPointSetInteractionView : public QmitkAbstractView, public mitk::IRenderWindowPartListener
 {
   Q_OBJECT
 
 public:
+
   static const std::string VIEW_ID;
 
-  QmitkPointSetInteractionView(QObject *parent=nullptr);
+  QmitkPointSetInteractionView();
   ~QmitkPointSetInteractionView() override;
 
-
-  void CreateQtPartControl(QWidget *parent) override;
-
-  ///
-  /// Sets the focus to an internal widget.
-  ///
   void SetFocus() override;
 
-  void OnSelectionChanged(berry::IWorkbenchPart::Pointer part, const QList<mitk::DataNode::Pointer>& nodes) override;
-  void NodeChanged(const mitk::DataNode* node) override;
   void RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart) override;
   void RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart) override;
-protected slots:
+
+private Q_SLOT:
+
+  void OnCurrentSelectionChanged(QList<mitk::DataNode::Pointer> nodes);
   void OnAddPointSetClicked();
-protected:
-  Ui::QmitkPointSetInteractionControls * m_Controls;
-  mitk::WeakPointer<mitk::DataNode> m_SelectedPointSetNode;
+
+private:
+
+  void CreateQtPartControl(QWidget *parent) override;
+
+  Ui::QmitkPointSetInteractionViewControls* m_Controls;
+
 };
-#endif // !defined(QmitkPointSetInteraction_H__INCLUDED)
+
+#endif // QMITKPOINTSETINTERACTIONVIEW_H
diff --git a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionViewControls.ui b/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionViewControls.ui
index 9f398951c2..e25b3ed02b 100755
--- a/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionViewControls.ui
+++ b/Plugins/org.mitk.gui.qt.pointsetinteraction/src/internal/QmitkPointSetInteractionViewControls.ui
@@ -1,179 +1,91 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <class>QmitkPointSetInteractionControls</class>
- <widget class="QWidget" name="QmitkPointSetInteractionControls">
+ <class>QmitkPointSetInteractionViewControls</class>
+ <widget class="QWidget" name="QmitkPointSetInteractionViewControls">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>376</width>
-    <height>580</height>
+    <width>300</width>
+    <height>600</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>0</width>
     <height>0</height>
    </size>
   </property>
   <property name="windowTitle">
-   <string>QmitkPointSetInteractionView</string>
+   <string>PointSet Interaction</string>
   </property>
   <layout class="QVBoxLayout">
-   <property name="spacing">
-    <number>6</number>
-   </property>
-   <property name="leftMargin">
-    <number>9</number>
-   </property>
-   <property name="topMargin">
-    <number>9</number>
-   </property>
-   <property name="rightMargin">
-    <number>9</number>
-   </property>
-   <property name="bottomMargin">
-    <number>9</number>
-   </property>
    <item>
-    <layout class="QHBoxLayout">
-     <property name="spacing">
-      <number>2</number>
-     </property>
-     <property name="leftMargin">
-      <number>2</number>
-     </property>
-     <property name="topMargin">
-      <number>2</number>
-     </property>
-     <property name="rightMargin">
-      <number>2</number>
-     </property>
-     <property name="bottomMargin">
-      <number>2</number>
-     </property>
-     <item>
-      <widget class="QLabel" name="label">
-       <property name="text">
-        <string>Selected point set:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLabel" name="m_CurrentPointSetLabel">
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="selectedPointSetLabel">
        <property name="text">
-        <string>none</string>
+        <string>Selected point set</string>
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QVBoxLayout">
-     <property name="spacing">
-      <number>2</number>
-     </property>
-     <property name="leftMargin">
-      <number>2</number>
-     </property>
-     <property name="topMargin">
-      <number>2</number>
-     </property>
-     <property name="rightMargin">
-      <number>2</number>
-     </property>
-     <property name="bottomMargin">
-      <number>2</number>
-     </property>
-     <item>
-      <widget class="QPushButton" name="m_PbAddPointSet">
+     <item row="0" column="1">
+      <widget class="QmitkSingleNodeSelectionWidget" name="selectedPointSetWidget" native="true">
        <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+        <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
+       <property name="minimumSize">
+        <size>
+         <width>0</width>
+         <height>40</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" colspan="2">
+      <widget class="QPushButton" name="addPointSetPushButton">
        <property name="text">
         <string>Add new point set</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
-     <property name="font">
-      <font>
-       <weight>50</weight>
-       <italic>false</italic>
-       <bold>false</bold>
-      </font>
-     </property>
      <property name="title">
       <string>Current pointset</string>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
-      <property name="spacing">
-       <number>2</number>
-      </property>
-      <property name="leftMargin">
-       <number>2</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>2</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
       <item>
-       <widget class="QmitkPointListWidget" name="m_PointListWidget" native="true">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-       </widget>
+       <widget class="QmitkPointListWidget" name="poinSetListWidget" native="true"/>
       </item>
      </layout>
     </widget>
    </item>
-   <item>
-    <spacer name="verticalSpacer">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>40</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
   </layout>
  </widget>
- <layoutdefault spacing="6" margin="11"/>
  <customwidgets>
+  <customwidget>
+   <class>QmitkSingleNodeSelectionWidget</class>
+   <extends>QWidget</extends>
+   <header location="global">QmitkSingleNodeSelectionWidget.h</header>
+  </customwidget>
   <customwidget>
    <class>QmitkPointListWidget</class>
    <extends>QWidget</extends>
    <header location="global">QmitkPointListWidget.h</header>
   </customwidget>
  </customwidgets>
- <includes>
-  <include location="global">mitkDataNode.h</include>
-  <include location="global">mitkPointSet.h</include>
- </includes>
  <resources/>
  <connections/>
 </ui>