diff --git a/GUI/coregui/Models/ParameterizedItem.cpp b/GUI/coregui/Models/ParameterizedItem.cpp
index d5d9a28ad551a876e88f8f87dbb2cf9685c72629..a20e7d50dcfef38b0552e96c5d290b9c004ecf88 100644
--- a/GUI/coregui/Models/ParameterizedItem.cpp
+++ b/GUI/coregui/Models/ParameterizedItem.cpp
@@ -69,12 +69,14 @@ void ParameterizedItem::insertChildItem(int row, ParameterizedItem *item)
     if(row == -1) row = m_children.size();
     item->m_parent = this;
     m_children.insert(row, item);
+    onChildPropertyChange();
 }
 
 ParameterizedItem *ParameterizedItem::takeChildItem(int row)
 {
     ParameterizedItem *item = m_children.takeAt(row);
     item->m_parent = 0;
+    onChildPropertyChange();
     return item;
 }
 
@@ -83,7 +85,7 @@ bool ParameterizedItem::acceptsAsChild(const QString &child_name) const
     return m_valid_children.contains(child_name);
 }
 
-// emmits signal on property change
+// emits signal on property change
 bool ParameterizedItem::event(QEvent * e )
 {
     if(e->type() == QEvent::DynamicPropertyChange) {
@@ -103,6 +105,7 @@ bool ParameterizedItem::event(QEvent * e )
 void ParameterizedItem::onPropertyChange(const QString &name)
 {
 //    qDebug() << "ParameterizedItem::onPropertyChange()" << modelType() << name;
+    if (m_parent) m_parent->onChildPropertyChange();
     emit propertyChanged(name);
 }
 
@@ -145,14 +148,18 @@ void ParameterizedItem::setItemPort(ParameterizedItem::PortInfo::Keys nport)
 void ParameterizedItem::onPropertyItemChanged(const QString & /*propertyName*/)
 {
     ParameterizedItem *propertyItem = qobject_cast<ParameterizedItem *>(sender());
-    for(QMap<QString, ParameterizedItem *>::iterator it=m_sub_items.begin(); it!= m_sub_items.end(); ++it) {
+    for(QMap<QString, ParameterizedItem *>::iterator it=m_sub_items.begin();
+        it!= m_sub_items.end(); ++it) {
         if(it.value() == propertyItem) {
-            FancyGroupProperty_t group_property = getRegisteredProperty(it.key()).value<FancyGroupProperty_t>();
+            FancyGroupProperty_t group_property =
+                    getRegisteredProperty(it.key()).value<FancyGroupProperty_t>();
             group_property->setValueLabel(propertyItem->getItemLabel());
+            if (m_parent) m_parent->onChildPropertyChange();
             return;
         }
     }
-    throw GUIHelpers::Error("ParameterizedItem::onPropertyItemChanged() -> Error. No such propertyItem found");
+    throw GUIHelpers::Error("ParameterizedItem::onPropertyItemChanged() ->"
+                            " Error. No such propertyItem found");
 }
 
 
@@ -183,7 +190,7 @@ void ParameterizedItem::addPropertyItem(QString name, ParameterizedItem *item)
     m_sub_items[name] = item;
     item->m_parent = this;
     connect(item, SIGNAL(propertyChanged(QString)), this, SLOT(onPropertyItemChanged(QString)));
-
+    onChildPropertyChange();
     qDebug() << "ParameterizedItem::addPropertyItem() -> about to leave" << name;
 }
 
@@ -323,6 +330,11 @@ QStringList ParameterizedItem::getParameterTreeList() const
     return result;
 }
 
+void ParameterizedItem::onChildPropertyChange()
+{
+    if (m_parent) m_parent->onChildPropertyChange();
+}
+
 
 PropertyAttribute ParameterizedItem::getPropertyAttribute(const QString &name) const
 {
diff --git a/GUI/coregui/Models/ParameterizedItem.h b/GUI/coregui/Models/ParameterizedItem.h
index 3eeb08c91bd3e4afcfcf913afd9d7fc58e74b9f7..e7a80a5e092fbf511991f4719b39390830ed0b4d 100644
--- a/GUI/coregui/Models/ParameterizedItem.h
+++ b/GUI/coregui/Models/ParameterizedItem.h
@@ -69,10 +69,6 @@ public:
     //! inserts a child item at specified row
     virtual void insertChildItem(int row, ParameterizedItem *item);
 
-    //! swap two child items
-    void swapChildItems(int row_1, int row_2)
-        { m_children.swap(row_1, row_2); }
-
     //! take child item (this removes it from the current item)
     virtual ParameterizedItem *takeChildItem(int row);
 
@@ -128,6 +124,8 @@ public:
 
     QStringList getParameterTreeList() const;
 
+    virtual void onChildPropertyChange();
+
 public slots:
     void onPropertyItemChanged(const QString &propertyName);
 
diff --git a/GUI/coregui/Models/ParticleDistributionItem.cpp b/GUI/coregui/Models/ParticleDistributionItem.cpp
index caa57fd0d597d74a9465dbfcfb4662abaebff2c8..9b0e299b6c86738058b471d89733ee072cce0f6e 100644
--- a/GUI/coregui/Models/ParticleDistributionItem.cpp
+++ b/GUI/coregui/Models/ParticleDistributionItem.cpp
@@ -14,6 +14,7 @@
 // ************************************************************************** //
 
 #include "ParticleDistributionItem.h"
+#include "ParticleItem.h"
 #include "ComboProperty.h"
 
 const QString ParticleDistributionItem::P_DISTRIBUTED_PARAMETER =
@@ -45,8 +46,15 @@ ParticleDistributionItem::~ParticleDistributionItem()
 {
 }
 
+void ParticleDistributionItem::onChildPropertyChange()
+{
+    updateParameterList();
+    ParameterizedItem::onChildPropertyChange();
+}
+
 void ParticleDistributionItem::updateParameterList()
 {
+    if (!isRegisteredProperty(P_DISTRIBUTED_PARAMETER)) return;
     QVariant par_prop = getRegisteredProperty(P_DISTRIBUTED_PARAMETER);
     QString selected_par = par_prop.value<ComboProperty>().getValue();
     removeRegisteredProperty(P_DISTRIBUTED_PARAMETER);
@@ -54,6 +62,7 @@ void ParticleDistributionItem::updateParameterList()
     if (childItems().size()>0) {
         QStringList par_names = childItems()[0]->getParameterTreeList();
         par_names.prepend(QString("None"));
+        par_names.removeAll(ParticleItem::P_ABUNDANCE);
         updated_prop = ComboProperty(par_names);
     } else {
         updated_prop << "None";
diff --git a/GUI/coregui/Models/ParticleDistributionItem.h b/GUI/coregui/Models/ParticleDistributionItem.h
index 14b9aed421b32533a4294b3503f802c6b5c9cdd4..a93591aca324e3a193424a76efd812a18c51afba 100644
--- a/GUI/coregui/Models/ParticleDistributionItem.h
+++ b/GUI/coregui/Models/ParticleDistributionItem.h
@@ -30,6 +30,8 @@ public:
     static const QString P_SIGMA_FACTOR;
     explicit ParticleDistributionItem(ParameterizedItem *parent=0);
     ~ParticleDistributionItem();
+
+    void onChildPropertyChange();
 public slots:
     void updateParameterList();
 };
diff --git a/GUI/coregui/Models/ParticleItem.h b/GUI/coregui/Models/ParticleItem.h
index bce6bc0e5bf3ec1761f72233162967b903543e46..5a66c00dc89373147d1f3601b9e0ae526d159de6 100644
--- a/GUI/coregui/Models/ParticleItem.h
+++ b/GUI/coregui/Models/ParticleItem.h
@@ -31,4 +31,3 @@ public:
 };
 
 #endif // PARTICLEITEM_H
-