diff --git a/.hgignore b/.hgignore
index 7adebeb7a31dcfcea7c401d63a4411935b34fc7c..55b143735c6342cf3ac9bfc44ac23133ccf0916d 100644
--- a/.hgignore
+++ b/.hgignore
@@ -5,4 +5,7 @@ syntax: glob
 *.pyc
 .\#*
 \#*\#
+tags
+*vim*
+*.template
 
diff --git a/Code/Common/otbMacro.h b/Code/Common/otbMacro.h
index c0195f8e4dfb238bf22fd65a2d644796601ca95b..34b281352495628c81bbe9070c541059dee49747 100644
--- a/Code/Common/otbMacro.h
+++ b/Code/Common/otbMacro.h
@@ -163,12 +163,8 @@ namespace otb
       { \
       command; \
       } \
-    catch (std::bad_alloc& err)     { \
-      throw err; } \
-    catch (itk::ExceptionObject& e) { \
-      throw e; } \
     catch (const std::exception& stde)   { \
-      throw stde; } \
+      throw ; } \
     catch (...) \
       { \
       std::ostringstream message; \
@@ -179,6 +175,14 @@ namespace otb
     std::cout << " Checking valid command " << # command " ok." << std::endl; \
     }
 
+#define otbGenericExceptionMacro(T, x) \
+{ \
+  ::itk::OStringStream message; \
+  message << "otb::ERROR: " x; \
+  T e_(__FILE__, __LINE__, message.str(),ITK_LOCATION); \
+  throw e_;\
+}
+
 #define otbTestingCheckNotValidCommand(command) \
     { \
     int result(1); \
diff --git a/Utilities/otbsiftfast/FindBoost.cmake b/Utilities/otbsiftfast/FindBoost.cmake
index 20c8c60f3a46f31024727392fcd04f3050119279..7e20cc44c09bcf8b80e33f866be5835c31a12c4b 100644
--- a/Utilities/otbsiftfast/FindBoost.cmake
+++ b/Utilities/otbsiftfast/FindBoost.cmake
@@ -105,6 +105,9 @@ if (Boost_FIND_VERSION_EXACT)
   endif (Boost_FIND_VERSION_PATCH)
 else (Boost_FIND_VERSION_EXACT)
   set( _boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS} 
+    "1.49.0" "1.49" "1.48.0" "1.48" "1.47.0" "1.47" "1.46.0" "1.46" "1.45.0"
+    "1.45" "1.44.0" "1.44" "1.43.0" "1.43" "1.42.0" "1.42"
+    "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37"
     "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0" 
     "1.34" "1.33.1" "1.33.0" "1.33" )
 endif (Boost_FIND_VERSION_EXACT)