Index: trunk/src/lib/coord/p_node.h
===================================================================
--- trunk/src/lib/coord/p_node.h	(revision 5386)
+++ trunk/src/lib/coord/p_node.h	(revision 5387)
@@ -104,5 +104,7 @@
   void setParent (const char* parentName);
   /** @returns the parent of this PNode */
-  PNode* getParent () const { return this->parent; };
+  inline PNode* getParent () const { return this->parent; };
+  /** @returns the List of Children of this PNode */
+  inline const tList<PNode>* getChildren() const { return this->children; };
 
   void setParentSoft(PNode* parentNode, float bias = 1.0);
Index: trunk/src/lib/graphics/render2D/element_2d.h
===================================================================
--- trunk/src/lib/graphics/render2D/element_2d.h	(revision 5386)
+++ trunk/src/lib/graphics/render2D/element_2d.h	(revision 5387)
@@ -153,5 +153,7 @@
     void setParent2D (const char* parentName);
     /** @returns the parent of this Element2D */
-    Element2D* getParent () const { return this->parent; };
+    inline Element2D* getParent () const { return this->parent; };
+    /** @returns the List of Children of this Element2D */
+    inline const tList<Element2D>* getChildren2D() const { return this->children; };
 
     void setParentSoft2D(Element2D* parentNode, float bias = 1.0);
Index: trunk/src/lib/gui/gl_gui/glgui_container.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_container.cc	(revision 5386)
+++ trunk/src/lib/gui/gl_gui/glgui_container.cc	(revision 5387)
@@ -52,5 +52,4 @@
 void GLGuiContainer::showAll()
 {
-
   tIterator<GLGuiWidget>* itC = this->children->getIterator();
   GLGuiWidget* enumC = itC->firstElement();
@@ -60,5 +59,5 @@
       static_cast<GLGuiContainer*>(enumC)->showAll();
     else
-     enumC->show();
+      enumC->show();
     enumC = itC->nextElement();
   }
@@ -71,5 +70,17 @@
 void GLGuiContainer::hideAll()
 {
+  tIterator<GLGuiWidget>* itC = this->children->getIterator();
+  GLGuiWidget* enumC = itC->firstElement();
+  while (enumC != NULL)
+  {
+    if (enumC->isA(CL_GLGUI_CONTAINER))
+      static_cast<GLGuiContainer*>(enumC)->showAll();
+    else
+      enumC->hide();
+    enumC = itC->nextElement();
+  }
+  delete itC;
 
+  this->hide();
 }
 
Index: trunk/src/lib/gui/gl_gui/glgui_widget.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_widget.cc	(revision 5386)
+++ trunk/src/lib/gui/gl_gui/glgui_widget.cc	(revision 5387)
@@ -26,5 +26,5 @@
 {
   this->init();
-  this->setVisibility(true);
+  this->setVisibility(GLGUI_WIDGET_DEFAULT_VISIBLE);
 }
 
@@ -46,9 +46,10 @@
   this->setClassID(CL_GLGUI_WIDGET, "GLGuiWidget");
 
-  this->managed = false;
   this->focusable = true;
   this->clickable = true;
 
-  this->backGround = NULL;
-  this->renderModel = 0;
+  this->backMat = NULL;
+  this->backModel = 0;
+  this->frontMat = NULL;
+  this->frontModel = 0;
 }
Index: trunk/src/lib/gui/gl_gui/glgui_widget.h
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_widget.h	(revision 5386)
+++ trunk/src/lib/gui/gl_gui/glgui_widget.h	(revision 5387)
@@ -13,8 +13,11 @@
 class Material;
 
+//! if the Element should be visible by default.
+#define GLGUI_WIDGET_DEFAULT_VISIBLE       false
+
 //! This is widget part of the openglGUI class
 /**
-* A widget is the main class of all the elements of th GUI.
-*/
+ * A widget is the main class of all the elements of th GUI.
+ */
 class GLGuiWidget : public Element2D {
   public:
@@ -31,11 +34,13 @@
 
   protected:
-    Material*             backGround;
-    GLuint                renderModel;
+    Material*             backMat;
+    GLuint                backModel;
+
+    Material*             frontMat;
+    GLuint                frontModel;
 
   private:
-    bool                  managed;          //!< if this GUI-element should be managed. true means it gets deleted with the deletion of it's parent.
-    bool                  focusable;        //!< If it can receive focus.
-    bool                  clickable;        //!< if it can be clicked upon.
+    bool                  focusable;        //!< If this widget can receive focus.
+    bool                  clickable;        //!< if this widget can be clicked upon.
 };
 
