diff --git a/GUI/coregui/Models/ParameterizedItem.cpp b/GUI/coregui/Models/ParameterizedItem.cpp
index 973d7738536e25e6fb22c631d7c446dd82736af1..7929487114612a121c6b194488e09c998c190bf1 100644
--- a/GUI/coregui/Models/ParameterizedItem.cpp
+++ b/GUI/coregui/Models/ParameterizedItem.cpp
@@ -29,8 +29,8 @@
 const QString ParameterizedItem::P_NAME = "Name";
 const QString ParameterizedItem::P_PORT = "Port";
 
-ParameterizedItem::ParameterizedItem(const QString &model_type, ParameterizedItem *parent)
-    : m_model_type(model_type), mp_parent(parent)
+ParameterizedItem::ParameterizedItem(QString model_type, ParameterizedItem *parent)
+    : m_model_type(std::move(model_type)), mp_parent(parent)
 {
     if (mp_parent) {
         mp_parent->insertChildItem(-1, this);
@@ -41,17 +41,17 @@ ParameterizedItem::ParameterizedItem(const QString &model_type, ParameterizedIte
     setItemName(m_model_type);
 }
 
-bool ParameterizedItem::isRegisteredProperty(const QString &name)
-{
-    return m_registered_properties.contains(name);
-}
-
 ParameterizedItem::~ParameterizedItem()
 {
     qDeleteAll(m_children);
     qDeleteAll(m_sub_items);
 }
 
+QString ParameterizedItem::modelType() const
+{
+    return m_model_type;
+}
+
 QString ParameterizedItem::itemName() const
 {
     return getRegisteredProperty(P_NAME).toString();
@@ -62,6 +62,51 @@ void ParameterizedItem::setItemName(const QString &item_name)
     setRegisteredProperty(P_NAME, item_name);
 }
 
+QString ParameterizedItem::displayName() const
+{
+    return m_display_name;
+}
+
+void ParameterizedItem::setDisplayName(QString display_name)
+{
+    m_display_name = std::move(display_name);
+}
+
+QString ParameterizedItem::getItemLabel() const
+{
+    return QString("");
+}
+
+ParameterizedItem *ParameterizedItem::parent() const
+{
+    return mp_parent;
+}
+
+ParameterizedItem *ParameterizedItem::childAt(int row) const
+{
+    return m_children.value(row);
+}
+
+int ParameterizedItem::rowOfChild(ParameterizedItem *child) const
+{
+    return m_children.indexOf(child);
+}
+
+int ParameterizedItem::childItemCount() const
+{
+    return m_children.count();
+}
+
+bool ParameterizedItem::hasChildItems() const
+{
+    return !m_children.isEmpty();
+}
+
+QList<ParameterizedItem *> ParameterizedItem::childItems() const
+{
+    return m_children;
+}
+
 void ParameterizedItem::insertChildItem(int row, ParameterizedItem *item)
 {
     if (row == -1)
@@ -93,6 +138,11 @@ bool ParameterizedItem::acceptsAsChild(const QString &child_name) const
     return m_valid_children.contains(child_name);
 }
 
+QList<QString> ParameterizedItem::acceptableChildItems() const
+{
+    return m_valid_children;
+}
+
 // emits signal on property change
 bool ParameterizedItem::event(QEvent *e)
 {
@@ -106,62 +156,9 @@ bool ParameterizedItem::event(QEvent *e)
     return QObject::event(e);
 }
 
-void ParameterizedItem::onPropertyChange(const QString &name)
-{
-    //    qDebug() << "ParameterizedItem::onPropertyChange()" << modelType() << name;
-    if (mp_parent)
-        mp_parent->onChildPropertyChange();
-    emit propertyChanged(name);
-}
-
-// returns child which should be removed by the model due to over population of children of given
-// type
-ParameterizedItem *ParameterizedItem::getCandidateForRemoval(ParameterizedItem *new_comer)
-{
-    if (!new_comer)
-        return 0;
-
-    QMap<int, QVector<ParameterizedItem *> > nport_to_nitems;
-    foreach (ParameterizedItem *child, m_children) {
-        int nport = child->getRegisteredProperty(P_PORT).toInt();
-        nport_to_nitems[nport].push_back(child);
-    }
-
-    QMap<int, QVector<ParameterizedItem *> >::iterator it = nport_to_nitems.begin();
-    while (it != nport_to_nitems.end()) {
-        int nport = it.key();
-        if (m_port_info.contains(nport)) {
-            if (m_port_info[nport].m_item_max_number != 0
-                && it.value().size() > m_port_info[nport].m_item_max_number) {
-                foreach (ParameterizedItem *item, it.value()) {
-                    if (item != new_comer)
-                        return item;
-                }
-            }
-        }
-
-        ++it;
-    }
-
-    return 0;
-}
-
-void ParameterizedItem::setItemPort(ParameterizedItem::PortInfo::EPorts nport)
-{
-    setRegisteredProperty(P_PORT, nport);
-}
-
-void ParameterizedItem::addToValidChildren(const QString &name, PortInfo::EPorts nport,
-                                           int nmax_items)
+QMap<QString, ParameterizedItem *> ParameterizedItem::getSubItems() const
 {
-    m_valid_children.append(name);
-
-    if (m_port_info.contains(nport)) {
-        m_port_info[nport].m_item_names << name;
-        m_port_info[nport].m_item_max_number = nmax_items;
-    } else {
-        m_port_info[nport] = PortInfo(name, nmax_items);
-    }
+    return m_sub_items;
 }
 
 void ParameterizedItem::addPropertyItem(QString name, ParameterizedItem *item)
@@ -178,13 +175,16 @@ void ParameterizedItem::addPropertyItem(QString name, ParameterizedItem *item)
     }
     m_sub_items[name] = item;
     item->mp_parent = this;
-    // connect(item, SIGNAL(propertyChanged(QString)), this,
-    // SLOT(onSubItemPropertyChanged(QString)), Qt::UniqueConnection);
     onSubItemChanged(name);
     onChildPropertyChange();
     qDebug() << "ParameterizedItem::addPropertyItem() -> about to leave" << name;
 }
 
