Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp	(revision 0aa122d5f3137de21e283fdaa583b526d33a6540)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp	(revision b75386102c01f78fed1672b79dacce138116fcf9)
@@ -56,5 +56,5 @@
   resetProperties();
 
-  std::cout << "Created sphere for atom " << _atom->getId() << "." << endl;
+  LOG(2, "INFO: Created sphere for atom " << _atom->getId() << ".");
 
   connect( this, SIGNAL(clicked()), this, SLOT(wasClicked()));
@@ -71,5 +71,7 @@
 void GLMoleculeObject_atom::update(Observable *publisher)
 {
-  LOG(0, "GLMoleculeObject_atom::update() - called fro atom "+toString(_atom->getId())+".");
+#ifdef LOG_OBSERVER
+  observerLog().addMessage() << "++ Update of Observer " << observerLog().getName(this) << " from atom "+toString(_atom->getId())+".";
+#endif
   resetProperties();
 }
@@ -78,5 +80,5 @@
 {
   const Vector Position = _atom->getPosition();
-  LOG(1, "GLMoleculeObject_atom::resetIndex() - new position is "+toString(Position)+".");
+  LOG(4, "INFO: GLMoleculeObject_atom::resetIndex() - new position is "+toString(Position)+".");
   setPosition(QVector3D(Position[0], Position[1], Position[2]));
 }
@@ -90,5 +92,5 @@
     elementno = 1;
   }
-  LOG(1, "GLMoleculeObject_atom::resetIndex() - new element number is "+toString(elementno)+".");
+  LOG(4, "INFO: GLMoleculeObject_atom::resetIndex() - new element number is "+toString(elementno)+".");
 
   // set materials
@@ -115,5 +117,5 @@
 {
   const size_t atomno = _atom->getId();
-  LOG(1, "GLMoleculeObject_atom::resetIndex() - new index is "+toString(atomno)+".");
+  LOG(4, "INFO: GLMoleculeObject_atom::resetIndex() - new index is "+toString(atomno)+".");
   setObjectId(atomno);
 }
@@ -136,7 +138,9 @@
 void GLMoleculeObject_atom::recieveNotification(Observable *publisher, Notification_ptr notification)
 {
-  LOG(0, "GLMoleculeObject_atom::recieveNotification() - atom "
-      +toString(_atom->getId())+" got notification type "
-      +toString(notification->getChannelNo())+".");
+#ifdef LOG_OBSERVER
+  observerLog().addMessage() << "++ Update of Observer "<< observerLog().getName(this)
+      << " received notification from atom " << _atom->getId() << " for channel "
+      << notification->getChannelNo() << ".";
+#endif
   switch (notification->getChannelNo()) {
     case AtomObservable::ElementChanged:
@@ -160,5 +164,5 @@
 void GLMoleculeObject_atom::wasClicked()
 {
-  qDebug("GLMoleculeObject_atom: atom %d has been clicked", _atom->getId());
+  LOG(4, "INFO: GLMoleculeObject_atom: atom " << _atom->getId() << " has been clicked");
   emit clicked(_atom->getId());
 }
Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.cpp	(revision 0aa122d5f3137de21e283fdaa583b526d33a6540)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.cpp	(revision b75386102c01f78fed1672b79dacce138116fcf9)
@@ -30,4 +30,5 @@
 
 #include "CodePatterns/Assert.hpp"
+#include "CodePatterns/Log.hpp"
 #include "Atom/atom.hpp"
 #include "Bond/bond.hpp"
@@ -104,6 +105,6 @@
   // check
   Vector a_rotated = axis.rotateVector(a, alpha);
-  std::cout << "Created cylinder from "// << Position << " to " << OtherPosition
-      << a << " to " << a_rotated << " around " << b << " by " << alpha/M_PI*180. << ", respectively." << endl;
+  LOG(3, "INFO: Created cylinder from "// << Position << " to " << OtherPosition
+      << a << " to " << a_rotated << " around " << b << " by " << alpha/M_PI*180. << ", respectively.");
 
   // set position
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision 0aa122d5f3137de21e283fdaa583b526d33a6540)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision b75386102c01f78fed1672b79dacce138116fcf9)
@@ -86,5 +86,5 @@
 void GLWorldScene::atomInserted(const atom *_atom)
 {
-  LOG(0, "GLWorldScene: Received signal atomInserted for atom "+toString(_atom->getId())+".");
+  LOG(3, "INFO: GLWorldScene: Received signal atomInserted for atom "+toString(_atom->getId())+".");
   GLMoleculeObject_atom *atomObject = new GLMoleculeObject_atom(this, _atom);
   AtomNodeMap::iterator iter = AtomsinSceneMap.find(_atom->getId());
@@ -105,5 +105,5 @@
 void GLWorldScene::atomRemoved(const atom *_atom)
 {
-  LOG(0, "GLWorldScene: Received signal atomRemoved for atom "+toString(_atom->getId())+".");
+  LOG(3, "INFO: GLWorldScene: Received signal atomRemoved for atom "+toString(_atom->getId())+".");
   // remove all its bonds
   const BondList& bondlist = _atom->getListOfBonds();
@@ -145,5 +145,5 @@
     presentBonds.insert( otherid );
   }
-  LOG(0, "We have the following bonds: "+toString(presentBonds)+".");
+  LOG(3, "INFO: We have the following bonds: "+toString(presentBonds)+".");
 
   // search for added bonds
@@ -169,5 +169,6 @@
     }
   }
