diff --git a/Code/Core/otbWrapperApplication.h b/Code/Core/otbWrapperApplication.h
index 335ae315ea130fc3151068f11f7888e60e7cd0b4..448bc8ebfaf1f440e553ac0b3b81843e46eeb9b7 100644
--- a/Code/Core/otbWrapperApplication.h
+++ b/Code/Core/otbWrapperApplication.h
@@ -1,20 +1,20 @@
 /*=========================================================================
 
-  Program:   ORFEO Toolbox
-  Language:  C++
-  Date:      $Date$
-  Version:   $Revision$
+ Program:   ORFEO Toolbox
+ Language:  C++
+ Date:      $Date$
+ Version:   $Revision$
 
 
-  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
-  See OTBCopyright.txt for details.
+ 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.
+ 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.
 
-=========================================================================*/
+ =========================================================================*/
 #ifndef __otbWrapperApplication_h
 #define __otbWrapperApplication_h
 
@@ -34,52 +34,55 @@ namespace Wrapper
  *
  *
  */
-class ITK_EXPORT Application : public itk::Object
+class ITK_EXPORT Application: public itk::Object
 {
 public:
-/** Standard class typedefs. */
-typedef Application                          Self;
-typedef itk::Object                          Superclass;
-typedef itk::SmartPointer<Self>              Pointer;
-typedef itk::SmartPointer<const Self>        ConstPointer;
+  /** Standard class typedefs. */
+  typedef Application Self;
+  typedef itk::Object Superclass;
+  typedef itk::SmartPointer<Self> Pointer;
+  typedef itk::SmartPointer<const Self> ConstPointer;
 
-/** Defining ::New() static method */
-itkNewMacro(Self);
+  /** Defining ::New() static method */
+  itkNewMacro(Self);
 
-/** RTTI support */
-itkTypeMacro(Application,itk::Object);
+  /** RTTI support */
+  itkTypeMacro(Application,itk::Object);
 
-/** Set the parameter name */
-itkSetStringMacro(Name);
+  /** Set the parameter name */
+  itkSetStringMacro(Name);
 
-/** Get the parameter name */
-itkGetStringMacro(Name);
+  /** Get the parameter name */
+  itkGetStringMacro(Name);
 
-/** Set the parameter description */
-itkSetStringMacro(Description);
+  /** Set the parameter description */
+  itkSetStringMacro(Description);
 
-/** Get the parameter description */
-itkGetStringMacro(Description);
+  /** Get the parameter description */
+  itkGetStringMacro(Description);
 
-ParameterList* GetParameterList()
-          {
-  return m_ParameterList;
-          }
+  ParameterList& GetParameterList()
+  {
+    return m_ParameterList;
+  }
 
-virtual int Execute() {return 0;}
+  virtual int Execute()
+  {
+    return 0;
+  }
 
 protected:
-/** Constructor */
-Application();
-virtual ~Application();
+  /** Constructor */
+  Application();
+  virtual ~Application();
 
 private:
-Application(const Application &); //purposely not implemented
-void operator =(const Application&); //purposely not implemented
+  Application(const Application &); //purposely not implemented
+  void operator =(const Application&); //purposely not implemented
 
-std::string            m_Name;
-std::string            m_Description;
-ParameterList::Pointer m_ParameterList;
+  std::string m_Name;
+  std::string m_Description;
+  ParameterList m_ParameterList;
 
 }; //end class
 
diff --git a/Code/Core/otbWrapperChoiceParameter.h b/Code/Core/otbWrapperChoiceParameter.h
index 212164245a042659bb0a10994ef56be896ad2a69..7d6a9fe9cf0376703bb72dd192ada10f8f3ccab4 100644
--- a/Code/Core/otbWrapperChoiceParameter.h
+++ b/Code/Core/otbWrapperChoiceParameter.h
@@ -53,21 +53,42 @@ public:
     m_ChoiceList.push_back(std::make_pair(key, param));
   }
 
-  Parameter::Pointer GetChoice( int i )
+  std::string GetChoiceKey( int i )
+  {
+    return m_ChoiceList[i].first;
+  }
+
+  Parameter::Pointer GetChoiceAssociatedParameter( int i )
   {
     return m_ChoiceList[i].second;
   }
 
-  unsigned int GetNbChoice( void )
+  unsigned int GetNbChoices( void )
   {
     return m_ChoiceList.size();
   }
 
+  /** Set any value */
+  virtual void SetValue(unsigned int v)
+  {
+    // Perform any cast
+    m_CurrentChoice = v;
+
+    // Call Modified();
+    this->Modified();
+  }
+
+  /** Return any value */
+  virtual unsigned int GetValue()
+  {
+    return m_CurrentChoice;
+  }
+
   /** Set any value */
   virtual void SetAnyValue(boost::any v)
   {
     // Perform any cast
-    m_CurrentChoice = boost::any_cast<bool>(v);
+    m_CurrentChoice = boost::any_cast<unsigned int>(v);
 
     // Call Modified();
     this->Modified();
diff --git a/Code/Core/otbWrapperEmptyParameter.h b/Code/Core/otbWrapperEmptyParameter.h
index 6a38ffd9a89e5efa329c065fedfb38b51140a45c..ae1ad97f9a8bb33666f2e675dc0ea7780ed6bffc 100644
--- a/Code/Core/otbWrapperEmptyParameter.h
+++ b/Code/Core/otbWrapperEmptyParameter.h
@@ -60,6 +60,12 @@ public:
     return boost::any(m_Value);
   }
 
+  /** Set the value */
+  itkSetMacro(Value,bool);
+
+  /** Get the value */
+  itkGetMacro(Value,bool);
+
 
 protected:
   /** Constructor */
