diff --git a/Code/ApplicationEngine/otbWrapperApplication.cxx b/Code/ApplicationEngine/otbWrapperApplication.cxx
index faf051ddbff61645af459a5ff95712c16e7c612d..a911541ecdc978066f8616bbeec3c0459feb5ec6 100644
--- a/Code/ApplicationEngine/otbWrapperApplication.cxx
+++ b/Code/ApplicationEngine/otbWrapperApplication.cxx
@@ -29,6 +29,8 @@
 #include "otbWrapperOutputVectorDataParameter.h"
 #include "otbWrapperRadiusParameter.h"
 #include "otbWrapperStringParameter.h"
+#include "otbWrapperStringListParameter.h"
+#include "otbWrapperInputImageListParameter.h"
 
 #include "otbWrapperParameterGroup.h"
 
@@ -376,6 +378,22 @@ void Application::SetParameterString(std::string parameter, std::string value)
     }
 }
 
+void Application::SetParameterStringList(std::string parameter, std::vector<std::string> value)
+{
+  Parameter* param = GetParameterByKey(parameter);
+
+  if (dynamic_cast<InputImageListParameter*>(param))
+    {
+    InputImageListParameter* paramDown = dynamic_cast<InputImageListParameter*>(param);
+    paramDown->SetListFromFileName(value);
+    }
+  else if (dynamic_cast<StringListParameter*>(param))
+    {
+    StringListParameter* paramDown = dynamic_cast<StringListParameter*>(param);
+    paramDown->SetValue(value);
+    }
+}
+
 void Application::SetParameterOutputImage(std::string parameter, FloatVectorImageType* value)
 {
   Parameter* param = GetParameterByKey(parameter);
@@ -527,6 +545,25 @@ std::string Application::GetParameterString(std::string parameter)
   return ret;
 }
 
+std::vector<std::string> Application::GetParameterStringList(std::string parameter)
+{
+  std::vector<std::string> ret;
+  Parameter* param = GetParameterByKey(parameter);
+
+  if (dynamic_cast<InputImageListParameter*>(param))
+    {
+    InputImageListParameter* paramDown = dynamic_cast<InputImageListParameter*>(param);
+    ret = paramDown->GetFileNameList();
+    }
+  else if (dynamic_cast<StringListParameter*>(param))
+    {
+    StringListParameter* paramDown = dynamic_cast<StringListParameter*>(param);
+    ret = paramDown->GetValue();
+    }
+  return ret;
+}
+
+
 FloatVectorImageType* Application::GetParameterImage(std::string parameter)
 {
   FloatVectorImageType::Pointer ret;
@@ -542,6 +579,21 @@ FloatVectorImageType* Application::GetParameterImage(std::string parameter)
   return ret;
 }
 