-  LOG(0, "The following bonds should not be present: "+toString(presentBonds)+".");
+  if (!presentBonds.empty())
+    ELOG(2, "The following bonds should not be present: "+toString(presentBonds)+".");
 
   // remove all still presentBonds
@@ -184,5 +185,5 @@
 void GLWorldScene::bondInserted(const bond *_bond)
 {
-  LOG(0, "GLWorldScene::bondInserted() - Adding bond "+toString(*_bond)+".");
+  LOG(3, "INFO: GLWorldScene::bondInserted() - Adding bond "+toString(*_bond)+".");
   const double distance =
       _bond->leftatom->getPosition().distance(_bond->rightatom->getPosition())/2.;
@@ -218,5 +219,5 @@
 void GLWorldScene::bondRemoved(const atomId_t leftnr, const atomId_t rightnr)
 {
-  LOG(0, "GLWorldScene::bondRemoved() - Removing bond between "+toString(leftnr)+" and "+toString(leftnr)+".");
+  LOG(3, "INFO: GLWorldScene::bondRemoved() - Removing bond between "+toString(leftnr)+" and "+toString(leftnr)+".");
   {
     // left bond
@@ -268,5 +269,5 @@
 void GLWorldScene::atomClicked(atomId_t no)
 {
-   qDebug("GLWorldScene: atom %d has been clicked.", no);
+   LOG(3, "INFO: GLWorldScene - atom " << no << " has been clicked.");
    const atom *Walker = World::getInstance().getAtom(AtomById(no));
    if (!World::getInstance().isSelected(Walker))
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 0aa122d5f3137de21e283fdaa583b526d33a6540)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision b75386102c01f78fed1672b79dacce138116fcf9)
@@ -83,5 +83,7 @@
     {
       const atom *_atom = World::getInstance().lastChanged<atom>();
-      LOG(0, "GLWorldView: Received notification that atom "+toString(_atom->getId())+" has been inserted.");
+#ifdef LOG_OBSERVER
+      observerLog().addMessage() << "++ Observer " << observerLog().getName(this) << " received notification that atom "+toString(_atom->getId())+" has been inserted.";
+#endif
       emit atomInserted(_atom);
       break;
@@ -90,5 +92,7 @@
     {
       const atom *_atom = World::getInstance().lastChanged<atom>();
-      LOG(0, "GLWorldView: Received notification that atom "+toString(_atom->getId())+" has been removed.");
+#ifdef LOG_OBSERVER
+      observerLog().addMessage() << "++ Observer " << observerLog().getName(this) << " received notification that atom "+toString(_atom->getId())+" has been removed.";
+#endif
       emit atomRemoved(_atom);
       break;
