Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.cpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.cpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -39,8 +39,5 @@
 #include "CodePatterns/MemDebug.hpp"
 
-QtMoleculeItem::QtMoleculeItem(
-    QtObservedMolecule::ptr &_ObservedMolecule) :
-  ObservedMolecule(_ObservedMolecule),
-  dirty(true)
+QtMoleculeItem::QtMoleculeItem()
 {
   setFlags(flags() | Qt::ItemIsSelectable);
@@ -50,10 +47,2 @@
 {
 }
-
-void QtMoleculeItem::updateState()
-{
-  if (dirty) {
-    internal_updateState();
-    dirty = false;
-  }
-}
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -41,12 +41,12 @@
   enum COLUMNTYPES {NAME,VISIBILITY,ATOMCOUNT,FORMULA,OCCURRENCE,COLUMNTYPES_MAX};
 
-  QtMoleculeItem(
-      QtObservedMolecule::ptr &_ObservedMolecule);
+  QtMoleculeItem();
   virtual ~QtMoleculeItem();
 
   /** Update the state of this item.
    *
+   * \param _ObservedMolecule object to update state from
    */
-  void updateState();
+  virtual void updateState(const QtObservedMolecule::ptr &_ObservedMolecule) = 0;
 
   /** Returns the type of this QtMoleculeItem, i.e. the column in QtMoleculeList.
@@ -56,30 +56,10 @@
   virtual QtMoleculeItem::COLUMNTYPES getType() const = 0;
 
-  /** Getter to the observed molecule in this item.
-   *
-   * \return const ref to ObservedMolecule for this item
-   */
-  const QtObservedMolecule::ptr& getMolecule() const
-  { return ObservedMolecule; }
-
   /** Getter for the id of the observed molecule for this item.
    *
    * \return id of the observed molecule
    */
-  const moleculeId_t getMoleculeId() const
-  { return ObservedMolecule->getMolIndex(); }
-
-protected:
-  /** This function needs to be implemented to make the specific update.
-   *
-   */
-  virtual void internal_updateState() = 0;
-
-  //!> ptr to ObservedMolecule we follow
-  const QtObservedMolecule::ptr ObservedMolecule;
-
-private:
-  //!> states that this item needs to be updated
-  bool dirty;
+  virtual const moleculeId_t getMoleculeId() const
+  { return -1; }
 };
 
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -513,5 +513,6 @@
       AQ.queueAction("change-single-molecule-name", MoleCuilder::Action::NonInteractive);
     } else {
-      assert_cast<QtMoleculeItem *>(item)->updateState();
+      board->getObservedMolecule(
+          assert_cast<QtMoleculeItem *>(item)->getMoleculeId());
     }
   }
@@ -587,4 +588,7 @@
   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
@@ -610,5 +614,10 @@
 void QtMoleculeList::nameChanged(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 " << _mol->getMolIndex());
-}
+  LOG(3, "DEBUG: QtMoleculeList got nameChangd for id " << molid);
+  QtMoleculeItem *const molitem = MoleculeIdToItem(molid);
+  // update items
+  getSpecificMoleculeItem(molitem, QtMoleculeItem::NAME)->updateState(_mol);
+}
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_atomcount.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_atomcount.hpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_atomcount.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -27,17 +27,17 @@
 
   QtMoleculeItem_atomcount(
-      QtObservedMolecule::ptr &_ObservedMolecule) :
-        QtMoleculeItem(_ObservedMolecule)
+      QtObservedMolecule::ptr &_ObservedMolecule)
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
-    internal_updateState();
+    updateState(_ObservedMolecule);
   }
 
   /** Performs the update of the molecule's atomcount.
    *
+   * \param _ObservedMolecule object to update state from
    */
