diff --git a/GUI/coregui/Models/FitParameterProxyModel.cpp b/GUI/coregui/Models/FitParameterProxyModel.cpp
index 1d45d83a68e2c0119031ac2cf48a5250e8c56994..fd2b1d4ef64f8d0e51dce3cfe2527607d18ab487 100644
--- a/GUI/coregui/Models/FitParameterProxyModel.cpp
+++ b/GUI/coregui/Models/FitParameterProxyModel.cpp
@@ -138,7 +138,7 @@ int FitParameterProxyModel::rowCount(const QModelIndex& parent) const
         return 0;
 
     if(parent_item->modelType() == Constants::FitParameterContainerType) {
-        return parent_item->rowCount();
+        return parent_item->numberOfChildren();
     }
     else if(parent_item->modelType() == Constants::FitParameterType) {
         return parent_item->getItems(FitParameterItem::T_LINK).size();
diff --git a/GUI/coregui/Models/ModelPath.cpp b/GUI/coregui/Models/ModelPath.cpp
index 5efce991c7fc1accc00a4da80d977fb53e82344c..fca13b91ea12eb2c289aa0a7ade9022ee3d4766f 100644
--- a/GUI/coregui/Models/ModelPath.cpp
+++ b/GUI/coregui/Models/ModelPath.cpp
@@ -48,7 +48,7 @@ QModelIndex ModelPath::getIndexFromPath(const SessionModel* model, const QString
                 t = t->getItem(JobItem::T_INSTRUMENT);
                 continue;
             }
-            for (int j = 0; j < t->rowCount(); j++) {
+            for (int j = 0; j < t->numberOfChildren(); j++) {
                 if (t->childAt(j)->itemName() == parts[i]) {
                     t = t->childAt(j);
                     break;
diff --git a/GUI/coregui/Models/ParameterTreeUtils.cpp b/GUI/coregui/Models/ParameterTreeUtils.cpp
index 2c848233454b8291252757441397aef9996350b7..7ca29686ffe527780b70c50c2b0d3000c43afa14 100644
--- a/GUI/coregui/Models/ParameterTreeUtils.cpp
+++ b/GUI/coregui/Models/ParameterTreeUtils.cpp
@@ -271,7 +271,7 @@ void handleItem(SessionItem* tree, const SessionItem* source)
 
             } else if (child->modelType() == Constants::GroupItemType) {
                 SessionItem* currentItem = dynamic_cast<GroupItem*>(child)->currentItem();
-                if (currentItem && currentItem->rowCount() > 0) {
+                if (currentItem && currentItem->numberOfChildren() > 0) {
                     SessionItem* branch = tree->model()->insertNewItem(
                         Constants::ParameterLabelType, tree->index());
                     handleItem(branch, currentItem);
diff --git a/GUI/coregui/Models/SessionItem.cpp b/GUI/coregui/Models/SessionItem.cpp
index e458662d4ae1ec3073d33d959816a1b639795c4f..a842bed5e2ddcc622efedcf7de9b76e41985b826 100644
--- a/GUI/coregui/Models/SessionItem.cpp
+++ b/GUI/coregui/Models/SessionItem.cpp
@@ -37,7 +37,6 @@ public:
 const QString SessionItem::P_NAME = "Name";
 
 //! Constructs new item with given model type. The type must be defined.
-
 SessionItem::SessionItem(const QString& modelType)
     : m_parent(nullptr)
     , m_model(nullptr)
@@ -51,7 +50,6 @@ SessionItem::SessionItem(const QString& modelType)
 }
 
 //! Destructor deletes all its children and request parent to delete this item.
-
 SessionItem::~SessionItem()
 {
     if(m_mapper)
@@ -72,52 +70,19 @@ SessionItem::~SessionItem()
         delete translator;
 }
 
-//! internal
-void SessionItem::childDeleted(SessionItem* child)
-{
-    int index = rowOfChild(child);
-    Q_ASSERT(index != -1);
-    m_children.replace(index, nullptr);
-}
-
-//! internal
-void SessionItem::setParentAndModel(SessionItem* parent, SessionModel* model)
-{
-    setModel(model);
-    m_parent = parent;
-}
-
-//! internal
-void SessionItem::setModel(SessionModel* model)
-{
-    m_model = model;
-    if (m_mapper) {
-        m_mapper->setItem(this);
-    }
-    // process children as well
-    for (auto& child : m_children) {
-        child->setModel(model);
-    }
-}
-
-
-
 //! Returns model of this item.
-
 SessionModel* SessionItem::model() const
 {
     return m_model;
 }
 
 //! Returns parent of this item.
-
 SessionItem* SessionItem::parent() const
 {
     return m_parent;
 }
 
 //! Returns model index of this item.
-
 QModelIndex SessionItem::index() const
 {
     if (model()) {
@@ -126,36 +91,25 @@ QModelIndex SessionItem::index() const
     return QModelIndex();
 }
 
-//! Returns true when item has children.
-
-bool SessionItem::hasChildren() const
-{
-    return !m_children.isEmpty();
-}
-
 //! Returns total number of children.
-
-int SessionItem::rowCount() const
+int SessionItem::numberOfChildren() const
 {
-    return m_children.count();
+    return m_children.size();
 }
 
 //! Returns vector of all children.
-
 QVector<SessionItem*> SessionItem::children() const
 {
     return m_children;
 }
 
 //! Returns the child at the given row.
-
 SessionItem* SessionItem::childAt(int row) const
 {
     return m_children.value(row, nullptr);
 }
 
 //! Returns row index of given child.
-
 int SessionItem::rowOfChild(SessionItem* child) const
 {
     return m_children.indexOf(child);
@@ -171,7 +125,6 @@ SessionItem* SessionItem::getChildByName(const QString& name) const
 }
 
 //! Returns the first child of the given type.
-
 SessionItem* SessionItem::getChildOfType(const QString& type) const
 {
     for (auto child : m_children) {
@@ -181,7 +134,6 @@ SessionItem* SessionItem::getChildOfType(const QString& type) const
 }
 
 //! Returns a vector of all children of the given type.
-
 QVector<SessionItem*> SessionItem::getChildrenOfType(const QString& model_type) const
 {
     QVector<SessionItem*> result;
@@ -193,7 +145,6 @@ QVector<SessionItem*> SessionItem::getChildrenOfType(const QString& model_type)
 }
 
 //! Removes row from item and returns the item.
-
 SessionItem* SessionItem::takeRow(int row)
 {
     SessionItem* item = childAt(row);
@@ -204,7 +155,6 @@ SessionItem* SessionItem::takeRow(int row)
 
 //! Add new tag to this item with given name, min, max and types.
 //! max = -1 -> unlimited, modelTypes empty -> all types allowed
-
 bool SessionItem::registerTag(const QString& name, int min, int max, QStringList modelTypes)
 {
     if (min < 0 || (min > max && max >= 0))
@@ -216,14 +166,12 @@ bool SessionItem::registerTag(const QString& name, int min, int max, QStringList
 }
 
 //! Returns true if tag is available.
-
 bool SessionItem::isTag(const QString& name) const
 {
     return getTagInfo(name).isValid();
 }
 
 //! Returns the tag name of given item when existing.
-
 QString SessionItem::tagFromItem(const SessionItem* item) const
 {
     int index = m_children.indexOf(const_cast<SessionItem*>(item));
@@ -242,7 +190,6 @@ QString SessionItem::tagFromItem(const SessionItem* item) const
 }
 
 //! Returns corresponding tag info.
-
 SessionTagInfo SessionItem::getTagInfo(const QString& tag) const
 {
     QString tagName = tag.isEmpty() ? defaultTag() : tag;
@@ -256,37 +203,18 @@ SessionTagInfo SessionItem::getTagInfo(const QString& tag) const
 }
 
 //! Returns true if model type can be added to default tag.
-
 bool SessionItem::acceptsAsDefaultItem(const QString& item_name) const
 {
     return getTagInfo(defaultTag()).modelTypes.contains(item_name);
 }
 
 //! Returns vector of acceptable default tag types.
-
 QVector<QString> SessionItem::acceptableDefaultItemTypes() const
 {
     return getTagInfo(defaultTag()).modelTypes.toVector();
 }
 
-//! internal
-int SessionItem::tagStartIndex(const QString& name) const
-{
-    int index = 0;
-    QVector<SessionTagInfo>::const_iterator it;
-    for (it = m_tags.constBegin(); it != m_tags.constEnd(); ++it) {
-        SessionTagInfo tagInfo = *it;
-        if (tagInfo.name == name) {
-            return index;
-        } else {
-            index += tagInfo.childCount;
-        }
-    }
-    return -1;
-}
-
 //! Returns item in given row of given tag.
-
 SessionItem* SessionItem::getItem(const QString& tag, int row) const
 {
     const QString tagName = tag.isEmpty() ? defaultTag() : tag;
@@ -303,7 +231,6 @@ SessionItem* SessionItem::getItem(const QString& tag, int row) const
 }
 
 //! Returns vector of all items of given tag.
-
 QVector<SessionItem*> SessionItem::getItems(const QString& tag) const
 {
     const QString tagName = tag.isEmpty() ? defaultTag() : tag;
@@ -316,7 +243,6 @@ QVector<SessionItem*> SessionItem::getItems(const QString& tag) const
 }
 
 //! Insert item into given tag into given row.
-
 bool SessionItem::insertItem(int row, SessionItem* item, const QString& tag)
 {
     if (!item)
@@ -355,14 +281,12 @@ bool SessionItem::insertItem(int row, SessionItem* item, const QString& tag)
             break;
         }
     }
-
     if (m_model)
             m_model->endInsertRows();
     return true;
 }
 
 //! Remove item from given row from given tag.
-
 SessionItem* SessionItem::takeItem(int row, const QString& tag)
 {
     const QString tagName = tag.isEmpty() ? defaultTag() : tag;
@@ -387,14 +311,12 @@ SessionItem* SessionItem::takeItem(int row, const QString& tag)
             break;
         }
     }
-
     if (m_model)
             m_model->endRemoveRows();
     return result;
 }
 
 //! Add new property item and register new tag.
-
 SessionItem* SessionItem::addProperty(const QString& name, const QVariant& variant)
 {
     if (isTag(name))
@@ -413,7 +335,6 @@ SessionItem* SessionItem::addProperty(const QString& name, const QVariant& varia
 }
 
 //! Directly access value of item under given tag.
-
 QVariant SessionItem::getItemValue(const QString& tag) const
 {
     if (!isTag(tag))
@@ -425,7 +346,6 @@ QVariant SessionItem::getItemValue(const QString& tag) const
 }
 
 //! Directly set value of item under given tag.
-
 void SessionItem::setItemValue(const QString& tag, const QVariant& variant)
 {
     if (!isTag(tag))
@@ -435,7 +355,6 @@ void SessionItem::setItemValue(const QString& tag, const QVariant& variant)
 }
 
 //! Creates new group item and register new tag, returns GroupItem.
-
 SessionItem* SessionItem::addGroupProperty(const QString& groupName, const QString& groupType)
 {
     SessionItem* result(0);
@@ -450,38 +369,32 @@ SessionItem* SessionItem::addGroupProperty(const QString& groupName, const QStri
         registerTag(groupName, 1, 1, QStringList() << Constants::GroupItemType);
         result = groupItem;
     }
-
     else {
         // create single item
         registerTag(groupName, 1, 1, QStringList() << groupType);
         result = ItemFactory::createItem(groupType);
     }
-
     Q_ASSERT(result);
     result->setDisplayName(groupName);
     if(!insertItem(0, result, groupName)) {
         throw GUIHelpers::Error("SessionItem::addGroupProperty -> Error. Can't insert group item");
     }
-
     return result;
 }
 
-//! Access subitem of group item.
-
-SessionItem* SessionItem::getGroupItem(const QString& groupName) const
-{
-    return item<GroupItem>(groupName).currentItem();
-}
-
 //! Set the current type of group item.
-
 SessionItem* SessionItem::setGroupProperty(const QString& groupName, const QString& value) const
 {
     return item<GroupItem>(groupName).setCurrentType(value);
 }
 
-//! Returns corresponding variant under given role, invalid variant when role is not present.
+//! Access subitem of group item.
+SessionItem* SessionItem::getGroupItem(const QString& groupName) const
+{
+    return item<GroupItem>(groupName).currentItem();
+}
 
+//! Returns corresponding variant under given role, invalid variant when role is not present.
 QVariant SessionItem::data(int role) const
 {
     role = (role == Qt::EditRole) ? Qt::DisplayRole : role;
@@ -494,7 +407,6 @@ QVariant SessionItem::data(int role) const
 }
 
 //! Set variant to role, create role if not present yet.
-
 bool SessionItem::setData(int role, const QVariant& value)
 {
     role = (role == Qt::EditRole) ? Qt::DisplayRole : role;
@@ -521,7 +433,6 @@ bool SessionItem::setData(int role, const QVariant& value)
 }
 
 //! Returns vector of all present roles.
-
 QVector<int> SessionItem::getRoles() const
 {
     QVector<int> result;
@@ -533,7 +444,6 @@ QVector<int> SessionItem::getRoles() const
 }
 
 //! Notify model about data changes.
-
 void SessionItem::emitDataChanged(int role)
 {
     if (m_model) {
@@ -542,44 +452,19 @@ void SessionItem::emitDataChanged(int role)
     }
 }
 
-//! internal
-int SessionItem::flags() const
-{
-    QVariant flags = data(SessionModel::FlagRole);
-    if (!flags.isValid())
-        return SessionModel::VISIBLE | SessionModel::EDITABLE | SessionModel::ENABLED;
-
-    return flags.toInt();
-}
-
-//! internal
-void SessionItem::changeFlags(bool enabled, int flag)
-{
-    int flags = this->flags();
-    if (enabled) {
-        flags |= flag;
-    } else {
-        flags &= ~flag;
-    }
-    setData(SessionModel::FlagRole, flags);
-}
-
 //! Get model type
-
 QString SessionItem::modelType() const
 {
     return data(SessionModel::ModelTypeRole).toString();
 }
 
 //! Get value
-
 QVariant SessionItem::value() const
 {
     return data(Qt::DisplayRole);
 }
 
 //! Set value, ensure that variant types match.
-
 bool SessionItem::setValue(QVariant value)
 {
     QVariant previous_variant = this->value();
@@ -588,7 +473,6 @@ bool SessionItem::setValue(QVariant value)
         throw GUIHelpers::Error("ParameterizedItem::setRegisteredProperty() -> Error. Type of "
                                 "previous and new variant does not coincide.");
     }
-
     // TODO If QVariant contains ComboProperty, the comparison will be always true.
     if(previous_variant == value)
         return true;
@@ -597,21 +481,18 @@ bool SessionItem::setValue(QVariant value)
 }
 
 //! Get default tag
-
 QString SessionItem::defaultTag() const
 {
     return data(SessionModel::DefaultTagRole).toString();
 }
 
 //! Set default tag
-
 void SessionItem::setDefaultTag(const QString& tag)
 {
     setData(SessionModel::DefaultTagRole, tag);
 }
 
 //! Get display name of item, append index if ambigue.
-
 QString SessionItem::displayName() const
 {
     QString result = data(SessionModel::DisplayNameRole).toString();
@@ -632,42 +513,17 @@ QString SessionItem::displayName() const
         if(index >= 0) {
             return result + QString::number(index);
         }
-
     }
-
     return result;
 }
 
 //! Set display name
-
 void SessionItem::setDisplayName(const QString& display_name)
 {
     setData(SessionModel::DisplayNameRole, display_name);
 }
 
-//! internal
-int SessionItem::getCopyNumberOfChild(const SessionItem* item) const
-{
-    if (!item) return -1;
-    int result = -1;
-    int count = 0;
-    QString model_type = item->modelType();
-    // check child items:
-    for (auto p_child_item : m_children) {
-        QString child_type = p_child_item->modelType();
-        if (p_child_item == item) {
-            result = count;
-        }
-        if (child_type == model_type && !p_child_item->isTag(P_NAME)) {
-            ++count;
-        }
-    }
-    if (count > 1) return result;
-    return -1;
-}
-
 //! Get item name, return display name if no name is set.
-
 QString SessionItem::itemName() const
 {
     if (isTag(P_NAME)) {
@@ -678,7 +534,6 @@ QString SessionItem::itemName() const
 }
 
 //! Set item name, add property if necessary.
-
 void SessionItem::setItemName(const QString& name)
 {
     if (isTag(P_NAME)) {
@@ -695,7 +550,6 @@ void SessionItem::setItemName(const QString& name)
     }
 }
 
-
 // access flags
 
 void SessionItem::setVisible(bool enabled)
@@ -728,7 +582,6 @@ bool SessionItem::isEditable() const
     return flags() & SessionModel::EDITABLE;
 }
 
-
 // more roles
 
 RealLimits SessionItem::limits() const
@@ -765,14 +618,12 @@ SessionItem& SessionItem::setToolTip(const QString& tooltip)
 }
 
 //! Returns label of item shown in property editor.
-
 QString SessionItem::itemLabel() const
 {
     return QString("");
 }
 
 //! Returns the current model mapper of this item. Creates new one if necessary.
-
 ModelMapper* SessionItem::mapper()
 {
     if (!m_mapper) {
@@ -795,3 +646,90 @@ void SessionItem::addTranslator(const IPathTranslator& translator)
 {
     m_translators.push_back(translator.clone());
 }
+
+//! internal
+void SessionItem::childDeleted(SessionItem* child)
+{
+    int index = rowOfChild(child);
+    Q_ASSERT(index != -1);
+    m_children.replace(index, nullptr);
+}
+
+//! internal
+void SessionItem::setParentAndModel(SessionItem* parent, SessionModel* model)
+{
+    setModel(model);
+    m_parent = parent;
+}
+
+//! internal
+void SessionItem::setModel(SessionModel* model)
+{
+    m_model = model;
+    if (m_mapper) {
+        m_mapper->setItem(this);
+    }
+    // process children as well
+    for (auto& child : m_children) {
+        child->setModel(model);
+    }
+}
+
+//! internal
+int SessionItem::tagStartIndex(const QString& name) const
+{
+    int index = 0;
+    QVector<SessionTagInfo>::const_iterator it;
+    for (it = m_tags.constBegin(); it != m_tags.constEnd(); ++it) {
+        SessionTagInfo tagInfo = *it;
+        if (tagInfo.name == name) {
+            return index;
+        } else {
+            index += tagInfo.childCount;
+        }
+    }
+    return -1;
+}
+
+//! internal
+int SessionItem::flags() const
+{
+    QVariant flags = data(SessionModel::FlagRole);
+    if (!flags.isValid())
+        return SessionModel::VISIBLE | SessionModel::EDITABLE | SessionModel::ENABLED;
+
+    return flags.toInt();
+}
+
+//! internal
+void SessionItem::changeFlags(bool enabled, int flag)
+{
+    int flags = this->flags();
+    if (enabled) {
+        flags |= flag;
+    } else {
+        flags &= ~flag;
+    }
+    setData(SessionModel::FlagRole, flags);
+}
+
+//! internal
+int SessionItem::getCopyNumberOfChild(const SessionItem* item) const
+{
+    if (!item) return -1;
+    int result = -1;
+    int count = 0;
+    QString model_type = item->modelType();
+    // check child items:
+    for (auto p_child_item : m_children) {
+        QString child_type = p_child_item->modelType();
+        if (p_child_item == item) {
+            result = count;
+        }
+        if (child_type == model_type && !p_child_item->isTag(P_NAME)) {
+            ++count;
+        }
+    }
+    if (count > 1) return result;
+    return -1;
+}
diff --git a/GUI/coregui/Models/SessionItem.h b/GUI/coregui/Models/SessionItem.h
index 8900a6a62973517fce54eb3555daab5a3d928546..7d87a4dcffd7171b7b10263f4a5e473bc1338c44 100644
--- a/GUI/coregui/Models/SessionItem.h
+++ b/GUI/coregui/Models/SessionItem.h
@@ -58,8 +58,7 @@ public:
 
     // these functions work without tags and operate on all children
     QModelIndex index() const;
-    bool hasChildren() const;
-    int rowCount() const;
+    int numberOfChildren() const;
     QVector<SessionItem*> children() const;
     SessionItem* childAt(int row) const;
     int rowOfChild(SessionItem* child) const;
@@ -80,17 +79,17 @@ public:
     // access tagged items
     SessionItem* getItem(const QString& tag = QString(), int row = 0) const;
     template<typename T> T& item(const QString& tag) const;
-
     QVector<SessionItem*> getItems(const QString& tag = QString()) const;
     bool insertItem(int row, SessionItem* item, const QString& tag = QString());
     SessionItem* takeItem(int row, const QString& tag);
 
-    // convenience functions for properties and groups
+    // convenience functions for properties
     SessionItem* addProperty(const QString& name, const QVariant& variant);
     QVariant getItemValue(const QString& tag) const;
     void setItemValue(const QString& tag, const QVariant& variant);
-    SessionItem* addGroupProperty(const QString& groupName, const QString& groupType);
 
+    // convenience functions for groups
+    SessionItem* addGroupProperty(const QString& groupName, const QString& groupType);
     SessionItem* setGroupProperty(const QString& name, const QString& value) const;
     SessionItem* getGroupItem(const QString& groupName) const;
     template<typename T> T& groupItem(const QString& groupName) const;
diff --git a/GUI/coregui/Models/SessionItemUtils.cpp b/GUI/coregui/Models/SessionItemUtils.cpp
index 95baba76496e73c28c5a8a6ea92d6a8f741a75a4..a539d63da99678c7fc4ebc955d74ff9ebe4dfaf3 100644
--- a/GUI/coregui/Models/SessionItemUtils.cpp
+++ b/GUI/coregui/Models/SessionItemUtils.cpp
@@ -25,6 +25,11 @@ int SessionItemUtils::ParentRow(const SessionItem& item)
     return -1;
 }
 
+bool SessionItemUtils::HasCHildren(const SessionItem& item)
+{
+    return item.numberOfChildren() > 0;
+}
+
 kvector_t SessionItemUtils::GetVectorItem(const SessionItem& item, const QString& name)
 {
     SessionItem* vectorItem = item.getItem(name);
diff --git a/GUI/coregui/Models/SessionItemUtils.h b/GUI/coregui/Models/SessionItemUtils.h
index 81ef1ce36168b683f5bc19073381bbe87dbfb19b..f0fbd7941e07d040271bb54faedcb11d34140f9c 100644
--- a/GUI/coregui/Models/SessionItemUtils.h
+++ b/GUI/coregui/Models/SessionItemUtils.h
@@ -28,6 +28,9 @@ namespace SessionItemUtils
 //! Returns the index of the given item within its parent. Returns -1 when no parent is set.
 BA_CORE_API_ int ParentRow(const SessionItem& item);
 
+//! Returns true when the item has child items
+BA_CORE_API_ bool HasCHildren(const SessionItem& item);
+
 //! Returns a VectorType group property's value as a kvector_t
 BA_CORE_API_ kvector_t GetVectorItem(const SessionItem& item, const QString& name);
 
diff --git a/GUI/coregui/Models/SessionModel.cpp b/GUI/coregui/Models/SessionModel.cpp
index dc43abb45e7b309103eff375e18758b6d7c1c68d..29315f26be55b5ec7ecbe7c427a6409d1e60ed0c 100644
--- a/GUI/coregui/Models/SessionModel.cpp
+++ b/GUI/coregui/Models/SessionModel.cpp
@@ -105,7 +105,7 @@ int SessionModel::rowCount(const QModelIndex& parent) const
     if (parent.isValid() && parent.column() != 0)
         return 0;
     SessionItem* parent_item = itemForIndex(parent);
-    return parent_item ? parent_item->rowCount() : 0;
+    return parent_item ? parent_item->numberOfChildren() : 0;
 }
 
 int SessionModel::columnCount(const QModelIndex& parent) const
@@ -227,7 +227,7 @@ bool SessionModel::dropMimeData(const QMimeData* data, Qt::DropAction action, in
         QByteArray xml_data = qUncompress(data->data(SessionXML::ItemMimeType));
         QXmlStreamReader reader(xml_data);
         if (row == -1)
-            row = item->rowCount();
+            row = item->numberOfChildren();
         beginInsertRows(parent, row, row);
         // this code block is currently not in use. The row parameter of the reader is removed
         //SessionReader::readItems(&reader, item, row);
@@ -252,7 +252,7 @@ SessionItem* SessionModel::insertNewItem(QString model_type, const QModelIndex&
     SessionItem* parent_item = itemForIndex(parent);
     if (!parent_item)
         parent_item = m_root_item;
-    if (row > parent_item->rowCount())
+    if (row > parent_item->numberOfChildren())
         return nullptr;
     if (parent_item != m_root_item) {
         if (tag.isEmpty())
diff --git a/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp b/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp
index b9e07e276be1724906a66c29be6c087d440b4e64..b875691d34fdc73de140a8b926d7c80ff2bb3b82 100644
--- a/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp
+++ b/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp
@@ -15,20 +15,23 @@
 // ************************************************************************** //
 
 #include "RealDataSelectorActions.h"
+#include "GUIHelpers.h"
 #include "ImportDataAssistant.h"
-#include "RealDataItem.h"
-#include "RealDataModel.h"
-#include "OutputData.h"
+#include "IntensityDataFunctions.h"
 #include "IntensityDataItem.h"
 #include "MaskItems.h"
-#include "GUIHelpers.h"
+#include "OutputData.h"
 #include "ProjectionItems.h"
-#include "IntensityDataFunctions.h"
+#include "RealDataItem.h"
+#include "RealDataModel.h"
+#include "SessionItemUtils.h"
 #include <QAction>
 #include <QApplication>
 #include <QItemSelectionModel>
 #include <QMenu>
 
+using namespace SessionItemUtils;
+
 namespace {
 bool openRotateWarningDialog(QWidget* parent) {
     const QString title("Rotate data");
@@ -46,11 +49,11 @@ bool rotationAffectsSetup(IntensityDataItem& intensityItem) {
     if (intensityItem.parent()->getItemValue(RealDataItem::P_INSTRUMENT_ID).toBool())
         return true;
 
-    if (intensityItem.maskContainerItem() && intensityItem.maskContainerItem()->hasChildren())
+    if (intensityItem.maskContainerItem() && HasCHildren(*intensityItem.maskContainerItem()))
         return true;
 
-    if (intensityItem.projectionContainerItem() &&
-        intensityItem.projectionContainerItem()->hasChildren())
+    if (intensityItem.projectionContainerItem()
+        && HasCHildren(*intensityItem.projectionContainerItem()))
         return true;
 
     return false;
@@ -65,10 +68,10 @@ void resetSetup(IntensityDataItem& intensityItem) {
         data_parent->setItemValue(RealDataItem::P_INSTRUMENT_ID, QString());
 
     if (auto maskContainer = intensityItem.maskContainerItem())
-        maskContainer->model()->removeRows(0, maskContainer->rowCount(), maskContainer->index());
+        maskContainer->model()->removeRows(0, maskContainer->numberOfChildren(), maskContainer->index());
 
     if (auto projectionsContainer = intensityItem.projectionContainerItem())
-        projectionsContainer->model()->removeRows(0, projectionsContainer->rowCount(),
+        projectionsContainer->model()->removeRows(0, projectionsContainer->numberOfChildren(),
                                                   projectionsContainer->index());
 }
 
diff --git a/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp b/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp
index 8d580aa7092cd2614893f6349846a7a3ad6de027..69ce32e0d46546202377bf5771e5a9623b4c2082 100644
--- a/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp
+++ b/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp
@@ -191,7 +191,7 @@ bool MaskEditorActions::isSendToBackPossible() const
     QModelIndexList indexes = m_selectionModel->selectedIndexes();
     if (indexes.size() == 1) {
         SessionItem* item = m_maskModel->itemForIndex(indexes.front());
-        if (indexes.front().row() != item->parent()->rowCount() - 1)
+        if (indexes.front().row() != item->parent()->numberOfChildren() - 1)
             result = true;
     }
     return result;
diff --git a/GUI/coregui/Views/MaskWidgets/PolygonView.cpp b/GUI/coregui/Views/MaskWidgets/PolygonView.cpp
index 3d9e57df20bf870e654f00714fb16c86948c6c2f..2380e7e6948e254f00df0ac5a8e3871e22413ecd 100644
--- a/GUI/coregui/Views/MaskWidgets/PolygonView.cpp
+++ b/GUI/coregui/Views/MaskWidgets/PolygonView.cpp
@@ -134,7 +134,7 @@ void PolygonView::update_polygon()
 
     m_block_on_point_update = true;
 
-    if (m_item->rowCount()) {
+    if (m_item->numberOfChildren()) {
 
         m_polygon.clear();