Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.cpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.cpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -41,10 +41,8 @@
 QtMoleculeItem::QtMoleculeItem(
     QtObservedMolecule::ptr &_ObservedMolecule,
-     const enum MoveTypes _movetype,
-     const emitDirtyState_t _emitDirtyState) :
+     const enum MoveTypes _movetype) :
   ObservedMolecule(_ObservedMolecule),
   movetype(_movetype),
-  dirty(true),
-  emitDirtyState(_emitDirtyState)
+  dirty(true)
 {
   setFlags(flags() | Qt::ItemIsSelectable);
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -47,14 +47,7 @@
   enum COLUMNTYPES {NAME,VISIBILITY,ATOMCOUNT,FORMULA,OCCURRENCE,COLUMNTYPES_MAX};
 
-  //!> typedef for callback function to model to inform when we need update
-  typedef const boost::function<void (
-      const moleculeId_t _id,
-      const QtMoleculeItem::COLUMNTYPES _type,
-      const enum MoveTypes)> emitDirtyState_t;
-
   QtMoleculeItem(
       QtObservedMolecule::ptr &_ObservedMolecule,
-      const enum MoveTypes _movetype,
-      const emitDirtyState_t _emitDirtyState);
+      const enum MoveTypes _movetype);
   virtual ~QtMoleculeItem();
 
@@ -99,7 +92,4 @@
   //!> states that this item needs to be updated
   bool dirty;
-
-  //!> bound callback function to inform model about change
-  const emitDirtyState_t emitDirtyState;
 };
 
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItemFactory.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItemFactory.cpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItemFactory.cpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -61,13 +61,12 @@
 QList<QStandardItem *>
 QtMoleculeItemFactory::createMoleculeItems(
-    QtObservedMolecule::ptr &_ObservedMolecule,
-    const QtMoleculeItem::emitDirtyState_t &_emitDirtyState)
+    QtObservedMolecule::ptr &_ObservedMolecule)
 {
   QList<QStandardItem *> molItems;
-  molItems << new QtMoleculeItem_name(_ObservedMolecule, _emitDirtyState);
-  molItems << new QtMoleculeItem_visibility(_ObservedMolecule, _emitDirtyState);
-  molItems << new QtMoleculeItem_atomcount(_ObservedMolecule, _emitDirtyState);
-  molItems << new QtMoleculeItem_formula(_ObservedMolecule, _emitDirtyState);
-  molItems << new QtMoleculeItem_occurrence(_ObservedMolecule, _emitDirtyState);
+  molItems << new QtMoleculeItem_name(_ObservedMolecule);
+  molItems << new QtMoleculeItem_visibility(_ObservedMolecule);
+  molItems << new QtMoleculeItem_atomcount(_ObservedMolecule);
+  molItems << new QtMoleculeItem_formula(_ObservedMolecule);
+  molItems << new QtMoleculeItem_occurrence(_ObservedMolecule);
   return molItems;
 }
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItemFactory.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItemFactory.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItemFactory.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -46,10 +46,8 @@
    *
    * \param _ObservedMolecule observed representation of the molecule
