diff --git a/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h b/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h
index 978f38e9e2b61073c988ef1ddb8962f2a2b701ae..b81ffce98cf8bdfd3e4013c3a6396afc0bf1487d 100644
--- a/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h
+++ b/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h
@@ -46,8 +46,11 @@ public:
   itkNewMacro(Self);
 
   bool TestUrlAvailability(const std::string& url) const;
+  
   bool IsCurlReturnHttpError(const std::string& url) const;
+  
   int RetrieveFile(const std::ostringstream& urlStream, std::string filename) const;
+  
   int RetrieveFile(const std::string& urlString, std::string filename) const;
 
   int RetrieveUrlInMemory(const std::string& urlString, std::string& output) const;
@@ -57,6 +60,7 @@ public:
                         int maxConnect) const;
 
   itkGetMacro(Timeout,long int);
+  
   itkSetMacro(Timeout,long int);
 
 protected:
diff --git a/Modules/Adapters/CurlAdapters/include/otbCurlHelperStub.h b/Modules/Adapters/CurlAdapters/include/otbCurlHelperStub.h
index 0f150cb9eec0d78e2866849141adde000f66a1ea..da7da9eea36b2befb83dbba1b030459d2b2b103e 100644
--- a/Modules/Adapters/CurlAdapters/include/otbCurlHelperStub.h
+++ b/Modules/Adapters/CurlAdapters/include/otbCurlHelperStub.h
@@ -41,11 +41,15 @@ public:
   typedef CurlHelperInterface           Superclass;
 
   itkTypeMacro(CurlHelperStub, CurlHelperInterface);
+  
   itkNewMacro(Self);
 
   bool TestUrlAvailability(const std::string& url) const;
+  
   int RetrieveUrlInMemory(const std::string& urlString, std::string& output) const;
+  
   int RetrieveFile(const std::ostringstream& urlStream, std::string filename) const;
