diff --git a/modules/base/pymod/wrap_base.cc b/modules/base/pymod/wrap_base.cc
index 3fb9b29a665505987d19600d6a6e81c17feb0b2b..20a6668cbedd99e9137d31c51ccf6de0ac2c515e 100644
--- a/modules/base/pymod/wrap_base.cc
+++ b/modules/base/pymod/wrap_base.cc
@@ -22,6 +22,7 @@
 #include <ost/export_helper/vector.hh>
 #include <ost/base.hh>
 #include <ost/platform.hh>
+#include <ost/message.hh>
 
 using namespace boost::python;
 
@@ -30,8 +31,16 @@ void export_GenericProp();
 void export_Range();
 void export_Units();
 
+// exception translator
+void translator(const ost::Error& x) {
+  PyErr_SetString(PyExc_Exception, x.what() );
+}
+
+
 BOOST_PYTHON_MODULE(_base)
 {
+  register_exception_translator<ost::Error>(&translator);
+
   def("SetPrefixPath", &ost::SetPrefixPath);
   def("GetPrefixPath", &ost::GetPrefixPath);
   def("GetSharedDataPath", &ost::GetSharedDataPath);  
diff --git a/modules/base/src/message.cc b/modules/base/src/message.cc
index 7a53deb15384cf3648bf203a7815076d01d485ce..401ff1fb8755fb39fa322bf503e2c4f69677c733 100644
--- a/modules/base/src/message.cc
+++ b/modules/base/src/message.cc
@@ -1,17 +1,43 @@
+//------------------------------------------------------------------------------
+// This file is part of the OpenStructure project <www.openstructure.org>
+//
+// Copyright (C) 2008-2010 by the OpenStructure authors
+// Copyright (C) 2003-2010 by the IPLT authors
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License as published by the Free
+// Software Foundation; either version 3.0 of the License, or (at your option)
+// any later version.
+// This library 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 Lesser General Public License for more
+// details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with this library; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//------------------------------------------------------------------------------
+/*
+  messages and logs
+
+  Authors: Ansgar Philippsen, Andteas Schenk
+*/
+
 #include "message.hh"
 
 namespace ost {
- 
-Message::Message(const String& mesg,const String& prefix):
-  _prefix(prefix), _mesg(mesg) {}
 
-Message::~Message() throw() {}
+Error::Error(const String& m):
+  mesg_(m)
+{}
 
-const char* Message::what() const throw() {
-  String msg = _prefix + ": " +_mesg;
-  return msg.c_str();
+Error::~Error() throw()
+{
 }
 
-Error::Error(const String& m): Message(m,"Error") {}
+const char* Error::what() const throw()
+{
+  return mesg_.c_str();
+}
 
 }
\ No newline at end of file
diff --git a/modules/base/src/message.hh b/modules/base/src/message.hh
index 6b51a9891709800d0ff749ada92239e5c4d2a46b..aca6387f6be79fbc618acdf2454eb5468584d5c0 100644
--- a/modules/base/src/message.hh
+++ b/modules/base/src/message.hh
@@ -20,7 +20,7 @@
 /*
   messages and logs
 
-  Author: Ansgar Philippsen
+  Authors: Ansgar Philippsen, Andteas Schenk
 */
 
 #ifndef OST_MESSAGE_HH
@@ -31,18 +31,14 @@
 
 namespace ost {
 
-struct DLLEXPORT Message: public std::exception {
-  Message(const String& mesg,const String& prefix="");
-  virtual ~Message() throw();
-  // exception interface
-  virtual const char* what() const throw();
-
-  String _prefix;
-  String _mesg;
-};
 
-struct DLLEXPORT Error: public Message {
+class DLLEXPORT Error: virtual public std::exception {
+public:
   Error(const String& m);
+  ~Error() throw();
+  virtual const char* what() const throw();
+protected:
+  String mesg_;
 };
 
 } // namespace
diff --git a/modules/gui/pymod/scene/immutable_gradient_info_handler.py b/modules/gui/pymod/scene/immutable_gradient_info_handler.py
index 6eb2b75450e210c3f92384ce0cee24ba55171c53..ddf5de046f2b7980b6691d9f938dcf7a85f1777f 100644
--- a/modules/gui/pymod/scene/immutable_gradient_info_handler.py
+++ b/modules/gui/pymod/scene/immutable_gradient_info_handler.py
@@ -36,10 +36,7 @@ class ImmutableGradientInfoHandler():
         
     self.root_ = self.handle_.Root()
     
-    try:
-      self.gradients_ = self.root_.GetGroup(self.GRADIENTS_GROUP_NAME)
-    except UserWarning:
-      self.gradients_ = self.root_.CreateGroup(self.GRADIENTS_GROUP_NAME)
+    self.gradients_ = self.root_.RetrieveGroup(self.GRADIENTS_GROUP_NAME)
 
     
   def GetGfxGradient(self, name):
diff --git a/modules/gui/pymod/scene/immutable_info_handler.py b/modules/gui/pymod/scene/immutable_info_handler.py
index c75c14f5ceca7b64b5683ef555b91a729a28891d..4c2c0332d9c6fb4e20c37d7073872d005779cf1d 100644
--- a/modules/gui/pymod/scene/immutable_info_handler.py
+++ b/modules/gui/pymod/scene/immutable_info_handler.py
@@ -36,10 +36,7 @@ class ImmutableInfoHandler():
         
     self.root_ = self.handle_.Root()
     
-    try:
-      self.gradients_ = self.root_.GetGroup(self.GRADIENTS_GROUP_NAME)
-    except UserWarning:
-      self.gradients_ = self.root_.CreateGroup(self.GRADIENTS_GROUP_NAME)
+    self.gradients_ = self.root_.RetrieveGroup(self.GRADIENTS_GROUP_NAME)
 
     
   def GetGfxGradient(self, name):
diff --git a/modules/gui/pymod/scene/immutable_loader_info_handler.py b/modules/gui/pymod/scene/immutable_loader_info_handler.py
index 80e906ea851722100e87b45e7800c48bde3aed01..03ada4036488ca5cf6dfd16ee653d8c4945fc0ed 100644
--- a/modules/gui/pymod/scene/immutable_loader_info_handler.py
+++ b/modules/gui/pymod/scene/immutable_loader_info_handler.py
@@ -36,10 +36,7 @@ class ImmutableLoaderInfoHandler():
     
     self.root_ = self.handle_.Root()
     
-    try:
-      self.loaders_ = self.root_.GetGroup(ImmutableLoaderInfoHandler.LOADERS_GROUP_NAME)
-    except UserWarning:
-      self.loaders_ = self.root_.CreateGroup(ImmutableLoaderInfoHandler.LOADERS_GROUP_NAME)
+    self.loaders_ = self.root_.RetrieveGroup(ImmutableLoaderInfoHandler.LOADERS_GROUP_NAME)
 
     
   def GetLoader(self, name):
diff --git a/modules/gui/pymod/scene/immutable_preset_info_handler.py b/modules/gui/pymod/scene/immutable_preset_info_handler.py
index 8fc24539c200748637ad8abcc4c666b77807b2f2..1ae6d34b573cda9243a5fb34b558c66091c85743 100644
--- a/modules/gui/pymod/scene/immutable_preset_info_handler.py
+++ b/modules/gui/pymod/scene/immutable_preset_info_handler.py
@@ -36,10 +36,7 @@ class ImmutablePresetInfoHandler():
     
     self.root_ = self.handle_.Root()
     
-    try:
-      self.presets_ = self.root_.GetGroup(ImmutablePresetInfoHandler.PRESETS_GROUP_NAME)
-    except UserWarning:
-      self.presets_ = self.root_.CreateGroup(ImmutablePresetInfoHandler.PRESETS_GROUP_NAME)
+    self.presets_ = self.root_.RetrieveGroup(ImmutablePresetInfoHandler.PRESETS_GROUP_NAME)
 
     
   def GetPreset(self, name):
diff --git a/modules/gui/src/file_loader.cc b/modules/gui/src/file_loader.cc
index bf510dc37bb7b487fd9194cbac711f2153ea84ba..d7061b3ebf3e30e67e06e12c01c26d7acee0b3b6 100644
--- a/modules/gui/src/file_loader.cc
+++ b/modules/gui/src/file_loader.cc
@@ -127,7 +127,7 @@ void FileLoader::AddToScene(const QString& filename, gfx::GfxObjP obj)
       gfx::Scene::Instance().SetCenter(obj->GetCenter());
     }
   }
-  catch (Message m) {
+  catch (Error m) {
     FileLoader::HandleError(m, GFX_ADD, filename, obj);
   }
 }
@@ -189,11 +189,11 @@ std::vector<String> FileLoader::GetSiteLoaderIdents()
   return loader_manager_->GetSiteLoaderIdents();
 }
 
