Index: doc/userguide/userguide.xml
===================================================================
--- doc/userguide/userguide.xml	(revision d8c6c7766c7b711f3b796a4f6df1a8dbd336be6b)
+++ doc/userguide/userguide.xml	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
@@ -1,3 +1,3 @@
-<?xml version='1.0' encoding='UTF-8'?>
+﻿<?xml version='1.0' encoding='UTF-8'?>
 <!-- This document was created with Syntext Serna Free. --><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
 <!ENTITY molecuilder_logo SYSTEM "pictures/molecuilder_logo.png" NDATA PNG>
@@ -2374,4 +2374,13 @@
           <para>Underneath the time line there is another place for
           tabs.</para>
+          <itemizedlist>
+            <listitem>Molecules</listitem>
+            <listitem>All Elements</listitem>
+            <listitem>All Fragments</listitem>
+            <listitem>All Homologies</listitem>
+            <listitem>All Geometries</listitem>
+            <listitem>Logs</listitem>
+            <listitem>Errors</listitem>
+          </itemizedlist>
           <para>The first is on molecules, listing all present molecules of
           the molecular system in a tree view. If you click on a specific
@@ -2383,7 +2392,15 @@
           system. Clicking on a present element will select all atoms of this
           specific element. A subsequent click unselects again.</para>
-          <para>Subsequently follow tabs on enumerating the fragments and their
+          <para>Subsequently follow two tabs on enumerating the fragments and their
           fragment energies if calculated and the homologies along with
           graphical depiction (via QWT), again if present.</para>
+          <para>After that, we have a tab listing all geometry objects. These
+          are vectors you may store via one of the Actions. If you hover over
+          a vector, its length is shown. If you have selected one vector and
+          hover over another one, then the angle between the two is shown.
+          </para>
+          <para>Finally, there are two tabs showing log messages of actions
+          in the first tab and general information on what is currently done. Errors and
+          warnings are listed in the second tab.</para>
         </section>
       </section>
Index: src/UIElements/Makefile.am
===================================================================
--- src/UIElements/Makefile.am	(revision d8c6c7766c7b711f3b796a4f6df1a8dbd336be6b)
+++ src/UIElements/Makefile.am	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
@@ -190,4 +190,5 @@
   UIElements/Menu/Qt4/QtMenuPipe.cpp \
   UIElements/Views/Qt4/QtFragmentList.cpp \
+  UIElements/Views/Qt4/QtGeometryList.cpp \
   UIElements/Views/Qt4/QtHomologyList.cpp \
   UIElements/Views/Qt4/QtInfoBox.cpp \
@@ -225,4 +226,5 @@
   UIElements/Views/Qt4/MoleculeList/QtObservedMoleculeObserver.hpp \
   UIElements/Views/Qt4/QtFragmentList.hpp \
+  UIElements/Views/Qt4/QtGeometryList.hpp \
   UIElements/Views/Qt4/QtHomologyList.hpp \
   UIElements/Views/Qt4/QtInfoBox.hpp \
Index: src/UIElements/Qt4/QtMainWindow.cpp
===================================================================
--- src/UIElements/Qt4/QtMainWindow.cpp	(revision d8c6c7766c7b711f3b796a4f6df1a8dbd336be6b)
+++ src/UIElements/Qt4/QtMainWindow.cpp	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
@@ -59,4 +59,5 @@
 #include "Views/Qt4/QtHomologyList.hpp"
 #include "UIElements/Qt4/InstanceBoard/QtObservedInstanceBoard.hpp"
+#include "Views/Qt4/QtGeometryList.hpp"
 #include "Views/Qt4/QtLogBox.hpp"
 #include "Views/Qt4/QtShapeController.hpp"
@@ -112,4 +113,5 @@
   homologyList = new QtHomologyList(worldTab);
   fragmentList = new QtFragmentList(worldTab);
+  geometryList = new QtGeometryList(worldTab);
   logBox = new QtLogBox(std::cout, worldTab);
   errorlogBox = new QtLogBox(std::cerr, worldTab);
@@ -147,4 +149,5 @@
   worldTab->addTab(fragmentList, "All Fragments");
   worldTab->addTab(homologyList, "All Homologies");
+  worldTab->addTab(geometryList, "All Geometries");
   worldTab->addTab(logBox, "Log");
   worldTab->addTab(errorlogBox, "Errors");
Index: src/UIElements/Qt4/QtMainWindow.hpp
===================================================================
--- src/UIElements/Qt4/QtMainWindow.hpp	(revision d8c6c7766c7b711f3b796a4f6df1a8dbd336be6b)
+++ src/UIElements/Qt4/QtMainWindow.hpp	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
@@ -27,4 +27,5 @@
 class QtElementList;
 class QtFragmentList;
+class QtGeometryList;
 class QtHomologyList;
 class QtLogBox;
@@ -60,4 +61,5 @@
   QtMoleculeList *moleculeList;
   QtElementList *elementList;
+  QtGeometryList *geometryList;
   QtHomologyList *homologyList;
   QtFragmentList *fragmentList;
