diff --git a/GUI/Model/Descriptor/PolyItem.h b/GUI/Model/Descriptor/PolyItem.h
index d7828a8d7066d3e5ea5c1d00221e696a80009891..b1e56356c6ed5670e5b5d03c607fb7403229ad0b 100644
--- a/GUI/Model/Descriptor/PolyItem.h
+++ b/GUI/Model/Descriptor/PolyItem.h
@@ -26,7 +26,6 @@ public:
     void simpleInit(const QString& label, const QString& tooltip,
                     typename Catalog::Type currentType);
 
-    BaseItem* operator->() const { return m_item.get(); }
     BaseItem* certainItem() const { return m_item.get(); }
 
     void setCertainItem(BaseItem* t) { m_item.reset(t); }
diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp
index dce47cc318ca229cf6cee2cf7683e7c9614ec3f1..4bf62db56c117f915570aee2672d8c22f5d17d50 100644
--- a/GUI/Model/Detector/DetectorItem.cpp
+++ b/GUI/Model/Detector/DetectorItem.cpp
@@ -83,7 +83,7 @@ void DetectorItem::setMasks(MasksSet* item)
 
 std::unique_ptr<IResolutionFunction2D> DetectorItem::createResolutionFunction() const
 {
-    return m_resolution_function->createResolutionFunction();
+    return m_resolution_function.certainItem()->createResolutionFunction();
 }
 
 void DetectorItem::writeTo(QXmlStreamWriter* w) const
diff --git a/GUI/Model/Sample/InterferenceItems.cpp b/GUI/Model/Sample/InterferenceItems.cpp
index 10a7b7431e02c9770303538781ab87d325093b6d..c618bfa86e3b73faf6f913635caab7275800d624 100644
--- a/GUI/Model/Sample/InterferenceItems.cpp
+++ b/GUI/Model/Sample/InterferenceItems.cpp
@@ -83,7 +83,7 @@ std::unique_ptr<IInterference> Interference1DLatticeItem::createInterference() c
 {
     auto result = std::make_unique<Interference1DLattice>(m_length.dVal(),
                                                           Units::deg2rad(m_rotation_angle.dVal()));
-    result->setDecayFunction(*m_decay_function->createProfile());
+    result->setDecayFunction(*m_decay_function.certainItem()->createProfile());
     result->setPositionVariance(m_position_variance.dVal());
     return std::unique_ptr<IInterference>(result.release());
 }
@@ -164,7 +164,7 @@ std::unique_ptr<IInterference> Interference2DLatticeItem::createInterference() c
     std::unique_ptr<Interference2DLattice> result(
         new Interference2DLattice(*latticeItem->createLattice()));
 
-    result->setDecayFunction(*m_decay_function->createProfile());
+    result->setDecayFunction(*m_decay_function.certainItem()->createProfile());
     result->setIntegrationOverXi(xiIntegration());
     result->setPositionVariance(m_position_variance.dVal());
 
@@ -219,7 +219,8 @@ std::unique_ptr<IInterference> Interference2DParacrystalItem::createInterference
     result->setDampingLength(m_damping_length.dVal());
     result->setDomainSizes(m_domain_size1.dVal(), m_domain_size2.dVal());
     result->setIntegrationOverXi(xiIntegration());
-    result->setProbabilityDistributions(*m_pdf1->createProfile(), *m_pdf2->createProfile());
+    result->setProbabilityDistributions(*m_pdf1.certainItem()->createProfile(),
+                                        *m_pdf2.certainItem()->createProfile());
     result->setPositionVariance(m_position_variance.dVal());
     return std::unique_ptr<IInterference>(result.release());
 }
@@ -369,7 +370,7 @@ std::unique_ptr<IInterference> InterferenceRadialParacrystalItem::createInterfer
                                                                   m_damping_length.dVal());
     result->setDomainSize(m_domain_size.dVal());
     result->setKappa(m_kappa.dVal());
-    auto pdf = m_pdf->createProfile();
+    auto pdf = m_pdf.certainItem()->createProfile();
     result->setProbabilityDistribution(*pdf);
     result->setPositionVariance(m_position_variance.dVal());
     return std::unique_ptr<IInterference>(result.release());
diff --git a/GUI/Model/Sample/ItemWithParticles.cpp b/GUI/Model/Sample/ItemWithParticles.cpp
index 0ef665e3f02d6a4b2698cf7593e0959aa3441d06..e97abcb6b0a622a4943acf1285949841dfa710a5 100644
--- a/GUI/Model/Sample/ItemWithParticles.cpp
+++ b/GUI/Model/Sample/ItemWithParticles.cpp
@@ -39,7 +39,7 @@ std::unique_ptr<IRotation> ItemWithParticles::createRotation() const
 {
     if (!m_rotation.certainItem())
         return {};
-    return m_rotation->createRotation();
+    return m_rotation.certainItem()->createRotation();
 }
 
 void ItemWithParticles::writeTo(QXmlStreamWriter* w) const
diff --git a/GUI/Model/Sample/MesocrystalItem.cpp b/GUI/Model/Sample/MesocrystalItem.cpp
index 609c7c329d90b1ccc8fb597abc9ec77aca53f079..c03a0cf47a379e2adb2e4fa63e31b980c25cf777 100644
--- a/GUI/Model/Sample/MesocrystalItem.cpp
+++ b/GUI/Model/Sample/MesocrystalItem.cpp
@@ -146,7 +146,7 @@ std::unique_ptr<IParticle> MesocrystalItem::getBasis() const
 
 std::unique_ptr<IFormfactor> MesocrystalItem::getOuterShape() const
 {
-    return m_outer_shape->createFormfactor();
+    return m_outer_shape.certainItem()->createFormfactor();
 }
 
 std::vector<ItemWithParticles*> MesocrystalItem::containedItemsWithParticles() const
diff --git a/GUI/Model/Sample/ParticleItem.cpp b/GUI/Model/Sample/ParticleItem.cpp
index 5ac02f6a477e089b91f60120324488210d48dadb..3a286813b5add5e60360642323e884e1068206a4 100644
--- a/GUI/Model/Sample/ParticleItem.cpp
+++ b/GUI/Model/Sample/ParticleItem.cpp
@@ -75,7 +75,8 @@ std::unique_ptr<Particle> ParticleItem::createParticle() const
 {
     auto domainMaterial = materialItem()->createMaterial();
 
-    auto particle = std::make_unique<Particle>(*domainMaterial, *m_form_factor->createFormfactor());
+    auto particle = std::make_unique<Particle>(*domainMaterial,
+                                               *m_form_factor.certainItem()->createFormfactor());
     particle->setAbundance(abundance().dVal());
     if (auto r = createRotation(); r && !r->isIdentity())
         particle->rotate(*r);