diff --git a/Applications/CMakeLists.txt b/Applications/CMakeLists.txt
index 1060b53dff784a83575d742c4e45edefa299e67b..c37914160f3ed4ce717bf7565b90df85b193212c 100644
--- a/Applications/CMakeLists.txt
+++ b/Applications/CMakeLists.txt
@@ -1,13 +1,5 @@
-include(WrapperMacros)
 
-#OTB_CREATE_APPLICATION(NAME VectorImageFactory SOURCES VectorImageFactory.cxx)
+add_subdirectory(Hyperspectral)
+add_subdirectory(Util)
 
-OTB_CREATE_APPLICATION(NAME Addition        SOURCES otbAddition.cxx)
-OTB_CREATE_APPLICATION(NAME Smoothing       SOURCES otbSmoothing.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
-OTB_CREATE_APPLICATION(NAME Rescale         SOURCES otbRescale.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
-OTB_CREATE_APPLICATION(NAME AllocateOutput  SOURCES otbAllocateOutput.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
-OTB_CREATE_APPLICATION(NAME CopyInput       SOURCES otbCopyInput.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
-OTB_CREATE_APPLICATION(NAME InternalReader  SOURCES otbInternalReader.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
-OTB_CREATE_APPLICATION(NAME TestApplication SOURCES otbTestApplication.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
-OTB_CREATE_APPLICATION(NAME HyperspectralUnmixing SOURCES otbHyperspectralUnmixing.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
-OTB_CREATE_APPLICATION(NAME ExtractROI SOURCES otbExtractROI.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
+add_subdirectory(Test)
\ No newline at end of file
diff --git a/Applications/Hyperspectral/CMakeLists.txt b/Applications/Hyperspectral/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ca64f51a6c768624f6212eb9a6aab968500b7daf
--- /dev/null
+++ b/Applications/Hyperspectral/CMakeLists.txt
@@ -0,0 +1,3 @@
+include(WrapperMacros)
+
+OTB_CREATE_APPLICATION(NAME HyperspectralUnmixing SOURCES otbHyperspectralUnmixing.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
diff --git a/Applications/otbHyperspectralUnmixing.cxx b/Applications/Hyperspectral/otbHyperspectralUnmixing.cxx
similarity index 100%
rename from Applications/otbHyperspectralUnmixing.cxx
rename to Applications/Hyperspectral/otbHyperspectralUnmixing.cxx
diff --git a/Applications/Test/CMakeLists.txt b/Applications/Test/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dc718cb0c6accb9faa7a15312b848aa234315207
--- /dev/null
+++ b/Applications/Test/CMakeLists.txt
@@ -0,0 +1,7 @@
+include(WrapperMacros)
+
+OTB_CREATE_APPLICATION(NAME Addition        SOURCES otbAddition.cxx)
+OTB_CREATE_APPLICATION(NAME AllocateOutput  SOURCES otbAllocateOutput.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
+OTB_CREATE_APPLICATION(NAME CopyInput       SOURCES otbCopyInput.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
+OTB_CREATE_APPLICATION(NAME InternalReader  SOURCES otbInternalReader.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
+OTB_CREATE_APPLICATION(NAME TestApplication SOURCES otbTestApplication.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
diff --git a/Applications/otbAddition.cxx b/Applications/Test/otbAddition.cxx
similarity index 100%
rename from Applications/otbAddition.cxx
rename to Applications/Test/otbAddition.cxx
diff --git a/Applications/otbAllocateOutput.cxx b/Applications/Test/otbAllocateOutput.cxx
similarity index 100%
rename from Applications/otbAllocateOutput.cxx
rename to Applications/Test/otbAllocateOutput.cxx
diff --git a/Applications/otbCopyInput.cxx b/Applications/Test/otbCopyInput.cxx
similarity index 100%
rename from Applications/otbCopyInput.cxx
rename to Applications/Test/otbCopyInput.cxx
diff --git a/Applications/otbInternalReader.cxx b/Applications/Test/otbInternalReader.cxx
similarity index 100%
rename from Applications/otbInternalReader.cxx
rename to Applications/Test/otbInternalReader.cxx
diff --git a/Applications/otbTestApplication.cxx b/Applications/Test/otbTestApplication.cxx
similarity index 100%
rename from Applications/otbTestApplication.cxx
rename to Applications/Test/otbTestApplication.cxx
diff --git a/Applications/Util/CMakeLists.txt b/Applications/Util/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..18d5243d35638d86d79aa2a74cda83573f9c2d44
--- /dev/null
+++ b/Applications/Util/CMakeLists.txt
@@ -0,0 +1,5 @@
+include(WrapperMacros)
+
+OTB_CREATE_APPLICATION(NAME ExtractROI SOURCES otbExtractROI.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
+OTB_CREATE_APPLICATION(NAME Rescale         SOURCES otbRescale.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
+OTB_CREATE_APPLICATION(NAME Smoothing       SOURCES otbSmoothing.cxx LINK_LIBRARIES OTBIO;OTBCommon;OTBBasicFilters)
diff --git a/Applications/otbExtractROI.cxx b/Applications/Util/otbExtractROI.cxx
similarity index 100%
rename from Applications/otbExtractROI.cxx
rename to Applications/Util/otbExtractROI.cxx
diff --git a/Applications/otbRescale.cxx b/Applications/Util/otbRescale.cxx
similarity index 100%
rename from Applications/otbRescale.cxx
rename to Applications/Util/otbRescale.cxx
diff --git a/Applications/otbSmoothing.cxx b/Applications/Util/otbSmoothing.cxx
similarity index 100%
rename from Applications/otbSmoothing.cxx
rename to Applications/Util/otbSmoothing.cxx
diff --git a/Applications/VectorImageFactory.cxx b/Applications/VectorImageFactory.cxx
deleted file mode 100644
index 2882b097b08127eb33f05358a59f1a081b080879..0000000000000000000000000000000000000000
--- a/Applications/VectorImageFactory.cxx
+++ /dev/null
@@ -1,136 +0,0 @@
-/*=========================================================================
-
- Program:   ORFEO Toolbox
- Language:  C++
- Date:      $Date$
- Version:   $Revision$
-
-
- Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
- See OTBCopyright.txt for details.
-
-
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE.  See the above copyright notices for more information.
-
- =========================================================================*/
-#include "itkObjectFactory.h"
-#include "itkVersion.h"
-#include "otbWrapperTypes.h"
-
-
-//template <class TPixel, unsigned int VImageDimension = 2>
-class ITK_EXPORT MyVectorImage : public otb::VectorImage<float, 2>
-{
-public:
-  /** Standard class typedefs. */
-  typedef MyVectorImage                       Self;
-//  typedef otb::VectorImage<TPixel, VImageDimension> Superclass;
-  typedef otb::VectorImage<float, 2>          Superclass;
-  typedef itk::SmartPointer<Self>             Pointer;
-  typedef itk::SmartPointer<const Self>       ConstPointer;
-  typedef itk::WeakPointer<const Self>        ConstWeakPointer;
-
-  /** Method for creation through the object factory. */
-  itkNewMacro(Self);
-
-  /** Run-time type information (and related methods). */
-  itkTypeMacro(MyVectorImage, otb::VectorImage);
-
-};
-
-namespace otb
-{
-namespace Wrapper
-{
-
-class ImageFactory : public itk::ObjectFactoryBase
-{
-public:
-  /** Standard class typedefs. */
-  typedef ImageFactory                  Self;
-  typedef itk::ObjectFactoryBase        Superclass;
-  typedef itk::SmartPointer<Self>       Pointer;
-  typedef itk::SmartPointer<const Self> ConstPointer;
-
-  /** Class methods used to interface with the registered factories. */
-  virtual const char* GetITKSourceVersion(void) const
-    {
-    return ITK_SOURCE_VERSION;
-    }
-
-  virtual const char* GetDescription(void) const
-    {
-    return "ImageFactory";
-    }
-
-  /** Method for class instantiation. */
-  itkFactorylessNewMacro(Self);
-
-  /** Run-time type information (and related methods). */
-  itkTypeMacro(ApplicationFactory, itk::ObjectFactoryBase);
-
-protected:
-  ImageFactory()
-  {
-  }
-
-  virtual ~ImageFactory()
-  {
-  }
-
-  /** This method is provided by sub-classes of ObjectFactoryBase.
-   * It should create the named itk object or return 0 if that object
-   * is not supported by the factory implementation. */
-  virtual LightObject::Pointer CreateObject(const char* itkclassname )
-  {
-    std::cout << "CreateObject Testing " << itkclassname << std::endl;
-
-    VectorImageType::Pointer image;
-    if ( std::string( typeid(VectorImageType).name() ) == itkclassname )
-      {
-      std::cout << "HIT" << std::endl;
-      image = MyVectorImage::New().GetPointer();
-      }
-
-    return image.GetPointer();
-  }
-
-  /** This method creates all the objects with the class overide of
-   * itkclass name, which are provide by this object
-   */
-  virtual std::list<LightObject::Pointer>
-  CreateAllObject(const char* itkclassname)
-  {
-    std::list<LightObject::Pointer> list;
-    std::cout << "CreateAllObject Testing " << itkclassname << std::endl;
-
-    return list;
-  }
-
-private:
-  ImageFactory(const Self &); //purposely not implemented
-  void operator =(const Self&); //purposely not implemented
-};
-
-} // end namespace Wrapper
-} //end namespace otb
-
-#if (defined(WIN32) || defined(_WIN32))
-#  define OTB_APP_EXPORT __declspec(dllexport)
-#else
-#  define OTB_APP_EXPORT
-#endif
-
-typedef otb::Wrapper::ImageFactory ImageFactoryType;
-static ImageFactoryType::Pointer staticFactory;
-
-extern "C"
-  {
-    OTB_APP_EXPORT itk::ObjectFactoryBase* itkLoad()
-    {
-      staticFactory = ImageFactoryType::New();
-      return staticFactory;
-    }
-  }