Index: src/UIElements/Qt4/InstanceBoard/ObservedValue_wCallback.hpp
===================================================================
--- src/UIElements/Qt4/InstanceBoard/ObservedValue_wCallback.hpp	(revision 96f14ae4f021b1976486ad5658a68c30645c7467)
+++ src/UIElements/Qt4/InstanceBoard/ObservedValue_wCallback.hpp	(revision d48a1666332f282b0853f2214a842d9d2da6b67c)
@@ -38,11 +38,9 @@
       const T &_initialvalue,
       const Observable::channels_t &_channels,
-      const boost::function<void(const id)> &_callback,
-      const boost::function<const id()> &_getId) :
+      const boost::function<void()> &_callback) :
         ObservedValue<T>(_owner, _recalcMethod, _name, _initialvalue, _channels),
         signedOnChannels(std::max((size_t)1,_channels.size())),
         callback(_callback),
-        CallbackIsGone(false),
-        getId(_getId)
+        CallbackIsGone(false)
   {}
   virtual ~ObservedValue_wCallback()
@@ -64,5 +62,5 @@
       ObservedValue<T>::subjectKilled(publisher);
       if (!CallbackIsGone)
-        callback(getId());
+        callback();
     }
   }
@@ -72,86 +70,7 @@
   size_t signedOnChannels;
   //!> callback function to tell other entity about subjectKilled
-  const boost::function<void(const id)> callback;
+  const boost::function<void()> callback;
   //!> is callback still alive or not
   bool CallbackIsGone;
-  //!> callback function to get id
-  const boost::function<const id()> getId;
-};
-
-/** Specialization of ObservedValue_wCallback for the index ObservedValue.
- *
- * The index serves as the unique identifier for the object instance whose
- * properties are monitored in ObservedValue. Hence, how to give a subjectKilled()
- * with an external getId() function? For the index the ObservedValue::get() is
- * the getId() we need to call! Hence, we may simply connect these internally
- * in this partial template specialization.
- *
- * Because atomicNumber_t, atomId_t and moleculeId_t are not unique types but
- * -- at the writing of this class -- just typedefs, we have to resort to the
- * trick with two constructors, one taking an external getId(), the other
- * routing the getId() internally by binding to ObservedValue<T>::get().
- */
-template <class T>
-class ObservedValue_wCallback<T,T> : public ObservedValue<T>
-{
-public:
-  ObservedValue_wCallback(
-      const Observable * const _owner,
-      const boost::function<T()> &_recalcMethod,
-      const std::string &_name,
-      const T &_initialvalue,
-      const Observable::channels_t &_channels,
-      const boost::function<void(const T)> &_callback,
-      const boost::function<const T()> &_getId) :
-        ObservedValue<T>(_owner, _recalcMethod, _name, _initialvalue, _channels),
-        signedOnChannels(std::max((size_t)1,_channels.size())),
-        callback(_callback),
-        CallbackIsGone(false),
-        getId(_getId)
-  {}
-  ObservedValue_wCallback(
-      const Observable * const _owner,
-      const boost::function<T()> &_recalcMethod,
-      const std::string &_name,
-      const T &_initialvalue,
-      const Observable::channels_t &_channels,
-      const boost::function<void(const T)> &_callback) :
-        ObservedValue<T>(_owner, _recalcMethod, _name, _initialvalue, _channels),
-        signedOnChannels(std::max((size_t)1,_channels.size())),
-        callback(_callback),
-        CallbackIsGone(false),
-        getId(boost::bind(&ObservedValue<T>::get, this))
-  {}
-  virtual ~ObservedValue_wCallback()
-  {}
-
-  /** Function is called by callback owner to inform about its destruction.
-   *
-   * \note callback must not be used after this
-   */
-  void noteCallBackIsGone()
-  { CallbackIsGone = true; }
-
-protected:
-  virtual void subjectKilled(Observable *publisher)
-  {
-    ObservedValue<T>::subjectKilled(publisher);
-    ASSERT(signedOnChannels > 0,
-        "ObservedValue_wCallback::subjectKilled() - signedOnChannels is already zero.");
-    if ((--signedOnChannels) == 0)
-      ObservedValue<T>::subjectKilled(publisher);
-      if (!CallbackIsGone)
-        callback(getId());
-  }
-
-private:
-  //!> if we are signOn() to multiple channels, count down before callback
-  size_t signedOnChannels;
-  //!> callback function to tell other entity about subjectKilled
-  const boost::function<void(const T)> callback;
-  //!> is callback still alive or not
-  bool CallbackIsGone;
-  //!> callback function to get id
-  const boost::function<const T()> getId;
 };
 
