diff --git a/modules/base/src/message.hh b/modules/base/src/message.hh
index 30098a1696db509b2b4f44a4dc2e1a12ab3f1a59..77bd64080e6e85e097a18a51a9dfa4c8ed8b80e0 100644
--- a/modules/base/src/message.hh
+++ b/modules/base/src/message.hh
@@ -31,7 +31,7 @@
 
 namespace ost {
 
-struct DLLEXPORT_OST_BASE Message: public std::exception {
+struct DLLEXPORT Message: public std::exception {
   Message(const String& mesg,const String& prefix=""):
     _prefix(prefix), _mesg(mesg) {}
   virtual ~Message() throw() {}
@@ -45,7 +45,7 @@ struct DLLEXPORT_OST_BASE Message: public std::exception {
   String _mesg;
 };
 
-struct DLLEXPORT_OST_BASE Error: public Message {
+struct DLLEXPORT Error: public Message {
   Error(const String& m): Message(m,"Error") {}
 };
 
diff --git a/modules/base/src/ptr_observer.hh b/modules/base/src/ptr_observer.hh
index d363999163f14a2997b4675e5b379fae25b72fb6..6bcbf4a4ea6b015ff2ba479b6036ced4219123c7 100644
--- a/modules/base/src/ptr_observer.hh
+++ b/modules/base/src/ptr_observer.hh
@@ -22,14 +22,14 @@
 #define OST_PTR_OBSERVER_HH
 
 #include <ost/message.hh>
-
+#include <ost/module_config.hh>
 /*
   ptr observer concept
 
   Author: Ansgar Philippsen
 */
 
-class DLLEXPORT InvalidatedPointer: public ost::Error {
+class DLLEXPORT_OST_BASE InvalidatedPointer: public ost::Error {
 public:
   InvalidatedPointer():
     ost::Error("access attempt on invalidated Pointer")
@@ -37,7 +37,7 @@ public:
 };
 
 template <class T>
-class DLLEXPORT PtrObserver {
+class TEMPLATE_EXPORT PtrObserver {
 public:
   PtrObserver(T* t):
     observed_(t),
diff --git a/modules/db/src/sqlite_wrap.hh b/modules/db/src/sqlite_wrap.hh
index fc5584516d5b046d6110ed4920b4ee9d1414482d..cc0559d8d9670a4710d7a398a38b16de619eb551 100644
--- a/modules/db/src/sqlite_wrap.hh
+++ b/modules/db/src/sqlite_wrap.hh
@@ -81,7 +81,7 @@ private:
   sqlite3_stmt* statement_;
 };
 
-class DLLEXPORT_OST_DB DatabaseError : public Error {
+class DLLEXPORT DatabaseError : public Error {
 public:
   DatabaseError(const String& msg):
     Error(msg)
diff --git a/modules/geom/src/exc.hh b/modules/geom/src/exc.hh
index d67e4c8e878850f74538852bd42fb366407ad2ad..406ee977a491afd78efdf92697afbb4c218bcbef 100644
--- a/modules/geom/src/exc.hh
+++ b/modules/geom/src/exc.hh
@@ -33,19 +33,19 @@ namespace geom {
   code may choose to catch exceptions from
   the geom library undifferentiatedly
 */
-class DLLEXPORT_OST_GEOM GeomException: public std::runtime_error {
+class DLLEXPORT GeomException: public std::runtime_error {
 public:
   GeomException(const String& m):
     std::runtime_error(m) {}
 };
 
-class DLLEXPORT_OST_GEOM DivideByZeroException: public GeomException {
+class DLLEXPORT DivideByZeroException: public GeomException {
 public:
   DivideByZeroException(const String& m="Divide By Zero"):
     GeomException(m) {}
 };
 
-class DLLEXPORT_OST_GEOM OutOfRangeException: public GeomException {
+class DLLEXPORT OutOfRangeException: public GeomException {
 public:
   OutOfRangeException(const String& m="Out Of Range"):
     GeomException(m) {}
diff --git a/modules/geom/src/exception.hh b/modules/geom/src/exception.hh
index be60a295b28803acb61d951f817b71b27beddd98..b36f4cddfec38bf50b7588c887c5d09732540819 100644
--- a/modules/geom/src/exception.hh
+++ b/modules/geom/src/exception.hh
@@ -19,13 +19,12 @@
 #ifndef GEOM_EXCEPTION_HH
 #define GEOM_EXCEPTION_HH
 
-#include <ost/message.hh>
 #include <string>
 #include <ost/message.hh>
 
 namespace geom {
 
-class GeomException: public Error
+class DLLEXPORT GeomException: public Error
 {
 public:
   GeomException(const String& m):
diff --git a/modules/img/alg/src/custom_transformer.hh b/modules/img/alg/src/custom_transformer.hh
index d96cb17ed6894547cb20b15d3f7604a48fba6bc6..b5199aa5813d35c481285d165fb2a32368dc5c08 100644
--- a/modules/img/alg/src/custom_transformer.hh
+++ b/modules/img/alg/src/custom_transformer.hh
@@ -33,7 +33,7 @@
 
 namespace ost { namespace img { namespace alg {
 
-class DLLEXPORT_IMG_ALG CustomTransformerException: public Error {
+class DLLEXPORT CustomTransformerException: public Error {
 public:
   virtual ~CustomTransformerException() throw() {}
   CustomTransformerException(const String& s):
diff --git a/modules/img/alg/src/fft.hh b/modules/img/alg/src/fft.hh
index 465a6e58bf7f422b59c44b50d2487a7d8b09f927..120f045edbe7b1949882ef58074440f9efe9c4d5 100644
--- a/modules/img/alg/src/fft.hh
+++ b/modules/img/alg/src/fft.hh
@@ -27,12 +27,10 @@
 #include <ost/img/image_state.hh>
 #include <ost/img/image_state/image_state_algorithm.hh>
 #include <ost/img/value_util.hh>
-#include <ost/message.hh>
-
 
 namespace ost { namespace img { namespace alg {
 
-struct FFTException: public Error {
+struct DLLEXPORT FFTException: public Error {
   FFTException(const String& m): Error(m) {}
 };
 
diff --git a/modules/img/alg/src/histogram.hh b/modules/img/alg/src/histogram.hh
index e8d7210afd878839c5f1416752845778f303c75d..f974247da64b4f51f1c8d5d87afc1e59b608f022 100644
--- a/modules/img/alg/src/histogram.hh
+++ b/modules/img/alg/src/histogram.hh
@@ -31,7 +31,7 @@
 
 namespace ost { namespace img { namespace alg {
 
-class DLLEXPORT_IMG_ALG HistogramError: public Error {
+class DLLEXPORT HistogramError: public Error {
 public:
   virtual ~HistogramError() throw() {} // required for typeinfo visibility
   HistogramError(const String& s):
diff --git a/modules/img/base/src/data_observer.hh b/modules/img/base/src/data_observer.hh
index 72e72271f49067177f238239b9c4d6ef2768f580..0d5feca7219aa287e319341025f1dbbec8ea7521 100644
--- a/modules/img/base/src/data_observer.hh
+++ b/modules/img/base/src/data_observer.hh
@@ -34,7 +34,7 @@
 namespace ost { namespace img {
 
 
-class DLLEXPORT_OST_IMG_BASE InvalidObserver: public Error {
+class DLLEXPORT InvalidObserver: public Error {
 public:
   InvalidObserver(const String& s = String("unknown")):
     Error(String("InvalidObserver exception occured: ") + s)
diff --git a/modules/img/base/src/extent.hh b/modules/img/base/src/extent.hh
index 5f89c5ee80588877219e199d7e717a5bb4124bc6..362dc4945e45a8c7466258266b48f75d9a7afff5 100644
--- a/modules/img/base/src/extent.hh
+++ b/modules/img/base/src/extent.hh
@@ -44,7 +44,7 @@
 
 namespace ost { namespace img {
 
-struct DLLEXPORT_OST_IMG_BASE InvalidExtentException: public Error
+struct DLLEXPORT InvalidExtentException: public Error
 {
   InvalidExtentException(const String& m= String("") ):
     Error(String("an invalid extent occured ("+m+String(")")))
diff --git a/modules/img/base/src/image_handle.cc b/modules/img/base/src/image_handle.cc
index 125aac1141e21aadf36d3cc185c0323dbf944933..712868a3181ed0fa47d7989748b759abb18a5dc1 100644
--- a/modules/img/base/src/image_handle.cc
+++ b/modules/img/base/src/image_handle.cc
@@ -43,10 +43,6 @@
 
 namespace ost { namespace img {
 
-InvalidImageHandle::InvalidImageHandle():
-  Error("Attempt to use invalid ImageHandle")
-{}
-
 // ImageHandle
 
 // construction/deconstruction/assignement
diff --git a/modules/img/base/src/image_handle.hh b/modules/img/base/src/image_handle.hh
index 6119392551ca8b31717a03d8653f682f43bcd923..d85bbc5831b8c1d5e7bb1fb095bbcc749367a87a 100644
--- a/modules/img/base/src/image_handle.hh
+++ b/modules/img/base/src/image_handle.hh
@@ -72,9 +72,9 @@ class ModOPAlgorithm;
 class ConstModOPAlgorithm;
 
 //! Exception thrown upon invalid image handle usage
-class DLLEXPORT_OST_IMG_BASE InvalidImageHandle: public Error {
+class DLLEXPORT InvalidImageHandle: public Error {
 public:
-  InvalidImageHandle();
+  InvalidImageHandle(): Error("Attempt to use invalid ImageHandle") {}
 };
 
 // fw
diff --git a/modules/img/base/src/image_state/dispatch.hh b/modules/img/base/src/image_state/dispatch.hh
index b788cc8d46fba8e839a70825c19b858cf60bf958..758494bec7a956b83e2690e27e9a0dbf232301fd 100644
--- a/modules/img/base/src/image_state/dispatch.hh
+++ b/modules/img/base/src/image_state/dispatch.hh
@@ -35,7 +35,7 @@
 
 namespace ost { namespace img { namespace image_state { 
 
-class DispatchException: public Error {
+class DLLEXPORT DispatchException: public Error {
 public:
   DispatchException(const String& m):
     Error(m)
diff --git a/modules/img/base/src/image_state/image_state_visitor.hh b/modules/img/base/src/image_state/image_state_visitor.hh
index 0f08c745eab590b630dcd3fcb35d30eda0f993b6..7fc7c7e502a780db4eeb9c39b96a090599f9484d 100644
--- a/modules/img/base/src/image_state/image_state_visitor.hh
+++ b/modules/img/base/src/image_state/image_state_visitor.hh
@@ -32,7 +32,7 @@
 namespace ost { namespace img { namespace image_state {
 
 //! ImageStateVisitor general exception
-class DLLEXPORT_OST_IMG_BASE InvalidImageStateVisitor: public Error {
+class DLLEXPORT InvalidImageStateVisitor: public Error {
 public:
   InvalidImageStateVisitor(const String& m): Error(m) {}
 };
diff --git a/modules/img/base/src/pixel_sampling.hh b/modules/img/base/src/pixel_sampling.hh
index 02da611b73e4578e4ffe59a5b1d9de8400391efc..05882f365253e3f74f3f0fbf41311e0e095a39c7 100644
--- a/modules/img/base/src/pixel_sampling.hh
+++ b/modules/img/base/src/pixel_sampling.hh
@@ -38,7 +38,7 @@ namespace ost { namespace img {
 class Extent;
 class Point;
 
-class DLLEXPORT_OST_IMG_BASE InvalidSampling: public Error {
+class DLLEXPORT InvalidSampling: public Error {
 public:
   InvalidSampling():
     Error("invalid sampling value used, must be >0")
diff --git a/modules/info/src/info_error.hh b/modules/info/src/info_error.hh
index c587c88d9ec6ec8a574bdf2e0cf0ba38ffaee934..d6a374d51eb5b073bb8f97d080a637be41667716 100644
--- a/modules/info/src/info_error.hh
+++ b/modules/info/src/info_error.hh
@@ -26,10 +26,11 @@
 #ifndef OST_INFO_ERROR_HH
 #define OST_INFO_ERROR_HH
 
-#include <ost/message.hh>
-
 #include <ost/base.hh>
 #include <ost/message.hh>
+#include <ost/info/module_config.hh>
+
+
 
 namespace ost { namespace info {
 
diff --git a/modules/io/src/io_exception.hh b/modules/io/src/io_exception.hh
index 6d8db50cb680f0b0582363863cdabac63d6bf5c6..d1e4782d97ba366a1d9510124e2390205046ec5f 100644
--- a/modules/io/src/io_exception.hh
+++ b/modules/io/src/io_exception.hh
@@ -26,19 +26,19 @@
 
 namespace ost { namespace io {
 
-class IOException: public Error {
+class DLLEXPORT IOException: public Error {
 public:
   IOException(const String& m):
     Error(m) {}
 };
 
-class IOUnknownFormatException: public Error {
+class DLLEXPORT IOUnknownFormatException: public Error {
 public:
   IOUnknownFormatException(const String& m):
     Error(m) {}
 };
 
-class IOFileAlreadyLoadedException: public Error {
+class DLLEXPORT IOFileAlreadyLoadedException: public Error {
 public:
   IOFileAlreadyLoadedException(const String& m):
     Error(m) {}
diff --git a/modules/mol/base/src/not_connected_error.hh b/modules/mol/base/src/not_connected_error.hh
index 6671782a6638f985a88e8f41ae3afb7c8d1fe7e4..d33892147fed47276619acd77f4ecf399e78593e 100644
--- a/modules/mol/base/src/not_connected_error.hh
+++ b/modules/mol/base/src/not_connected_error.hh
@@ -26,7 +26,7 @@ namespace ost { namespace mol {
   
 /// \brief Error to indicate that two atoms that are supposed to be connected
 ///        are not.
-class NotConnectedError : public Error {
+class DLLEXPORT_OST_MOL NotConnectedError : public Error {
 public:
   NotConnectedError(AtomHandle one, AtomHandle two);
   virtual ~NotConnectedError() throw() {}
diff --git a/modules/mol/base/src/property_id.hh b/modules/mol/base/src/property_id.hh
index 2f635d7980b8603de69dab00458a8b7eb9e3db3c..6c06e7ef3cfedbca010cec71688728003ae793f6 100644
--- a/modules/mol/base/src/property_id.hh
+++ b/modules/mol/base/src/property_id.hh
@@ -86,7 +86,7 @@ Prop::ID DLLEXPORT_OST_MOL PropertyIDFromString(const String& prop);
 Prop DLLEXPORT_OST_MOL PropertyFromString(const String& prop);
 
 
-struct DLLEXPORT_OST_MOL PropertyError: public std::exception
+struct DLLEXPORT PropertyError: public std::exception
 {
   PropertyError(ost::mol::Prop::ID prop):
     prop_(prop)
diff --git a/modules/seq/base/src/invalid_sequence.hh b/modules/seq/base/src/invalid_sequence.hh
index a95a4f57309c794b0b4667e370842e4ed9145203..b112df8f3ed902677c65597f28e338e79bde5023 100644
--- a/modules/seq/base/src/invalid_sequence.hh
+++ b/modules/seq/base/src/invalid_sequence.hh
@@ -25,14 +25,14 @@
 #include <ost/seq/module_config.hh>
 namespace ost { namespace seq {
 
-class DLLEXPORT_OST_SEQ InvalidSequence : public Error {
+class DLLEXPORT InvalidSequence : public Error {
 public:
   InvalidSequence()
     : Error("Sequence String contains illegal characters. Must "
                          "be one of [A-Za-z?-].") { }
 };
 
-class DLLEXPORT_OST_SEQ InvalidAlignment : public Error {
+class DLLEXPORT InvalidAlignment : public Error {
 public:
   InvalidAlignment()
     : Error("Sequences have different lengths") { }