Index: /branches/qt_gui/src/lib/gui/gui.cc
===================================================================
--- /branches/qt_gui/src/lib/gui/gui.cc	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/gui.cc	(revision 7555)
@@ -40,4 +40,26 @@
   }
 
+
+  /**
+   * @brief adds a SaveableGroup
+   * @param saveableGroup the SaveableGroup to add to the SaveList.
+   */
+  void Gui::addSaveableGroup(SaveableGroup* saveableGroup)
+  {
+    if (std::find (this->groups.begin(), this->groups.end(), saveableGroup) == this->groups.end())
+      this->groups.push_back(saveableGroup);
+  }
+
+  /**
+   * @brief removes a SaveableGroup
+   * @param saveableGroup the SaveableGroup to remove from the SaveList.
+   */
+  void Gui::removeSaveableGroup(SaveableGroup* saveableGroup)
+  {
+    std::vector<SaveableGroup*>::iterator delElem = std::find (this->groups.begin(), this->groups.end(), saveableGroup);
+    if (delElem != this->groups.end())
+      this->groups.erase(delElem);
+  }
+
   void Gui::quitEvent()
   {
Index: /branches/qt_gui/src/lib/gui/gui.h
===================================================================
--- /branches/qt_gui/src/lib/gui/gui.h	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/gui.h	(revision 7555)
@@ -45,4 +45,5 @@
 
     void addSaveableGroup(SaveableGroup* saveableGroup);
+    void removeSaveableGroup(SaveableGroup* saveableGroup);
 
   protected:
Index: /branches/qt_gui/src/lib/gui/gui_element.cc
===================================================================
--- /branches/qt_gui/src/lib/gui/gui_element.cc	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/gui_element.cc	(revision 7555)
@@ -18,6 +18,4 @@
 #include "gui_element.h"
 
-#include "gui_gtk.h"
-
 namespace OrxGui
 {
@@ -30,5 +28,4 @@
   : SaveableGroup(name, gui)
   {
-    //this->mainWidget = NULL;
   }
 
Index: /branches/qt_gui/src/lib/gui/gui_saveable.cc
===================================================================
--- /branches/qt_gui/src/lib/gui/gui_saveable.cc	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/gui_saveable.cc	(revision 7555)
@@ -17,4 +17,5 @@
 
 #include "gui_saveable.h"
+#include "gui.h"
 
 namespace OrxGui
@@ -24,8 +25,11 @@
    * standard constructor
   */
-  Saveable::Saveable (const std::string& optionName)
+  Saveable::Saveable (const std::string& optionName, SaveableGroup* group)
   : BaseObject(optionName)
   {
     this->bSaveable = false;
+
+    this->group = group;
+    this->group->addSaveable(this);
 
   }
@@ -37,4 +41,5 @@
   Saveable::~Saveable ()
   {
+    this->group->removeSaveable(this);
     // delete what has to be deleted here
   }
@@ -49,9 +54,12 @@
 
   SaveableGroup::SaveableGroup(const std::string& groupName, OrxGui::Gui* gui)
-      : Saveable(groupName)
+      : BaseObject(groupName)
   {
+    assert (gui != NULL);
+    this->gui = gui;
 
+    this->gui->addSaveableGroup(this);
+    //this->mainWidget = NULL;
   }
-
 
 
@@ -59,13 +67,41 @@
   SaveableGroup::~SaveableGroup()
   {
-    std::vector<SaveableGroup*>::iterator delGroup = std::find(saveableGroups.begin(), saveableGroups.end(), this);
-
-    if (delGroup != saveableGroups.end() )
-      saveableGroups.erase(delGroup);
+    this->gui->removeSaveableGroup(this);
   }
 
+
+  /**
+   * @brief Adds a Saveable to the List.
+   * @param saveable the saveable to add.
+   */
+  void SaveableGroup::addSaveable(Saveable* saveable)
+  {
+    if (std::find(this->saveables.begin(), this->saveables.end(), saveable) == this->saveables.end())
+      this->saveables.push_back(saveable);
+  }
+
+  /**
+   * @brief Removes a Saveable from the List.
+   * @param saveable the saveable to remove.
+   */
+  void SaveableGroup::removeSaveable(Saveable* saveable)
+  {
+    std::vector<Saveable*>::iterator delSav = std::find(this->saveables.begin(), this->saveables.end(), saveable);
+    if (delSav != this->saveables.end())
+      this->saveables.erase(delSav);
+  }
+
+
+  /**
+   * @brief load the value onto the Group.
+   * @param value the Value to load.
+   */
   void SaveableGroup::load(const MultiType& value)
   {}
 
+  /**
+   * @brief save the value from the Group
+   * @returns nothing.
+   */
   const MultiType& SaveableGroup::save()
   {}
@@ -73,12 +109,4 @@
 
 
-  std::vector<SaveableGroup*>  SaveableGroup::saveableGroups;
-
-  void SaveableGroup::makingElementSaveable()
-  {
-    SaveableGroup::saveableGroups.push_back(this);
-  }
-
-
 
 }
Index: /branches/qt_gui/src/lib/gui/gui_saveable.h
===================================================================
--- /branches/qt_gui/src/lib/gui/gui_saveable.h	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/gui_saveable.h	(revision 7555)
@@ -15,6 +15,7 @@
 {
   class Gui;
+  class SaveableGroup;
 
-  //! A class for ...
+  //! A class for Elements in the Gui that are Saveable.
   class Saveable : public BaseObject
   {
@@ -32,8 +33,9 @@
 
   protected:
-    Saveable(const std::string& optionName);
+    Saveable(const std::string& optionName, SaveableGroup* group);
     virtual void makingElementSaveable() {};
 
   private:
+    SaveableGroup*  group;
     MultiType       _value;
     bool            bSaveable;
@@ -42,5 +44,5 @@
 
 
-  class SaveableGroup : public Saveable
+  class SaveableGroup : public BaseObject
   {
   public:
@@ -55,9 +57,8 @@
   protected:
     SaveableGroup(const std::string& name, OrxGui::Gui* gui);
-    virtual void makingElementSaveable();
 
   private:
+    OrxGui::Gui*                        gui;
     std::vector<Saveable*>              saveables;
-    static std::vector<SaveableGroup*>  saveableGroups;
   };
 
Index: /branches/qt_gui/src/lib/gui/qt_gui/gui_audio.cc
===================================================================
--- /branches/qt_gui/src/lib/gui/qt_gui/gui_audio.cc	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/qt_gui/gui_audio.cc	(revision 7555)
@@ -43,5 +43,5 @@
 
     {
-      QtGuiCheckBox* fullscreen = new QtGuiCheckBox("Enabled", true);
+      QtGuiCheckBox* fullscreen = new QtGuiCheckBox("Enabled", this, true);
       layout->addWidget(fullscreen, 0, 1);
 
@@ -49,8 +49,8 @@
       QLabel* soundCardLabel = new QLabel("Soundcard");
       layout->addWidget(soundCardLabel, 1,1);
-      QtGuiComboBox* soundCard = new QtGuiComboBox("SoundCard");
+      QtGuiComboBox* soundCard = new QtGuiComboBox("SoundCard", this);
       layout->addWidget(soundCard, 2, 1);
 
-      QtGuiSlider* channels = new QtGuiSlider("Channels", Qt::Vertical);
+      QtGuiSlider* channels = new QtGuiSlider("Channels", this, Qt::Vertical);
       layout->addWidget(channels, 0, 0, 3, 1);
       QLabel* channelsLabel = new QLabel("Channels");
@@ -60,5 +60,5 @@
       QLabel* musicLabel = new QLabel("Music Volume");
       layout->addWidget(musicLabel, 0, 2);
-      QtGuiSlider* musicVolume = new QtGuiSlider("Music-Volume");
+      QtGuiSlider* musicVolume = new QtGuiSlider("Music-Volume", this);
       layout->addWidget(musicVolume, 1, 2);
 
@@ -66,5 +66,5 @@
       QLabel* effectsLabel = new QLabel("Effects Volume");
       layout->addWidget(effectsLabel, 2,2);
-      QtGuiSlider* effectVolume = new QtGuiSlider("Effects-Volume");
+      QtGuiSlider* effectVolume = new QtGuiSlider("Effects-Volume", this);
       layout->addWidget(effectVolume, 3, 2);
     }
Index: /branches/qt_gui/src/lib/gui/qt_gui/gui_video.cc
===================================================================
--- /branches/qt_gui/src/lib/gui/qt_gui/gui_video.cc	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/qt_gui/gui_video.cc	(revision 7555)
@@ -65,11 +65,11 @@
         QGridLayout* advLayout = new QGridLayout(advanced);              //!< Advanced Layout
         {
-          QtGuiCheckBox* shadows = new QtGuiCheckBox("Shadows");         //!< CheckBox for shadows
+          QtGuiCheckBox* shadows = new QtGuiCheckBox("Shadows", this);         //!< CheckBox for shadows
           advLayout->addWidget(shadows, 0,0);
-          QtGuiCheckBox* fog = new QtGuiCheckBox("Fog");                 //!< CheckBox for fog.
+          QtGuiCheckBox* fog = new QtGuiCheckBox("Fog", this);                 //!< CheckBox for fog.
           advLayout->addWidget(fog, 1,0);
-          QtGuiCheckBox* reflections = new QtGuiCheckBox("reflections");  //!< CheckBox for reflections
+          QtGuiCheckBox* reflections = new QtGuiCheckBox("reflections", this);  //!< CheckBox for reflections
           advLayout->addWidget(reflections, 2, 0);
-          QtGuiCheckBox* textures = new QtGuiCheckBox("textures");       //!< CheckBox for textures
+          QtGuiCheckBox* textures = new QtGuiCheckBox("textures", this);       //!< CheckBox for textures
           advLayout->addWidget(textures, 3, 0);
           /*
Index: /branches/qt_gui/src/lib/gui/qt_gui/qt_gui.cc
===================================================================
--- /branches/qt_gui/src/lib/gui/qt_gui/qt_gui.cc	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/qt_gui/qt_gui.cc	(revision 7555)
@@ -57,4 +57,5 @@
     }
 
+    connect(this->mainWindow, SIGNAL(destroyed()), this, SLOT(quitApp()));
     this->mainWindow->setCentralWidget(groupBox);
     this->mainWindow->show();
Index: /branches/qt_gui/src/lib/gui/qt_gui/qt_gui_elements.cc
===================================================================
--- /branches/qt_gui/src/lib/gui/qt_gui/qt_gui_elements.cc	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/qt_gui/qt_gui_elements.cc	(revision 7555)
@@ -24,6 +24,6 @@
 
 
-  QtGuiCheckBox::QtGuiCheckBox(const std::string& name, bool defaultValue)
-  : QCheckBox(QString().fromStdString(name)), Saveable(name)
+  QtGuiCheckBox::QtGuiCheckBox(const std::string& name, SaveableGroup* group, bool defaultValue)
+  : QCheckBox(QString().fromStdString(name)), Saveable(name, group)
   {
     //this->load(this->value());
@@ -47,6 +47,6 @@
 
 
-  QtGuiSlider::QtGuiSlider(const std::string& name, Qt::Orientation orientation)
-  : QSlider(orientation), Saveable(name)
+  QtGuiSlider::QtGuiSlider(const std::string& name, SaveableGroup* group, Qt::Orientation orientation)
+  : QSlider(orientation), Saveable(name, group)
   {
 
@@ -62,6 +62,6 @@
 
 
-  QtGuiComboBox::QtGuiComboBox(const std::string& name)
-  : QComboBox(), Saveable(name)
+  QtGuiComboBox::QtGuiComboBox(const std::string& name, SaveableGroup* group)
+  : QComboBox(), Saveable(name, group)
   {
 
Index: /branches/qt_gui/src/lib/gui/qt_gui/qt_gui_elements.h
===================================================================
--- /branches/qt_gui/src/lib/gui/qt_gui/qt_gui_elements.h	(revision 7554)
+++ /branches/qt_gui/src/lib/gui/qt_gui/qt_gui_elements.h	(revision 7555)
@@ -30,5 +30,5 @@
     Q_OBJECT
   public:
-    QtGuiCheckBox(const std::string& name, bool defaultValue = false);
+    QtGuiCheckBox(const std::string& name, SaveableGroup* group, bool defaultValue = false);
     virtual ~QtGuiCheckBox() {};
 
@@ -37,8 +37,8 @@
 
   public slots:
-//    void setCheckValue(int);
+    //    void setCheckValue(int);
 
   signals:
-//    void checkValueChanged();
+    //    void checkValueChanged();
   };
 
@@ -48,12 +48,12 @@
 
   public:
-    QtGuiSlider(const std::string& name, Qt::Orientation orientation = Qt::Horizontal);
+    QtGuiSlider(const std::string& name, SaveableGroup* group, Qt::Orientation orientation = Qt::Horizontal);
     virtual ~QtGuiSlider();
 
   public slots:
- //   void setSliderValue(float);
+    //   void setSliderValue(float);
 
   signals:
-//    void sliderValueChanged(float);
+    //    void sliderValueChanged(float);
   };
 
@@ -63,6 +63,6 @@
     Q_OBJECT
 
-    public:
-    QtGuiComboBox(const std::string& name);
+  public:
+    QtGuiComboBox(const std::string& name, SaveableGroup* group);
 
     virtual void load(const MultiType& value);
