diff --git a/GUI/coregui/Models/JobModelFunctions.cpp b/GUI/coregui/Models/JobModelFunctions.cpp
index 3f2104e6242d7b4b03f91ef0b6cece99cc1ec22f..309c2462e402b5356e09f933303ff05c5dd3bb4b 100644
--- a/GUI/coregui/Models/JobModelFunctions.cpp
+++ b/GUI/coregui/Models/JobModelFunctions.cpp
@@ -180,8 +180,8 @@ void JobModelFunctions::muteMagnetizationData(JobItem* jobItem)
 {
     MaterialItemContainer* container =
         static_cast<MaterialItemContainer*>(jobItem->getItem(JobItem::T_MATERIAL_CONTAINER));
-    for (SessionItem* item : container->getItems(MaterialItemContainer::T_MATERIALS))
-        static_cast<MaterialItem*>(item)->hideMagnetization();
+    for (MaterialItem* material : container->getMaterials())
+        material->hideMagnetization();
 
     MultiLayerItem* sample = static_cast<MultiLayerItem*>(jobItem->getItem(JobItem::T_SAMPLE));
     sample->getItem(MultiLayerItem::P_EXTERNAL_FIELD)->setVisible(false);
diff --git a/GUI/coregui/Models/MaterialItemContainer.cpp b/GUI/coregui/Models/MaterialItemContainer.cpp
index 63a809328de274e797b6f5e49d38502cb5879bca..62387f02bb6c54dade0d153e65fe484b6d8db3fa 100644
--- a/GUI/coregui/Models/MaterialItemContainer.cpp
+++ b/GUI/coregui/Models/MaterialItemContainer.cpp
@@ -49,3 +49,8 @@ const MaterialItem* MaterialItemContainer::findMaterialById(QString id) const
     }
     return nullptr;
 }
+
+QVector<MaterialItem*> MaterialItemContainer::getMaterials()
+{
+    return items<MaterialItem>(T_MATERIALS);
+}
diff --git a/GUI/coregui/Models/MaterialItemContainer.h b/GUI/coregui/Models/MaterialItemContainer.h
index 04355c07e5029dd6eb120527edda925fc7cbc69f..b27588bfb252d62ab3b801edf6cddd3c55027142 100644
--- a/GUI/coregui/Models/MaterialItemContainer.h
+++ b/GUI/coregui/Models/MaterialItemContainer.h
@@ -20,9 +20,10 @@
 class MaterialItem;
 
 class MaterialItemContainer : public SessionItem {
-public:
+private:
     static const QString T_MATERIALS;
 
+public:
     MaterialItemContainer();
 
     //! Copies MaterialItem, inserts it into the container
@@ -31,6 +32,8 @@ public:
 
     const MaterialItem* findMaterialById(QString id) const;
     MaterialItem* findMaterialById(QString id);
+
+    QVector<MaterialItem*> getMaterials();
 };
 
 #endif // BORNAGAIN_GUI_COREGUI_MODELS_MATERIALITEMCONTAINER_H
diff --git a/GUI/coregui/Models/SessionItem.h b/GUI/coregui/Models/SessionItem.h
index 809903a01f35bcef17f64e4d6eba183e870cc1bc..3ba0c1ba13c33f326f125fb66b7a7f6374546ffe 100644
--- a/GUI/coregui/Models/SessionItem.h
+++ b/GUI/coregui/Models/SessionItem.h
@@ -65,6 +65,7 @@ public:
     SessionItem* getItem(const QString& tag = "", int row = 0) const;
     template <typename T> T* item(const QString& tag) const;
     QVector<SessionItem*> getItems(const QString& tag = "") const;
+    template <typename T> QVector<T*> items(const QString& tag = "") const;
     bool insertItem(int row, SessionItem* item, const QString& tag = "");
     SessionItem* takeItem(int row, const QString& tag);
 
@@ -155,6 +156,17 @@ template <typename T> T* SessionItem::item(const QString& tag) const
     return t;
 }
 
+template <typename T>
+QVector<T*> SessionItem::items(const QString& tag) const
+{
+    QVector<T*> result;
+
+    for ( SessionItem* item : getItems(tag) )
+        if (T* titem = dynamic_cast<T*>(item)) 
+            result.push_back(titem);
+    return result;
+}
+
 template <typename T> T* SessionItem::addProperty(const QString& tagname)
 {
     auto property = new T;