Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp	(revision 743eabedffa61ec5ac67780d49badf443f6daef9)
@@ -87,4 +87,6 @@
   connect(&observer, SIGNAL(NameChanged(const QtObservedMolecule::ptr)),
       this, SLOT(nameChanged(const QtObservedMolecule::ptr)));
+  connect(&observer, SIGNAL(AtomCountChanged(const QtObservedMolecule::ptr)),
+      this, SLOT(atomcountChanged(const QtObservedMolecule::ptr)));
   connect(board, SIGNAL(moleculeIndexChanged(const moleculeId_t,const moleculeId_t)),
       this, SLOT(moleculeIndexChanged(const moleculeId_t, const moleculeId_t)));
@@ -573,6 +575,16 @@
 void QtMoleculeList::formulaChanged(const QtObservedMolecule::ptr _mol)
 {
-  // we need the id as identifier to the items
+  // we need the id as identifier to the item
   const moleculeId_t molid = _mol->getMolIndex();
+  LOG(3, "DEBUG: QtMoleculeList got formulaChanged for id " << molid);
+  QtMoleculeItem *const molitem = MoleculeIdToItem(molid);
+  // update item
+  {
+    QtMoleculeItem *const formulaitem = getSpecificMoleculeItem(molitem, QtMoleculeItem::FORMULA);
+    ASSERT(formulaitem != NULL,
+        "QtMoleculeList::formulaChanged() - could not item for FORMULA.");
+    formulaitem->updateState(_mol);
+  }
+
   LOG(3, "DEBUG: Moving item to id " << molid);
   const MoleculeFormulaMap_t::iterator formulaiter =
@@ -587,8 +599,4 @@
   // then we move the item if necessary
   if (old_formula != new_formula) {
-    QtMoleculeItem *const molitem = MoleculeIdToItem(molid);
-    // update items
-    getSpecificMoleculeItem(molitem, QtMoleculeItem::FORMULA)->updateState(_mol);
-    getSpecificMoleculeItem(molitem, QtMoleculeItem::ATOMCOUNT)->updateState(_mol);
     LOG(3, "DEBUG: Moving item " << molitem);
     // remove from formula<->molecule bimap with old formula
@@ -612,12 +620,27 @@
 }
 
-void QtMoleculeList::nameChanged(const QtObservedMolecule::ptr _mol)
+void QtMoleculeList::atomcountChanged(const QtObservedMolecule::ptr _mol)
 {
   // we need the id as identifier to the items
   const moleculeId_t molid = _mol->getMolIndex();
-  // nothing to do, item updates itself
-  LOG(3, "DEBUG: QtMoleculeList got nameChangd for id " << molid);
+  LOG(3, "DEBUG: QtMoleculeList got atomcountChanged for id " << molid);
   QtMoleculeItem *const molitem = MoleculeIdToItem(molid);
   // update items
-  getSpecificMoleculeItem(molitem, QtMoleculeItem::NAME)->updateState(_mol);
-}
+  QtMoleculeItem *const atomcountitem = getSpecificMoleculeItem(molitem, QtMoleculeItem::ATOMCOUNT);
+  ASSERT(atomcountitem != NULL,
+      "QtMoleculeList::atomcountChanged() - could not item for ATOMCOUNT.");
+  atomcountitem->updateState(_mol);
+}
+
+void QtMoleculeList::nameChanged(const QtObservedMolecule::ptr _mol)
+{
+  // we need the id as identifier to the items
+  const moleculeId_t molid = _mol->getMolIndex();
+  LOG(3, "DEBUG: QtMoleculeList got nameChanged for id " << molid);
+  QtMoleculeItem *const molitem = MoleculeIdToItem(molid);
+  // update items
+  QtMoleculeItem *const nameitem = getSpecificMoleculeItem(molitem, QtMoleculeItem::NAME);
+  ASSERT(nameitem != NULL,
+      "QtMoleculeList::nameChanged() - could not item for NAME.");
+  nameitem->updateState(_mol);
+}
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.hpp	(revision 743eabedffa61ec5ac67780d49badf443f6daef9)
@@ -50,4 +50,5 @@
   void formulaChanged(const QtObservedMolecule::ptr _mol);
   void nameChanged(const QtObservedMolecule::ptr _mol);
+  void atomcountChanged(const QtObservedMolecule::ptr _mol);
 
   void moleculeNameChanged(QStandardItem*);
@@ -55,9 +56,5 @@
 
 signals:
-  void moleculeSelected(const QtObservedMolecule::ptr _mol);
-  void moleculeUnSelected(const QtObservedMolecule::ptr _mol);
   void moleculesVisibilityChanged(const moleculeId_t, bool);
-
-private:
 
 private slots:
Index: src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.cpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
+++ src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.cpp	(revision 743eabedffa61ec5ac67780d49badf443f6daef9)
@@ -53,6 +53,8 @@
 void QtObservedMoleculeObserver::moleculeInserted(const QtObservedMolecule::ptr _molecule)
 {
+  connect( _molecule.get(), SIGNAL(atomcountChanged()), this, SLOT(atomcountChanged()));
   connect( _molecule.get(), SIGNAL(formulaChanged()), this, SLOT(formulaChanged()));
   connect( _molecule.get(), SIGNAL(nameChanged()), this, SLOT(nameChanged()));
+  connect( _molecule.get(), SIGNAL(selectedChanged()), this, SLOT(selectionChanged()));
   emit MoleculeInserted(_molecule);
 }
@@ -61,7 +63,15 @@
 {
   const QtObservedMolecule::ptr mol = board->getObservedMolecule(_moleculeid);
+  disconnect( mol.get(), SIGNAL(atomcountChanged()), this, SLOT(atomcountChanged()));
   disconnect( mol.get(), SIGNAL(formulaChanged()), this, SLOT(formulaChanged()));
   disconnect( mol.get(), SIGNAL(nameChanged()), this, SLOT(nameChanged()));
+  disconnect( mol.get(), SIGNAL(selectedChanged()), this, SLOT(selectionChanged()));
   emit MoleculeRemoved(_moleculeid);
+}
+
+void QtObservedMoleculeObserver::atomcountChanged()
+{
+  QtObservedMolecule * const mol = static_cast<QtObservedMolecule *>(sender());
+  emit AtomCountChanged(mol->getRef());
 }
 
@@ -77,2 +87,9 @@
   emit NameChanged(mol->getRef());
 }
+
+void QtObservedMoleculeObserver::selectionChanged()
+{
+  QtObservedMolecule * const mol = static_cast<QtObservedMolecule *>(sender());
+  emit SelectionChanged(mol->getRef());
+}
+
Index: src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
+++ src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.hpp	(revision 743eabedffa61ec5ac67780d49badf443f6daef9)
@@ -38,6 +38,8 @@
 
 signals:
+  void AtomCountChanged(const QtObservedMolecule::ptr _molecule);
   void FormulaChanged(const QtObservedMolecule::ptr _molecule);
   void NameChanged(const QtObservedMolecule::ptr _molecule);
+  void SelectionChanged(const QtObservedMolecule::ptr _molecule);
 
   // relayed signals
@@ -47,6 +49,8 @@
 private slots:
   // relayed, and modified signals
+  void atomcountChanged();
   void formulaChanged();
   void nameChanged();
+  void selectionChanged();
 
   void moleculeInserted(const QtObservedMolecule::ptr _molecule);