-void FileLoader::HandleError(Message m, ErrorType type, const QString& filename, gfx::GfxObjP obj)
+void FileLoader::HandleError(const Error& e, ErrorType type, const QString& filename, gfx::GfxObjP obj)
 {
   if(type==GFX_ADD || type==GFX_MULTIPLE_ADD){
     QMessageBox message_box(QMessageBox::Warning,
-        "Error while adding Node to Scene", m._mesg.c_str());
+        "Error while adding Node to Scene", e.what());
     if(type==GFX_ADD){
       message_box.setStandardButtons( QMessageBox::Yes | QMessageBox::Cancel);
       message_box.setButtonText(QMessageBox::Yes, "Reload");
@@ -212,7 +212,7 @@ void FileLoader::HandleError(Message m, ErrorType type, const QString& filename,
   }
   else if(type==IO_LOADING){
     QMessageBox message_box(QMessageBox::Warning,
-                "Error while loading file", m._mesg.c_str());
+                "Error while loading file", e.what());
     message_box.setStandardButtons( QMessageBox::Yes | QMessageBox::Cancel);
     message_box.setButtonText(QMessageBox::Yes, "Chose format");
     int value = message_box.exec();
@@ -224,7 +224,7 @@ void FileLoader::HandleError(Message m, ErrorType type, const QString& filename,
   }
   else if(type==INFO){
     QMessageBox message_box(QMessageBox::Information,
-        "Information", m._mesg.c_str());
+        "Information", e.what());
     message_box.setStandardButtons( QMessageBox::Ok);
     message_box.exec();
   }
@@ -395,14 +395,14 @@ void FileLoader::LoadPDB(const QString& filename, const QString& selection)
   }
   QFileInfo file_info(filename);
   if(entities.empty()){
-    FileLoader::HandleError(Message(QString("No entities found in file: "+ filename).toStdString()),INFO,filename);
+    FileLoader::HandleError(Error(QString("No entities found in file: "+ filename).toStdString()),INFO,filename);
   }else if (entities.size()==1){
     gfx::EntityP gfx_ent(new gfx::Entity(file_info.baseName().toStdString(),entities.first(),mol::Query(selection.toStdString())));
     try{
       gfx::Scene::Instance().Add(gfx_ent);
     }
-    catch (Message m) {
-      HandleError(m, GFX_ADD, filename, gfx_ent);
+    catch (Error e) {
+      HandleError(e, GFX_ADD, filename, gfx_ent);
     }
     if (gfx::Scene::Instance().GetRootNode()->GetChildCount()==1) {
       gfx::Scene::Instance().SetCenter(gfx_ent->GetCenter());
@@ -414,8 +414,8 @@ void FileLoader::LoadPDB(const QString& filename, const QString& selection)
         gfx::Scene::Instance().Add(gfx_ent);
       }
     }
-    catch (Message m) {
-      FileLoader::HandleError(m,GFX_MULTIPLE_ADD,filename);
+    catch (Error e) {
+      FileLoader::HandleError(e,GFX_MULTIPLE_ADD,filename);
     }
   }
 }