Index: src/UIElements/Qt4/InstanceBoard/QtObservedAtom.cpp
===================================================================
--- src/UIElements/Qt4/InstanceBoard/QtObservedAtom.cpp	(revision 96f14ae4f021b1976486ad5658a68c30645c7467)
+++ src/UIElements/Qt4/InstanceBoard/QtObservedAtom.cpp	(revision d48a1666332f282b0853f2214a842d9d2da6b67c)
@@ -106,5 +106,5 @@
   ObservedValues(QtObservedAtom::MAX_ObservedTypes)
 {
-  boost::function<void (ObservedValue_Index_t)> atomSubjectKilled(
+  boost::function<void ()> atomSubjectKilled(
       boost::bind(&QtObservedAtom::countValuesSubjectKilled,
           boost::ref(*this),
@@ -332,13 +332,8 @@
     const atomId_t _id,
     const atom * const _atomref,
-    const boost::function<void(ObservedValue_Index_t)> &_subjectKilled)
+    const boost::function<void()> &_subjectKilled)
 {
   ASSERT( _ObservedValues.size() == MAX_ObservedTypes,
       "QtObservedAtom::initObservedValues() - given ObservedValues has not correct size.");
-
-  // fill ObservedValues: index first
-  const boost::function<ObservedValue_Index_t ()> IndexGetter =
-      boost::bind(&QtObservedAtom::getIndex,
-          boost::cref(*this));
 
   // fill ObservedValues: then all the other that need index
@@ -364,6 +359,5 @@
       _id,
       AtomIndexChannels,
-      _subjectKilled,
-      IndexGetter);
+      _subjectKilled);
   _ObservedValues[AtomBonds] = new ObservedValue_wCallback<ListOfBonds_t, ObservedValue_Index_t>(
       _atomref,
@@ -372,6 +366,5 @@
       AtomBondsUpdater(),
       AtomBondsChannels,
-      _subjectKilled,
-      IndexGetter);
+      _subjectKilled);
   _ObservedValues[AtomElement] = new ObservedValue_wCallback<atomicNumber_t, ObservedValue_Index_t>(
       _atomref,
@@ -380,6 +373,5 @@
       AtomElementUpdater(),
       AtomElementChannels,
-      _subjectKilled,
-      IndexGetter);
+      _subjectKilled);
   _ObservedValues[AtomMolecule] = new ObservedValue_wCallback<QtObservedMolecule*, ObservedValue_Index_t>(
       _atomref,
@@ -388,6 +380,5 @@
       AtomMoleculeUpdater(),
       AtomMoleculeChannels,
-      _subjectKilled,
-      IndexGetter);
+      _subjectKilled);
   _ObservedValues[AtomName] = new ObservedValue_wCallback<std::string, ObservedValue_Index_t>(
       _atomref,
@@ -396,6 +387,5 @@
       AtomNameUpdater(),
       AtomNameChannels,
-      _subjectKilled,
-      IndexGetter);
+      _subjectKilled);
   _ObservedValues[AtomPosition] = new ObservedValue_wCallback<Vector, ObservedValue_Index_t>(
       _atomref,
@@ -404,6 +394,5 @@
       AtomPositionUpdater(),
       AtomPositionChannels,
-      _subjectKilled,
-      IndexGetter);
+      _subjectKilled);
   _ObservedValues[AtomSelected] = new ObservedValue_wCallback<bool, ObservedValue_Index_t>(
       _atomref,
@@ -412,6 +401,5 @@
       AtomSelectedUpdater(),
       AtomSelectedChannels,
-      _subjectKilled,
-      IndexGetter);
+      _subjectKilled);
 }
 