diff --git a/Code/Core/otbWrapperParameterList.h b/Code/Core/otbWrapperParameterList.h
index 566fcdfe0b11dacc344baad700ae01a2d1c8c85d..830283f69a4727d9df53b9804b26dbca4a92b781 100644
--- a/Code/Core/otbWrapperParameterList.h
+++ b/Code/Core/otbWrapperParameterList.h
@@ -27,29 +27,33 @@ namespace otb
 namespace Wrapper
 {
 
+// We'll see if we need more than that later...
+typedef std::vector<Parameter::Pointer> ParameterList;
+
 /**
  * \class WrapperParameterList
  */
+
+/*
 class ITK_EXPORT ParameterList : public itk::Object
 {
 public:
-  /** Standard class typedefs. */
   typedef ParameterList                        Self;
   typedef itk::Object                          Superclass;
   typedef itk::SmartPointer<Self>              Pointer;
   typedef itk::SmartPointer<const Self>        ConstPointer;
   typedef Parameter                            ParameterType;
 
-  /** Defining ::New() static method */
   itkNewMacro(Self);
 
-  /** RTTI support */
   itkTypeMacro(ParameterList,itk::Object);
 
   void AddParameter();
 
   ParameterType * GetParameter(std::string & key);
 
+  std::vector<Parameter::Pointer>& GetList();
+
 protected:
   ParameterList()
   {}
@@ -63,7 +67,7 @@ private:
   std::vector<Parameter::Pointer> m_ParameterList;
 
 };
-
+*/
 }
 }
 
diff --git a/Code/Core/otbWrapperStringParameter.h b/Code/Core/otbWrapperStringParameter.h
index 7d5e0891a5a8918cd5a534c783d544b3343c9654..bfb15a836093ec32fd09472763f27d9491851b95 100644
--- a/Code/Core/otbWrapperStringParameter.h
+++ b/Code/Core/otbWrapperStringParameter.h
@@ -60,13 +60,19 @@ public:
     return boost::any(m_Value);
   }
 
+  /** Set the value */
+  itkSetMacro(Value,std::string);
+
+  /** Get the value */
+  itkGetMacro(Value,std::string);
+
 protected:
   /** Constructor */
   StringParameter()
   {}
 
   /** Destructor */
-  ~StringParameter()
+  virtual ~StringParameter()
   {}
 
 private:
diff --git a/Code/Wrappers/QtWidget/CMakeLists.txt b/Code/Wrappers/QtWidget/CMakeLists.txt
index 04c6facbf473e72a9ef192447a83c404937f8cca..6ea1eaf1a66dc20c6bd1e729d6f8d39f2c5378da 100644
--- a/Code/Wrappers/QtWidget/CMakeLists.txt
+++ b/Code/Wrappers/QtWidget/CMakeLists.txt
@@ -1,6 +1,15 @@
 
 FILE(GLOB srcs "*.cxx")
