Index: src/atom.cpp
===================================================================
--- src/atom.cpp	(revision 23b830d97f03d2db6efacee0173bee0d34934bcb)
+++ src/atom.cpp	(revision e419517de9b7d686ed4d6f7fab71fb5d08e6344b)
@@ -6,4 +6,5 @@
 
 #include "atom.hpp"
+#include "bond.hpp"
 #include "memoryallocator.hpp"
 
@@ -120,4 +121,5 @@
  * \param *out stream to output to
  * \param *comment commentary after '#' sign
+  * \return true - \a *out present, false - \a *out is NULL
  */
 bool atom::Output(ofstream *out, int ElementNo, int AtomNo, const char *comment) const
@@ -157,4 +159,5 @@
 /** Output of a single atom as one lin in xyz file.
  * \param *out stream to output to
+  * \return true - \a *out present, false - \a *out is NULL
  */
 bool atom::OutputXYZLine(ofstream *out) const
@@ -169,4 +172,8 @@
 /** Output of a single atom as one lin in xyz file.
  * \param *out stream to output to
+ * \param *ElementNo array with ion type number in the config file this atom's element shall have
+ * \param *AtomNo array with atom number in the config file this atom shall have, is increase by one automatically
+ * \param step Trajectory time step to output
+  * \return true - \a *out present, false - \a *out is NULL
  */
 bool atom::OutputTrajectory(ofstream *out, int *ElementNo, int *AtomNo, int step) const
@@ -189,4 +196,6 @@
 /** Output of a single atom as one lin in xyz file.
  * \param *out stream to output to
+ * \param step Trajectory time step to output
+ * \return true - \a *out present, false - \a *out is NULL
  */
 bool atom::OutputTrajectoryXYZ(ofstream *out, int step) const
@@ -202,4 +211,25 @@
 };
 
+/** Prints all bonds of this atom from given global lists.
+ * \param *out stream to output to
+ * \param *NumberOfBondsPerAtom array with number of bonds per atomic index
+ * \param ***ListOfBondsPerAtom array per atomic index of array with pointer to bond
+ * \return true - \a *out present, false - \a *out is NULL
+ */
+bool atom::OutputBondOfAtom(ofstream *out, int *NumberOfBondsPerAtom, bond ***ListOfBondsPerAtom) const
+{
+  if (out != NULL) {
+    *out << Verbose(4) << "Atom " << Name << "/" << nr << " with " << NumberOfBondsPerAtom[nr] << " bonds: ";
+    int TotalDegree = 0;
+    for (int j=0;j<NumberOfBondsPerAtom[nr];j++) {
+      *out << *ListOfBondsPerAtom[nr][j] << "\t";
+      TotalDegree += ListOfBondsPerAtom[nr][j]->BondDegree;
+    }
+    *out << " -- TotalDegree: " << TotalDegree << endl;
+    return true;
+  } else
+    return false;
+};
+
 ostream & operator << (ostream &ost, const atom &a)
 {
Index: src/atom.hpp
===================================================================
--- src/atom.hpp	(revision 23b830d97f03d2db6efacee0173bee0d34934bcb)
+++ src/atom.hpp	(revision e419517de9b7d686ed4d6f7fab71fb5d08e6344b)
@@ -23,4 +23,6 @@
 #include "tesselation.hpp"
 #include "vector.hpp"
+
+class bond;
 
 /** Single atom.
@@ -65,4 +67,5 @@
   bool OutputTrajectory(ofstream *out, int *ElementNo, int *AtomNo, int step) const;
   bool OutputTrajectoryXYZ(ofstream *out, int step) const;
+  bool OutputBondOfAtom(ofstream *out, int *NumberOfBondsPerAtom, bond ***ListOfBondsPerAtom) const;
 
   void EqualsFather ( atom *ptr, atom **res );
Index: src/bond.cpp
===================================================================
--- src/bond.cpp	(revision 23b830d97f03d2db6efacee0173bee0d34934bcb)
+++ src/bond.cpp	(revision e419517de9b7d686ed4d6f7fab71fb5d08e6344b)
@@ -5,4 +5,5 @@
  */
 
+#include "atom.hpp"
 #include "bond.hpp"
 
Index: src/bond.hpp
===================================================================
--- src/bond.hpp	(revision 23b830d97f03d2db6efacee0173bee0d34934bcb)
+++ src/bond.hpp	(revision e419517de9b7d686ed4d6f7fab71fb5d08e6344b)
@@ -16,5 +16,5 @@
 #endif
 
-#include "atom.hpp"
+class atom;
 
 /** Bonds between atoms.
Index: src/molecule.cpp
===================================================================
--- src/molecule.cpp	(revision 23b830d97f03d2db6efacee0173bee0d34934bcb)
+++ src/molecule.cpp	(revision e419517de9b7d686ed4d6f7fab71fb5d08e6344b)
@@ -734,5 +734,4 @@
 bool molecule::OutputTrajectories(ofstream *out)
 {
-  atom *walker = NULL;
   int ElementNo[MAX_ELEMENTS], AtomNo[MAX_ELEMENTS];
   CountElements();
@@ -799,5 +798,4 @@
 bool molecule::OutputTrajectoriesXYZ(ofstream *out)
 {
-  int No = 0;
   time_t now;
 
@@ -818,6 +816,4 @@
 bool molecule::OutputXYZ(ofstream *out) const
 {
-  atom *walker = NULL;
-  int AtomNo = 0;
   time_t now;
 
@@ -918,6 +914,4 @@
 {
   bond *Binder = NULL;
-  atom *Walker = NULL;
-  int TotalDegree;
   *out << Verbose(1) << "Begin of Creating ListOfBondsPerAtom: AtomCount = " << AtomCount << "\tBondCount = " << BondCount << "\tNoNonBonds = " << NoNonBonds << "." << endl;
 
@@ -960,18 +954,8 @@
   // output list for debugging
   *out << Verbose(3) << "ListOfBondsPerAtom for each atom:" << endl;
-  Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    *out << Verbose(4) << "Atom " << Walker->Name << "/" << Walker->nr << " with " << NumberOfBondsPerAtom[Walker->nr] << " bonds: ";
-    TotalDegree = 0;
-    for (int j=0;j<NumberOfBondsPerAtom[Walker->nr];j++) {
-      *out << *ListOfBondsPerAtom[Walker->nr][j] << "\t";
-      TotalDegree += ListOfBondsPerAtom[Walker->nr][j]->BondDegree;
-    }
-    *out << " -- TotalDegree: " << TotalDegree << endl;
-  }
+  ActOnAllAtoms( &atom::OutputBondOfAtom, out, NumberOfBondsPerAtom, ListOfBondsPerAtom );
+
   *out << Verbose(1) << "End of Creating ListOfBondsPerAtom." << endl << endl;
 };
-
 
 /** Blows the 6-dimensional \a cell_size array up to a full NDIM by NDIM matrix.
