diff --git a/GUI/Model/Device/AxesItems.h b/GUI/Model/Device/AxesItems.h
index 909b4f66bf9539640a4118e5b79568b45d832fe7..fbc3120eb02e7cc007f8e02e3b205e8dfb6c06f4 100644
--- a/GUI/Model/Device/AxesItems.h
+++ b/GUI/Model/Device/AxesItems.h
@@ -33,28 +33,18 @@ public:
 public:
     virtual std::unique_ptr<IAxis> createAxis(double scale) const;
 
-    // bins
-
     int binCount() const;
     void setBinCount(size_t value);
 
-    // min
-
     double min() const;
     void setMin(double value);
 
-    // max
-
     double max() const;
     void setMax(double value);
 
-    // title
-
     QString title() const;
     void setTitle(const QString& title);
 
-    // visibility
-
     bool isVisible() const;
     void setVisible(bool b);
 
diff --git a/GUI/Model/Device/BeamDistributionItem.h b/GUI/Model/Device/BeamDistributionItem.h
index c4a8c7c5a65519255a196e9c77388bfe6f72a209..6b55e9dba8ba252c62d160e3d37f7ffd7ec12d33 100644
--- a/GUI/Model/Device/BeamDistributionItem.h
+++ b/GUI/Model/Device/BeamDistributionItem.h
@@ -39,9 +39,9 @@ public:
     virtual double scaleFactor() const;
 
     template <typename T>
-    T* setDistributionType();
+    T* setDistributionItemType();
     DistributionItem* distributionItem() const { return m_distribution.currentItem(); }
-    SelectionProperty<DistributionItemCatalog>& distribution() { return m_distribution; }
+    SelectionProperty<DistributionItemCatalog>& distributionSelection() { return m_distribution; }
 
 protected:
     virtual std::unique_ptr<IDistribution1D> createDistribution1D() const;
@@ -50,7 +50,7 @@ protected:
 };
 
 template <typename T>
-T* BeamDistributionItem::setDistributionType()
+T* BeamDistributionItem::setDistributionItemType()
 {
     m_distribution.setCurrentItem<T>();
     return dynamic_cast<T*>(m_distribution.currentItem());
diff --git a/GUI/Model/Device/BeamItems.cpp b/GUI/Model/Device/BeamItems.cpp
index 1f3384013573419758441af830424916610d0faa..3885097b1cba37e8a0428dae1b2cc3128dd4eac4 100644
--- a/GUI/Model/Device/BeamItems.cpp
+++ b/GUI/Model/Device/BeamItems.cpp
@@ -144,7 +144,7 @@ BeamDistributionItem* BeamItem::inclinationAngleItem() const
     return m_inclinationAngleItem.get();
 }
 
-double BeamItem::getAzimuthalAngle() const
+double BeamItem::azimuthalAngle() const
 {
     return m_azimuthalAngleItem->azimuthalAngle();
 }
@@ -163,7 +163,7 @@ std::shared_ptr<Beam> BeamItem::createBeam() const
 {
     double lambda = wavelength();
     double inclination_angle = Units::deg2rad(getInclinationAngle());
-    double azimuthal_angle = Units::deg2rad(getAzimuthalAngle());
+    double azimuthal_angle = Units::deg2rad(azimuthalAngle());
 
     auto result =
         std::make_shared<Beam>(intensity(), lambda, Direction(inclination_angle, azimuthal_angle));
@@ -249,9 +249,9 @@ SpecularBeamInclinationItem* SpecularBeamItem::inclinationAngleItem() const
     return dynamic_cast<SpecularBeamInclinationItem*>(BeamItem::inclinationAngleItem());
 }
 
-BasicAxisItem* SpecularBeamItem::inclinationAxis() const
+BasicAxisItem* SpecularBeamItem::inclinationAxisItem() const
 {
-    return inclinationAngleItem()->alphaAxis();
+    return inclinationAngleItem()->alphaAxisItem();
 }
 
 void SpecularBeamItem::setGaussianFootprint(double value)
@@ -278,7 +278,7 @@ void SpecularBeamItem::updateToData(const IAxis& axis, QString units)
 
 void SpecularBeamItem::updateWavelength()
 {
-    auto* item = inclinationAngleItem()->alphaAxis();
+    auto* item = inclinationAngleItem()->alphaAxisItem();
     auto* wavelength = dynamic_cast<SpecularBeamWavelengthItem*>(wavelengthItem());
     if (auto* pointwiseAxis = dynamic_cast<PointwiseAxisItem*>(item)) {
         const auto* axis = pointwiseAxis->axis();
diff --git a/GUI/Model/Device/BeamItems.h b/GUI/Model/Device/BeamItems.h
index 87c576bce2c8b28b6c4882324ecc5441d395ad75..a8f941b5eed8e324b6b2075fb2ff5282db683ef6 100644
--- a/GUI/Model/Device/BeamItems.h
+++ b/GUI/Model/Device/BeamItems.h
@@ -49,7 +49,7 @@ public:
     virtual void setInclinationAngle(double value);
     virtual BeamDistributionItem* inclinationAngleItem() const;
 
-    double getAzimuthalAngle() const;
+    double azimuthalAngle() const;
     void setAzimuthalAngle(double value);
     BeamAzimuthalAngleItem* azimuthalAngleItem() const;
 
@@ -80,9 +80,9 @@ public:
     double getInclinationAngle() const override;
     void setInclinationAngle(double value) override;
     SpecularBeamInclinationItem* inclinationAngleItem() const override;
-    BasicAxisItem* inclinationAxis() const;
+    BasicAxisItem* inclinationAxisItem() const;
 
-    SelectionProperty<FootprintItemCatalog>& footprint() { return m_footprint; }
+    SelectionProperty<FootprintItemCatalog>& footprintSelection() { return m_footprint; }
 
     void setGaussianFootprint(double value);
     void setSquareFootprint(double value);
diff --git a/GUI/Model/Device/DetectorItems.cpp b/GUI/Model/Device/DetectorItems.cpp
index fdf6dc0ad860a55fdc2e79c33283042800a6cb23..b82d8fb43b15aa52c4a18701e6085121a9e5cbc3 100644
--- a/GUI/Model/Device/DetectorItems.cpp
+++ b/GUI/Model/Device/DetectorItems.cpp
@@ -90,7 +90,7 @@ MaskItems& DetectorItem::maskItems()
     return m_maskItems;
 }
 
-SelectionProperty<ResolutionFunctionItemCatalog>& DetectorItem::resolutionFunction()
+SelectionProperty<ResolutionFunctionItemCatalog>& DetectorItem::resolutionFunctionSelection()
 {
     return m_resolutionFunction;
 }
diff --git a/GUI/Model/Device/DetectorItems.h b/GUI/Model/Device/DetectorItems.h
index 57b07c52a351313d3ad8328b839b55edd8c4e1f2..8a21eaec41775dac6b4d5ab6684461e8e7f4866d 100644
--- a/GUI/Model/Device/DetectorItems.h
+++ b/GUI/Model/Device/DetectorItems.h
@@ -51,7 +51,7 @@ public:
     void importMasks(const MaskContainerItem* maskContainer);
     MaskItems& maskItems();
 
-    SelectionProperty<ResolutionFunctionItemCatalog>& resolutionFunction();
+    SelectionProperty<ResolutionFunctionItemCatalog>& resolutionFunctionSelection();
 
     template <typename T>
     T* setResolutionFunctionType();
diff --git a/GUI/Model/Device/InstrumentCollection.cpp b/GUI/Model/Device/InstrumentCollection.cpp
index 4ee4cf022e43a261380190b6dcd4617bb7538665..7e7c9d030fcb2b4e59f15c92666db031adc9f1ef 100644
--- a/GUI/Model/Device/InstrumentCollection.cpp
+++ b/GUI/Model/Device/InstrumentCollection.cpp
@@ -69,15 +69,15 @@ void InstrumentCollection::emplace_back(InstrumentItem* item)
     addEmptyInstrumentSelection().setCurrentItem(item);
 }
 
-InstrumentItem* InstrumentCollection::insertCopy(const InstrumentItem& source)
+InstrumentItem* InstrumentCollection::insertItemCopy(const InstrumentItem& source)
 {
-    auto* copy = source.createCopy();
+    auto* copy = source.createItemCopy();
     copy->setId(QUuid::createUuid().toString());
     emplace_back(copy);
     return copy;
 }
 