+  
   int RetrieveFile(const std::string& urlString, std::string filename) const;
 
   int RetrieveFileMulti(const std::vector<std::string>& listURLs,
diff --git a/Modules/Adapters/CurlAdapters/otb-module.cmake b/Modules/Adapters/CurlAdapters/otb-module.cmake
index fdb493690c2249cba68b20ca0b75bc38ad8ea4b9..107dc5e638890b1e111a1ce33244b5ea06c5cbc8 100644
--- a/Modules/Adapters/CurlAdapters/otb-module.cmake
+++ b/Modules/Adapters/CurlAdapters/otb-module.cmake
@@ -2,11 +2,11 @@ set(DOCUMENTATION "Adapters for the Curl library.")
 
 otb_module(OTBCurlAdapters 
   DEPENDS
-    OTBCurl
     OTBCommon
+  OPTIONAL_DEPENDS
+    OTBCurl
   TEST_DEPENDS
     OTBTestKernel
-  
   DESCRIPTION
     "${DOCUMENTATION}"
   )
diff --git a/Modules/Adapters/CurlAdapters/src/CMakeLists.txt b/Modules/Adapters/CurlAdapters/src/CMakeLists.txt
index 58af5bbee6349e3188f9413c59090f7fc72f986f..9a0164c41255fbc3027fcb740d763ba13528eaa0 100644
--- a/Modules/Adapters/CurlAdapters/src/CMakeLists.txt
+++ b/Modules/Adapters/CurlAdapters/src/CMakeLists.txt
@@ -5,10 +5,12 @@ set(OTBCurlAdapters_SRC
   )
 
 add_library(OTBCurlAdapters ${OTBCurlAdapters_SRC})
-target_link_libraries(OTBCurlAdapters 
-  ${OTBCurl_LIBRARIES}
+target_link_libraries(OTBCurlAdapters
   ${OTBCommon_LIBRARIES}
-
   )
 
+if (OTBCurl_ENABLED)
+  target_link_libraries(OTBCurlAdapters ${OTBCurl_LIBRARIES})
+endif()
+
 otb_module_target(OTBCurlAdapters)
diff --git a/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx b/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx
index 735546c7e54f47a7373cd1b7b84eec9e97cf98dc..2c5bab2870fbf58e2359389bad03ad1a0fb268ea 100644
--- a/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx
+++ b/Modules/Adapters/CurlAdapters/src/otbCurlHelper.cxx
@@ -145,7 +145,7 @@ private:
   CurlMultiResource (const CurlMultiResource &);
   CurlMultiResource & operator= (const CurlMultiResource &);
 }; //end of class CurlMultiResource
-#endif
+#endif // OTB_CURL_MULTI_AVAILABLE
 
 /**
  * Resource class that create FILE * and  close the FILE *  descriptor
@@ -194,7 +194,7 @@ private:
   CurlFileDescriptorResource & operator= (const CurlFileDescriptorResource &);
 }; //end of class FileResource
 
-#endif  // Necessary only if Curl Availabale
+#endif // OTB_USE_CURL
 
 bool CurlHelper::TestUrlAvailability(const std::string& url) const
 {
diff --git a/Modules/Adapters/CurlAdapters/src/otbCurlHelperInterface.cxx b/Modules/Adapters/CurlAdapters/src/otbCurlHelperInterface.cxx
index 29a98b9eef770635d6bf9715710adcd5cc5bb8be..c68f801648525bd4b0536351715d4c6c3aa095c8 100644
--- a/Modules/Adapters/CurlAdapters/src/otbCurlHelperInterface.cxx
+++ b/Modules/Adapters/CurlAdapters/src/otbCurlHelperInterface.cxx
@@ -24,22 +24,24 @@ namespace otb {
 bool
 CurlHelperInterface::IsCurlAvailable()
 {
-  bool curlAvailable = false;
-
 #ifdef OTB_USE_CURL
-  curlAvailable = true;
+  const bool curlAvailable = true;
+#else
+  const bool curlAvailable = false;
 #endif
+
   return curlAvailable;
 }
 
 bool
 CurlHelperInterface::IsCurlMultiAvailable()
 {
-  bool curlMultiAvailable = false;
-
 #ifdef OTB_CURL_MULTI_AVAILABLE
-  curlMultiAvailable = true;
+  const bool curlMultiAvailable = true;
+#else
+  const bool curlMultiAvailable = false;
 #endif
+
   return curlMultiAvailable;
 }
 
diff --git a/Modules/ThirdParty/Curl/otb-module.cmake b/Modules/ThirdParty/Curl/otb-module.cmake
index aa731608a2bf02008899f9ab073e8f7e1b788e15..e183aba37a68e7107d4135c8cdd8ad9ad8b07db5 100644
--- a/Modules/ThirdParty/Curl/otb-module.cmake
+++ b/Modules/ThirdParty/Curl/otb-module.cmake
@@ -8,3 +8,5 @@ otb_module(OTBCurl
   DESCRIPTION
     "${DOCUMENTATION}"
   )
+
+otb_module_activation_option("Enable curl based functionnalities" ON)
diff --git a/TODO b/TODO
index 6276466e76cd77cbf2ef537a9f28741a799134ed..80819d62b6957b6194144c8fc519559e9c5121ff 100644
--- a/TODO
+++ b/TODO
@@ -4,6 +4,7 @@
 * remove KMLVectorDataIO since it should not be used. leave libkml dependency only for KmzWriter module.
 * LineSegmentDetectorExample RightAngleDetectionExample depends on VectorDataRendering (mapnik) : rewrite it with the OGR based rasterization
 * OTB_USE_CURL
+* CurlHelperStub is only for tests : move to TestKernel
 * OTB_USE_OPENCV
 * Wrapper test (Java Python)
 * Handle OTB_DATA_USE_SPOTPHRINPUT & OTB_DATA_USE_CNESPHRINPUT