+bool ParameterizedItem::isRegisteredProperty(const QString &name)
+{
+    return m_registered_properties.contains(name);
+}
+
 ParameterizedItem *ParameterizedItem::registerGroupProperty(const QString &group_name,
                                                             const Constants::ModelType &group_model)
 {
@@ -275,6 +275,21 @@ void ParameterizedItem::removeRegisteredProperty(const QString &name)
     }
 }
 
+PropertyAttribute ParameterizedItem::getPropertyAttribute(const QString &name) const
+{
+    if (!m_registered_properties.contains(name))
+        throw GUIHelpers::Error(
+            "ParameterizedItem::getPropertyAttribute() -> Error. Unknown property " + name + " "
+            + modelType());
+
+    if (!m_property_attribute.contains(name))
+        throw GUIHelpers::Error(
+            "ParameterizedItem::getPropertyAttribute() -> Error. Unknown property attribute "
+            + name);
+
+    return m_property_attribute[name];
+}
+
 void ParameterizedItem::setPropertyAttribute(const QString &name,
                                              const PropertyAttribute &attribute)
 {
@@ -305,6 +320,88 @@ void ParameterizedItem::setPropertyAppearance(const QString &name,
     m_property_attribute[name].setAppearance(appearance);
 }
 
+void ParameterizedItem::onPropertyChange(const QString &name)
+{
+    //    qDebug() << "ParameterizedItem::onPropertyChange()" << modelType() << name;
+    if (mp_parent)
+        mp_parent->onChildPropertyChange();
+    emit propertyChanged(name);
+}
+
+void ParameterizedItem::onChildPropertyChange()
+{
+    qDebug() << "ParameterizedItem::onChildPropertyChange()";
+    if (mp_parent)
+        mp_parent->onChildPropertyChange();
+}
+
+void ParameterizedItem::print() const
+{
+    qDebug() << "--- ParameterizedItem::print() ------------------------------------";
+    qDebug() << modelType() << itemName();
+    qDebug() << "--- SubItems ---";
+    for (QMap<QString, ParameterizedItem *>::const_iterator it = m_sub_items.begin();
+         it != m_sub_items.end(); ++it) {
+        qDebug() << "   key:" << it.key() << " value->modelType:" << it.value()->modelType();
+    }
+    qDebug() << "--- Properties ---";
+    QList<QByteArray> property_names = dynamicPropertyNames();
+    for (int i = 0; i < property_names.length(); ++i) {
+        QString name(property_names[i]);
+        qDebug() << name << property(name.toUtf8().constData());
+    }
+    qDebug() << " ";
+}
+
+// returns child which should be removed by the model due to over population of children of given
+// type
+ParameterizedItem *ParameterizedItem::getCandidateForRemoval(ParameterizedItem *new_comer)
+{
+    if (!new_comer)
+        return 0;
+
+    QMap<int, QVector<ParameterizedItem *> > nport_to_nitems;
+    foreach (ParameterizedItem *child, m_children) {
+        int nport = child->getRegisteredProperty(P_PORT).toInt();
+        nport_to_nitems[nport].push_back(child);
+    }
+
+    QMap<int, QVector<ParameterizedItem *> >::iterator it = nport_to_nitems.begin();
+    while (it != nport_to_nitems.end()) {
+        int nport = it.key();
+        if (m_port_info.contains(nport)) {
+            if (m_port_info[nport].m_item_max_number != 0
+                && it.value().size() > m_port_info[nport].m_item_max_number) {
+                foreach (ParameterizedItem *item, it.value()) {
+                    if (item != new_comer)
+                        return item;
+                }
+            }
+        }
+        ++it;
+    }
+
+    return 0;
+}
+
+void ParameterizedItem::setItemPort(ParameterizedItem::PortInfo::EPorts nport)
+{
+    setRegisteredProperty(P_PORT, nport);
+}
+
+void ParameterizedItem::addToValidChildren(const QString &name, PortInfo::EPorts nport,
+                                           int nmax_items)
+{
+    m_valid_children.append(name);
+
+    if (m_port_info.contains(nport)) {
+        m_port_info[nport].m_item_names << name;
+        m_port_info[nport].m_item_max_number = nmax_items;
+    } else {
+        m_port_info[nport] = PortInfo(name, nmax_items);
+    }
+}
+
 QStringList ParameterizedItem::getParameterTreeList() const
 {
     QStringList result;
@@ -346,13 +443,6 @@ QStringList ParameterizedItem::getParameterTreeList() const
     return result;
 }
 
-void ParameterizedItem::onChildPropertyChange()
-{
-    qDebug() << "ParameterizedItem::onChildPropertyChange()";
-    if (mp_parent)
-        mp_parent->onChildPropertyChange();
-}
-
 //! called when new SubItem appeared
 void ParameterizedItem::onSubItemChanged(const QString &propertyName)
 {
@@ -361,6 +451,14 @@ void ParameterizedItem::onSubItemChanged(const QString &propertyName)
     emit subItemChanged(propertyName);
 }
 
+void ParameterizedItem::onSubItemPropertyChanged(const QString &property_group,
+                                                 const QString &property_name)
+{
+    emit subItemPropertyChanged(property_group, property_name);
+    if (mp_parent)
+        mp_parent->onChildPropertyChange();
+}
+
 //! called when SubItem change one of its properties
 void ParameterizedItem::processSubItemPropertyChanged(const QString &propertyName)
 {
@@ -372,8 +470,6 @@ void ParameterizedItem::processSubItemPropertyChanged(const QString &propertyNam
             FancyGroupProperty_t group_property
                 = getRegisteredProperty(it.key()).value<FancyGroupProperty_t>();
             group_property->setValueLabel(propertyItem->getItemLabel());
-            //            emit subItemPropertyChanged(it.key(), propertyName);
-            //            if (m_parent) m_parent->onChildPropertyChange();
             onSubItemPropertyChanged(it.key(), propertyName);
             return;
         }
@@ -382,47 +478,6 @@ void ParameterizedItem::processSubItemPropertyChanged(const QString &propertyNam
                             " Error. No such propertyItem found");
 }
 
-void ParameterizedItem::onSubItemPropertyChanged(const QString &property_group,
-                                                 const QString &property_name)
-{
-    emit subItemPropertyChanged(property_group, property_name);
-    if (mp_parent)
-        mp_parent->onChildPropertyChange();
-}
-
-PropertyAttribute ParameterizedItem::getPropertyAttribute(const QString &name) const
-{
-    if (!m_registered_properties.contains(name))
-        throw GUIHelpers::Error(
-            "ParameterizedItem::getPropertyAttribute() -> Error. Unknown property " + name + " "
-            + modelType());
-
-    if (!m_property_attribute.contains(name))
-        throw GUIHelpers::Error(
-            "ParameterizedItem::getPropertyAttribute() -> Error. Unknown property attribute "
-            + name);
-
-    return m_property_attribute[name];
-}
-
-void ParameterizedItem::print() const
-{
-    qDebug() << "--- ParameterizedItem::print() ------------------------------------";
-    qDebug() << modelType() << itemName();
-    qDebug() << "--- SubItems ---";
-    for (QMap<QString, ParameterizedItem *>::const_iterator it = m_sub_items.begin();
-         it != m_sub_items.end(); ++it) {
-        qDebug() << "   key:" << it.key() << " value->modelType:" << it.value()->modelType();
-    }
-    qDebug() << "--- Properties ---";
-    QList<QByteArray> property_names = dynamicPropertyNames();
-    for (int i = 0; i < property_names.length(); ++i) {
-        QString name(property_names[i]);
-        qDebug() << name << property(name.toUtf8().constData());
-    }
-    qDebug() << " ";
-}
-
 QStringList ParameterizedItem::getParameterList() const
 {
     QStringList result;
diff --git a/GUI/coregui/Models/ParameterizedItem.h b/GUI/coregui/Models/ParameterizedItem.h
index c98c329d75b638aab4d943c673f935ca9d88a4a4..7dfee28e863003e72c5df607c3e8ac183818a225 100644
--- a/GUI/coregui/Models/ParameterizedItem.h
+++ b/GUI/coregui/Models/ParameterizedItem.h
@@ -33,16 +33,13 @@ class BA_CORE_API_ ParameterizedItem : public QObject
 public:
     static const QString P_NAME;
     static const QString P_PORT;
-    explicit ParameterizedItem(const QString &model_type = QString(),
+    explicit ParameterizedItem(QString model_type = QString(),
                                ParameterizedItem *parent = 0);
 
     virtual ~ParameterizedItem();
 
     //! retrieves the model type
-    QString modelType() const
-    {
-        return m_model_type;
-    }
+    QString modelType() const;
 
     //! retrieves the item's name
     QString itemName() const;
@@ -50,41 +47,32 @@ public:
     //! sets the item's name
     void setItemName(const QString &item_name);
 
+    //! retrieves the name used for displaying (possibly including an index
+    //! to distinguish it from siblings)
+    QString displayName() const;
+
+    //! sets the display name
+    void setDisplayName(QString display_name);
+
+    virtual QString getItemLabel() const;
+
     //! retrieve parent item
-    ParameterizedItem *parent() const
-    {
-        return mp_parent;
-    }
+    ParameterizedItem *parent() const;
 
     //! retrieve child item in given row
-    ParameterizedItem *childAt(int row) const
-    {
-        return m_children.value(row);
-    }
+    ParameterizedItem *childAt(int row) const;
 
     //! get row number of child
-    int rowOfChild(ParameterizedItem *child) const
-    {
-        return m_children.indexOf(child);
-    }
+    int rowOfChild(ParameterizedItem *child) const;
 
     //! get number of child items
-    int childItemCount() const
-    {
-        return m_children.count();
-    }
+    int childItemCount() const;
 
     //! indicates if item has child items
-    bool hasChildItems() const
-    {
-        return !m_children.isEmpty();
-    }
+    bool hasChildItems() const;
 
     //! returns the a list of child items
-    QList<ParameterizedItem *> childItems() const
-    {
-        return m_children;
-    }
+    QList<ParameterizedItem *> childItems() const;
 
     //! inserts a child item at specified row
     virtual void insertChildItem(int row, ParameterizedItem *item);
@@ -95,22 +83,15 @@ public:
     //! Returns a pointer to the first child of the given type
     ParameterizedItem *getChildOfType(QString type) const;
 
-    //! indicates if the passed item can be set as
-    //! a child item
+    //! indicates if the passed item can be set as a child item
     bool acceptsAsChild(const QString &child_name) const;
 
     //! get list of acceptable child object names
-    QList<QString> acceptableChildItems() const
-    {
-        return m_valid_children;
-    }
+    QList<QString> acceptableChildItems() const;
 
     bool event(QEvent *e);
 
-    QMap<QString, ParameterizedItem *> getSubItems() const
-    {
-        return m_sub_items;
-    }
+    QMap<QString, ParameterizedItem *> getSubItems() const;
 
     void addPropertyItem(QString name, ParameterizedItem *item);
 
@@ -128,10 +109,17 @@ public:
 
     PropertyAttribute getPropertyAttribute(const QString &name) const;
 
-    void print() const;
+    void setPropertyAttribute(const QString &name, const PropertyAttribute &attribute);
+
+    void setPropertyAppearance(const QString &name,
+                               const PropertyAttribute::EAppearance &appearance);
 
     virtual void onPropertyChange(const QString &name);
 
+    virtual void onChildPropertyChange();
+
+    void print() const;
+
     virtual ParameterizedItem *getCandidateForRemoval(ParameterizedItem *new_comer);
 
     class PortInfo
@@ -148,19 +136,8 @@ public:
 
     void setItemPort(PortInfo::EPorts nport);
 
-    virtual QString getItemLabel() const
-    {
-        return QString("");
-    }
-
-    void setPropertyAppearance(const QString &name,
-                               const PropertyAttribute::EAppearance &appearance);
-
     QStringList getParameterTreeList() const;
 
-    virtual void onChildPropertyChange();
-    void setPropertyAttribute(const QString &name, const PropertyAttribute &attribute);
-
 signals:
     void propertyChanged(const QString &propertyName);
     void subItemChanged(const QString &propertyName);
@@ -188,6 +165,7 @@ private:
     QMap<int, PortInfo> m_port_info;
 
     QString m_model_type;
+    QString m_display_name;
     ParameterizedItem *mp_parent;
     QList<ParameterizedItem *> m_children;
     QMap<QString, ParameterizedItem *> m_sub_items;