-  void internal_updateState()
+  void updateState(const QtObservedMolecule::ptr &_ObservedMolecule)
   {
-    setText(QString::number(ObservedMolecule->getAtomCount()));
+    setText(QString::number(_ObservedMolecule->getAtomCount()));
   }
 
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_formula.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_formula.hpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_formula.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -29,17 +29,17 @@
 
   QtMoleculeItem_formula(
-      QtObservedMolecule::ptr &_ObservedMolecule) :
-        QtMoleculeItem(_ObservedMolecule)
+      QtObservedMolecule::ptr &_ObservedMolecule)
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
-    internal_updateState();
+    updateState(_ObservedMolecule);
   }
 
   /** Performs the update of the molecule's formula.
    *
+   * \param _ObservedMolecule object to update state from
    */
-  void internal_updateState()
+  void updateState(const QtObservedMolecule::ptr &_ObservedMolecule)
   {
-    setText(QString(ObservedMolecule->getMolFormula().c_str()));
+    setText(QString(_ObservedMolecule->getMolFormula().c_str()));
   }
 
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_name.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_name.hpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_name.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -28,20 +28,31 @@
   QtMoleculeItem_name(
       QtObservedMolecule::ptr &_ObservedMolecule) :
-        QtMoleculeItem(_ObservedMolecule)
+        id(_ObservedMolecule->getMolIndex())
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
-    internal_updateState();
+    updateState(_ObservedMolecule);
   }
 
   /** Performs the update of the molecule's name.
    *
+   * \param _ObservedMolecule object to update state from
    */
-  void internal_updateState()
+  void updateState(const QtObservedMolecule::ptr &_ObservedMolecule)
   {
-    setText(QString(ObservedMolecule->getMolName().c_str()));
+    setText(QString(_ObservedMolecule->getMolName().c_str()));
   }
 
   QtMoleculeItem::COLUMNTYPES getType() const
   { return QtMoleculeItem::NAME; }
+
+  /** Getter for the id of the observed molecule for this item.
+   *
+   * \return id of the observed molecule
+   */
+  const moleculeId_t getMoleculeId() const
+  { return id; }
+
+private:
+  const moleculeId_t id;
 };
 
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_occurrence.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_occurrence.hpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_occurrence.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -27,15 +27,15 @@
 
   QtMoleculeItem_occurrence(
-      QtObservedMolecule::ptr &_ObservedMolecule) :
-        QtMoleculeItem(_ObservedMolecule)
+      QtObservedMolecule::ptr &_ObservedMolecule)
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
-    internal_updateState();
+    updateState(_ObservedMolecule);
   }
 
   /** Performs the update of the molecule's occurrence.
    *
+   * \param _ObservedMolecule object to update state from
    */
-  void internal_updateState()
+  void updateState(const QtObservedMolecule::ptr &_ObservedMolecule)
   {
     setText(QString(""));
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_visibility.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_visibility.hpp	(revision 55443e28a0241b365a47745e7933c4c58a27e0d2)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_visibility.hpp	(revision b6587939d0431dec255b436d437b2c3d64d32c2c)
@@ -28,20 +28,31 @@
   QtMoleculeItem_visibility(
       QtObservedMolecule::ptr &_ObservedMolecule) :
-        QtMoleculeItem(_ObservedMolecule)
+        id(_ObservedMolecule->getMolIndex())
   {
     setFlags(flags() | Qt::ItemIsUserCheckable);
     setCheckState(Qt::Unchecked);
     // cannot call pure virtual function in QtMoleculeItem's cstor
-    internal_updateState();
+    updateState(_ObservedMolecule);
   }
 
   /** Performs the update of the molecule's visibility.
    *
+   * \param _ObservedMolecule object to update state from
    */
-  void internal_updateState()
+  void updateState(const QtObservedMolecule::ptr &_ObservedMolecule)
   {}
 
   QtMoleculeItem::COLUMNTYPES getType() const
   { return QtMoleculeItem::VISIBILITY; }
+
+  /** Getter for the id of the observed molecule for this item.
+   *
+   * \return id of the observed molecule
+   */
+  const moleculeId_t getMoleculeId() const
+  { return id; }
+
+private:
+  const moleculeId_t id;
 };
 