-SET( WrappersQtWidget_MOC_HDR otbWrapperQtWidgetEmptyParameter.h otbWrapperQtWidgetFloatParameter.h )   
+SET( WrappersQtWidget_MOC_HDR
+       otbWrapperQtWidgetEmptyParameter.h
+       otbWrapperQtWidgetFloatParameter.h
+       otbWrapperQtWidgetIntParameter.h
+       otbWrapperQtWidgetStringParameter.h
+       otbWrapperQtWidgetChoiceParameter.h
+       otbWrapperQtWidgetParameterGroup.h
+       otbWrapperQtWidgetParameterLabel.h
+       )
+
 QT4_WRAP_CPP(WrappersQtWidget_MOC_SRC ${WrappersQtWidget_MOC_HDR})
 
 ADD_LIBRARY(OTBWrapperQtWidget ${srcs} ${WrappersQtWidget_MOC_SRC})
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameterFactory.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameter.cxx
similarity index 52%
rename from Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameterFactory.cxx
rename to Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameter.cxx
index 0e506e6669c8685f47464706058c777b22a0189d..043d5233e886ab63c0475a3f27361a12a99f447f 100644
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameterFactory.cxx
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameter.cxx
@@ -15,55 +15,43 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-
-#include "otbWrapperQtWidgetChoiceParameterFactory.h"
-#include "otbWrapperChoiceParameter.h"
-
+#include "otbWrapperQtWidgetChoiceParameter.h"
 
 namespace otb
 {
-
 namespace Wrapper
 {
 
-QtWidgetChoiceParameterFactory::QtWidgetChoiceParameterFactory()
+QtWidgetChoiceParameter::QtWidgetChoiceParameter(ChoiceParameter* param)
+: m_ChoiceParam(param)
 {
+  this->CreateWidget();
 }
 
-QtWidgetChoiceParameterFactory::~QtWidgetChoiceParameterFactory()
+QtWidgetChoiceParameter::~QtWidgetChoiceParameter()
 {
+
 }
 
-QWidget * QtWidgetChoiceParameterFactory::CreateQtWidget(Parameter * param)
+void QtWidgetChoiceParameter::CreateWidget()
 {
-  // Try to cast to choice parameter
-  ChoiceParameter * choiceParam = dynamic_cast<ChoiceParameter *>(param);
-
-  // Check if dynamic cast succeeds
-  if(!choiceParam)
-    {
-    return 0;
-    }
-
   // Set up input text edit
   QHBoxLayout *hLayout = new QHBoxLayout;
   hLayout->setSpacing(0);
   hLayout->setContentsMargins(0,0,0,0);
 
   QComboBox* combobox = new QComboBox;
-  combobox->setToolTip(choiceParam->GetDescription());
-
+  combobox->setToolTip(m_ChoiceParam->GetDescription());
 
-  for (unsigned int i = 0; i < choiceParam->GetNbChoice(); ++i)
+  for (unsigned int i = 0; i < m_ChoiceParam->GetNbChoices(); ++i)
     {
-    combobox->addItem( "test", QVariant("test") );
+    QString key = QString::fromStdString( m_ChoiceParam->GetChoiceKey(i) );
+    combobox->addItem( key, QVariant(key) );
     }
 
   hLayout->addWidget(combobox);
-  QGroupBox *paramHGroup = new QGroupBox;
-  paramHGroup->setLayout(hLayout);
-  return paramHGroup;
-
+  this->setLayout(hLayout);
 }
+
 }
 }
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameter.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameter.h
new file mode 100644
index 0000000000000000000000000000000000000000..bf01f945907117fbe11235594d2456fe94b0e647
--- /dev/null
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameter.h
@@ -0,0 +1,52 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+#ifndef __otbWrapperQtWidgetChoiceParameter_h
+#define __otbWrapperQtWidgetChoiceParameter_h
+
+#include <QtGui>
+#include "otbWrapperChoiceParameter.h"
+
+namespace otb
+{
+namespace Wrapper
+{
+
+/** \class
+ * \brief
+ */
+class QtWidgetChoiceParameter : public QWidget
+{
+  Q_OBJECT
+public:
+  QtWidgetChoiceParameter(ChoiceParameter*);
+  virtual ~QtWidgetChoiceParameter();
+
+private:
+  QtWidgetChoiceParameter(const QtWidgetChoiceParameter&); //purposely not implemented
+  void operator=(const QtWidgetChoiceParameter&); //purposely not implemented
+
+  void CreateWidget();
+
+  ChoiceParameter::Pointer m_ChoiceParam;
+};
+
+
+}
+}
+
+#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameterFactory.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameterFactory.h
deleted file mode 100644
index 7211a431fc6d1ddf2014c1824b648bc273257229..0000000000000000000000000000000000000000
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetChoiceParameterFactory.h
+++ /dev/null
@@ -1,59 +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.
-
-=========================================================================*/
-#ifndef __otbWrapperQtWidgetChoiceParameterFactory_h
-#define __otbWrapperQtWidgetChoiceParameterFactory_h
-
-#include "otbWrapperChoiceParameter.h"
-#include "otbWrapperQtWidgetParameterFactory.h"
-
-namespace otb
-{
-namespace Wrapper
-{
-
-class QtWidgetChoiceParameterFactory
-: public QtWidgetParameterFactory
-{
-public:
-  /** Standard class typedef */
-  typedef QtWidgetChoiceParameterFactory Self;
-  typedef QtWidgetParameterFactory          Superclass;
-  typedef itk::SmartPointer<Self>           Pointer;
-  typedef itk::SmartPointer<const Self>     ConstPointer;
-
-  /** Defining ::New() static method */
-  itkNewMacro(Self);
-  
-  /** RTTI support */
-  itkTypeMacro(QtWidgetChoiceParameterFactory,otb::Wrapper::QtWidgetParameterFactory);
-
-  /** Create the appropriate ImageIO depending on the particulars of the file. */
-  static QWidget * CreateQtWidget(Parameter * param);
-
-protected:
-  QtWidgetChoiceParameterFactory();
-  virtual ~QtWidgetChoiceParameterFactory();
-
-private:
-  QtWidgetChoiceParameterFactory(const Self&); //purposely not implemented
-  void operator=(const Self&); //purposely not implemented
-};
-}
-}
-
-#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameterFactory.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameterFactory.h
deleted file mode 100644
index e14490459c50ea082504ce3781eb61a2c2f16ad4..0000000000000000000000000000000000000000
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameterFactory.h
+++ /dev/null
@@ -1,61 +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.
-
-=========================================================================*/
-#ifndef __otbWrapperQtEmptyWidgetFactory_h
-#define __otbWrapperQtEmptyWidgetFactory_h
-
-#include <QtGui>
-#include "otbWrapperParameter.h"
-
-namespace otb
-{
-namespace Wrapper
-{
-
-/** \class ImageIOFactory
- * \brief Create instances of ImageIO objects using an object factory.
- */
-class ITK_EXPORT QtWidgetEmptyParameterFactory : public itk::Object
-{
-public:
-  /** Standard class typedefs. */
-  typedef QtWidgetEmptyParameterFactory Self;
-  typedef itk::Object                   Superclass;
-  typedef itk::SmartPointer<Self>       Pointer;
-  typedef itk::SmartPointer<const Self> ConstPointer;
-
-  /** Run-time type information (and related methods). */
-  itkTypeMacro(QtWidgetEmptyParameterFactory, Object);
-
-  /** Create the appropriate ImageIO depending on the particulars of the file. */
-  static QWidget* CreateQtWidget( Parameter* param );
-
-protected:
-  QtWidgetEmptyParameterFactory();
-  virtual ~QtWidgetEmptyParameterFactory();
-
-private:
-  QtWidgetEmptyParameterFactory(const Self&); //purposely not implemented
-  void operator=(const Self&); //purposely not implemented
-
-};
-
-
-}
-}
-
-#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameter.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameter.h
index e8377b5b84f1556b94e240c2b70c1579eca155f6..15f3100640dadcdfc5dddbcd87dd7ebac57c4ae9 100644
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameter.h
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameter.h
@@ -41,6 +41,7 @@ private:
   QtWidgetFloatParameter(const QtWidgetFloatParameter&); //purposely not implemented
   void operator=(const QtWidgetFloatParameter&); //purposely not implemented
 
