diff --git a/Code/CMakeLists.txt b/Code/CMakeLists.txt
index 074a10c1f237a5f38d82f58f54741fa46d8a2a39..14ae9c84d496b527d50cb66e51cc818184ebfe5a 100644
--- a/Code/CMakeLists.txt
+++ b/Code/CMakeLists.txt
@@ -1 +1,2 @@
-SUBDIRS(Common BasicFilters IO ChangeDetection FeatureExtraction Learning Visu)
+SUBDIRS(Common BasicFilters IO ChangeDetection FeatureExtraction
+Learning Visu Segmentation)
diff --git a/Examples/Segmentation/CMakeLists.txt b/Examples/Segmentation/CMakeLists.txt
index 85a49620e9f7b24068f7c138bd3704e656f01925..e7b90e4b59cc6d7a87dca350a9e7c5f17211a3e2 100644
--- a/Examples/Segmentation/CMakeLists.txt
+++ b/Examples/Segmentation/CMakeLists.txt
@@ -74,7 +74,8 @@ TARGET_LINK_LIBRARIES(FastMarchingImageFilter OTBCommon OTBIO ITKNumerics ITKIO)
 #TARGET_LINK_LIBRARIES(CurvesLevelSetImageFilter ITKNumerics ITKIO)
 
 ADD_EXECUTABLE(WatershedSegmentation WatershedSegmentation.cxx )
-TARGET_LINK_LIBRARIES(WatershedSegmentation OTBCommon OTBIO ITKAlgorithms ITKNumerics ITKIO)
+TARGET_LINK_LIBRARIES(WatershedSegmentation OTBCommon OTBIO
+OTBSegmentation ITKAlgorithms ITKNumerics ITKIO)
 
 
 #ADD_EXECUTABLE(SegmentationExamples SegmentationExamples.cxx )
diff --git a/Examples/Segmentation/WatershedSegmentation.cxx b/Examples/Segmentation/WatershedSegmentation.cxx
index 6e63db5b91f8c5511df3871cdabb92085229a77d..a9b271cc97a326b5eca449b7f428cee6bf4d1e80 100644
--- a/Examples/Segmentation/WatershedSegmentation.cxx
+++ b/Examples/Segmentation/WatershedSegmentation.cxx
@@ -97,7 +97,10 @@ int main( int argc, char *argv[] )
   // vector-valued data and the segmentation is done using floating point
   // scalar data.  Images are converted from RGB pixel type to
   // numerical vector type using \doxygen{VectorCastImageFilter}.
-  //\textbf{FIXME: otbImage}
+  // Please pay attention to the fact that we are using
+  // \doxygen{itk::Image}s since the
+  // \doxygen{itk::VectorGradientMagnitudeImageFilter} has some
+  // internal typedefs which make polymorfism impossible.
   // Software Guide : EndLatex
 
   // Software Guide : BeginCodeSnippet
@@ -122,7 +125,7 @@ int main( int argc, char *argv[] )
     CastFilterType;
   typedef itk::VectorGradientAnisotropicDiffusionImageFilter<VectorImageType,
     VectorImageType>  DiffusionFilterType;
-  typedef itk::VectorGradientMagnitudeImageFilter<VectorImageType>
+  typedef itk::VectorGradientMagnitudeImageFilter<VectorImageType,float,ScalarImageType>
     GradientMagnitudeFilterType; 
   typedef itk::WatershedImageFilter<ScalarImageType> WatershedFilterType;
   // Software Guide : EndCodeSnippet
diff --git a/Examples/Visu/VisuExample1.cxx b/Examples/Visu/VisuExample1.cxx
index 4977e013a44e6260e13456055e4161e6f87c878d..06826c6250b7433343a78420d16f2a1373c6c38c 100644
--- a/Examples/Visu/VisuExample1.cxx
+++ b/Examples/Visu/VisuExample1.cxx
@@ -53,7 +53,7 @@ int main( int argc, char ** argv )
   // We will build a very simple pipeline where a reader gets an image
   // from a file and gives it to the viewer. We define the types for
   // the pixel, the image and the reader. The viewer class is templated
-  // over the scalar component of the pixel type.
+  // over the scalar component of the pixel type. 
   //
   // Software Guide : EndLatex
 
diff --git a/otbIncludeDirectories.cmake b/otbIncludeDirectories.cmake
index f908ad78d6c29f38f6e470bd1d902baa017ab26b..90e8805e3e59ceec24088802c00382ec8597044e 100644
--- a/otbIncludeDirectories.cmake
+++ b/otbIncludeDirectories.cmake
@@ -16,6 +16,7 @@ SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE}
   ${OTB_SOURCE_DIR}/Code/FeatureExtraction
   ${OTB_SOURCE_DIR}/Code/Learning
   ${OTB_SOURCE_DIR}/Code/Visu
+  ${OTB_SOURCE_DIR}/Code/Segmentation  
 )
 
 #-----------------------------------------------------------------------------