Index: src/UIElements/Qt4/InstanceBoard/QtObservedAtom.hpp
===================================================================
--- src/UIElements/Qt4/InstanceBoard/QtObservedAtom.hpp	(revision 96f14ae4f021b1976486ad5658a68c30645c7467)
+++ src/UIElements/Qt4/InstanceBoard/QtObservedAtom.hpp	(revision d48a1666332f282b0853f2214a842d9d2da6b67c)
@@ -207,5 +207,5 @@
       const atomId_t _id,
       const atom * const _atomref,
-      const boost::function<void(ObservedValue_Index_t)> &_subjectKilled);
+      const boost::function<void()> &_subjectKilled);
 
   /** Destroys all \a ObservedValues entries.
Index: src/UIElements/Qt4/InstanceBoard/QtObservedBond.cpp
===================================================================
--- src/UIElements/Qt4/InstanceBoard/QtObservedBond.cpp	(revision 96f14ae4f021b1976486ad5658a68c30645c7467)
+++ src/UIElements/Qt4/InstanceBoard/QtObservedBond.cpp	(revision d48a1666332f282b0853f2214a842d9d2da6b67c)
@@ -128,5 +128,5 @@
           boost::ref(subjectKilledCount), _1);
 
-  const boost::function<void (const ObservedValue_Index_t)> bondSubjectKilled(
+  const boost::function<void ()> bondSubjectKilled(
       boost::bind(&QtObservedBond::countValuesSubjectKilled,
           boost::ref(*this),
@@ -134,5 +134,5 @@
           boost::bind(accessor,
               getObservable(_bond.get()))));
-  const boost::function<void (const ObservedValue_Index_t)> leftatomSubjectKilled(
+  const boost::function<void ()> leftatomSubjectKilled(
       boost::bind(&QtObservedBond::countValuesSubjectKilled,
           boost::ref(*this),
@@ -140,5 +140,5 @@
           boost::bind(accessor,
               getObservable(_bond->leftatom))));
-  const boost::function<void (const ObservedValue_Index_t)> rightatomSubjectKilled(
+  const boost::function<void ()> rightatomSubjectKilled(
       boost::bind(&QtObservedBond::countValuesSubjectKilled,
           boost::ref(*this),
@@ -146,5 +146,5 @@
           boost::bind(accessor,
               getObservable(_bond->rightatom))));
-  const boost::function<void (const ObservedValue_Index_t)> moleculeSubjectKilled(
+  const boost::function<void ()> moleculeSubjectKilled(
       boost::bind(&QtObservedBond::countValuesSubjectKilled,
           boost::ref(*this),
@@ -588,8 +588,8 @@
     const bondId_t _id,
     const bond::ptr _bondref,
-    const boost::function<void(const ObservedValue_Index_t)> &_bondsubjectKilled,
-    const boost::function<void(const ObservedValue_Index_t)> &_leftatomsubjectKilled,
-    const boost::function<void(const ObservedValue_Index_t)> &_rightatomsubjectKilled,
-    const boost::function<void(const ObservedValue_Index_t)> &_moleculesubjectKilled)
+    const boost::function<void()> &_bondsubjectKilled,
+    const boost::function<void()> &_leftatomsubjectKilled,
+    const boost::function<void()> &_rightatomsubjectKilled,
+    const boost::function<void()> &_moleculesubjectKilled)
 {
   // fill ObservedValues: index first
@@ -622,6 +622,5 @@
       BondDegreeUpdater(),
       BondDegreeChannels,
-      _bondsubjectKilled,
-      BondIndexGetter);
+      _bondsubjectKilled);
   _ObservedValues[leftAtomIndex] = new ObservedValue_wCallback<atomId_t, ObservedValue_Index_t>(
       _bondref->leftatom,
@@ -630,6 +629,5 @@
       leftAtomIndexUpdater(),
       Observable::channels_t(1, AtomObservable::IndexChanged),
-      _leftatomsubjectKilled,
-      BondIndexGetter);
+      _leftatomsubjectKilled);
   _ObservedValues[leftAtomElement] = new ObservedValue_wCallback<atomicNumber_t, ObservedValue_Index_t>(
       _bondref->leftatom,
@@ -638,6 +636,5 @@
       leftAtomElementUpdater(),
       Observable::channels_t(1, AtomObservable::ElementChanged),
-      _leftatomsubjectKilled,
-      BondIndexGetter);
+      _leftatomsubjectKilled);
   _ObservedValues[leftAtomPosition] = new ObservedValue_wCallback<Vector, ObservedValue_Index_t>(
       _bondref->leftatom,
@@ -646,6 +643,5 @@
       leftAtomPositionUpdater(),
       Observable::channels_t(1, AtomObservable::PositionChanged),
-      _leftatomsubjectKilled,
-      BondIndexGetter);
+      _leftatomsubjectKilled);
   _ObservedValues[rightAtomIndex] = new ObservedValue_wCallback<atomId_t, ObservedValue_Index_t>(
       _bondref->rightatom,
@@ -654,6 +650,5 @@
       rightAtomIndexUpdater(),
       Observable::channels_t(1, AtomObservable::IndexChanged),
-      _rightatomsubjectKilled,
-      BondIndexGetter);
+      _rightatomsubjectKilled);
   _ObservedValues[rightAtomElement] = new ObservedValue_wCallback<atomicNumber_t, ObservedValue_Index_t>(
       _bondref->rightatom,
@@ -662,6 +657,5 @@
       rightAtomElementUpdater(),
       Observable::channels_t(1, AtomObservable::ElementChanged),
-      _rightatomsubjectKilled,
-      BondIndexGetter);
+      _rightatomsubjectKilled);
   _ObservedValues[rightAtomPosition] = new ObservedValue_wCallback<Vector, ObservedValue_Index_t>(
       _bondref->rightatom,
@@ -670,6 +664,5 @@
       rightAtomPositionUpdater(),
       Observable::channels_t(1, AtomObservable::PositionChanged),
-      _rightatomsubjectKilled,
-      BondIndexGetter);
+      _rightatomsubjectKilled);
   _ObservedValues[moleculeIndex] = new ObservedValue_wCallback<moleculeId_t, ObservedValue_Index_t>(
       _bondref->leftatom->getMolecule(),
@@ -678,6 +671,5 @@
       MoleculeIndexUpdater(),
       Observable::channels_t(1, AtomObservable::PositionChanged),
-      _moleculesubjectKilled,
-      BondIndexGetter);
+      _moleculesubjectKilled);
 }
 
Index: src/UIElements/Qt4/InstanceBoard/QtObservedBond.hpp
===================================================================
--- src/UIElements/Qt4/InstanceBoard/QtObservedBond.hpp	(revision 96f14ae4f021b1976486ad5658a68c30645c7467)
+++ src/UIElements/Qt4/InstanceBoard/QtObservedBond.hpp	(revision d48a1666332f282b0853f2214a842d9d2da6b67c)
@@ -231,8 +231,8 @@
       const bondId_t _id,
       const bond::ptr _bondref,
-      const boost::function<void(const ObservedValue_Index_t)> &_bondsubjectKilled,
-      const boost::function<void(const ObservedValue_Index_t)> &_leftatomsubjectKilled,
-      const boost::function<void(const ObservedValue_Index_t)> &_rightatomsubjectKilled,
-      const boost::function<void(const ObservedValue_Index_t)> &_moleculesubjectKilled);
+      const boost::function<void()> &_bondsubjectKilled,
+      const boost::function<void()> &_leftatomsubjectKilled,
+      const boost::function<void()> &_rightatomsubjectKilled,
+      const boost::function<void()> &_moleculesubjectKilled);
 
   /** Destroys all \a ObservedValues entries.
Index: src/UIElements/Qt4/InstanceBoard/QtObservedMolecule.cpp
===================================================================
--- src/UIElements/Qt4/InstanceBoard/QtObservedMolecule.cpp	(revision 96f14ae4f021b1976486ad5658a68c30645c7467)
+++ src/UIElements/Qt4/InstanceBoard/QtObservedMolecule.cpp	(revision d48a1666332f282b0853f2214a842d9d2da6b67c)
@@ -114,5 +114,5 @@
   ObservedValues(QtObservedMolecule::MAX_ObservedTypes)
 {
-  boost::function<void (ObservedValue_Index_t)> moleculeSubjectKilled(
+  boost::function<void ()> moleculeSubjectKilled(
       boost::bind(&QtObservedMolecule::countValuesSubjectKilled,
           boost::ref(*this),
@@ -321,13 +321,8 @@
     const moleculeId_t _molid,
     const molecule * const _molref,
-    const boost::function<void(ObservedValue_Index_t)> &_subjectKilled)
+    const boost::function<void()> &_subjectKilled)
 {
   ASSERT( _ObservedValues.size() == MAX_ObservedTypes,
       "QtObservedMolecule::initObservedValues() - given ObservedValues has not correct size.");
-
-  // fill ObservedValues: index first
-  const boost::function<ObservedValue_Index_t ()> MolIndexGetter =
-      boost::bind(&QtObservedMolecule::getIndex,
-          boost::cref(*this));
 
   // fill ObservedValues: then all the other that need index
@@ -357,6 +352,5 @@
         _molid,
         IndexChannels,
-        _subjectKilled,
-        MolIndexGetter);
+        _subjectKilled);
   _ObservedValues[AtomCount] = new ObservedValue_wCallback<int, ObservedValue_Index_t>(
       _molref,
@@ -365,6 +359,5 @@
       AtomCountUpdater(),
       AtomCountChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
   _ObservedValues[BondCount] = new ObservedValue_wCallback<int, ObservedValue_Index_t>(
       _molref,
@@ -373,6 +366,5 @@
       BondCountUpdater(),
       BondCountChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
   _ObservedValues[BoundingBox] = new ObservedValue_wCallback<molecule::BoundingBoxInfo, ObservedValue_Index_t>(
       _molref,
@@ -381,6 +373,5 @@
       initBoundingBox(),
       BoundingBoxChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
   _ObservedValues[FormulaString] = new ObservedValue_wCallback<std::string, ObservedValue_Index_t>(
       _molref,
@@ -389,6 +380,5 @@
       MolFormulaUpdater(),
       FormulaStringChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
   _ObservedValues[MolCenter] = new ObservedValue_wCallback<Vector, ObservedValue_Index_t>(
       _molref,
@@ -397,6 +387,5 @@
       MolCenterUpdater(),
       CenterChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
   _ObservedValues[MolName] = new ObservedValue_wCallback<std::string, ObservedValue_Index_t>(
       _molref,
@@ -405,6 +394,5 @@
       MolNameUpdater(),
       NameChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
   _ObservedValues[NonHydrogenCount] = new ObservedValue_wCallback<int, ObservedValue_Index_t>(
       _molref,
@@ -413,6 +401,5 @@
       NonHydrogenCountUpdater(),
       NonHydrogenCountChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
   _ObservedValues[MolSelected] = new ObservedValue_wCallback<bool, ObservedValue_Index_t>(
       _molref,
@@ -421,6 +408,5 @@
       SelectedUpdater(),
       SelectedChannels,
-      _subjectKilled,
-      MolIndexGetter);
+      _subjectKilled);
 }
 
Index: src/UIElements/Qt4/InstanceBoard/QtObservedMolecule.hpp
===================================================================
--- src/UIElements/Qt4/InstanceBoard/QtObservedMolecule.hpp	(revision 96f14ae4f021b1976486ad5658a68c30645c7467)
+++ src/UIElements/Qt4/InstanceBoard/QtObservedMolecule.hpp	(revision d48a1666332f282b0853f2214a842d9d2da6b67c)
@@ -244,5 +244,5 @@
       const moleculeId_t _molid,
       const molecule * const _molref,
-      const boost::function<void(ObservedValue_Index_t)> &_subjectKilled);
+      const boost::function<void()> &_subjectKilled);
 
   /** Destroys all \a ObservedValues entries.