+  FloatParameter::Pointer m_FloatParam;
 };
 
 
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameterFactory.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameterFactory.h
deleted file mode 100644
index 23b30d5a32e9bb919cc70c9aaf3b8bebd625b15d..0000000000000000000000000000000000000000
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameterFactory.h
+++ /dev/null
@@ -1,59 +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.
-
-=========================================================================*/
-#ifndef __otbWrapperQtWidgetFloatParameterFactory_h
-#define __otbWrapperQtWidgetFloatParameterFactory_h
-
-#include "otbWrapperNumericalParameter.h"
-#include "otbWrapperQtWidgetParameterFactory.h"
-
-namespace otb
-{
-namespace Wrapper
-{
-
-class QtWidgetFloatParameterFactory
-: public QtWidgetParameterFactory
-{
-public:
-  /** Standard class typedef */
-  typedef QtWidgetFloatParameterFactory Self;
-  typedef QtWidgetParameterFactory          Superclass;
-  typedef itk::SmartPointer<Self>           Pointer;
-  typedef itk::SmartPointer<const Self>     ConstPointer;
-
-  /** Defining ::New() static method */
-  itkNewMacro(Self);
-  
-  /** RTTI support */
-  itkTypeMacro(QtWidgetFloatParameterFactory,otb::Wrapper::QtWidgetParameterFactory);
-
-  /** Create the appropriate ImageIO depending on the particulars of the file. */
-  static QWidget * CreateQtWidget(Parameter * param);
-
-protected:
-  QtWidgetFloatParameterFactory();
-  ~QtWidgetFloatParameterFactory();
-
-private:
-  QtWidgetFloatParameterFactory(const Self&); //purposely not implemented
-  void operator=(const Self&); //purposely not implemented
-};
-}
-}
-
-#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameterFactory.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameter.cxx
similarity index 50%
rename from Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameterFactory.cxx
rename to Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameter.cxx
index d035fc16aab207082d2414af83e64fa7b8ad84f4..53b97ce0ad2ea1e3479941e287ce6a7f35782970 100644
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetEmptyParameterFactory.cxx
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameter.cxx
@@ -15,52 +15,34 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#include "otbWrapperQtWidgetEmptyParameterFactory.h"
-#include "otbWrapperEmptyParameter.h"
+#include "otbWrapperQtWidgetIntParameter.h"
 
 namespace otb
 {
 namespace Wrapper
 {
 
-QtWidgetEmptyParameterFactory::QtWidgetEmptyParameterFactory()
+QtWidgetIntParameter::QtWidgetIntParameter(IntParameter* param)
+: m_IntParam(param)
 {
-}
-
-QtWidgetEmptyParameterFactory::~QtWidgetEmptyParameterFactory()
-{
-
-}
-
-QWidget*
-QtWidgetEmptyParameterFactory::CreateQtWidget( Parameter* param )
-{
-  // Try to cast to int parameter
-  EmptyParameter * emptyParam = dynamic_cast<EmptyParameter *>(param);
-
-  // Check if dynamic cast succeeds
-  if(!emptyParam)
-    {
-    return 0;
-    }
-
   // Set up input text edit
   QHBoxLayout *hLayout = new QHBoxLayout;
   hLayout->setSpacing(0);
   hLayout->setContentsMargins(0,0,0,0);
 
-  QCheckBox* checkbox = new QCheckBox;
-  checkbox->setToolTip(emptyParam->GetDescription());
+  QSpinBox* input = new QSpinBox;
+  input->setRange(param->GetMinimumValue(), param->GetMaximumValue());
+  input->setToolTip(param->GetDescription());
 
-  QString optionID(emptyParam->GetName());
-  hLayout->addWidget(checkbox);
+  hLayout->addWidget(input);
   hLayout->addStretch();
 
-  QGroupBox *paramHGroup = new QGroupBox;
-  paramHGroup->setLayout(hLayout);
-  return paramHGroup;
+  this->setLayout(hLayout);
 }
 
+QtWidgetIntParameter::~QtWidgetIntParameter()
+{
+}
 
 }
 }
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameterFactory.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameter.h
similarity index 54%
rename from Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameterFactory.cxx
rename to Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameter.h
index 51bd373bc2deeb8c6422e09ba95e1cee068106a7..e7c7bc132f54c33c9696c6335cbb65e283b9bd83 100644
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetFloatParameterFactory.cxx
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameter.h
@@ -15,35 +15,37 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
+#ifndef __otbWrapperQtWidgetIntParameter_h
+#define __otbWrapperQtWidgetIntParameter_h
 
-#include "otbWrapperQtWidgetFloatParameterFactory.h"
+#include <QtGui>
+#include "otbWrapperParameter.h"
 #include "otbWrapperNumericalParameter.h"
-#include "otbWrapperQtWidgetFloatParameter.h"
 
 namespace otb
 {
-
 namespace Wrapper
 {
 
-QtWidgetFloatParameterFactory::QtWidgetFloatParameterFactory()
-{}
+/** \class
+ * \brief
+ */
+class QtWidgetIntParameter : public QWidget
+{
+  Q_OBJECT
+public:
+  QtWidgetIntParameter(IntParameter*);
+  virtual ~QtWidgetIntParameter();
+
+private:
+  QtWidgetIntParameter(const QtWidgetIntParameter&); //purposely not implemented
+  void operator=(const QtWidgetIntParameter&); //purposely not implemented
+
+  IntParameter::Pointer m_IntParam;
+};
 
-QtWidgetFloatParameterFactory::~QtWidgetFloatParameterFactory()
-{}
 
-QWidget * QtWidgetFloatParameterFactory::CreateQtWidget(Parameter * param)
-{
-  // Try to cast to int parameter
-  FloatParameter * floatParam = dynamic_cast<FloatParameter *>(param);
-
-  // Check if dynamic cast succeeds
-  if(!floatParam)
-    {
-    return 0;
-    }
-  
-  return new QtWidgetFloatParameter(floatParam);
-}
 }
 }