-   * \param _emitDirtyState callback function to model to inform about required state update
    * \return list of prepared items to be appended to a group item
    */
   QList<QStandardItem *> createMoleculeItems(
-      QtObservedMolecule::ptr &_ObservedMolecule,
-      const QtMoleculeItem::emitDirtyState_t &_emitDirtyState);
+      QtObservedMolecule::ptr &_ObservedMolecule);
 
   /** Creates all QtMoleculeItem's that make up a row of a group item.
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.cpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -73,6 +73,5 @@
   QStandardItemModel(_parent),
   update_timer(NULL),
-  board(_board),
-  callback_DirtyItems(boost::bind(&QtMoleculeList::informDirtyState, this, _1, _2, _3))
+  board(_board)
 {
   setColumnCount(QtMoleculeItemFactory::COLUMNCOUNT);
@@ -313,7 +312,5 @@
 {
   QList<QStandardItem *> molItems =
-      QtMoleculeItemFactory::getInstance().createMoleculeItems(
-          _ObservedMolecule,
-          callback_DirtyItems);
+      QtMoleculeItemFactory::getInstance().createMoleculeItems(_ObservedMolecule);
   QtMoleculeItem *mol_item = dynamic_cast<QtMoleculeItem *>(molItems.front());
   ASSERT( mol_item != NULL,
Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeList.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -135,7 +135,4 @@
   MoleculeItemBiMap_t MoleculeItemBiMap;
 
-  //!> callback function to hand over to items that inform about requiring update
-  const QtMoleculeItem::emitDirtyState_t callback_DirtyItems;
-
   typedef std::map<moleculeId_t, unsigned int> KilledItemsPerMolecule_t;
   //!> takes note of how many items have already been killed for a specific row/molecule
Index: src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.cpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.cpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.cpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -42,21 +42,37 @@
     QtObservedInstanceBoard *_board,
     QWidget * _parent) :
-    QWidget(_parent)
+    QWidget(_parent),
+    board(_board)
 {
     connect(_board, SIGNAL(moleculeInserted(QtObservedMolecule::ptr)),
-        this, SIGNAL(MoleculeInserted(QtObservedMolecule::ptr)));
+        this, SLOT(moleculeInserted(QtObservedMolecule::ptr)));
     connect(_board, SIGNAL(moleculeRemoved(const moleculeId_t)),
-        this, SIGNAL(MoleculeRemoved(const moleculeId_t)));
+        this, SLOT(moleculeRemoved(const moleculeId_t)));
+}
+
+void QtObservedMoleculeObserver::moleculeInserted(const QtObservedMolecule::ptr _molecule)
+{
+  connect( _molecule.get(), SIGNAL(formulaChanged()), this, SLOT(formulaChanged()));
+  connect( _molecule.get(), SIGNAL(nameChanged()), this, SLOT(nameChanged()));
+  emit MoleculeInserted(_molecule);
+}
+
+void QtObservedMoleculeObserver::moleculeRemoved(const moleculeId_t _moleculeid)
+{
+  const QtObservedMolecule::ptr mol = board->getObservedMolecule(_moleculeid);
+  disconnect( mol.get(), SIGNAL(formulaChanged()), this, SLOT(formulaChanged()));
+  disconnect( mol.get(), SIGNAL(nameChanged()), this, SLOT(nameChanged()));
+  emit MoleculeRemoved(_moleculeid);
 }
 
 void QtObservedMoleculeObserver::formulaChanged()
 {
-  QtObservedMolecule * const walker = static_cast<QtObservedMolecule *>(sender());
-  emit FormulaChanged(walker->getRef());
+  QtObservedMolecule * const mol = static_cast<QtObservedMolecule *>(sender());
+  emit FormulaChanged(mol->getRef());
 }
 
 void QtObservedMoleculeObserver::nameChanged()
 {
-  QtObservedMolecule * const walker = static_cast<QtObservedMolecule *>(sender());
-  emit NameChanged(walker->getRef());
+  QtObservedMolecule * const mol = static_cast<QtObservedMolecule *>(sender());
+  emit NameChanged(mol->getRef());
 }
Index: src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -38,10 +38,10 @@
 
 signals:
-  void FormulaChanged(const QtObservedMolecule::ptr _atom);
-  void NameChanged(const QtObservedMolecule::ptr _atom);
+  void FormulaChanged(const QtObservedMolecule::ptr _molecule);
+  void NameChanged(const QtObservedMolecule::ptr _molecule);
 
   // relayed signals
-  void MoleculeInserted(const QtObservedMolecule::ptr _atom);
-  void MoleculeRemoved(const atomId_t _atomid);
+  void MoleculeInserted(const QtObservedMolecule::ptr _molecule);
+  void MoleculeRemoved(const moleculeId_t _molid);
 
 private slots:
@@ -50,4 +50,10 @@
   void nameChanged();
 
+  void moleculeInserted(const QtObservedMolecule::ptr _molecule);
+  void moleculeRemoved(const moleculeId_t _molid);
+
+private:
+  //!> ref to get object from index
+  QtObservedInstanceBoard * const board;
 };
 
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_atomcount.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_atomcount.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_atomcount.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -27,7 +27,6 @@
 
   QtMoleculeItem_atomcount(
-      QtObservedMolecule::ptr &_ObservedMolecule,
-      const emitDirtyState_t &_emitDirtyState) :
-        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::NeedsMove, _emitDirtyState)
+      QtObservedMolecule::ptr &_ObservedMolecule) :
+        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::NeedsMove)
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_formula.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_formula.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_formula.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -29,7 +29,6 @@
 
   QtMoleculeItem_formula(
-      QtObservedMolecule::ptr &_ObservedMolecule,
-      const emitDirtyState_t &_emitDirtyState) :
-        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::NeedsMove, _emitDirtyState)
+      QtObservedMolecule::ptr &_ObservedMolecule) :
+        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::NeedsMove)
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_name.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_name.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_name.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -27,7 +27,6 @@
 
   QtMoleculeItem_name(
-      QtObservedMolecule::ptr &_ObservedMolecule,
-      const emitDirtyState_t &_emitDirtyState) :
-        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::DoesNotMove, _emitDirtyState)
+      QtObservedMolecule::ptr &_ObservedMolecule) :
+        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::DoesNotMove)
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_occurrence.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_occurrence.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_occurrence.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -27,7 +27,6 @@
 
   QtMoleculeItem_occurrence(
-      QtObservedMolecule::ptr &_ObservedMolecule,
-      const emitDirtyState_t &_emitDirtyState) :
-        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::DoesNotMove, _emitDirtyState)
+      QtObservedMolecule::ptr &_ObservedMolecule) :
+        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::DoesNotMove)
   {
     // cannot call pure virtual function in QtMoleculeItem's cstor
Index: src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_visibility.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_visibility.hpp	(revision 9242598314ccb08531f6506da54bb5a30b948820)
+++ src/UIElements/Views/Qt4/MoleculeList/SpecificItems/QtMoleculeItem_visibility.hpp	(revision 7993fe252cb5b1325c70e077e87cf14aefe1b912)
@@ -27,7 +27,6 @@
 
   QtMoleculeItem_visibility(
-      QtObservedMolecule::ptr &_ObservedMolecule,
-      const emitDirtyState_t &_emitDirtyState) :
-        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::DoesNotMove, _emitDirtyState)
+      QtObservedMolecule::ptr &_ObservedMolecule) :
+        QtMoleculeItem(_ObservedMolecule, QtMoleculeItem::DoesNotMove)
   {
     setFlags(flags() | Qt::ItemIsUserCheckable);
