diff --git a/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx b/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx
index 6eb401b1d743dd0756f580672ec0e050f6233d0f..065545fef96020462279588093db6c9a4f2a97ff 100644
--- a/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx
+++ b/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx
@@ -98,6 +98,8 @@ bool CommandLineLauncher::Load(const std::string & exp)
 
 bool CommandLineLauncher::Load()
 {
+  // Add a space to clarify output logs
+  std::cerr << std::endl;
   if (m_Expression == "")
     {
     itkExceptionMacro("No expression specified...");
@@ -105,7 +107,7 @@ bool CommandLineLauncher::Load()
 
   if (this->CheckParametersPrefix() == false)
     {
-    std::cerr << "ERROR: Parameter keys have to set using \"--\", not \"-\"" << std::endl;
+    std::cerr << "ERROR: Parameter keys have to set using \"-\", not \"--\"" << std::endl;
     return false;
     }
 
@@ -180,6 +182,7 @@ bool CommandLineLauncher::BeforeExecute()
   // at least 1 mandatory parameter
   const std::vector<std::string> appKeyList = m_Application->GetParametersKeys(true);
   std::vector<std::string> keyList = m_Parser->GetKeyList( m_Expression );
+
   if( appKeyList.size()!=0 && keyList.size()==0 )
     {
     std::cerr << "ERROR: Waiting for at least one parameter..." << std::endl;
@@ -188,14 +191,14 @@ bool CommandLineLauncher::BeforeExecute()
     }
 
   // if help is asked...
-  if (m_Parser->IsAttributExists("--help", m_Expression) == true)
+  if (m_Parser->IsAttributExists("-help", m_Expression) == true)
     {
     this->DisplayHelp();
     return false;
     }
 
   // if we want to load test environnement
-  if (m_Parser->IsAttributExists("--testenv", m_Expression) == true)
+  if (m_Parser->IsAttributExists("-testenv", m_Expression) == true)
     {
     this->LoadTestEnv();
     }
@@ -233,10 +236,10 @@ bool CommandLineLauncher::BeforeExecute()
     }
 
   // Check for the progress report
-  if (m_Parser->IsAttributExists("--progress", m_Expression) == true)
+  if (m_Parser->IsAttributExists("-progress", m_Expression) == true)
     {
     std::vector<std::string> val;
-    val = m_Parser->GetAttribut("--progress", m_Expression);
+    val = m_Parser->GetAttribut("-progress", m_Expression);
     if (val.size() != 1)
       {
       std::cerr << "ERROR: Invalid progress argument, must be unique value..." << std::endl;
@@ -342,14 +345,14 @@ CommandLineLauncher::ParamResultType CommandLineLauncher::LoadParameters()
     Parameter::Pointer param = m_Application->GetParameterByKey(paramKey);
     ParameterType type = m_Application->GetParameterType(paramKey);
 
-    const bool paramExists(m_Parser->IsAttributExists(std::string("--").append(paramKey), m_Expression));
+    const bool paramExists(m_Parser->IsAttributExists(std::string("-").append(paramKey), m_Expression));
 
 
     // if param is a Group, dont do anything, ParamGroup dont have values
     if (type != ParameterType_Group)
       {
       // Get the attribute relative to this key as vector
-      values = m_Parser->GetAttribut(std::string("--").append(paramKey), m_Expression);
+      values = m_Parser->GetAttribut(std::string("-").append(paramKey), m_Expression);
     
 
       // If the param does not exists in the cli, dont try to set a
@@ -380,7 +383,7 @@ CommandLineLauncher::ParamResultType CommandLineLauncher::LoadParameters()
             else
               if (type == ParameterType_String)
                 {
-                dynamic_cast<StringParameter *> (param.GetPointer())->SetValue( m_Parser->GetAttributAsString(std::string("--").append(paramKey), m_Expression) );
+                dynamic_cast<StringParameter *> (param.GetPointer())->SetValue( m_Parser->GetAttributAsString(std::string("-").append(paramKey), m_Expression) );
                 }
               else
                 if (type == ParameterType_OutputImage)
@@ -436,19 +439,6 @@ CommandLineLauncher::ParamResultType CommandLineLauncher::LoadParameters()
                       {
                       std::cerr << "ERROR: Invalid number of value for: \"" << paramKey << "\", must have 1 value, not  "
                                 << values.size() << std::endl;
-                      // Try to find a "-" instead of "--"...
-                      itk::OStringStream oss;
-                      for (unsigned int i = 0; i < values.size(); i++)
-                        {
-                        if (values[i][0] == '-')
-                          {
-                          oss << std::string(values[i]).substr(1, std::string(values[i]).size() - 1) << ", ";
-                          }
-                        }
-                      if (oss.str().size() > 0) std::cerr << "ERROR: If values \""
-                                                          << oss.str().substr(0, oss.str().size() - 2)
-                                                          << "\" is/are keys, it should be prefix by \"--\"..." << std::endl;
-
                       return INVALIDNUMBEROFVALUE;
                       }
 
@@ -518,7 +508,7 @@ CommandLineLauncher::ParamResultType CommandLineLauncher::LoadParameters()
         }
       else
         {
-        values = m_Parser->GetAttribut(std::string("--").append(paramKey), m_Expression);
+        values = m_Parser->GetAttribut(std::string("-").append(paramKey), m_Expression);
         if (values.size() == 0 && !m_Application->HasValue(paramKey))
           {
           std::cerr << "ERROR: Missing mandatory parameter: " << paramKey << std::endl;
@@ -532,7 +522,7 @@ CommandLineLauncher::ParamResultType CommandLineLauncher::LoadParameters()
       {
       if( paramExists )
         {
-        values = m_Parser->GetAttribut(std::string("--").append(paramKey), m_Expression);
+        values = m_Parser->GetAttribut(std::string("-").append(paramKey), m_Expression);
         if (values.size() == 0)
           {
           std::cerr << "ERROR: Missing mandatory parameter: " << paramKey << std::endl;
@@ -621,7 +611,7 @@ std::string CommandLineLauncher::DisplayParameterHelp(const Parameter::Pointer &
   // is root OR its parent is active
   // NB: a root parameter is not active
   bool isMissing = false;
-  if (!m_Parser->IsAttributExists(std::string("--").append(paramKey), m_Expression))
+  if (!m_Parser->IsAttributExists(std::string("-").append(paramKey), m_Expression))
     {
     if (!m_Application->HasValue(paramKey))
       {
@@ -651,7 +641,7 @@ std::string CommandLineLauncher::DisplayParameterHelp(const Parameter::Pointer &
   for(unsigned int i=0; i<m_MaxKeySize-paramKey.size(); i++)
     bigKey.append(" ");
     
-  oss<< "--" << bigKey << " ";
+  oss<< "-" << bigKey << " ";
 
   // Display the type the parameter
   if (type == ParameterType_Radius || type == ParameterType_Int || type == ParameterType_RAM)
@@ -679,7 +669,7 @@ std::string CommandLineLauncher::DisplayParameterHelp(const Parameter::Pointer &
   else if (type == ParameterType_Choice || type == ParameterType_ListView || ParameterType_InputImageList ||
            type == ParameterType_InputVectorDataList || type == ParameterType_StringList )
     {
-    oss << "<string list>       ";
+    oss << "<string list>   ";
     }
   else
     itkExceptionMacro("Not handled parameter type.");
@@ -726,26 +716,10 @@ bool CommandLineLauncher::CheckUnicity()
 bool CommandLineLauncher::CheckParametersPrefix()
 {
   bool res = true;
-  // Extract Expression elements
-  std::vector<itksys::String> spaceSplittedExp = itksys::SystemTools::SplitString(m_Expression.c_str(), ' ', false);
-  // if the chain is "  module", SplitString will return: [ ], [module]
-  for (unsigned int i = 0; i < spaceSplittedExp.size(); i++)
+  // Check if the chain "-" appears in the expression
+  if (m_Expression.find("--") != std::string::npos )
     {
-    if (spaceSplittedExp[i] == " ")
-      {
-      spaceSplittedExp.erase(spaceSplittedExp.begin() + i);
-      i--;
-      }
-    }
-
-  // If the expression contains parameters
-  if (spaceSplittedExp.size() > 2)
-    {
-    // Check if the chain "--" appears at least one time when "-" is present
-    if (m_Expression.find("--") == std::string::npos && m_Expression.find("-") != std::string::npos)
-      {
-      res = false;
-      }
+    res = false;
     }
 
   return res;
@@ -803,9 +777,9 @@ void CommandLineLauncher::DisplayOutputParameters()
     }
 
   
-  if ( m_Parser->IsAttributExists("--testenv", m_Expression) )
+  if ( m_Parser->IsAttributExists("-testenv", m_Expression) )
     {
-    std::vector<std::string> val = m_Parser->GetAttribut("--testenv", m_Expression);
+    std::vector<std::string> val = m_Parser->GetAttribut("-testenv", m_Expression);
     if( val.size() == 1 )
       {
       std::ofstream ofs(val[0].c_str());
diff --git a/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.h b/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.h
index 7aa116f73fa845f46ecb252f4ced6b8b574f6680..d1cb3444d83fc1ce443bc071721edd73d3b011f2 100644
--- a/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.h
+++ b/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.h
@@ -144,10 +144,7 @@ protected:
   /** Check if each key is unique in the expression. */
   bool CheckUnicity();
 
-  /** Check if option contains at least one "--".
-  * return false if m_Expression contains more than 2 element (module
-  * name and path) and doesn't contains "--"
-  */
+  /** Check if option contains at least one "-". */
   bool CheckParametersPrefix();
 
   /** Check if each key is valid for the application. */
diff --git a/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.cxx b/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.cxx
index b4f43c08d8f3feb7cebe44d6985a886c8398eaf9..905f2ffeeed13611d50dac4ebde9e3fa2896bb0b 100644
--- a/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.cxx
+++ b/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.cxx
@@ -43,22 +43,22 @@ std::string
 CommandLineParser::GetPathsAsString( const std::string & exp )
 {
   std::string res;
-  // The first element must be the module path, non "--" allowed.
+  // The first element must be the module path, non " -" allowed.
   // The module path list element are the strings between the first
-  // element and the next key (ie. "--" string).
+  // element and the next key (ie. " -" string).
   std::string tempModPath = exp;
-  if( exp.find("--") != std::string::npos)
+
+  if( exp.find(" -") != std::string::npos)
     {
-    tempModPath = exp.substr( 0, exp.find("--")-1);
+    tempModPath = exp.substr( 0, exp.find(" -"));
     }
 
-
   // Get everything after the module path
   if( tempModPath.find(" ") != std::string::npos)
     {
     res = tempModPath.substr( tempModPath.find(" ")+1, tempModPath.size());
     }
-    
+  
   // Suppress possible multi space at the beginning of the string
   while (res.size()>0 && res[0]==' ')
     {
@@ -80,15 +80,16 @@ CommandLineParser::GetPaths( std::vector<std::string> & paths, const std::string
 
   std::string tempModPath = pathsList;
   // remove other key in the string if there's any
-  if( pathsList.find("--") != std::string::npos)
+  if( pathsList.find(" -") != std::string::npos)
     {
-    tempModPath = pathsList.substr( 0, pathsList.find("--")-1);
+    tempModPath = pathsList.substr( 0, pathsList.find(" -"));
     }
 
   if( tempModPath.size() > 0 )
     {
     std::vector<itksys::String> pathAttribut = itksys::SystemTools::SplitString(tempModPath.substr(0, tempModPath.size()).c_str(), ' ', false);
       
+
     // Remove " " string element
     for(unsigned int i=0; i<pathAttribut.size(); i++)
       {
@@ -97,20 +98,12 @@ CommandLineParser::GetPaths( std::vector<std::string> & paths, const std::string
       {
       pathAttribut[i].erase(0, 1);
       }
-      
-      // case where the user set -key instead of --key
-      // Having __key is not not, we've splitted the expression to the
-      // first "--"
-      if(pathAttribut[i][0] == '-')
-        {
-        std::cerr<<"ERROR: Parameter keys have to set using \"--\", not \"-\""<<std::endl;
-        return INVALIDMODULEPATH;
-        }
+
       std::string fullPath = itksys::SystemTools::CollapseFullPath(pathAttribut[i].c_str());
 
       if( !itksys::SystemTools::FileIsDirectory(fullPath.c_str()) )
         {
-        std::cerr<<"module path Invalid module path: "<<fullPath<<std::endl;
+        std::cerr<<"Invalid module path: "<<fullPath<<std::endl;
         return INVALIDMODULEPATH;
         }
       paths.push_back(fullPath);
@@ -150,8 +143,8 @@ CommandLineParser::GetModuleName( std::string & modName, const std::string & exp
   
   itksys::RegularExpression reg;
   reg.compile("([^0-9a-zA-Z])");
-  // The first element must be the module path, non "--" allowed.
-  if( spaceSplittedExp[0].substr(0, 2) == "--" || spaceSplittedExp.size() == 0 )
+  // The first element must be the module path, non " -" allowed.
+  if( spaceSplittedExp[0].substr(0, 2) == " -" || spaceSplittedExp.size() == 0 )
     {
     return NOMODULENAME;
     }
@@ -192,9 +185,9 @@ CommandLineParser::GetAttribut( const std::string & key, const std::string & exp
  
   std::string tempModKey = expFromKey;
   // remove other key in the string if there's any
-  if( expFromKey.find("--") != std::string::npos)
+  if( expFromKey.find(" -") != std::string::npos)
     {
-    tempModKey = expFromKey.substr( 0, expFromKey.find("--")-1);
+    tempModKey = expFromKey.substr( 0, expFromKey.find(" -"));
     }
 
   // Only if the key has values associated
@@ -261,7 +254,7 @@ CommandLineParser::IsAttributExists( const std::string key, const std::string &
 {
   std::string keySpaced = key;
   std::string expSpaced = exp;
-  // Add space to avoid troubles with key which starts by another one : --out and --outmax for example
+  // Add space to avoid troubles with key which starts by another one : -out and -outmax for example
   keySpaced.append(" ");
   expSpaced.append(" ");
   std::size_t found = expSpaced.find(keySpaced);
@@ -274,7 +267,7 @@ CommandLineParser::GetKeyList( const std::string & exp  )
 {
   std::vector<std::string> keyList;
   std::string cutExp(exp);
-  std::size_t found = exp.find("--");
+  std::size_t found = exp.find(" -");
 
   while( found != std::string::npos )
     {
@@ -282,23 +275,44 @@ CommandLineParser::GetKeyList( const std::string & exp  )
     cutExp = cutExp.substr(found+2, exp.size());
     // Search the end of the key (a space)
     std::size_t foundSpace = cutExp.find(" ");
+    std::string tmpKey = cutExp;
     if( foundSpace != std::string::npos )
       {
-      keyList.push_back( cutExp.substr(0, foundSpace) );
+      tmpKey = cutExp.substr(0, foundSpace);
       }
-    else
+ 
+    if( this->IsAValidKey(tmpKey) )
       {
-      keyList.push_back( cutExp );
+      keyList.push_back( tmpKey );
       }
+    
 
-    // Search the next key (ie. "--")
-    found = cutExp.find("--");
+    // Search the next key (ie. " -")
+    found = cutExp.find(" -");
     }
 
   return keyList;
 }
 
 
+bool 
+CommandLineParser::IsAValidKey( const std::string & foundKey )
+{
+  bool res = false;
+  // To be a key, the string can't contain a number
+  itksys::RegularExpression reg;
+  reg.compile("([^0-9])");
+  if( reg.find(foundKey) )
+    {
+    res = true;
+    }
+
+  return res;
+}
+
+
 }
 }
 
+
+
diff --git a/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.h b/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.h
index ba8b2adad43201b9e2ea196719c87d2986edcb24..49f20ea0c83a95340853a6e671d9c838e0dd4781 100644
--- a/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.h
+++ b/Code/Wrappers/CommandLine/otbWrapperCommandLineParser.h
@@ -80,11 +80,17 @@ protected:
 
   /** Destructor */
   virtual ~CommandLineParser();
- 
-private:
 
+private:
   CommandLineParser(const CommandLineParser &); //purposely not implemented
   void operator =(const CommandLineParser&); //purposely not implemented
+
+
+  /** Return true if the found key is valid : not a number */
+  bool IsAValidKey( const std::string & foundKey );
+
+
+
 }; //end class
 
 } // end namespace Wrapper