Index: src/Atom/AtomObserver.cpp
===================================================================
--- src/Atom/AtomObserver.cpp	(revision 7f1865dc7e5a73a96f5e2c5a9661cb6ee25690f7)
+++ src/Atom/AtomObserver.cpp	(revision 4a328ffbbc4084c5418a999a594c586287c63bf1)
@@ -53,6 +53,15 @@
   Observable::insertNotificationChannel( std::make_pair(static_cast<Observable *>(this), OurChannel) );
   OurChannel->addChannel(AtomObservable::PositionChanged);
+  OurChannel->addChannel(AtomObservable::VelocityChanged);
+  OurChannel->addChannel(AtomObservable::ForceChanged);
+  OurChannel->addChannel(AtomObservable::MoleculeChanged);
+  OurChannel->addChannel(AtomObservable::NameChanged);
   OurChannel->addChannel(AtomObservable::ElementChanged);
+  OurChannel->addChannel(AtomObservable::IndexChanged);
+  OurChannel->addChannel(AtomObservable::PropertyChanged);
+  OurChannel->addChannel(AtomObservable::BondsAdded);
+  OurChannel->addChannel(AtomObservable::BondsRemoved);
   OurChannel->addChannel(AtomObservable::TrajectoryChanged);
+  OurChannel->addChannel(AtomObservable::SelectionChanged);
 }
 
@@ -70,6 +79,15 @@
 {
   res->signOn(this, AtomObservable::PositionChanged);
+  res->signOn(this, AtomObservable::VelocityChanged);
+  res->signOn(this, AtomObservable::ForceChanged);
+  res->signOn(this, AtomObservable::MoleculeChanged);
+  res->signOn(this, AtomObservable::NameChanged);
   res->signOn(this, AtomObservable::ElementChanged);
+  res->signOn(this, AtomObservable::IndexChanged);
+  res->signOn(this, AtomObservable::PropertyChanged);
+  res->signOn(this, AtomObservable::BondsAdded);
+  res->signOn(this, AtomObservable::BondsRemoved);
   res->signOn(this, AtomObservable::TrajectoryChanged);
+  res->signOn(this, AtomObservable::SelectionChanged);
 }
 
@@ -81,6 +99,15 @@
 {
   res->signOff(this, AtomObservable::PositionChanged);
+  res->signOff(this, AtomObservable::VelocityChanged);
+  res->signOff(this, AtomObservable::ForceChanged);
+  res->signOff(this, AtomObservable::MoleculeChanged);
+  res->signOff(this, AtomObservable::NameChanged);
   res->signOff(this, AtomObservable::ElementChanged);
+  res->signOff(this, AtomObservable::IndexChanged);
+  res->signOff(this, AtomObservable::PropertyChanged);
+  res->signOff(this, AtomObservable::BondsAdded);
+  res->signOff(this, AtomObservable::BondsRemoved);
   res->signOff(this, AtomObservable::TrajectoryChanged);
+  res->signOff(this, AtomObservable::SelectionChanged);
 }
 
Index: src/Atom/unittests/AtomObserverUnitTest.cpp
===================================================================
--- src/Atom/unittests/AtomObserverUnitTest.cpp	(revision 7f1865dc7e5a73a96f5e2c5a9661cb6ee25690f7)
+++ src/Atom/unittests/AtomObserverUnitTest.cpp	(revision 4a328ffbbc4084c5418a999a594c586287c63bf1)
@@ -68,15 +68,15 @@
   // observer checks that we don't receive general updates ...
   observer = new UpdateCountObserver;
-  // but only specific notifications in observer1 and observer2
-  observer1 = new NotificationObserver(
-      AtomObserver::getInstance().getChannel(AtomObservable::PositionChanged)
-      );
-  observer2 = new NotificationObserver(
-      AtomObserver::getInstance().getChannel(AtomObservable::ElementChanged)
-      );
+  AtomObserver::getInstance().signOn(observer);
 