+
+#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameterFactory.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameterFactory.cxx
deleted file mode 100644
index de7f7aeb5862e73ee0c18d117178d6a182c952d0..0000000000000000000000000000000000000000
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameterFactory.cxx
+++ /dev/null
@@ -1,70 +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 "otbWrapperQtWidgetIntParameterFactory.h"
-#include "otbWrapperNumericalParameter.h"
-
-
-namespace otb
-{
-
-namespace Wrapper
-{
-
-QtWidgetIntParameterFactory::QtWidgetIntParameterFactory()
-{}
-
-QtWidgetIntParameterFactory::~QtWidgetIntParameterFactory()
-{}
-
-QWidget * QtWidgetIntParameterFactory::CreateQtWidget(Parameter * param)
-{
-  // Try to cast to int parameter
-  IntParameter * intParam = dynamic_cast<IntParameter *>(param);
-
-  // Check if dynamic cast succeeds
-  if(!intParam)
-    {
-    return 0;
-    }
-  
-  // a GridLayout with two colums : option name / option inputs
-  QGroupBox *gridGroup = new QGroupBox;
-  gridGroup->setFlat(true);
-
-  QGridLayout *gridLayout = new QGridLayout;
-  gridLayout->setSpacing(1);
-  gridLayout->setContentsMargins(0,0,0,0);
-  gridGroup->setLayout(gridLayout);
-  
-  QSpinBox* input = new QSpinBox;
-  input->setRange(intParam->GetMinimumValue(), intParam->GetMaximumValue());
-  input->setToolTip(intParam->GetDescription());
-
-  // Set up label
-  QLabel *label = new QLabel;
-  label->setText(intParam->GetName());
-  label->setToolTip(intParam->GetDescription());
-
-  gridLayout->addWidget(label,0,0);
-  gridLayout->addWidget(input,0,1);
-
-  return gridGroup;
-}
-}
-}
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameterFactory.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameterFactory.h
deleted file mode 100644
index 42274aad10d6db39ef26a0311498a5cb04f5238b..0000000000000000000000000000000000000000
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetIntParameterFactory.h
+++ /dev/null
@@ -1,59 +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.
-
-=========================================================================*/
-#ifndef __otbWrapperQtWidgetIntParameterFactory_h
-#define __otbWrapperQtWidgetIntParameterFactory_h
-
-#include "otbWrapperNumericalParameter.h"
-#include "otbWrapperQtWidgetParameterFactory.h"
-
-namespace otb
-{
-namespace Wrapper
-{
-
-class QtWidgetIntParameterFactory
-: public QtWidgetParameterFactory
-{
-public:
-  /** Standard class typedef */
-  typedef QtWidgetIntParameterFactory Self;
-  typedef QtWidgetParameterFactory          Superclass;
-  typedef itk::SmartPointer<Self>           Pointer;
-  typedef itk::SmartPointer<const Self>     ConstPointer;
-
-  /** Defining ::New() static method */
-  itkNewMacro(Self);
-  
-  /** RTTI support */
-  itkTypeMacro(QtWidgetIntParameterFactory,otb::Wrapper::QtWidgetParameterFactory);
-
-  /** Create the appropriate ImageIO depending on the particulars of the file. */
-  static QWidget * CreateQtWidget(Parameter * param);
-
-protected:
-  QtWidgetIntParameterFactory();
-  ~QtWidgetIntParameterFactory();
-
-private:
-  QtWidgetIntParameterFactory(const Self&); //purposely not implemented
-  void operator=(const Self&); //purposely not implemented
-};
-}
-}
-
-#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterFactory.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterFactory.cxx
index d3d9217b9908be091d6141f3bd6598ec89f6837e..bdce1cd02d7f02b36648e0239b5fe04981e3eabb 100644
--- a/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterFactory.cxx
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterFactory.cxx
@@ -17,50 +17,80 @@
 =========================================================================*/
 #include "otbWrapperQtWidgetParameterFactory.h"
 
