Index: src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp
===================================================================
--- src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp	(revision cc297688a2f09a635ccb45323617573684f51f9d)
+++ src/UIElements/Views/Qt4/MoleculeList/QtMoleculeItem.hpp	(revision 367489fe69bf3b53792dde0165df1c41347c98b6)
@@ -17,6 +17,4 @@
 #include <QStandardItem>
 
-#include "CodePatterns/Observer/Observer.hpp"
-
 #include <boost/function.hpp>
 #include <boost/thread/recursive_mutex.hpp>
@@ -24,5 +22,5 @@
 #include <string>
 
-#include "molecule.hpp"
+#include "UIElements/Qt4/InstanceBoard/QtObservedMolecule.hpp"
 
 /** This class describes the general interface for a specific item in a QtAbstractItemModel
@@ -37,10 +35,7 @@
  * -# relaying updateState() call from QtMoleculeList to the specific internal_updateState()
  */
-class QtMoleculeItem : public QStandardItem, public Observer
+class QtMoleculeItem : public QStandardItem
 {
 public:
-  //!> typedef for a list of notification channels required, to know when to update
-  typedef Observable::channels_t channellist_t;
-
   //!> enum states whether an item's formula changed or not
   enum MoveTypes {
@@ -58,13 +53,8 @@
       const enum MoveTypes)> emitDirtyState_t;
 
-  //!> typedef for callback function to model to inform when our subjectKilled() was called
-  typedef const boost::function<void (const moleculeId_t _id)> emitSubjectKilledState_t;
-
   QtMoleculeItem(
-      const moleculeId_t _molid,
-      const channellist_t &_channellist,
+      QtObservedMolecule::ptr &_ObservedMolecule,
       const enum MoveTypes _movetype,
-      const emitDirtyState_t _emitDirtyState,
-      const emitSubjectKilledState_t _emitSubjectKilledState);
+      const emitDirtyState_t _emitDirtyState);
   virtual ~QtMoleculeItem();
 
@@ -74,17 +64,4 @@
   void updateState();
 
-  /** Const getter to this item's molecule.
-   *
-   * \return const ref to \a mol
-   */
-  const molecule * const getMolecule() const;
-
-  /** Getter for the id of the molecule this item is associated to
-   *
-   * \return id of molecule
-   */
-  moleculeId_t getMoleculeId() const
-  { return molid; }
-
   /** Returns the type of this QtMoleculeItem, i.e. the column in QtMoleculeList.
    *
@@ -93,12 +70,17 @@
   virtual QtMoleculeItem::COLUMNTYPES getType() const = 0;
 
-private:
-  void update(Observable *publisher);
-  void recieveNotification(Observable *publisher, Notification_ptr notification);
-  void subjectKilled(Observable *publisher);
+  /** Getter to the observed molecule in this item.
+   *
+   * \return const ref to ObservedMolecule for this item
+   */
+  const QtObservedMolecule::ptr& getMolecule() const
+  { return ObservedMolecule; }
 
-protected:
-  void signOnToMolecule();
-  void signOffFromMolecule();
+  /** 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:
@@ -108,16 +90,10 @@
   virtual void internal_updateState() = 0;
 
-  //!> molecule we are signed on to
-  const moleculeId_t molid;
+  //!> ptr to ObservedMolecule we follow
+  const QtObservedMolecule::ptr ObservedMolecule;
 
 private:
   //!> move type for this specific item, set this when implementing
   const enum MoveTypes movetype;
-
-  //!> ref to the specific static list of channels we are signed on to
-  const channellist_t &channellist;
-
-  //!> the Observable we are signed on, also indicates whether we are sign on (not NULL)
-  const Observable * owner;
 
   //!> states that this item needs to be updated
@@ -126,10 +102,4 @@
   //!> bound callback function to inform model about change
   const emitDirtyState_t emitDirtyState;
-
-  //!> bound callback function to inform model about change
-  const emitSubjectKilledState_t emitSubjectKilledState;
-
-  //!> this protects the signing on and off
-  mutable boost::recursive_mutex owner_mutex;
 };
 