diff --git a/modules/gui/src/file_loader.hh b/modules/gui/src/file_loader.hh
index ea2d63e2d8e04eba39eddbff64dae637438fe77c..26d77cd49d98b34ee4b40655089a451eb6a7a4e4 100644
--- a/modules/gui/src/file_loader.hh
+++ b/modules/gui/src/file_loader.hh
@@ -60,7 +60,7 @@ private:
   static void RunScript(const QString& filename);
   static void LoadPDB(const QString& filename, const QString& selection=QString());
   static void AddToScene(const QString& filename, gfx::GfxObjP obj);
-  static void HandleError(Message m, ErrorType type, const QString& filename, gfx::GfxObjP obj=gfx::GfxObjP());
+  static void HandleError(const Error& e, ErrorType type, const QString& filename, gfx::GfxObjP obj=gfx::GfxObjP());
   static gfx::GfxObjP NoHandlerFound(const QString& filename);
   virtual ~FileLoader();
 
diff --git a/modules/img/base/pymod/wrap_img.cc b/modules/img/base/pymod/wrap_img.cc
index 20576672d9578fbb56341c5a458bde8138835005..e98a158530546283f4e60e6c6bceb496a62222da 100644
--- a/modules/img/base/pymod/wrap_img.cc
+++ b/modules/img/base/pymod/wrap_img.cc
@@ -54,18 +54,9 @@ void export_Phase();
 void export_Progress();
 void export_Map();
 
-// exception translator
-void translator(const ost::Message& x) {
-  PyErr_SetString(PyExc_UserWarning, x.what() );
-}
-
 // actual module definitions
 BOOST_PYTHON_MODULE(_img)
 {
-  // exception translators
-  register_exception_translator<ost::Message>(&translator);
-  register_exception_translator<ost::Error>(&translator);
-
   export_Data();
   export_DataAlgorithm();
   export_Extent();
diff --git a/modules/info/pymod/wrap_info.cc b/modules/info/pymod/wrap_info.cc
index 23659e918650698bf5de7c177dedf8aa103a59e7..0f80c9522eddb2362449998df8ccb156175f2a5e 100644
--- a/modules/info/pymod/wrap_info.cc
+++ b/modules/info/pymod/wrap_info.cc
@@ -36,9 +36,6 @@ using namespace ost::info;
 
 namespace {
 
-void info_error_translator(const InfoError& x) {
-  PyErr_SetString(PyExc_UserWarning, x.what());
-}
 
 InfoHandle (*CreateInfoPtr1)()=CreateInfo;
 InfoHandle (*CreateInfoPtr2)(const String&)=CreateInfo;
@@ -160,7 +157,6 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(retrieveitem_overloads, RetrieveItem, 1,
 
 BOOST_PYTHON_MODULE(_info)
 {
-  register_exception_translator<InfoError>(&info_error_translator);
 
   enum_<Type>("ItemType")
     .value("STRING",IT_STRING)