diff --git a/GUI/Model/Device/BeamDistributionItem.h b/GUI/Model/Device/BeamDistributionItem.h
index c5dae1fd31fc00aa460016cc7300be6eec69cb78..e85044eeaa64daf4e50d7b4b3ca3336568ccc255 100644
--- a/GUI/Model/Device/BeamDistributionItem.h
+++ b/GUI/Model/Device/BeamDistributionItem.h
@@ -40,7 +40,6 @@ public:
     template <typename T>
     T* setDistributionType();
     DistributionItem* currentDistribution() const { return m_distribution.currentItem(); }
-    void setDistribution(DistributionItem* d) { m_distribution.setCurrentItem(d); }
 
     const SelectionProperty<DistributionItemCatalog>& distribution() const {  return m_distribution; }
 
diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp
index 6e7d1c79dbff2700e47f21c2a6975cabffe33952..f59c2fcee873b0971d55fe4d7c0eb7132a988793 100644
--- a/GUI/Model/FromCore/ItemizeSample.cpp
+++ b/GUI/Model/FromCore/ItemizeSample.cpp
@@ -324,25 +324,25 @@ void setLayerItem(LayerItem* parent, const Layer* layer, const LayerInterface* t
 void setRotation(ItemWithParticles* parent, const IRotation* rotation)
 {
     if (!rotation)
-        parent->setRotation(nullptr);
+        parent->setCurrentRotation(nullptr);
     else if (const auto* r = dynamic_cast<const RotationX*>(rotation)) {
         auto* item = new XRotationItem();
         item->setAngle(Units::rad2deg(r->angle()));
-        parent->setRotation(item);
+        parent->setCurrentRotation(item);
     } else if (const auto* r = dynamic_cast<const RotationY*>(rotation)) {
         auto* item = new YRotationItem();
         item->setAngle(Units::rad2deg(r->angle()));
-        parent->setRotation(item);
+        parent->setCurrentRotation(item);
     } else if (const auto* r = dynamic_cast<const RotationZ*>(rotation)) {
         auto* item = new ZRotationItem();
         item->setAngle(Units::rad2deg(r->angle()));
-        parent->setRotation(item);
+        parent->setCurrentRotation(item);
     } else if (const auto* r = dynamic_cast<const RotationEuler*>(rotation)) {
         auto* item = new EulerRotationItem();
         item->setAlpha(Units::rad2deg(r->alpha()));
         item->setBeta(Units::rad2deg(r->beta()));
         item->setGamma(Units::rad2deg(r->gamma()));
-        parent->setRotation(item);
+        parent->setCurrentRotation(item);
     }
 }
 
diff --git a/GUI/Model/Sample/ItemWithParticles.h b/GUI/Model/Sample/ItemWithParticles.h
index 72cede8452f9f496baed37888fca3307d07a0c74..ebb9550762f619210e7a989219ba6c1fb3294666 100644
--- a/GUI/Model/Sample/ItemWithParticles.h
+++ b/GUI/Model/Sample/ItemWithParticles.h
@@ -37,11 +37,10 @@ public:
     const VectorProperty& position() const { return m_position; }
     void setPosition(const R3& position) { m_position.setR3(position); }
 
-    //! Returns selection descriptor for rotation methods.
-    SelectionDescriptor<RotationItem*> rotation() { return m_rotation; }
+    const SelectionProperty<RotationItemCatalog>& rotation() const { return m_rotation; }
 
     //! nullptr is allowed and sets to "no rotation"
-    void setRotation(RotationItem* p) { m_rotation.setCurrentItem(p); }
+    void setCurrentRotation(RotationItem* p) { m_rotation.setCurrentItem(p); }
 
     //! nullptr only if "no rotation". Can contain identity!
     std::unique_ptr<IRotation> createRotation() const;
diff --git a/GUI/View/SampleDesigner/CompoundForm.cpp b/GUI/View/SampleDesigner/CompoundForm.cpp
index 23ab4e5a883615e4b09c845d2ca931f560c3ed9a..9700eee4b2566de9134d8e2d4003f2911aa08d8a 100644
--- a/GUI/View/SampleDesigner/CompoundForm.cpp
+++ b/GUI/View/SampleDesigner/CompoundForm.cpp
@@ -33,7 +33,7 @@ CompoundForm::CompoundForm(QWidget* parent, CompoundItem* compositionItem,
     FormLayouter layouter(this, ec);
     layouter.setContentsMargins(30, 6, 0, 0);
     layouter.addVector(compositionItem->position(), false);
-    layouter.addSelection(compositionItem->rotation());
+    layouter.addSelection(compositionItem->rotation().m_descriptor);
     layouter.addValue(compositionItem->abundance());
 
     for (auto* particle : compositionItem->particles())
diff --git a/GUI/View/SampleDesigner/CoreAndShellForm.cpp b/GUI/View/SampleDesigner/CoreAndShellForm.cpp
index 6c38086b00cada5260040275707e1146a27f5477..3f84c77c50c2133261fb073174ef0eaa164a98cc 100644
--- a/GUI/View/SampleDesigner/CoreAndShellForm.cpp
+++ b/GUI/View/SampleDesigner/CoreAndShellForm.cpp
@@ -58,7 +58,7 @@ CoreAndShellForm::CoreAndShellForm(QWidget* parent, CoreAndShellItem* item,
     FormLayouter layouter(this, ec);
     layouter.setContentsMargins(30, 6, 0, 0);
     layouter.addVector(item->position(), false);
-    layouter.addSelection(item->rotation());
+    layouter.addSelection(item->rotation().m_descriptor);
     layouter.addValue(item->abundance());
 
     // - core
@@ -163,7 +163,7 @@ void CoreAndShellForm::createCoreWidgets()
 
         core.layouter->addGroupOfValues("Geometry", particle->formfactor()->geometryProperties());
         core.layouter->addVector(particle->position(), false);
-        core.layouter->addSelection(particle->rotation());
+        core.layouter->addSelection(particle->rotation().m_descriptor);
         // no abundance since this is handled in CoreShell itself!
     }
 
@@ -179,7 +179,7 @@ void CoreAndShellForm::createShellWidgets()
         groupTitle += " (" + formfactor + ")";
 
         shell.layouter->addGroupOfValues("Geometry", particle->formfactor()->geometryProperties());
-        shell.layouter->addSelection(particle->rotation());
+        shell.layouter->addSelection(particle->rotation().m_descriptor);
         // no position vector - not allowed in CoreShell
         // no abundance since this is handled in CoreShell itself!
     }
diff --git a/GUI/View/SampleDesigner/MesocrystalForm.cpp b/GUI/View/SampleDesigner/MesocrystalForm.cpp
index 2e35b64ccafc699788dfc3811d586b56e8b39684..a140299bd5610d3c44495f282516f36936745669 100644
--- a/GUI/View/SampleDesigner/MesocrystalForm.cpp
+++ b/GUI/View/SampleDesigner/MesocrystalForm.cpp
@@ -34,7 +34,7 @@ MesocrystalForm::MesocrystalForm(QWidget* parent, MesocrystalItem* item, SampleE
     m_layout = layouter.layout();
     layouter.setContentsMargins(30, 6, 0, 0);
     layouter.addVector(item->position(), false);
-    layouter.addSelection(item->rotation());
+    layouter.addSelection(item->rotation().m_descriptor);
     layouter.addValue(item->abundance());
     layouter.addVector(item->vectorA(), false);
     layouter.addVector(item->vectorB(), false);
diff --git a/GUI/View/SampleDesigner/ParticleForm.cpp b/GUI/View/SampleDesigner/ParticleForm.cpp
index 5a12035217fc51173af451d2adac89a9db7214b1..3a99b17cf785867930703af44473d4686899b952 100644
--- a/GUI/View/SampleDesigner/ParticleForm.cpp
+++ b/GUI/View/SampleDesigner/ParticleForm.cpp
@@ -33,7 +33,7 @@ ParticleForm::ParticleForm(QWidget* parent, ParticleItem* particleItem, bool all
     layouter.addRow("Material", new MaterialInplaceForm(this, particleItem, ec));
     layouter.addGroupOfValues("Geometry", particleItem->formfactor()->geometryProperties());
     layouter.addVector(particleItem->position(), false);
-    layouter.addSelection(particleItem->rotation());
+    layouter.addSelection(particleItem->rotation().m_descriptor);
     if (allowAbundance)
         layouter.addValue(particleItem->abundance());