-QVector<InstrumentItem*> InstrumentCollection::collectedItems() const
+QVector<InstrumentItem*> InstrumentCollection::instrumentItems() const
 {
     QVector<InstrumentItem*> output;
     for (const auto& sel : m_instruments)
@@ -88,7 +88,7 @@ QVector<InstrumentItem*> InstrumentCollection::collectedItems() const
 QStringList InstrumentCollection::instrumentNames() const
 {
     QStringList existingNames;
-    for (const auto* item : collectedItems())
+    for (const auto* item : instrumentItems())
         existingNames << item->instrumentName();
     return existingNames;
 }
@@ -109,7 +109,7 @@ QVector<InstrumentItem*> InstrumentCollection::instrumentItems(
     const std::function<bool(const InstrumentItem*)>& accept) const
 {
     QVector<InstrumentItem*> result;
-    for (auto* p : collectedItems())
+    for (auto* p : instrumentItems())
         if (accept(p))
             result << p;
 
@@ -119,16 +119,16 @@ QVector<InstrumentItem*> InstrumentCollection::instrumentItems(
 QVector<Instrument2DItem*> InstrumentCollection::instrument2DItems() const
 {
     QVector<Instrument2DItem*> result;
-    for (auto* p : collectedItems())
+    for (auto* p : instrumentItems())
         if (auto* p2D = dynamic_cast<Instrument2DItem*>(p))
             result << p2D;
 
     return result;
 }
 
-InstrumentItem* InstrumentCollection::findInstrumentById(const QString& instrumentId) const
+InstrumentItem* InstrumentCollection::findInstrumentItemById(const QString& instrumentId) const
 {
-    for (auto* instrument : collectedItems())
+    for (auto* instrument : instrumentItems())
         if (instrument->id() == instrumentId)
             return instrument;
 
@@ -137,7 +137,7 @@ InstrumentItem* InstrumentCollection::findInstrumentById(const QString& instrume
 
 bool InstrumentCollection::instrumentExists(const QString& instrumentId) const
 {
-    return findInstrumentById(instrumentId) != nullptr;
+    return findInstrumentItemById(instrumentId) != nullptr;
 }
 
 void InstrumentCollection::removeInstrument(InstrumentItem* instrument)
diff --git a/GUI/Model/Device/InstrumentCollection.h b/GUI/Model/Device/InstrumentCollection.h
index 69a866cbe5b6a59d79a6b9d6275b83ae3bb3782f..ab0467a104c568e79be6c1f3e422f7942a37c1a4 100644
--- a/GUI/Model/Device/InstrumentCollection.h
+++ b/GUI/Model/Device/InstrumentCollection.h
@@ -31,7 +31,7 @@ public:
     ~InstrumentCollection();
 
     template <typename T>
-    T* addInstrument()
+    T* addInstrumentItem()
     {
         auto* t = new T();
         emplace_back(t);
@@ -49,14 +49,13 @@ public:
     //! Inserts a deep copy (also of any non xml data in a pointwise axis)
     //! The id will not be copied, but a new unique one will be created
     //! Returns the newly created instrument.
-    InstrumentItem* insertCopy(const InstrumentItem& source);
+    InstrumentItem* insertItemCopy(const InstrumentItem& source);
 
-    QVector<InstrumentItem*> collectedItems() const;
+    QVector<InstrumentItem*> instrumentItems() const;
     QVector<Instrument2DItem*> instrument2DItems() const;
-    QVector<InstrumentItem*>
-    instrumentItems(const std::function<bool(const InstrumentItem*)>& accept) const;
+    QVector<InstrumentItem*> instrumentItems(const std::function<bool(const InstrumentItem*)>& accept) const;
 
-    InstrumentItem* findInstrumentById(const QString& instrumentId) const;
+    InstrumentItem* findInstrumentItemById(const QString& instrumentId) const;
     bool instrumentExists(const QString& instrumentId) const;
 
     QString suggestInstrumentName(const QString& baseName) const;
diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp
index c12e32cdf3585afc8180fb2c822e5fca24a31dbc..6cf1eb3a1130249c35574a417c9deedf9723200b 100644
--- a/GUI/Model/Device/InstrumentItems.cpp
+++ b/GUI/Model/Device/InstrumentItems.cpp
@@ -89,7 +89,7 @@ InstrumentItem::InstrumentItem()
     m_background.init("Background", "");
 }
 
-InstrumentItem* InstrumentItem::createCopy() const
+InstrumentItem* InstrumentItem::createItemCopy() const
 {
     const auto type = InstrumentItemCatalog::type(this);
     auto* copy = InstrumentItemCatalog::create(type);
@@ -118,7 +118,7 @@ void InstrumentItem::setWithPolarizerAnalyzer(bool with)
 }
 
 template <typename T>
-T* InstrumentItem::beam() const
+T* InstrumentItem::beamItemCast() const
 {
     return dynamic_cast<T*>(m_beamItem.get());
 }
@@ -256,12 +256,12 @@ SpecularInstrumentItem::SpecularInstrumentItem()
 
 SpecularBeamItem* SpecularInstrumentItem::beamItem() const
 {
-    return beam<SpecularBeamItem>();
+    return beamItemCast<SpecularBeamItem>();
 }
 
 std::vector<int> SpecularInstrumentItem::shape() const
 {
-    auto* const axis_item = beamItem()->inclinationAxis();
+    auto* const axis_item = beamItem()->inclinationAxisItem();
     return {axis_item->binCount()};
 }
 
@@ -286,7 +286,7 @@ bool SpecularInstrumentItem::alignedWith(const RealItem* item) const
         return false;
 
     const auto* axisItem =
-        dynamic_cast<const PointwiseAxisItem*>(beamItem()->inclinationAngleItem()->alphaAxis());
+        dynamic_cast<const PointwiseAxisItem*>(beamItem()->inclinationAngleItem()->alphaAxisItem());
     ASSERT(axisItem);
 
     if (axisItem->nativeAxisUnits() != native_units)
@@ -311,7 +311,7 @@ bool SpecularInstrumentItem::alignedWith(const RealItem* item) const
 const ICoordSystem* SpecularInstrumentItem::createCoordSystem() const
 {
     std::shared_ptr<Beam> beam = beamItem()->createBeam();
-    auto* axis_item = beamItem()->inclinationAxis();
+    auto* axis_item = beamItem()->inclinationAxisItem();
     if (auto* pointwise_axis = dynamic_cast<PointwiseAxisItem*>(axis_item)) {
         if (!pointwise_axis->axis()) // workaround for loading project
             return nullptr;
@@ -343,7 +343,7 @@ DepthProbeInstrumentItem::DepthProbeInstrumentItem()
 {
     m_beamItem.reset(new SpecularBeamItem(this));
 
-    auto* axisItem = beamItem()->inclinationAxis();
+    auto* axisItem = beamItem()->inclinationAxisItem();
     axisItem->setMin(0.0);
     axisItem->setMax(1.0);
     axisItem->setBinCount(500);
@@ -394,7 +394,7 @@ void DepthProbeInstrumentItem::readFrom(QXmlStreamReader* r)
 
 SpecularBeamItem* DepthProbeInstrumentItem::beamItem() const
 {
-    return beam<SpecularBeamItem>();
+    return beamItemCast<SpecularBeamItem>();
 }
 
 std::vector<int> DepthProbeInstrumentItem::shape() const
@@ -421,7 +421,7 @@ DepthProbeSimulation* DepthProbeInstrumentItem::createSimulation(const MultiLaye
 {
     auto* simulation = new DepthProbeSimulation(sample);
 
-    auto* const axis_item = beamItem()->inclinationAxis();
+    auto* const axis_item = beamItem()->inclinationAxisItem();
     auto axis = axis_item->createAxis(Units::deg);
 
     simulation->setBeamParameters(beamItem()->wavelength(), static_cast<int>(axis->size()),
diff --git a/GUI/Model/Device/InstrumentItems.h b/GUI/Model/Device/InstrumentItems.h
index 8c626208170852cf3498a1a3352cd1e8b260699f..d6408ca6c5dbdb8d087bee97442159d89a7d8ce2 100644
--- a/GUI/Model/Device/InstrumentItems.h
+++ b/GUI/Model/Device/InstrumentItems.h
@@ -45,7 +45,7 @@ public:
     virtual ~InstrumentItem() = default;
 
     //! Creates an exact copy; also ID is the same!
-    InstrumentItem* createCopy() const;
+    InstrumentItem* createItemCopy() const;
 
     virtual void writeTo(QXmlStreamWriter* w) const;
     virtual void readFrom(QXmlStreamReader* r);
@@ -71,8 +71,8 @@ public:
     virtual BeamItem* beamItem() const;
 
     template <typename T>
-    T* setBackgroundType();
-    SelectionProperty<BackgroundItemCatalog>& background() { return m_background; }
+    T* setBackgroundItemType();
+    SelectionProperty<BackgroundItemCatalog>& backgroundSelection() { return m_background; }
     BackgroundItem* backgroundItem() const { return m_background.currentItem(); }
 
     virtual std::vector<int> shape() const = 0;
@@ -110,7 +110,7 @@ protected:
     explicit InstrumentItem(const QString& modelType);
 
     template <typename T>
-    T* beam() const;
+    T* beamItemCast() const;
 
     QString m_id;
     QString m_name;
@@ -179,9 +179,9 @@ public:
     void readFrom(QXmlStreamReader* r) override;
 
     template <typename T>
-    T* setDetectorType();
+    T* setDetectorItemType();
     DetectorItem* detectorItem() const { return m_detector.currentItem(); }
-    SelectionProperty<DetectorItemCatalog>& detector() { return m_detector; }
+    SelectionProperty<DetectorItemCatalog>& detectorSelection() { return m_detector; }
 
     void importMasks(const MaskContainerItem* maskContainer) override;
 
@@ -236,14 +236,14 @@ protected:
 //  ************************************************************************************************
 
 template <typename T>
-T* InstrumentItem::setBackgroundType()
+T* InstrumentItem::setBackgroundItemType()
 {
     m_background.setCurrentItem<T>();
     return dynamic_cast<T*>(m_background.currentItem());
 }
 
 template <typename T>
-T* Instrument2DItem::setDetectorType()
+T* Instrument2DItem::setDetectorItemType()
 {
     m_detector.setCurrentItem<T>();
     return dynamic_cast<T*>(m_detector.currentItem());
diff --git a/GUI/Model/Device/InstrumentLibrary.cpp b/GUI/Model/Device/InstrumentLibrary.cpp
index 8b80cd676c742d3e88b2333d240c8c76d8a86e03..e39689dc75f1208b70f11d699c58974d45e514ff 100644
--- a/GUI/Model/Device/InstrumentLibrary.cpp
+++ b/GUI/Model/Device/InstrumentLibrary.cpp
@@ -48,19 +48,19 @@ QString InstrumentLibrary::suggestName(const QString& name) const
     return m_instrumentItems.suggestInstrumentName(name);
 }
 
-InstrumentItem* InstrumentLibrary::add(const QString& name, const InstrumentItem& itemToCopy)
+InstrumentItem* InstrumentLibrary::addItemCopy(const QString& name, const InstrumentItem& itemToCopy)
 {
-    return m_ec.addCopy(&itemToCopy, name);
+    return m_ec.addInstrumentItemCopy(&itemToCopy, name);
 }
 
 bool InstrumentLibrary::isEmpty() const
 {
-    return m_instrumentItems.collectedItems().isEmpty();
+    return m_instrumentItems.instrumentItems().isEmpty();
 }
 
-QList<InstrumentItem*> InstrumentLibrary::collectedItems() const
+QList<InstrumentItem*> InstrumentLibrary::instrumentItems() const
 {
-    return m_instrumentItems.collectedItems().toList();
+    return m_instrumentItems.instrumentItems().toList();
 }
 
 InstrumentsEditController* InstrumentLibrary::editController()
@@ -141,7 +141,7 @@ bool InstrumentLibrary::load()
     }
 }
 
-InstrumentCollection* InstrumentLibrary::collectedItems()
+InstrumentCollection* InstrumentLibrary::instrumentCollection()
 {
     return &m_instrumentItems;
 }
diff --git a/GUI/Model/Device/InstrumentLibrary.h b/GUI/Model/Device/InstrumentLibrary.h
index ab18678354e830e5dd7851ab2beb283a32680c63..cdc3fdff7ddf3f9ebf862c6540305cd4b2133c94 100644
--- a/GUI/Model/Device/InstrumentLibrary.h
+++ b/GUI/Model/Device/InstrumentLibrary.h
@@ -25,14 +25,14 @@ public:
     QString suggestName(const QString& name) const;
 
     //! Returns the new element
-    InstrumentItem* add(const QString& name, const InstrumentItem& itemToCopy);
+    InstrumentItem* addItemCopy(const QString& name, const InstrumentItem& itemToCopy);
     bool isEmpty() const;
-    QList<InstrumentItem*> collectedItems() const;
+    QList<InstrumentItem*> instrumentItems() const;
 
     bool saveIfModified();
     bool load();
 
-    InstrumentCollection* collectedItems();
+    InstrumentCollection* instrumentCollection();
 
     InstrumentsEditController* editController();
 
diff --git a/GUI/Model/Device/InstrumentsEditController.cpp b/GUI/Model/Device/InstrumentsEditController.cpp
index c6be4943922530b0b79f9b38465b09b659d6ec90..6da33cdd553cec3a51ec5fd12083744133e5758e 100644
--- a/GUI/Model/Device/InstrumentsEditController.cpp
+++ b/GUI/Model/Device/InstrumentsEditController.cpp
@@ -20,7 +20,7 @@ InstrumentsEditController::InstrumentsEditController(InstrumentCollection* instr
 {
 }
 
-InstrumentCollection* InstrumentsEditController::collectedItems()
+InstrumentCollection* InstrumentsEditController::instrumentCollection()
 {
     return m_instruments;
 }
@@ -31,10 +31,10 @@ void InstrumentsEditController::removeInstrument(InstrumentItem* instrument)
     emit instrumentAddedOrRemoved();
 }
 
-InstrumentItem* InstrumentsEditController::addCopy(const InstrumentItem* instrument,
+InstrumentItem* InstrumentsEditController::addInstrumentItemCopy(const InstrumentItem* instrument,
                                                    const QString& name)
 {
-    InstrumentItem* copy = m_instruments->insertCopy(*instrument);
+    InstrumentItem* copy = m_instruments->insertItemCopy(*instrument);
     copy->setInstrumentName(name);
     emit instrumentAddedOrRemoved();
     return copy;
diff --git a/GUI/Model/Device/InstrumentsEditController.h b/GUI/Model/Device/InstrumentsEditController.h
index 88fb7f8db3eb029f74a6e84fa650a49685008be8..ebd9db7137f3c878f12b042c1c3b83d55449fd03 100644
--- a/GUI/Model/Device/InstrumentsEditController.h
+++ b/GUI/Model/Device/InstrumentsEditController.h
@@ -44,17 +44,17 @@ public:
     InstrumentsEditController(InstrumentCollection* instruments);
 
     //! The list of existing instruments.
-    InstrumentCollection* collectedItems();
+    InstrumentCollection* instrumentCollection();
 
     //! Add an instrument and emit the respective signal.
     template <typename T>
-    T* addInstrument();
+    T* addInstrumentItem();
 
     //! Add an instrument and emit the respective signal.
     void removeInstrument(InstrumentItem* instrument);
 
     //! Copy an instrument, set its name and emit the respective signal.
-    InstrumentItem* addCopy(const InstrumentItem* instrument, const QString& name);
+    InstrumentItem* addInstrumentItemCopy(const InstrumentItem* instrument, const QString& name);
 
     //! Set an instrument's name and emit the respective signal.
     void setInstrumentName(InstrumentItem* instrument, const QString& name);
@@ -87,9 +87,9 @@ private:
 };
 
 template <typename T>
-T* InstrumentsEditController::addInstrument()
+T* InstrumentsEditController::addInstrumentItem()
 {
-    auto* t = m_instruments->addInstrument<T>();
+    auto* t = m_instruments->addInstrumentItem<T>();
     emit instrumentAddedOrRemoved();
     return t;
 }
diff --git a/GUI/Model/Device/SpecularBeamInclinationItem.cpp b/GUI/Model/Device/SpecularBeamInclinationItem.cpp
index 4309bf47d14cf188c379c9764033dc0a89c20de0..cdfd84571fffd149c5f0834e9b2fee5d564cdab5 100644
--- a/GUI/Model/Device/SpecularBeamInclinationItem.cpp
+++ b/GUI/Model/Device/SpecularBeamInclinationItem.cpp
@@ -149,7 +149,7 @@ double SpecularBeamInclinationItem::scaleFactor() const
     return Units::deg;
 }
 
-BasicAxisItem* SpecularBeamInclinationItem::alphaAxis() const
+BasicAxisItem* SpecularBeamInclinationItem::alphaAxisItem() const
 {
     return m_currentAxisIsUniformAxis ? m_uniformAlphaAxis.get() : m_pointwiseAlphaAxis.get();
 }
diff --git a/GUI/Model/Device/SpecularBeamInclinationItem.h b/GUI/Model/Device/SpecularBeamInclinationItem.h
index 0febf457af533e1c83353d82dbd3580a2a286dd5..fa9b4b024b5b04d3595079bcdba05355f44af257 100644
--- a/GUI/Model/Device/SpecularBeamInclinationItem.h
+++ b/GUI/Model/Device/SpecularBeamInclinationItem.h
@@ -33,7 +33,7 @@ public:
     double scaleFactor() const override;
 
     //! The currently selected axis
-    BasicAxisItem* alphaAxis() const;
+    BasicAxisItem* alphaAxisItem() const;
 
     //! True if a pointwise axis was defined.
     //!
diff --git a/GUI/Model/FromCore/ItemizeSimulation.cpp b/GUI/Model/FromCore/ItemizeSimulation.cpp
index 8d77ba169b182f171508ede143243e40a8957d68..af8e49a069b11c5ebec42484f10c90ad5e760f6e 100644
--- a/GUI/Model/FromCore/ItemizeSimulation.cpp
+++ b/GUI/Model/FromCore/ItemizeSimulation.cpp
@@ -164,32 +164,32 @@ void setDistribution(BeamDistributionItem* part_distr_item, ParameterDistributio
 
     DistributionItem* distItem = nullptr;
     if (const auto* distr = dynamic_cast<const DistributionGate*>(distribution)) {
-        auto* distr_gate_item = part_distr_item->setDistributionType<DistributionGateItem>();
+        auto* distr_gate_item = part_distr_item->setDistributionItemType<DistributionGateItem>();
         distr_gate_item->setRange(factor * distr->min(), factor * distr->max());
         distItem = distr_gate_item;
     } else if (const auto* distr = dynamic_cast<const DistributionLorentz*>(distribution)) {
-        auto* distr_lorentz_item = part_distr_item->setDistributionType<DistributionLorentzItem>();
+        auto* distr_lorentz_item = part_distr_item->setDistributionItemType<DistributionLorentzItem>();
         distr_lorentz_item->setMean(factor * distr->mean());
         distr_lorentz_item->setHwhm(factor * distr->hwhm());
         distItem = distr_lorentz_item;
     } else if (const auto* distr = dynamic_cast<const DistributionGaussian*>(distribution)) {
-        auto* distr_gauss_item = part_distr_item->setDistributionType<DistributionGaussianItem>();
+        auto* distr_gauss_item = part_distr_item->setDistributionItemType<DistributionGaussianItem>();
         distr_gauss_item->setMean(factor * distr->mean());
         distr_gauss_item->setStandardDeviation(factor * distr->getStdDev());
         distItem = distr_gauss_item;
     } else if (const auto* distr = dynamic_cast<const DistributionLogNormal*>(distribution)) {
         auto* distr_lognorm_item =
-            part_distr_item->setDistributionType<DistributionLogNormalItem>();
+            part_distr_item->setDistributionItemType<DistributionLogNormalItem>();
         distr_lognorm_item->setMedian(factor * distr->getMedian());
         distr_lognorm_item->setScaleParameter(distr->getScalePar());
         distItem = distr_lognorm_item;
     } else if (const auto* distr = dynamic_cast<const DistributionCosine*>(distribution)) {
-        auto* distr_cos_item = part_distr_item->setDistributionType<DistributionCosineItem>();
+        auto* distr_cos_item = part_distr_item->setDistributionItemType<DistributionCosineItem>();
         distr_cos_item->setMean(factor * distr->mean());
         distr_cos_item->setSigma(factor * distr->sigma());
         distItem = distr_cos_item;
     } else if (const auto* distr = dynamic_cast<const DistributionTrapezoid*>(distribution)) {
-        auto* distr_trapez_item = part_distr_item->setDistributionType<DistributionTrapezoidItem>();
+        auto* distr_trapez_item = part_distr_item->setDistributionItemType<DistributionTrapezoidItem>();
         distr_trapez_item->setCenter(factor * distr->mean());
         distr_trapez_item->setLeftWidth(factor * distr->getLeftWidth());
         distr_trapez_item->setMiddleWidth(factor * distr->getMiddleWidth());
@@ -358,10 +358,10 @@ void setRectangularDetector(RectangularDetectorItem* detectorItem,
 void setDetectorGeometry(Instrument2DItem* instrument_item, const IDetector& detector)
 {
     if (const auto* det = dynamic_cast<const SphericalDetector*>(&detector)) {
-        auto* item = instrument_item->setDetectorType<SphericalDetectorItem>();
+        auto* item = instrument_item->setDetectorItemType<SphericalDetectorItem>();
         setSphericalDetector(item, *det);
     } else if (const auto* det = dynamic_cast<const RectangularDetector*>(&detector)) {
-        auto* item = instrument_item->setDetectorType<RectangularDetectorItem>();
+        auto* item = instrument_item->setDetectorItemType<RectangularDetectorItem>();
         setRectangularDetector(item, *det);
     } else {
         throw Error("setDetectorGeometry() -> Unknown detector type.");
@@ -425,11 +425,11 @@ void setBackground(InstrumentItem* instrument_item, const ISimulation& simulatio
 {
     const auto* bg = simulation.background();
     if (const auto* constant_bg = dynamic_cast<const ConstantBackground*>(bg)) {
-        auto* constant_bg_item = instrument_item->setBackgroundType<ConstantBackgroundItem>();
+        auto* constant_bg_item = instrument_item->setBackgroundItemType<ConstantBackgroundItem>();
         double value = constant_bg->backgroundValue();
         constant_bg_item->setBackgroundValue(value);
     } else if (dynamic_cast<const PoissonBackground*>(bg))
-        instrument_item->setBackgroundType<PoissonBackgroundItem>();
+        instrument_item->setBackgroundItemType<PoissonBackgroundItem>();
 }
 
 GISASInstrumentItem* createGISASInstrumentItem(const ScatteringSimulation& simulation)
@@ -467,7 +467,7 @@ SpecularInstrumentItem* createSpecularInstrumentItem(const SpecularSimulation& s
     beam_item->setInclinationAngle(0.0); // inclination angle is hardcoded
     beam_item->setAzimuthalAngle(0.0);   // azimuthal angle is hardcoded
 
-    auto* axis_item = beam_item->inclinationAxis();
+    auto* axis_item = beam_item->inclinationAxisItem();
     setAxisItem(axis_item, *scan->coordinateAxis(), 1. / Units::deg);
 
     setFootprintFactor(scan->footprintFactor(), beam_item);
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index e1929f5f84217232df27777064badb4c462ba261..0cd4a12255ea57d3f62927f82f7085a2400a5c34 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -267,7 +267,7 @@ Instrument2DItem* JobItem::instrument2DItem()
 
 void JobItem::copyInstrumentIntoJob(const InstrumentItem* instrument)
 {
-    m_instrument.setCurrentItem(instrument->createCopy());
+    m_instrument.setCurrentItem(instrument->createItemCopy());
     m_instrument.currentItem()->setId(QUuid::createUuid().toString());
 }
 
diff --git a/GUI/Model/Model/ParameterTreeUtils.cpp b/GUI/Model/Model/ParameterTreeUtils.cpp
index 2f70aebd5ade24a0fc043ad0ac31d39255e7f621..a59ceb46c0d243c7712d690c3ca231012733b019 100644
--- a/GUI/Model/Model/ParameterTreeUtils.cpp
+++ b/GUI/Model/Model/ParameterTreeUtils.cpp
@@ -369,7 +369,7 @@ void ParameterTreeBuilder::addDetector(ParameterLabelItem* parentLabel, Detector
 {
     const auto addResolutionFunction = [=](ParameterLabelItem* detLabel) {
         if (auto* r = dynamic_cast<ResolutionFunction2DGaussianItem*>(
-                detector->resolutionFunction().currentItem())) {
+                detector->resolutionFunctionSelection().currentItem())) {
             auto* label = new ParameterLabelItem("Resolution (Gaussian)", detLabel);
             addParameterItem(label, r->sigmaX());
             addParameterItem(label, r->sigmaY());
diff --git a/GUI/Model/Project/LinkInstrumentManager.cpp b/GUI/Model/Project/LinkInstrumentManager.cpp
index 8e9768422837277cc5d6d1ef2d96c9a0d1dbe3b7..a9f7c17985bae3b4eefb1c875df964dd247f7dae 100644
--- a/GUI/Model/Project/LinkInstrumentManager.cpp
+++ b/GUI/Model/Project/LinkInstrumentManager.cpp
@@ -79,7 +79,7 @@ LinkInstrumentManager::LinkInstrumentManager(ProjectDocument* document)
 bool LinkInstrumentManager::canLinkDataToInstrument(const RealItem* realItem,
                                                     const QString& identifier, QWidget* parent)
 {
-    auto* instrumentItem = m_document->collectedItems()->findInstrumentById(identifier);
+    auto* instrumentItem = m_document->collectedItems()->findInstrumentItemById(identifier);
 
     // linking to null instrument is possible, it means unlinking from currently linked
     if (!instrumentItem)
diff --git a/GUI/Model/ToCore/SimulationToCore.cpp b/GUI/Model/ToCore/SimulationToCore.cpp
index ebf2500a1b4a93fa28820cf05e51822bb388dae4..1cca80d327737bddeef3dbd44250ab682c32ee7c 100644
--- a/GUI/Model/ToCore/SimulationToCore.cpp
+++ b/GUI/Model/ToCore/SimulationToCore.cpp
@@ -118,7 +118,7 @@ OffspecSimulation* createOffspecSimulation(std::unique_ptr<MultiLayer> sample,
 
     auto* beamItem = item->beamItem();
     const auto axis = item->alphaAxis().createAxis(Units::deg);
-    result->setBeamParameters(beamItem->wavelength(), *axis, beamItem->getAzimuthalAngle());
+    result->setBeamParameters(beamItem->wavelength(), *axis, beamItem->azimuthalAngle());
 
     addBackgroundToSimulation(*item, *result);
 
@@ -129,8 +129,8 @@ SpecularSimulation* createSpecularSimulation(std::unique_ptr<MultiLayer> sample,
                                              const SpecularInstrumentItem* item)
 {
     auto* beam_item = item->beamItem();
-    auto* const axis_item = beam_item->inclinationAxis();
-    auto* const footprint_item = beam_item->footprint().currentItem();
+    auto* const axis_item = beam_item->inclinationAxisItem();
+    auto* const footprint_item = beam_item->footprintSelection().currentItem();
 
     AlphaScan scan(beam_item->wavelength(), *axis_item->createAxis(Units::deg));
     scan.setFootprintFactor(footprint_item->createFootprint().get());
diff --git a/GUI/View/Import/RealDataPropertiesWidget.cpp b/GUI/View/Import/RealDataPropertiesWidget.cpp
index 65a9078e51e7256309245ad57e2f72576322096f..a256efca28f888087766e139c923c551e678ed0d 100644
--- a/GUI/View/Import/RealDataPropertiesWidget.cpp
+++ b/GUI/View/Import/RealDataPropertiesWidget.cpp
@@ -83,7 +83,7 @@ void RealDataPropertiesWidget::onInstrumentComboIndexChanged(int /*index*/)
     if (m_document->linkInstrumentManager()->canLinkDataToInstrument(
             m_currentRealItem, newSelectedInstrumentId, GUI::Global::mainWindow)) {
         const auto* newSelectedInstrument =
-            m_document->collectedItems()->findInstrumentById(newSelectedInstrumentId);
+            m_document->collectedItems()->findInstrumentItemById(newSelectedInstrumentId);
         m_currentRealItem->linkToInstrument(newSelectedInstrument);
     } else
         // Linking was impossible or denied. Set combo to previous state
@@ -103,7 +103,7 @@ void RealDataPropertiesWidget::updateInstrumentComboEntries()
 
     // fill the combo. Userdata contains instrument's uid
     m_instrumentCombo->addItem("Undefined", ""); // undefined instrument
-    for (auto* instrumentItem : m_document->collectedItems()->collectedItems())
+    for (auto* instrumentItem : m_document->collectedItems()->instrumentItems())
         m_instrumentCombo->addItem(instrumentItem->instrumentName(), instrumentItem->id());
 
     updateInstrumentComboIndex();
diff --git a/GUI/View/Import/SpecularDataImportWidget.cpp b/GUI/View/Import/SpecularDataImportWidget.cpp
index 95cc510c935e1a91ff04d77a230bb01c4c963e5f..7ce182e218752b8ed6af17d08d2ba5130ecb4abe 100644
--- a/GUI/View/Import/SpecularDataImportWidget.cpp
+++ b/GUI/View/Import/SpecularDataImportWidget.cpp
@@ -335,7 +335,7 @@ void SpecularDataImportWidget::onPropertiesChanged()
 
     ProjectDocument* projectDocument = gSessionData->projectDocument.value();
     const auto* linkedInstrument =
-        projectDocument->collectedItems()->findInstrumentById(realItem()->instrumentId());
+        projectDocument->collectedItems()->findInstrumentItemById(realItem()->instrumentId());
 
     if (linkedInstrument)
         if (!linkedInstrument->alignedWith(realItem()))
diff --git a/GUI/View/Instrument/DetectorEditor.cpp b/GUI/View/Instrument/DetectorEditor.cpp
index 1b3eec2bdc37a2ccdb3cd370a28ac4364bd64537..e86b16722dd2ac74417bbdb49f6dca8d679b2461 100644
--- a/GUI/View/Instrument/DetectorEditor.cpp
+++ b/GUI/View/Instrument/DetectorEditor.cpp
@@ -31,7 +31,7 @@ DetectorEditor::DetectorEditor(QWidget* parent, Instrument2DItem* instrument)
     m_formLayout = new QFormLayout(this);
 
     auto* detectorTypeCombo =
-        GUI::Util::createComboBoxFromProperty(instrument->detector(), [=](int) {
+        GUI::Util::createComboBoxFromProperty(instrument->detectorSelection(), [=](int) {
             createDetectorWidgets();
             emit dataChanged();
         });
diff --git a/GUI/View/Instrument/DistributionEditor.cpp b/GUI/View/Instrument/DistributionEditor.cpp
index 9b5973cd6a68c9ce8a2ba25ebb0f51549de6872b..a27eadeb61bf175fe0159260f2b22f2e5c097d7d 100644
--- a/GUI/View/Instrument/DistributionEditor.cpp
+++ b/GUI/View/Instrument/DistributionEditor.cpp
@@ -44,7 +44,7 @@ DistributionSelector::DistributionSelector(std::optional<MeanConfig> mean_config
     m_formLayout = new QFormLayout(this);
     m_formLayout->setContentsMargins(0, 0, 0, 0);
 
-    m_distributionCombo = GUI::Util::createComboBoxFromProperty(item->distribution(), [=](int) {
+    m_distributionCombo = GUI::Util::createComboBoxFromProperty(item->distributionSelection(), [=](int) {
         createDistributionWidgets();
         emit distributionChanged();
     });
@@ -156,7 +156,7 @@ GUI::ID::Distributions DistributionSelector::distributions() const
 void DistributionSelector::refresh()
 {
     QSignalBlocker b(m_distributionCombo);
-    m_distributionCombo->setCurrentIndex(m_item->distribution().currentIndex());
+    m_distributionCombo->setCurrentIndex(m_item->distributionSelection().currentIndex());
     createDistributionWidgets();
 }
 
diff --git a/GUI/View/Instrument/EnvironmentEditor.cpp b/GUI/View/Instrument/EnvironmentEditor.cpp
index a17f986e49b1d315be3c4b4350ffa2e98ef70ef4..7cc3b4650dae0c740ef66e7b0e44cb450e03f4ce 100644
--- a/GUI/View/Instrument/EnvironmentEditor.cpp
+++ b/GUI/View/Instrument/EnvironmentEditor.cpp
@@ -29,7 +29,7 @@ EnvironmentEditor::EnvironmentEditor(QWidget* parent, InstrumentItem* instrument
     m_formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
 
     auto* backgroundTypeCombo =
-        GUI::Util::createComboBoxFromProperty(instrument->background(), [=](int) {
+        GUI::Util::createComboBoxFromProperty(instrument->backgroundSelection(), [=](int) {
             createBackgroundWidgets();
             emit dataChanged();
         });
diff --git a/GUI/View/Instrument/FootprintCorrectionEditor.cpp b/GUI/View/Instrument/FootprintCorrectionEditor.cpp
index 859d2210a37ccb48aa368a01a9f4c28dd0737190..37bd7b272fd3a456d2fe528b5000b7b94e9bef19 100644
--- a/GUI/View/Instrument/FootprintCorrectionEditor.cpp
+++ b/GUI/View/Instrument/FootprintCorrectionEditor.cpp
@@ -28,7 +28,7 @@ FootprintCorrectionEditor::FootprintCorrectionEditor(QWidget* parent, SpecularBe
     setProperty("subgroup", true); // for stylesheet addressing
     m_formLayout = new QFormLayout(this);
     m_formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
-    auto* typeCombo = GUI::Util::createComboBoxFromProperty(item->footprint(), [=](int) {
+    auto* typeCombo = GUI::Util::createComboBoxFromProperty(item->footprintSelection(), [=](int) {
         createFootprintWidgets();
         emit dataChanged();
     });
@@ -44,7 +44,7 @@ void FootprintCorrectionEditor::createFootprintWidgets()
     while (m_formLayout->rowCount() > 1)
         m_formLayout->removeRow(1);
 
-    auto* footprintItem = m_item->footprint().currentItem();
+    auto* footprintItem = m_item->footprintSelection().currentItem();
     if (auto* square = dynamic_cast<FootprintSquareItem*>(footprintItem)) {
         auto* spinbox = new DoubleSpinBox(square->squareFootprintValue());
         spinbox->setSingleStep(0.01);
diff --git a/GUI/View/Instrument/InclinationAnglesEditor.cpp b/GUI/View/Instrument/InclinationAnglesEditor.cpp
index 172b512d8475938d9dc6ff81b444b8c59fc4de92..891009b14f780d914767daf4c8bd44ee6d18ecef 100644
--- a/GUI/View/Instrument/InclinationAnglesEditor.cpp
+++ b/GUI/View/Instrument/InclinationAnglesEditor.cpp
@@ -90,7 +90,7 @@ void InclinationAnglesEditor::onAxisTypeSelected(int index)
             emit dataChanged();
         }
 
-        m_form->setAxisItem(m_item->alphaAxis());
+        m_form->setAxisItem(m_item->alphaAxisItem());
         m_form->setEnabled(index == 0);
     }
 }
diff --git a/GUI/View/Instrument/InstrumentEditController.cpp b/GUI/View/Instrument/InstrumentEditController.cpp
index 0bcbc281f8a5b4f1eeff637e4f76a8c7ff80992d..72044f0267b7a4150c01bd6734a6ca2d9d42efaf 100644
--- a/GUI/View/Instrument/InstrumentEditController.cpp
+++ b/GUI/View/Instrument/InstrumentEditController.cpp
@@ -47,7 +47,7 @@ void InstrumentEditController::notifyWavelengthDistributionChanged()
     // update values in pointwise axis. This is necessary after a change of the mean value of the
     // wavelength.
     if (auto* specularBeam = dynamic_cast<SpecularBeamItem*>(m_instrumentItem->beamItem())) {
-        if (auto* pw = dynamic_cast<PointwiseAxisItem*>(specularBeam->inclinationAxis()))
+        if (auto* pw = dynamic_cast<PointwiseAxisItem*>(specularBeam->inclinationAxisItem()))
             pw->updateIndicators();
     }
 
diff --git a/GUI/View/Instrument/InstrumentLibraryEditor.cpp b/GUI/View/Instrument/InstrumentLibraryEditor.cpp
index 9b472ed41bea576dee8e6ef891bb94f0a43127ff..2e2d4e286b941918eef3be6d79b2f0ea49b0495a 100644
--- a/GUI/View/Instrument/InstrumentLibraryEditor.cpp
+++ b/GUI/View/Instrument/InstrumentLibraryEditor.cpp
@@ -36,7 +36,7 @@
 InstrumentLibraryEditor::InstrumentLibraryEditor(QWidget* parent)
     : QDialog(parent)
     , m_ui(new Ui::InstrumentLibraryEditor)
-    , m_treeModel(new TreeModel(this, gSessionData->instrumentLibrary.collectedItems()))
+    , m_treeModel(new TreeModel(this, gSessionData->instrumentLibrary.instrumentCollection()))
     , m_chosenItem(nullptr)
 {
     m_ui->setupUi(this);
@@ -117,7 +117,7 @@ void InstrumentLibraryEditor::execAdd(const InstrumentItem& instrumentToAdd)
 {
     const QString& newName =
         gSessionData->instrumentLibrary.suggestName(instrumentToAdd.instrumentName());
-    auto* addedInstrument = gSessionData->instrumentLibrary.add(newName, instrumentToAdd);
+    auto* addedInstrument = gSessionData->instrumentLibrary.addItemCopy(newName, instrumentToAdd);
 
     setWindowTitle("Instrument Library - Add instrument");
 
diff --git a/GUI/View/Instrument/InstrumentListModel.cpp b/GUI/View/Instrument/InstrumentListModel.cpp
index e056e0623543b1491988923e8d2bcf2f1141d283..4ef68812bf6532cd8c85c546898404b5eec05cea 100644
--- a/GUI/View/Instrument/InstrumentListModel.cpp
+++ b/GUI/View/Instrument/InstrumentListModel.cpp
@@ -71,12 +71,12 @@ InstrumentListModel::InstrumentListModel(QObject* parent, InstrumentsEditControl
 
 int InstrumentListModel::rowCount(const QModelIndex&) const
 {
-    return m_ec->collectedItems()->collectedItems().size();
+    return m_ec->instrumentCollection()->instrumentItems().size();
 }
 
 QVariant InstrumentListModel::data(const QModelIndex& index, int role) const
 {
-    QVector<InstrumentItem*> instruments = m_ec->collectedItems()->collectedItems();
+    QVector<InstrumentItem*> instruments = m_ec->instrumentCollection()->instrumentItems();
     if (!index.isValid() || index.row() >= instruments.size() || index.row() < 0)
         return {};
 
@@ -99,12 +99,12 @@ QVariant InstrumentListModel::data(const QModelIndex& index, int role) const
     return {};
 }
 
-InstrumentItem* InstrumentListModel::instrumentForIndex(const QModelIndex& index) const
+InstrumentItem* InstrumentListModel::instrumentItemForIndex(const QModelIndex& index) const
 {
     if (!index.isValid())
         return nullptr;
 
-    QVector<InstrumentItem*> instruments = m_ec->collectedItems()->collectedItems();
+    QVector<InstrumentItem*> instruments = m_ec->instrumentCollection()->instrumentItems();
     if (index.row() >= 0 && index.row() < instruments.size())
         return instruments[index.row()];
     return nullptr;
@@ -133,14 +133,14 @@ QModelIndex InstrumentListModel::addNewDepthProbeInstrument()
 void InstrumentListModel::removeInstrument(const QModelIndex& index)
 {
     beginRemoveRows(QModelIndex(), index.row(), index.row());
-    InstrumentItem* instrument = instrumentForIndex(index);
+    InstrumentItem* instrument = instrumentItemForIndex(index);
     m_ec->removeInstrument(instrument);
     endRemoveRows();
 }
 
 QModelIndex InstrumentListModel::copyInstrument(const QModelIndex& source)
 {
-    const InstrumentItem* srcInstr = instrumentForIndex(source);
+    const InstrumentItem* srcInstr = instrumentItemForIndex(source);
     ASSERT(srcInstr);
 
     return copyInstrument(srcInstr);
@@ -149,11 +149,11 @@ QModelIndex InstrumentListModel::copyInstrument(const QModelIndex& source)
 QModelIndex InstrumentListModel::copyInstrument(const InstrumentItem* source)
 {
     const QString copyName =
-        m_ec->collectedItems()->suggestInstrumentName(source->instrumentName());
-    const int row = m_ec->collectedItems()->collectedItems().size();
+        m_ec->instrumentCollection()->suggestInstrumentName(source->instrumentName());
+    const int row = m_ec->instrumentCollection()->instrumentItems().size();
 
     beginInsertRows(QModelIndex(), row, row);
-    m_ec->addCopy(source, copyName);
+    m_ec->addInstrumentItemCopy(source, copyName);
     endInsertRows();
 
     return createIndex(row, 0);
@@ -163,11 +163,11 @@ template <class Instrument>
 QModelIndex InstrumentListModel::addNewInstrument()
 {
     const QString name =
-        m_ec->collectedItems()->suggestInstrumentName(defaultInstrumentName<Instrument>());
-    const int row = m_ec->collectedItems()->collectedItems().size();
+        m_ec->instrumentCollection()->suggestInstrumentName(defaultInstrumentName<Instrument>());
+    const int row = m_ec->instrumentCollection()->instrumentItems().size();
 
     beginInsertRows(QModelIndex(), row, row);
-    auto* instrument = m_ec->addInstrument<Instrument>();
+    auto* instrument = m_ec->addInstrumentItem<Instrument>();
     m_ec->setInstrumentName(instrument, name);
     endInsertRows();
 
@@ -176,7 +176,7 @@ QModelIndex InstrumentListModel::addNewInstrument()
 
 void InstrumentListModel::onInstrumentNameChanged(const InstrumentItem* instrument)
 {
-    const auto instruments = m_ec->collectedItems()->collectedItems();
+    const auto instruments = m_ec->instrumentCollection()->instrumentItems();
     if (const auto row = instruments.indexOf(const_cast<InstrumentItem*>(instrument)); row != -1)
         emit dataChanged(index(row, 0), index(row, 0));
 }
diff --git a/GUI/View/Instrument/InstrumentListModel.h b/GUI/View/Instrument/InstrumentListModel.h
index 118d7af3a05b51a0835c4a24bb206e4642772efa..54d227d3394dc8f4ce6bb5be36bed3cb9c1f17bb 100644
--- a/GUI/View/Instrument/InstrumentListModel.h
+++ b/GUI/View/Instrument/InstrumentListModel.h
@@ -35,7 +35,7 @@ public:
 
     QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
 
-    InstrumentItem* instrumentForIndex(const QModelIndex& index) const;
+    InstrumentItem* instrumentItemForIndex(const QModelIndex& index) const;
 
     QModelIndex addNewGISASInstrument();
     QModelIndex addNewOffspecInstrument();
diff --git a/GUI/View/Instrument/InstrumentListView.cpp b/GUI/View/Instrument/InstrumentListView.cpp
index 5436f87d045749774ed83843385b938282585240..60265d72e2a0ac1f6f60935f1e9eae6fb023289d 100644
--- a/GUI/View/Instrument/InstrumentListView.cpp
+++ b/GUI/View/Instrument/InstrumentListView.cpp
@@ -145,11 +145,11 @@ QList<QAction*> InstrumentListView::toolbarActions() const
             m_loadFromLibraryAction};
 }
 
-InstrumentItem* InstrumentListView::currentInstrument() const
+InstrumentItem* InstrumentListView::currentInstrumentItem() const
 {
     const QModelIndexList indexes = m_listView->selectionModel()->selectedIndexes();
     if (!indexes.empty())
-        return m_model->instrumentForIndex(indexes.front());
+        return m_model->instrumentItemForIndex(indexes.front());
     return nullptr;
 }
 
@@ -159,7 +159,7 @@ void InstrumentListView::onItemSelectionChanged()
 
     QModelIndexList indexes = m_listView->selectionModel()->selectedIndexes();
     if (!indexes.empty())
-        emit instrumentSelected(m_model->instrumentForIndex(indexes.front()));
+        emit instrumentSelected(m_model->instrumentItemForIndex(indexes.front()));
     else
         emit instrumentSelected(nullptr);
 }
@@ -215,7 +215,7 @@ void InstrumentListView::onStoreInLibrary()
         return;
 
     QModelIndex idx = m_listView->selectionModel()->selectedIndexes().front();
-    InstrumentItem* instrument = m_model->instrumentForIndex(idx);
+    InstrumentItem* instrument = m_model->instrumentItemForIndex(idx);
 
     InstrumentLibraryEditor dlg(GUI::Global::mainWindow);
     dlg.setGisasEnabled(m_document->functionalities().testFlag(ProjectDocument::Gisas));
diff --git a/GUI/View/Instrument/InstrumentListView.h b/GUI/View/Instrument/InstrumentListView.h
index 3de21c5284cf3fd2d9858fee06cf7e8b17f79e49..fe7e9988409d346e6e82abdcbbdef7b117e32853 100644
--- a/GUI/View/Instrument/InstrumentListView.h
+++ b/GUI/View/Instrument/InstrumentListView.h
@@ -38,7 +38,7 @@ public:
 
     QList<QAction*> toolbarActions() const;
 
-    InstrumentItem* currentInstrument() const;
+    InstrumentItem* currentInstrumentItem() const;
 
 signals:
     void instrumentSelected(InstrumentItem* instrument);
diff --git a/GUI/View/Instrument/InstrumentView.cpp b/GUI/View/Instrument/InstrumentView.cpp
index 3e53f7a0c73391c7c51fad46756dec9a2bf5caf7..f93725145398bb32c9c0dd8e86d057dbcebfd117 100644
--- a/GUI/View/Instrument/InstrumentView.cpp
+++ b/GUI/View/Instrument/InstrumentView.cpp
@@ -86,7 +86,7 @@ void InstrumentView::hideEvent(QHideEvent*)
 
 void InstrumentView::createWidgetsForCurrentInstrument()
 {
-    auto* currentInstrument = m_instrumentListView->currentInstrument();
+    auto* currentInstrument = m_instrumentListView->currentInstrumentItem();
     if (!currentInstrument) {
         m_scrollArea->setWidget(new QWidget(m_scrollArea)); // blank widget
         return;
@@ -152,14 +152,14 @@ void InstrumentView::createWidgetsForCurrentInstrument()
 
 void InstrumentView::onInstrumentNameEdited(const QString& newName)
 {
-    auto* currentInstrument = m_instrumentListView->currentInstrument();
+    auto* currentInstrument = m_instrumentListView->currentInstrumentItem();
     if (currentInstrument && currentInstrument->instrumentName() != newName)
         m_document->instrumentsEditController()->setInstrumentName(currentInstrument, newName);
 }
 
 void InstrumentView::onInstrumentdescriptionEdited(const QString& t)
 {
-    auto* currentInstrument = m_instrumentListView->currentInstrument();
+    auto* currentInstrument = m_instrumentListView->currentInstrumentItem();
     if (currentInstrument && currentInstrument->description() != t) {
         currentInstrument->setDescription(t);
         onInstrumentChangedByEditor();
@@ -169,12 +169,12 @@ void InstrumentView::onInstrumentdescriptionEdited(const QString& t)
 void InstrumentView::onInstrumentChangedByEditor()
 {
     m_document->instrumentsEditController()->notifyInstrumentChanged(
-        m_instrumentListView->currentInstrument());
+        m_instrumentListView->currentInstrumentItem());
 }
 
 void InstrumentView::onInstrumentChangedFromExternal(const InstrumentItem* instrument)
 {
-    if (instrument == m_instrumentListView->currentInstrument())
+    if (instrument == m_instrumentListView->currentInstrumentItem())
         createWidgetsForCurrentInstrument();
 }
 
diff --git a/GUI/View/Instrument/ResolutionFunctionEditor.cpp b/GUI/View/Instrument/ResolutionFunctionEditor.cpp
index 4518aac1a543ad1fc55a28aaaa042e75d5b650bb..e23d706e927a78042368095b6cd388a436af21ef 100644
--- a/GUI/View/Instrument/ResolutionFunctionEditor.cpp
+++ b/GUI/View/Instrument/ResolutionFunctionEditor.cpp
@@ -31,7 +31,7 @@ ResolutionFunctionEditor::ResolutionFunctionEditor(Unit unit, QWidget* parent, D
     m_formLayout = new QFormLayout(this);
     m_formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
 
-    auto* typeCombo = GUI::Util::createComboBoxFromProperty(item->resolutionFunction(), [=](int) {
+    auto* typeCombo = GUI::Util::createComboBoxFromProperty(item->resolutionFunctionSelection(), [=](int) {
         createResolutionWidgets();
         emit dataChanged();
     });
@@ -47,7 +47,7 @@ void ResolutionFunctionEditor::createResolutionWidgets()
     while (m_formLayout->rowCount() > 1)
         m_formLayout->removeRow(1);
 
-    auto* resFunction = m_item->resolutionFunction().currentItem();
+    auto* resFunction = m_item->resolutionFunctionSelection().currentItem();
     if (auto* p = dynamic_cast<ResolutionFunction2DGaussianItem*>(resFunction)) {
         auto* sigmaXSpinBox = GUI::Util::createDoubleSpinBoxRow(m_formLayout, p->sigmaX());
         auto* sigmaYSpinBox = GUI::Util::createDoubleSpinBoxRow(m_formLayout, p->sigmaY());
diff --git a/GUI/View/PlotUtil/DataPropertyWidget.cpp b/GUI/View/PlotUtil/DataPropertyWidget.cpp
index 3030dec8ce0f9c9295785838c4786a0b2509764b..0c1286dcc45d12a7d20e0473a0bd9d265b9e4c04 100644
--- a/GUI/View/PlotUtil/DataPropertyWidget.cpp
+++ b/GUI/View/PlotUtil/DataPropertyWidget.cpp
@@ -45,7 +45,7 @@ void DataPropertyWidget::updateItemCoords(DataItem* item)
     if (jobItem())
         instrument = jobItem()->instrumentItem();
     else if (realItem()) {
-        instrument = gSessionData->projectDocument.value()->collectedItems()->findInstrumentById(
+        instrument = gSessionData->projectDocument.value()->collectedItems()->findInstrumentItemById(
             realItem()->instrumentId());
     } else
         ASSERT(0);
diff --git a/GUI/View/Toplevel/ProjectSettingsView.cpp b/GUI/View/Toplevel/ProjectSettingsView.cpp
index b28555617f097766ad332249bbc36f48978a511f..5763ba0cd252f52e81f2373fb6c77bfe9bb9d5ef 100644
--- a/GUI/View/Toplevel/ProjectSettingsView.cpp
+++ b/GUI/View/Toplevel/ProjectSettingsView.cpp
@@ -117,7 +117,7 @@ void ProjectSettingsView::storeAsDefaults()
 void ProjectSettingsView::onSingleInstrumentRadioToggled(bool newState)
 {
     if (newState) {
-        if (m_document->collectedItems()->collectedItems().size() > 1) {
+        if (m_document->collectedItems()->instrumentItems().size() > 1) {
             QMessageBox::warning(this, "Select single instrument mode",
                                  "This project already contains more than one instrument. Changing "
                                  "this setting is not possible.");
diff --git a/GUI/View/Toplevel/SimulationView.cpp b/GUI/View/Toplevel/SimulationView.cpp
index da697ef8790acaef0f8fafbc1d68f9bd67a3d85d..77d9655ef582f73bc95605ad0d52d95b0b8f8eea 100644
--- a/GUI/View/Toplevel/SimulationView.cpp
+++ b/GUI/View/Toplevel/SimulationView.cpp
@@ -244,7 +244,7 @@ QVector<SampleItem*> SimulationView::sampleItems() const
 
 QVector<InstrumentItem*> SimulationView::collectedItems() const
 {
-    return m_document->collectedItems()->collectedItems();
+    return m_document->collectedItems()->instrumentItems();
 }
 
 QVector<RealItem*> SimulationView::realItems() const
diff --git a/Tests/Suite/GUI/Check.cpp b/Tests/Suite/GUI/Check.cpp
index 5df977acc0b2b1ccbbe8fc370394492697ed78fb..f6bc995bf13d6f745d918abe836001d1955d86a1 100644
--- a/Tests/Suite/GUI/Check.cpp
+++ b/Tests/Suite/GUI/Check.cpp
@@ -42,7 +42,7 @@ std::unique_ptr<ISimulation> indirectSimulation(const ISimulation& sim)
         GUI::Transform::FromCore::itemizeOptions(sim));
 
     return GUI::Transform::ToCore::itemsToSimulation(
-        sampleItem.get(), instrumentItems->collectedItems().front(), *optionsItem);
+        sampleItem.get(), instrumentItems->instrumentItems().front(), *optionsItem);
 }
 
 } // namespace
diff --git a/Tests/Unit/GUI/TestDetectorItems.cpp b/Tests/Unit/GUI/TestDetectorItems.cpp
index d863d658c0a2fff26abd6241888c2d81ebdee546..3abd3d7ba78514029f7b756b1a4fbd029662fc2c 100644
--- a/Tests/Unit/GUI/TestDetectorItems.cpp
+++ b/Tests/Unit/GUI/TestDetectorItems.cpp
@@ -13,7 +13,7 @@
 TEST(TestDetectorItems, resolutionFunction)
 {
     InstrumentCollection model;
-    auto* instrument = model.addInstrument<GISASInstrumentItem>();
+    auto* instrument = model.addInstrumentItem<GISASInstrumentItem>();
 
     DetectorItem* detectorItem = instrument->detectorItem();
 
@@ -39,7 +39,7 @@ TEST(TestDetectorItems, resolutionFunctionUnit)
     detector.setResolutionFunctionType<ResolutionFunctionNoneItem>();
     detector.setResolutionFunctionType<ResolutionFunction2DGaussianItem>();
     auto* p = dynamic_cast<ResolutionFunction2DGaussianItem*>(
-        detector.resolutionFunction().currentItem());
+        detector.resolutionFunctionSelection().currentItem());
     EXPECT_NE(p, nullptr);
     EXPECT_EQ(asString(p->sigmaX().unit()), "mm");
     EXPECT_EQ(asString(p->sigmaY().unit()), "mm");
@@ -48,7 +48,7 @@ TEST(TestDetectorItems, resolutionFunctionUnit)
     sphericalDetector.setResolutionFunctionType<ResolutionFunctionNoneItem>();
     sphericalDetector.setResolutionFunctionType<ResolutionFunction2DGaussianItem>();
     p = dynamic_cast<ResolutionFunction2DGaussianItem*>(
-        sphericalDetector.resolutionFunction().currentItem());
+        sphericalDetector.resolutionFunctionSelection().currentItem());
     EXPECT_NE(p, nullptr);
     EXPECT_EQ(asString(p->sigmaX().unit()), unitAsString(Unit::degree));
     EXPECT_EQ(asString(p->sigmaY().unit()), unitAsString(Unit::degree));
diff --git a/Tests/Unit/GUI/TestInstrumentItems.cpp b/Tests/Unit/GUI/TestInstrumentItems.cpp
index 2ce22fb5ac94b2c28c97a6d42efd246102542412..54ba5802c12c87ed9f6a1d29686fa516557d9418 100644
--- a/Tests/Unit/GUI/TestInstrumentItems.cpp
+++ b/Tests/Unit/GUI/TestInstrumentItems.cpp
@@ -15,7 +15,7 @@ TEST(TestInstrumentCollection, instrumentAddedRemoved)
     EXPECT_TRUE(spy.isValid());
 
     // populating instrument model
-    auto* p = document.instrumentsEditController()->addInstrument<GISASInstrumentItem>();
+    auto* p = document.instrumentsEditController()->addInstrumentItem<GISASInstrumentItem>();
 
     // checking that a signal was emitted about the new instrument
     EXPECT_EQ(spy.count(), 1);
@@ -32,9 +32,9 @@ TEST(TestInstrumentCollection, instrumentChanged)
     ProjectDocument document;
 
     // populating instrument model
-    auto* instrument1 = document.instrumentsEditController()->addInstrument<GISASInstrumentItem>();
+    auto* instrument1 = document.instrumentsEditController()->addInstrumentItem<GISASInstrumentItem>();
     auto* instrument2 =
-        document.instrumentsEditController()->addInstrument<SpecularInstrumentItem>();
+        document.instrumentsEditController()->addInstrumentItem<SpecularInstrumentItem>();
 
     QSignalSpy spy(document.instrumentsEditController(),
                    SIGNAL(instrumentChanged(const InstrumentItem*)));
@@ -59,7 +59,7 @@ TEST(TestInstrumentCollection, instrumentChanged)
 
     // Add another instrument
     auto* instrument3 =
-        document.instrumentsEditController()->addInstrument<OffspecInstrumentItem>();
+        document.instrumentsEditController()->addInstrumentItem<OffspecInstrumentItem>();
 
     // Change instrument2
     document.instrumentsEditController()->setInstrumentName(instrument2, "BB");
diff --git a/Tests/Unit/GUI/TestLinkInstrument.cpp b/Tests/Unit/GUI/TestLinkInstrument.cpp
index 33e7b4c2d1be3542b44b14616338ac015dc44e16..70ae96147494a883249bc95d0d7de2e9084fe31f 100644
--- a/Tests/Unit/GUI/TestLinkInstrument.cpp
+++ b/Tests/Unit/GUI/TestLinkInstrument.cpp
@@ -31,7 +31,7 @@ TEST(TestLinkInstrument, canLinkToInstrument)
     ProjectDocument document;
 
     // populating instrument model
-    auto* instrument = document.collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document.collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     const QString identifier = instrument->id();
     ASSERT_TRUE(!identifier.isEmpty());
 
@@ -48,7 +48,7 @@ TEST(TestLinkInstrument, canLinkToInstrument)
                                                                           << realData);
 
     // changing detector type and checking that link remain
-    instrument->setDetectorType<RectangularDetectorItem>();
+    instrument->setDetectorItemType<RectangularDetectorItem>();
     EXPECT_EQ(linkedRealDataItems(*document.realModel(), instrument), QList<RealItem*>()
                                                                           << realData);
 
diff --git a/Tests/Unit/GUI/TestProjectDocument.cpp b/Tests/Unit/GUI/TestProjectDocument.cpp
index 0359588cc259e9ed71a49e96769030f252ef4e04..052eff5318c3869064e19fda52fe4ae03e0cbcc0 100644
--- a/Tests/Unit/GUI/TestProjectDocument.cpp
+++ b/Tests/Unit/GUI/TestProjectDocument.cpp
@@ -16,7 +16,7 @@ protected:
     //! helper method to modify something in a model
     void modify_models(ProjectDocument& doc)
     {
-        auto* instrument = doc.collectedItems()->collectedItems().front();
+        auto* instrument = doc.collectedItems()->instrumentItems().front();
         doc.instrumentsEditController()->setInstrumentName(instrument,
                                                            QUuid::createUuid().toString());
     }
@@ -36,7 +36,7 @@ TEST_F(TestProjectDocument, projectDocument)
     EXPECT_EQ(document.projectName(), QString());
     EXPECT_EQ(document.projectFileName(), QString());
 
-    auto* instrument = document.collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document.collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
 
     // Checking document name and isModified status after project save
@@ -70,7 +70,7 @@ TEST_F(TestProjectDocument, projectDocumentWithData)
     UTest::GUI::create_dir(projectDir);
 
     ProjectDocument document;
-    auto* instrument = document.collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document.collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
     RealItem* realData = UTest::GUI::createRealData("TestData", *document.realModel());
     ASSERT(realData);
diff --git a/Tests/Unit/GUI/TestSaveService.cpp b/Tests/Unit/GUI/TestSaveService.cpp
index 48445429732811bc2d5a53e902f0034ebb0037b2..a2792a00fda196a2a653759ad064d039aa871ddd 100644
--- a/Tests/Unit/GUI/TestSaveService.cpp
+++ b/Tests/Unit/GUI/TestSaveService.cpp
@@ -18,7 +18,7 @@ protected:
     // helper method to modify something in a model
     void modify_models(ProjectDocument& doc)
     {
-        auto* instrument = doc.collectedItems()->collectedItems().front();
+        auto* instrument = doc.collectedItems()->instrumentItems().front();
         doc.instrumentsEditController()->setInstrumentName(instrument,
                                                            QUuid::createUuid().toString());
     }
@@ -38,7 +38,7 @@ TEST_F(TestSaveService, autoSaveController)
     const int autosave_time(100);
 
     std::unique_ptr<ProjectDocument> document(new ProjectDocument);
-    auto* instrument = document->collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document->collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
     document->save(projectFileName);
 
@@ -82,7 +82,7 @@ TEST_F(TestSaveService, autoSaveController)
 TEST_F(TestSaveService, autoSaveControllerNewDocument)
 {
     std::unique_ptr<ProjectDocument> document(new ProjectDocument);
-    auto* instrument = document->collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document->collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
 
     const int autosave_time(100);
@@ -109,7 +109,7 @@ TEST_F(TestSaveService, saveService)
 
 
     std::unique_ptr<ProjectDocument> document(new ProjectDocument);
-    auto* instrument = document->collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document->collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
     modify_models(*document);
 
@@ -142,7 +142,7 @@ TEST_F(TestSaveService, failingSaveService)
     const QString projectFileName(projectDir + "/document.pro");
 
     std::unique_ptr<ProjectDocument> document(new ProjectDocument);
-    auto* instrument = document->collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document->collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
     modify_models(*document);
 
@@ -173,7 +173,7 @@ TEST_F(TestSaveService, saveServiceWithData)
     const QString projectFileName(projectDir + "/document.pro");
 
     std::unique_ptr<ProjectDocument> document(new ProjectDocument);
-    auto* instrument = document->collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document->collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
 
     RealItem* realData = UTest::GUI::createRealData("TestData", *document->realModel());
@@ -208,7 +208,7 @@ TEST_F(TestSaveService, autosaveEnabled)
 
     std::unique_ptr<ProjectDocument> document(new ProjectDocument());
     document->setProjectFileName(projectFileName);
-    auto* instrument = document->collectedItems()->addInstrument<GISASInstrumentItem>();
+    auto* instrument = document->collectedItems()->addInstrumentItem<GISASInstrumentItem>();
     instrument->setInstrumentName("GISAS");
 
     RealItem* realData = UTest::GUI::createRealData("TestData", *document->realModel());
diff --git a/Tests/Unit/GUI/TestSessionModel.cpp b/Tests/Unit/GUI/TestSessionModel.cpp
index 966c6dd19ecbc3e89f4b823ffedb2280baa2bb8b..e01e2261c668f46cecd87e1212969254a142606a 100644
--- a/Tests/Unit/GUI/TestSessionModel.cpp
+++ b/Tests/Unit/GUI/TestSessionModel.cpp
@@ -51,7 +51,7 @@ TEST(TestSessionModel, copyItem)
     sample1->addStandardMaterials();
 
     InstrumentCollection instrumentItems;
-    auto* instrument1 = instrumentItems.addInstrument<GISASInstrumentItem>();
+    auto* instrument1 = instrumentItems.addInstrumentItem<GISASInstrumentItem>();
     instrument1->setInstrumentName("instrument1");
 
     JobModel jobModel;
diff --git a/Tests/Unit/GUI/TestSessionXML.cpp b/Tests/Unit/GUI/TestSessionXML.cpp
index 93f380b8b9fb4a0b95dfe4b963d1249c1cdb083a..e0a5b927d77742157933903489e08cc33a8d0a8c 100644
--- a/Tests/Unit/GUI/TestSessionXML.cpp
+++ b/Tests/Unit/GUI/TestSessionXML.cpp
@@ -75,7 +75,7 @@ TEST(TestSessionXML, sessionItem)
 TEST(TestSessionXML, InstrumentItem)
 {
     SpecularInstrumentItem instrument;
-    instrument.setBackgroundType<ConstantBackgroundItem>();
+    instrument.setBackgroundItemType<ConstantBackgroundItem>();
     const auto a1 = serialize(instrument);
 
     // target model, from xml