-  AtomObserver::getInstance().signOn(observer);
-  AtomObserver::getInstance().signOn(observer1, AtomObservable::PositionChanged);
-  AtomObserver::getInstance().signOn(observer2, AtomObservable::ElementChanged);
+  // but only specific notifications in others observers
+  for (int i=0;i<AtomObservable::NotificationType_MAX; ++i) {
+    specific_observers.push_back(new NotificationObserver(
+          AtomObserver::getInstance().getChannel((enum AtomObservable::NotificationType)i)
+          ));
+    AtomObserver::getInstance().signOn(
+        specific_observers.back(), (enum AtomObservable::NotificationType)i);
+  }
+
 
   for(int i=0;i<ATOM_COUNT;++i){
@@ -89,10 +89,11 @@
 {
   AtomObserver::getInstance().signOff(observer);
-  AtomObserver::getInstance().signOff(observer1, AtomObservable::PositionChanged);
-  AtomObserver::getInstance().signOff(observer2, AtomObservable::ElementChanged);
+  for (int i=0;i<AtomObservable::NotificationType_MAX; ++i) {
+    AtomObserver::getInstance().signOff(specific_observers[i], (enum AtomObservable::NotificationType)i);
+    delete specific_observers[i];
+  }
+  specific_observers.clear();
 
   delete observer;
-  delete observer1;
-  delete observer2;
 
   World::purgeInstance();
@@ -107,6 +108,8 @@
   // check for zero update
   CPPUNIT_ASSERT_EQUAL( (int)0, observer->updates );
-  CPPUNIT_ASSERT_EQUAL( false, observer1->wasNotified );
-  CPPUNIT_ASSERT_EQUAL( false, observer2->wasNotified );
+  for (int i=0;i<AtomObservable::NotificationType_MAX; ++i) {
+
+    CPPUNIT_ASSERT_EQUAL( false, specific_observers[i]->wasNotified );
+  }
 }
 
@@ -120,6 +123,8 @@
 
   // check for update
-  CPPUNIT_ASSERT_EQUAL( true, observer1->wasNotified );
-  CPPUNIT_ASSERT_EQUAL( false, observer2->wasNotified );
+  for (int i=0;i<AtomObservable::NotificationType_MAX; ++i) {
+    CPPUNIT_ASSERT_EQUAL( (enum AtomObservable::NotificationType)i == AtomObservable::PositionChanged,
+        specific_observers[i]->wasNotified );
+  }
   CPPUNIT_ASSERT_EQUAL( (int)0, observer->updates );
 }
@@ -134,6 +139,8 @@
 
   // check for update
-  CPPUNIT_ASSERT_EQUAL( false, observer1->wasNotified );
-  CPPUNIT_ASSERT_EQUAL( true, observer2->wasNotified );
+  for (int i=0;i<AtomObservable::NotificationType_MAX; ++i) {
+    CPPUNIT_ASSERT_EQUAL( (enum AtomObservable::NotificationType)i == AtomObservable::ElementChanged,
+        specific_observers[i]->wasNotified );
+  }
   CPPUNIT_ASSERT_EQUAL( (int)0, observer->updates );
 }
Index: src/Atom/unittests/AtomObserverUnitTest.hpp
===================================================================
--- src/Atom/unittests/AtomObserverUnitTest.hpp	(revision 7f1865dc7e5a73a96f5e2c5a9661cb6ee25690f7)
+++ src/Atom/unittests/AtomObserverUnitTest.hpp	(revision 4a328ffbbc4084c5418a999a594c586287c63bf1)
@@ -16,4 +16,6 @@
 
 #include <cppunit/extensions/HelperMacros.h>
+
+#include <vector>
 
 #include "types.hpp"
@@ -48,6 +50,5 @@
 
   UpdateCountObserver *observer;
-  NotificationObserver *observer1;
-  NotificationObserver *observer2;
+  std::vector<NotificationObserver *> specific_observers;
 };
 