-
-//#include "otbWrapperQtWidgetNumericalParameterFactory.h"
-#include "otbWrapperQtWidgetEmptyParameterFactory.h"
-#include "otbWrapperQtWidgetIntParameterFactory.h"
-#include "otbWrapperQtWidgetFloatParameterFactory.h"
-//#include "otbWrapperQtWidgetStringParameterFactory.h"
-//#include "otbWrapperQtWidgetChoiceParameterFactory.h"
+#include "otbWrapperQtWidgetEmptyParameter.h"
+#include "otbWrapperQtWidgetIntParameter.h"
+#include "otbWrapperQtWidgetFloatParameter.h"
+#include "otbWrapperQtWidgetStringParameter.h"
+#include "otbWrapperQtWidgetChoiceParameter.h"
 
 namespace otb
 {
 namespace Wrapper
 {
 
-QtWidgetParameterFactory::QtWidgetParameterFactory()
+template <class TParameterType, class TQtWidget>
+class QtWidgetParameterGenericFactory
 {
+public:
+
+  static bool CanCreate( Parameter* param )
+  {
+    return dynamic_cast<TParameterType *>(param) != 0;
+  }
+
+  static QWidget* Create( Parameter* param )
+  {
+  QWidget* widget = 0;
+  TParameterType* specificParam = dynamic_cast<TParameterType *>(param);
+
+  if (specificParam)
+    {
+    widget = new TQtWidget(specificParam);
+    }
+  return widget;
+  }
+};
 
+QtWidgetParameterFactory::QtWidgetParameterFactory()
+{
 }
 
 
 QtWidgetParameterFactory::~QtWidgetParameterFactory()
 {
-
 }
 
 QWidget*
 QtWidgetParameterFactory::CreateQtWidget( Parameter* param )
 {
-
   QWidget* widget = 0;
 
-  if (!widget)
-    widget = QtWidgetIntParameterFactory::CreateQtWidget( param );
-
-    if (!widget)
-      widget = QtWidgetFloatParameterFactory::CreateQtWidget( param );
-
-  if (!widget)
-    widget = QtWidgetEmptyParameterFactory::CreateQtWidget( param );
-
-  //  if (!widget)
-  //   widget = QtWidgetStringParameterFactory::CreateQtWidget( param );
-
-  //if (!widget)
-  //  widget = QtWidgetChoiceParameterFactory::CreateQtWidget( param );
+  typedef QtWidgetParameterGenericFactory<EmptyParameter, QtWidgetEmptyParameter>   EmptyWidgetFactory;
+  typedef QtWidgetParameterGenericFactory<IntParameter, QtWidgetIntParameter>       IntWidgetFactory;
+  typedef QtWidgetParameterGenericFactory<FloatParameter, QtWidgetFloatParameter>   FloatWidgetFactory;
+  typedef QtWidgetParameterGenericFactory<StringParameter, QtWidgetStringParameter> StringWidgetFactory;
+  typedef QtWidgetParameterGenericFactory<ChoiceParameter, QtWidgetChoiceParameter> ChoiceWidgetFactory;
+
+  if ( EmptyWidgetFactory::CanCreate(param) )
+    {
+    widget = EmptyWidgetFactory::Create(param);
+    }
+  else if ( IntWidgetFactory::CanCreate(param) )
+    {
+    widget = IntWidgetFactory::Create(param);
+    }
+  else if ( FloatWidgetFactory::CanCreate(param) )
+    {
+    widget = FloatWidgetFactory::Create(param);
+    }
+  else if ( ChoiceWidgetFactory::CanCreate(param) )
+    {
+    widget = ChoiceWidgetFactory::Create(param);
+    }
+  else if ( StringWidgetFactory::CanCreate(param) )
+    {
+    widget = StringWidgetFactory::Create(param);
+    }
 
   return widget;
 }
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterGroup.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterGroup.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b623c7f24d20cf5aee633752d8fa1bfa37b13632
--- /dev/null
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterGroup.cxx
@@ -0,0 +1,61 @@
+/*=========================================================================
+
+  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 "otbWrapperQtWidgetParameterGroup.h"
+#include "otbWrapperQtWidgetParameterLabel.h"
+#include "otbWrapperQtWidgetParameterFactory.h"
+
+namespace otb
+{
+namespace Wrapper
+{
+
+QtWidgetParameterGroup::QtWidgetParameterGroup(ParameterList paramList)
+: m_ParamList(paramList)
+{
+  this->CreateWidget();
+}
+
+QtWidgetParameterGroup::~QtWidgetParameterGroup()
+{
+}
+
+void QtWidgetParameterGroup::CreateWidget()
+{
+  // a GridLayout with two colums : parameter label / parameter widget
+  QGridLayout *gridLayout = new QGridLayout;
+  gridLayout->setSpacing(1);
+  gridLayout->setContentsMargins(0,0,0,0);
+
+  ParameterList::const_iterator it  = m_ParamList.begin();
+  ParameterList::const_iterator end = m_ParamList.end();
+
+  unsigned int i = 0;
+  for (; it != end; ++it, ++i)
+    {
+    QWidget* label = new QtWidgetParameterLabel( *it );
+    gridLayout->addWidget(label, i, 0);
+
+    QWidget* specificWidget = QtWidgetParameterFactory::CreateQtWidget( *it );
+    gridLayout->addWidget(specificWidget, i, 1);
+    }
+
+  this->setLayout(gridLayout);
+}
+
+}
+}
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterGroup.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterGroup.h
new file mode 100644
index 0000000000000000000000000000000000000000..d316a4481a42d8b07eca3e75d761b0f40031a60c
--- /dev/null
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterGroup.h
@@ -0,0 +1,53 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+#ifndef __otbWrapperQtWidgetParameterGroup_h
+#define __otbWrapperQtWidgetParameterGroup_h
+
+#include <QtGui>
+#include "otbWrapperParameterList.h"
+
+namespace otb
+{
+namespace Wrapper
+{
+
+/** \class
+ * \brief
+ */
+class QtWidgetParameterGroup : public QWidget
+{
+  Q_OBJECT
+public:
+  QtWidgetParameterGroup(ParameterList);
+  virtual ~QtWidgetParameterGroup();
+
+private:
+  QtWidgetParameterGroup(const QtWidgetParameterGroup&); //purposely not implemented
+  void operator=(const QtWidgetParameterGroup&); //purposely not implemented
+
+  void CreateWidget();
+
+  ParameterList m_ParamList;
+
+};
+
+
+}
+}
+
+#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterLabel.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterLabel.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..ead9a072be3883121ec1230d3d4cb4621c89cff9
--- /dev/null
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterLabel.cxx
@@ -0,0 +1,46 @@
+/*=========================================================================
+
+  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 "otbWrapperQtWidgetParameterLabel.h"
+
+namespace otb
+{
+namespace Wrapper
+{
+
+QtWidgetParameterLabel::QtWidgetParameterLabel(Parameter* param)
+{
+  // Set up label
+  QLabel *label = new QLabel;
+
+  label->setText(param->GetName());
+  label->setToolTip(param->GetName());
+
+  QHBoxLayout *labelLayout = new QHBoxLayout;
+  labelLayout->setSpacing(0);
+  labelLayout->setContentsMargins(0,0,0,0);
+  labelLayout->addWidget(label);
+
+  this->setLayout(labelLayout);
+}
+
+QtWidgetParameterLabel::~QtWidgetParameterLabel()
+{
+}
+
+}
+}
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterLabel.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterLabel.h
new file mode 100644
index 0000000000000000000000000000000000000000..7803cc90220d3c418f146f05f2e2433d5a6ddbf9
--- /dev/null
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetParameterLabel.h
@@ -0,0 +1,48 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+#ifndef __otbWrapperQtWidgetParameterLabel_h
+#define __otbWrapperQtWidgetParameterLabel_h
+
+#include <QtGui>
+#include "otbWrapperParameter.h"
+
+namespace otb
+{
+namespace Wrapper
+{
+
+/** \class
+ * \brief
+ */
+class QtWidgetParameterLabel : public QWidget
+{
+  Q_OBJECT
+public:
+  QtWidgetParameterLabel(Parameter*);
+  virtual ~QtWidgetParameterLabel();
+
+private:
+  QtWidgetParameterLabel(const QtWidgetParameterLabel&); //purposely not implemented
+  void operator=(const QtWidgetParameterLabel&); //purposely not implemented
+};
+
+
+}
+}
+
+#endif
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetStringParameter.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetStringParameter.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..f540c57eb550c7bed430875845a08598be905e7c
--- /dev/null
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetStringParameter.cxx
@@ -0,0 +1,51 @@
+/*=========================================================================
+
+  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 "otbWrapperQtWidgetStringParameter.h"
+
+namespace otb
+{
+namespace Wrapper
+{
+
+QtWidgetStringParameter::QtWidgetStringParameter(StringParameter* param)
+: m_StringParam(param)
+{
+  this->CreateWidget();
+}
+
+QtWidgetStringParameter::~QtWidgetStringParameter()
+{
+}
+
+
+void QtWidgetStringParameter::CreateWidget()
+{
+  // Set up input text edit
+  QHBoxLayout *hLayout = new QHBoxLayout;
+  hLayout->setSpacing(0);
+  hLayout->setContentsMargins(0,0,0,0);
+
+  QLineEdit* input = new QLineEdit;
+  input->setToolTip(m_StringParam->GetDescription());
+  hLayout->addWidget(input);
+
+  this->setLayout(hLayout);
+}
+
+}
+}
diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetStringParameter.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetStringParameter.h
new file mode 100644
index 0000000000000000000000000000000000000000..b9259c58c11f51bb768e033203891e2e60b64b36
--- /dev/null
+++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetStringParameter.h
@@ -0,0 +1,52 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+#ifndef __otbWrapperQtWidgetStringParameter_h
+#define __otbWrapperQtWidgetStringParameter_h
+
+#include <QtGui>
+#include "otbWrapperStringParameter.h"
+
+namespace otb
+{
+namespace Wrapper
+{
+
+/** \class
+ * \brief
+ */
+class QtWidgetStringParameter : public QWidget
+{
+  Q_OBJECT
+public:
+  QtWidgetStringParameter(StringParameter*);
+  virtual ~QtWidgetStringParameter();
+
+private:
+  QtWidgetStringParameter(const QtWidgetStringParameter&); //purposely not implemented
+  void operator=(const QtWidgetStringParameter&); //purposely not implemented
+
+  void CreateWidget();
+
+  StringParameter::Pointer m_StringParam;
+};
+
+
+}
+}
+
+#endif
diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt
index 1eeced66817c7845e07d3bfe36ac72480fb5c273..3177d6867200d8151f942e6852aa87862ad84c6d 100644
--- a/Testing/CMakeLists.txt
+++ b/Testing/CMakeLists.txt
@@ -54,6 +54,10 @@ ADD_TEST(owTvQtWidgetParameterFactory ${OTB_WRAPPER_QT_TESTS}
         otbWrapperQtWidgetParameterFactory
 )
 