Index: src/UIElements/Views/Qt4/QtGeometryList.cpp
===================================================================
--- src/UIElements/Views/Qt4/QtGeometryList.cpp	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
+++ src/UIElements/Views/Qt4/QtGeometryList.cpp	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
@@ -0,0 +1,130 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2017 Frederik Heber. All rights reserved.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * QtGeometryList.cpp
+ *
+ *  Created on: Mar 25, 2017
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Views/Qt4/QtGeometryList.hpp"
+
+#include <iostream>
+
+//#include "CodePatterns/MemDebug.hpp"
+
+#include "CodePatterns/Observer/Notification.hpp"
+#include "CodePatterns/toString.hpp"
+
+#include "Geometry/GeometryRegistry.hpp"
+
+#include <QAbstractItemView>
+
+using namespace std;
+
+const int QtGeometryList::COLUMNCOUNT = COLUMNTYPES_MAX;
+const char *QtGeometryList::COLUMNNAMES[QtGeometryList::COLUMNCOUNT]={"Name","Vector"};
+
+QtGeometryList::QtGeometryList(QWidget * _parent) :
+    QTreeWidget (_parent),
+    Observer("QtGeometryList")
+{
+  setColumnCount(COLUMNCOUNT);
+  setSelectionMode(QAbstractItemView::NoSelection);
+
+  QStringList header;
+	for(int i=0; i<COLUMNCOUNT;++i)
+	  header << COLUMNNAMES[i];
+	setHeaderLabels(header);
+
+	refill(NULL);
+
+	GeometryRegistry::getInstance().signOn(this);
+	GeometryRegistry::getInstance().signOn(this, GeometryRegistry::GeometryInserted);
+	GeometryRegistry::getInstance().signOn(this, GeometryRegistry::GeometryRemoved);
+}
+
+QtGeometryList::~QtGeometryList()
+{
+  GeometryRegistry::getInstance().signOff(this);
+  GeometryRegistry::getInstance().signOff(this, GeometryRegistry::GeometryInserted);
+  GeometryRegistry::getInstance().signOff(this, GeometryRegistry::GeometryRemoved);
+}
+
+void QtGeometryList::update(Observable *publisher) {}
+
+void QtGeometryList::recieveNotification(Observable *publisher, Notification_ptr notification)
+{
+  if (static_cast<GeometryRegistry*>(publisher) == GeometryRegistry::getPointer()) {
+    switch (notification->getChannelNo()) {
+      case GeometryRegistry::GeometryInserted:
+      {
+        refill(NULL);
+        break;
+      }
+      case GeometryRegistry::GeometryRemoved:
+      {
+        refill(GeometryRegistry::getInstance().lastChanged());
+        break;
+      }
+      default:
+        ASSERT(0, "QtGeometryList::recieveNotification() - we cannot get here.");
+        break;
+    }
+  }
+}
+
+void QtGeometryList::refill(::GeometryObject *ignore)
+{
+  clear();
+
+  GeometryRegistry &reg = GeometryRegistry::getInstance();
+
+  GeometryRegistry::const_iterator iter;
+  for (iter = reg.getBeginIter(); iter != reg.getEndIter(); iter ++){
+    ::GeometryObject *v = iter->second;
+    if (v == ignore)
+      continue;
+
+    QTreeWidgetItem *treeItem = new QTreeWidgetItem(this);
+    treeItem->setText(NAME, QString(v->getName().c_str()));
+    treeItem->setText(VECTOR, QString(toString(v->getVector()).c_str()));
+  }
+}
+
+#if 0
+void QtGeometryList::paintEvent(QPaintEvent * event)
+{
+  /*if (dirty)
+    refill(NULL);*/
+  QtGeometryList::paintEvent(event);
+}
+#endif
+
+void QtGeometryList::subjectKilled(Observable *publisher) {
+}
Index: src/UIElements/Views/Qt4/QtGeometryList.hpp
===================================================================
--- src/UIElements/Views/Qt4/QtGeometryList.hpp	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
+++ src/UIElements/Views/Qt4/QtGeometryList.hpp	(revision 48eab88be721d77d193490f29a1fa50334c2e8fb)
@@ -0,0 +1,43 @@
+/*
+ * QtGeometryList.hpp
+ *
+ *  Created on: Mar 25, 2017
+ *      Author: heber
+ */
+
+#ifndef QTGEOMETRYLIST_H_
+#define QTGEOMETRYLIST_H_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <QtGui/QTreeWidget>
+#include "CodePatterns/Observer/Observer.hpp"
+
+class GeometryObject;
+
+class QtGeometryList: public QTreeWidget, public Observer
+{
+  Q_OBJECT
+
+public:
+  QtGeometryList(QWidget * _parent=0);
+  virtual ~QtGeometryList();
+
+protected:
+  virtual void update(Observable *publisher);
+  virtual void subjectKilled(Observable *publisher);
+  virtual void recieveNotification(Observable *publisher, Notification_ptr notification);
+  //virtual void paintEvent(QPaintEvent * event);
+  void refill(::GeometryObject *ignore);
+
+  static const int COLUMNCOUNT;
+  enum {NAME,VECTOR,COLUMNTYPES_MAX} COLUMNTYPES;
+  static const char *COLUMNNAMES[];
+
+};
+
+#endif /* QTGEOMETRYLIST_H_ */