+FloatVectorImageListType* Application::GetParameterImageList(std::string parameter)
+{
+  FloatVectorImageListType::Pointer ret;
+  Parameter* param = GetParameterByKey(parameter);
+
+  if (dynamic_cast<InputImageListParameter*>(param))
+    {
+    InputImageListParameter* paramDown = dynamic_cast<InputImageListParameter*>(param);
+    ret = paramDown->GetImageList();
+    }
+
+  //TODO: exception if not found ?
+  return ret;
+}
+
 ComplexFloatVectorImageType* Application::GetParameterComplexImage(std::string parameter)
 {
   ComplexFloatVectorImageType::Pointer ret;
diff --git a/Code/ApplicationEngine/otbWrapperApplication.h b/Code/ApplicationEngine/otbWrapperApplication.h
index 8f3e24ed62d1d729334e44f174a810dc4a945096..1bd55c08e8f7c94fdd4ae99fd55780f9fe34ab51 100644
--- a/Code/ApplicationEngine/otbWrapperApplication.h
+++ b/Code/ApplicationEngine/otbWrapperApplication.h
@@ -187,6 +187,24 @@ public:
    */
   void SetParameterString(std::string parameter, std::string value);
 
+  /* Set a string value
+   *
+   * Can be called for types :
+   * \li ParameterType_String
+   * \li ParameterType_Filename
+   * \li ParameterType_Directory
+   * \li ParameterType_Choice
+   * \li ParameterType_Float
+   * \li ParameterType_Int
+   * \li ParameterType_Radius
+   * \li ParameterType_InputImageParameter
+   * \li ParameterType_InputComplexImageParameter
+   * \li ParameterType_InputVectorDataParameter
+   * \li ParameterType_OutputImageParameter
+   * \li ParameterType_OutputVectorDataParameter
+   */
+  void SetParameterStringList(std::string parameter, std::vector<std::string> value);
+
   /* Set an output image value
    *
    * Can be called for types :
@@ -239,6 +257,14 @@ public:
    */
   std::string GetParameterString(std::string parameter);
 
+  /* Get a string list parameter value
+   *
+   * Can be called for types :
+   * \li ParameterType_StringList
+   * \li ParameterType_InputImageList
+   */
+  std::vector<std::string> GetParameterStringList(std::string parameter);
+
   /* Get an image value
    *
    * Can be called for types :
@@ -246,6 +272,13 @@ public:
    */
   FloatVectorImageType* GetParameterImage(std::string parameter);
 
+  /* Get an image list value
+   *
+   * Can be called for types :
+   * \li ParameterType_InputImageList
+   */
+  FloatVectorImageListType* GetParameterImageList(std::string parameter);
+
   /* Get a complex image value
    *
    * Can be called for types :
diff --git a/Code/ApplicationEngine/otbWrapperInputImageListParameter.h b/Code/ApplicationEngine/otbWrapperInputImageListParameter.h
index 7bd6cd2b33db3cd2c05f23ad502c18906e4ec00b..07b4324cac82290a573a259e7d4eeda53603c4fe 100644
--- a/Code/ApplicationEngine/otbWrapperInputImageListParameter.h
+++ b/Code/ApplicationEngine/otbWrapperInputImageListParameter.h
@@ -40,7 +40,6 @@ public:
   typedef itk::SmartPointer<Self>       Pointer;
   typedef itk::SmartPointer<const Self> ConstPointer;
 
-  typedef otb::ObjectList<FloatVectorImageType>      VectorImageListType;
   typedef otb::ImageFileReader<FloatVectorImageType> ImageFileReaderType;
   typedef otb::ObjectList<ImageFileReaderType>  ImageFileReaderListType;
 
@@ -116,23 +115,23 @@ public:
   }
 
   /** Get one list of the stored image. */
-  VectorImageListType* GetImageList() const
+  FloatVectorImageListType* GetImageList() const
   {
     return m_ImageList;
   }
 
   /** Get one specific stored image. */
-  VectorImageListType* GetNthImage(unsigned int i) const
+  FloatVectorImageType* GetNthImage(unsigned int i) const
   {
     if(m_ImageList->Size()<i)
       {
         itkExceptionMacro(<< "No image "<<i<<". Only "<<m_ImageList->Size()<<" images available.");
       }
-    return m_ImageList;
+    return m_ImageList->GetNthElement(i);
   }
 
   /** Set the list of image. */
-  void SetImageList(VectorImageListType* imList)
+  void SetImageList(FloatVectorImageListType* imList)
   {
     m_ImageList = imList;
     m_ReaderList = ImageFileReaderListType::Pointer();
@@ -163,7 +162,7 @@ public:
 
   void ClearValue()
   {
-    m_ImageList = VectorImageListType::Pointer();
+    m_ImageList = FloatVectorImageListType::Pointer();
     m_ReaderList = ImageFileReaderListType::Pointer();
   }
 
@@ -173,7 +172,7 @@ protected:
   {
     this->SetName("Input Image List");
     this->SetKey("inList");
-    m_ImageList = VectorImageListType::New();
+    m_ImageList = FloatVectorImageListType::New();
     m_ReaderList = ImageFileReaderListType::New();
   }
 
@@ -182,7 +181,7 @@ protected:
   {}
 
  
-  VectorImageListType::Pointer     m_ImageList;
+  FloatVectorImageListType::Pointer     m_ImageList;
   ImageFileReaderListType::Pointer m_ReaderList;
 
 private:
diff --git a/Code/ApplicationEngine/otbWrapperTypes.h b/Code/ApplicationEngine/otbWrapperTypes.h
index c0d7b52afde52979f05c62828e0fc312d0993647..2b400f20d6022fd5733241020dd227c6e295683f 100644
--- a/Code/ApplicationEngine/otbWrapperTypes.h
+++ b/Code/ApplicationEngine/otbWrapperTypes.h
@@ -85,6 +85,9 @@ typedef otb::VectorData<VectorDataCoordinatePrecisionType,
                         VectorDataValuePrecisionType>
           VectorDataType;
 
+typedef otb::ObjectList<FloatVectorImageType>      FloatVectorImageListType;
+
+
 
 } // end namespace Wrapper
 } //end namespace otb