+ADD_TEST(owTvQtWidgetParameterGroup ${OTB_WRAPPER_QT_TESTS}
+        otbWrapperQtWidgetParameterGroup
+)
+
 ENDIF(OTB_USE_QT)
 
 # ----------------Source files CXX -----------------------------------
diff --git a/Testing/otbWrapperParameterListTest.cxx b/Testing/otbWrapperParameterListTest.cxx
index 6528a585713d78a75801610ab6e80c38d6889e01..bd5781aaa6e7e0eaf2b86f6a02762be41dd337fd 100644
--- a/Testing/otbWrapperParameterListTest.cxx
+++ b/Testing/otbWrapperParameterListTest.cxx
@@ -24,7 +24,7 @@
 int otbWrapperParameterListNew(int argc, char* argv[])
 {
   typedef otb::Wrapper::ParameterList ParameterListType;
-  ParameterListType::Pointer parameter = ParameterListType::New();
+  ParameterListType parameters;
 
   //std::cout << parameter << std::endl;
 
diff --git a/Testing/otbWrapperQtWidgetParameterFactory.cxx b/Testing/otbWrapperQtWidgetParameterFactory.cxx
index efae231cebfe3feb571d653e67703e5fd7b9c992..019094da3d4fa5fa0255d31da8c7b54ced83c1cd 100644
--- a/Testing/otbWrapperQtWidgetParameterFactory.cxx
+++ b/Testing/otbWrapperQtWidgetParameterFactory.cxx
@@ -22,6 +22,9 @@
 #include "otbWrapperQtWidgetParameterFactory.h"
 #include "otbWrapperEmptyParameter.h"
 #include "otbWrapperNumericalParameter.h"
+#include "otbWrapperChoiceParameter.h"
+#include "otbWrapperStringParameter.h"
+#include "otbWrapperQtWidgetParameterGroup.h"
 
 int otbWrapperQtWidgetParameterFactory(int argc, char* argv[])
 {
@@ -32,6 +35,7 @@ int otbWrapperQtWidgetParameterFactory(int argc, char* argv[])
   otb::Wrapper::IntParameter::Pointer   intParam = otb::Wrapper::IntParameter::New();
   otb::Wrapper::FloatParameter::Pointer floatParam = otb::Wrapper::FloatParameter::New();
   otb::Wrapper::EmptyParameter::Pointer emptyParam = otb::Wrapper::EmptyParameter::New();
+  otb::Wrapper::ChoiceParameter::Pointer choiceParam = otb::Wrapper::ChoiceParameter::New();
 
   intParam->SetName("Int parameter");
   intParam->SetDescription("This is an int parameter");
@@ -53,16 +57,24 @@ int otbWrapperQtWidgetParameterFactory(int argc, char* argv[])
   emptyParam->SetDescription("This is an empty parameter");
   emptyParam->SetKey("empty");
 
+  choiceParam->SetName("Choice parameter");
+  choiceParam->SetDescription("This is an choice parameter");
+  choiceParam->SetKey("choice");
+  choiceParam->AddChoice("choice1", 0);
+  choiceParam->AddChoice("choice2", 0);
+  choiceParam->AddChoice("choice3", 0);
 
-  QWidget * intWidget = factory->CreateQtWidget(intParam);
+  QWidget * intWidget   = factory->CreateQtWidget(intParam);
   QWidget * floatWidget = factory->CreateQtWidget(floatParam);
   QWidget * emptyWidget = factory->CreateQtWidget(emptyParam);
+  QWidget * choiceWidget = factory->CreateQtWidget(choiceParam);
 
   if(intWidget)
     {
     intWidget->show();
     floatWidget->show();
     emptyWidget->show();
+    choiceWidget->show();
 
     return app.exec();
     return EXIT_SUCCESS;
@@ -70,3 +82,68 @@ int otbWrapperQtWidgetParameterFactory(int argc, char* argv[])
 
   return EXIT_FAILURE;
 }
+
+
+
+int otbWrapperQtWidgetParameterGroup(int argc, char* argv[])
+{
+  QApplication app(argc, argv);
+
+  otb::Wrapper::QtWidgetParameterFactory::Pointer factory = otb::Wrapper::QtWidgetParameterFactory::New();
+
+  otb::Wrapper::IntParameter::Pointer   intParam = otb::Wrapper::IntParameter::New();
+  otb::Wrapper::FloatParameter::Pointer floatParam = otb::Wrapper::FloatParameter::New();
+  otb::Wrapper::EmptyParameter::Pointer emptyParam = otb::Wrapper::EmptyParameter::New();
+  otb::Wrapper::ChoiceParameter::Pointer choiceParam = otb::Wrapper::ChoiceParameter::New();
+  otb::Wrapper::StringParameter::Pointer stringParam = otb::Wrapper::StringParameter::New();
+
+  intParam->SetName("Int parameter");
+  intParam->SetDescription("This is an int parameter");
+  intParam->SetKey("int");
+  intParam->SetDefaultValue(10);
+  intParam->SetValue(5);
+  intParam->SetMinimumValue(-10);
+  intParam->SetMaximumValue(10);
+
+  floatParam->SetName("Float parameter");
+  floatParam->SetDescription("This is an float parameter");
+  floatParam->SetKey("float");
+  floatParam->SetDefaultValue(0.567);
+  floatParam->SetValue(0.21);
+  floatParam->SetMinimumValue(-3.75);
+  floatParam->SetMaximumValue(4.97);
+
+  emptyParam->SetName("Empty parameter");
+  emptyParam->SetDescription("This is an empty parameter");
+  emptyParam->SetKey("empty");
+
+  choiceParam->SetName("Choice parameter");
+  choiceParam->SetDescription("This is an choice parameter");
+  choiceParam->SetKey("choice");
+  choiceParam->AddChoice("choice1", 0);
+  choiceParam->AddChoice("choice2", 0);
+  choiceParam->AddChoice("choice3", 0);
+
+  stringParam->SetName("String parameter");
+  stringParam->SetDescription("This is a string parameter");
+  stringParam->SetKey("string");
+  stringParam->SetValue("test value");
+
+  otb::Wrapper::ParameterList list;
+  list.push_back((otb::Wrapper::Parameter*)intParam);
+  list.push_back((otb::Wrapper::Parameter*)floatParam);
+  list.push_back((otb::Wrapper::Parameter*)emptyParam);
+  list.push_back((otb::Wrapper::Parameter*)choiceParam);
+  list.push_back((otb::Wrapper::Parameter*)stringParam);
+
+  QWidget * group = new otb::Wrapper::QtWidgetParameterGroup(list);
+
+  if(group)
+    {
+    group->show();
+    return app.exec();
+    // return EXIT_SUCCESS;
+    }
+
+  return EXIT_FAILURE;
+}
diff --git a/Testing/otbWrapperQtWidgetTests.cxx b/Testing/otbWrapperQtWidgetTests.cxx
index 8cdafefb8d44da9090ef9206f75a734cf21837fb..0db694efda4eda4bb0932ec9db37507121ed9bc0 100644
--- a/Testing/otbWrapperQtWidgetTests.cxx
+++ b/Testing/otbWrapperQtWidgetTests.cxx
@@ -25,4 +25,5 @@
 void RegisterTests()
 {
   REGISTER_TEST(otbWrapperQtWidgetParameterFactory);
+  REGISTER_TEST(otbWrapperQtWidgetParameterGroup);
 }