Index: rice/Exception.cpp
===================================================================
--- rice/Exception.cpp	(revision 194)
+++ rice/Exception.cpp	(working copy)
@@ -11,6 +11,8 @@
 #define va_init_list(a,b) va_start(a)
 #endif
 
+Rice::detail::Default_Exception_Handler *Rice::detail::Default_Exception_Handler::singleton=NULL;
+
 Rice::Exception::
 Exception(VALUE e)
   : Exception_Base(e)
Index: rice/Module_impl.ipp
===================================================================
--- rice/Module_impl.ipp	(revision 194)
+++ rice/Module_impl.ipp	(working copy)
@@ -17,10 +17,19 @@
 Rice::Module_base::
 Module_base(VALUE v)
   : Object(v)
-  , handler_(new Rice::detail::Default_Exception_Handler)
+  , handler_(Rice::detail::Default_Exception_Handler::instance())
 {
 }
 
+inline
+Rice::Module_base::
+~Module_base()
+{
+  if(handler_ != Rice::detail::Default_Exception_Handler::instance()) {
+    delete handler_;
+  }
+}
+
 template<typename Base_T, typename Derived_T>
 inline
 Rice::Module_impl<Base_T, Derived_T>::
Index: rice/detail/Exception_Handler.hpp
===================================================================
--- rice/detail/Exception_Handler.hpp	(revision 194)
+++ rice/detail/Exception_Handler.hpp	(working copy)
@@ -64,6 +64,12 @@
   : public Exception_Handler
 {
 public:
+  static Default_Exception_Handler *instance() {
+    if(singleton == NULL)
+      singleton = new Default_Exception_Handler;
+    return singleton;
+  }
+
   Default_Exception_Handler()
     : Exception_Handler(0)
   {
@@ -73,6 +79,8 @@
   {
     throw;
   }
+private:
+  static Default_Exception_Handler *singleton;
 };
 
 // An exception handler that takes a functor as an argument.  The
Index: rice/Module_impl.hpp
===================================================================
--- rice/Module_impl.hpp	(revision 194)
+++ rice/Module_impl.hpp	(working copy)
@@ -20,6 +20,7 @@
 {
 public:
   Module_base(VALUE v = rb_cObject);
+  ~Module_base();
 
 protected: // TODO
   // TODO: For now, we always leak the handler, but in the future, we
@@ -40,7 +41,7 @@
 
   template<typename T>
   Module_impl(T const & arg);
-
+  
   //! Define an exception handler.
   /*! Whenever an exception of type Exception_T is thrown from a
    *  function defined on this class, functor will be called to
