// initialize Logger
     Log = _log;
 
-    // Define valid command line parameters
-    Opt_desc_cmd = new po::options_description("Command line options");
-    Opt_desc_cmd->add_options()
+    // Available service description config options
+    po::options_description opt_desc_service("Service description options");
+    opt_desc_service.add_options()
+        ("protocol",po::value<string>(),"The service protocol.")
+        ("host",po::value<string>(),"The hostname to update.")
+        ("login",po::value<string>(),"Login name.")
+        ("password",po::value<string>(),"Corresponding password.")
+    ;
+
+    // Available command line only options
+    po::options_description opt_desc_cmd_only("Command line only options");
+    opt_desc_cmd_only.add_options()
         ("help,?","Show help.")
         ("version,v","Show version.")
         ("config,c",po::value<string>()->default_value("/etc/bpdyndnsd"),"Set the config path.")
-        ("protocol,q",po::value<string>(),"Set the service protocol type.")
-        ("host,h",po::value<string>(),"Set the hostname to update.")
-        ("login,l",po::value<string>(),"Set the login.")
-        ("password,p",po::value<string>(),"Set the password.")
     ;
 
-    // Define valid config file main section parameters
-    Opt_desc_conf_main = new po::options_description("Config file main section options");
-    Opt_desc_conf_main->add_options()
-        ("main.daemon_mode",po::value<bool>()->default_value(false),"Run as system daemon.")
-        ("main.logfile",po::value<string>()->default_value("/var/log/bpdyndns.log"),"Where to log.")
-        ("main.loglevel",po::value<int>()->default_value(0),"Loglevel.")
-        ("main.syslog",po::value<bool>()->default_value(false),"Use syslog facility.")
+     // Available generic options. Valid on cmd or in config file.
+    po::options_description opt_desc_generic("Generic config options");
+    opt_desc_generic.add_options()
+        ("daemon_mode",po::value<bool>()->default_value(false),"Run as system daemon.")
+        ("logfile",po::value<string>()->default_value("/var/log/bpdyndns.log"),"Where to log.")
+        ("loglevel",po::value<int>()->default_value(0),"Loglevel.")
+        ("syslog",po::value<bool>()->default_value(false),"Use syslog facility.")
     ;
 
-    // Define valid config file main section parameters
-    Opt_desc_conf_service = new po::options_description("Config file service section options");
-    Opt_desc_conf_service->add_options()
-        ("service.protocol",po::value<string>(),"The service protocol.")
-        ("service.host",po::value<string>(),"The hostname to update.")
-        ("service.login",po::value<string>(),"Login name.")
-        ("service.password",po::value<string>(),"Corresponding password.")
-    ;
+    // Define valid command line parameters
+    Opt_desc_cmd = new po::options_description("Command line options");
+    Opt_desc_cmd->add(opt_desc_cmd_only);
+    Opt_desc_cmd->add(opt_desc_generic);
+    Opt_desc_cmd->add(opt_desc_service);
+
+    // Define valid config file options
+    Opt_desc_conf_main = new po::options_description("Config file options");
+    Opt_desc_conf_main->add(opt_desc_generic);
+
+    // Define valid service file options
+    Opt_desc_conf_service = new po::options_description("Service file options");
+    Opt_desc_conf_service->add(opt_desc_service);
 
     Log->print_constructor_call("Config");
 }
 {
     try
     {
-        po::variables_map vm;
-        po::store(po::parse_command_line(argc, argv, *this->Opt_desc_cmd), vm);
-        po::notify(vm);
+        po::store(po::parse_command_line(argc, argv, *this->Opt_desc_cmd), Variables_map);
+        po::notify(Variables_map);
 
-        if ( vm.count("help") )
+        if ( Variables_map.count("help") )
         {
             Log->print_usage(Opt_desc_cmd);
             return 1;
         }
-        else if ( vm.count("version") )
+        else if ( Variables_map.count("version") )
         {
             Log->print_version();
             return 1;
         }
 
         // Create a service object if all needed options are set on the command line
-        if ( vm.count("protocol") && vm.count("host") && vm.count("login") && vm.count("password") )
+        if ( Variables_map.count("protocol") && Variables_map.count("host") && Variables_map.count("login") && Variables_map.count("password") )
         {
             // Get the cmd parameter values for protocol host login and password
-            string protocol = vm["protocol"].as<string>();
-            string host = vm["host"].as<string>();
-            string login = vm["login"].as<string>();
-            string password = vm["password"].as<string>();
+            string protocol = Variables_map["protocol"].as<string>();
+            string host = Variables_map["host"].as<string>();
+            string login = Variables_map["login"].as<string>();
+            string password = Variables_map["password"].as<string>();
 
             //TODO: convert protocol option to lowercase
 
             else
                 return 1;
         }
-        else if ( vm.count("protocol") || vm.count("host") || vm.count("login") || vm.count("password") )
+        else if ( Variables_map.count("protocol") || Variables_map.count("host") || Variables_map.count("login") || Variables_map.count("password") )
         {
             Log->print_missing_cmd_service_option();
             Log->print_usage(Opt_desc_cmd);
             return 1;
         }
 
-        if ( vm.count("config") )
+        if ( Variables_map.count("config") )
         {
-            fs::path full_config_path = fs::system_complete(fs::path(vm["config"].as<string>()));
+            fs::path full_config_path = fs::system_complete(fs::path(Variables_map["config"].as<string>()));
             Config_path = full_config_path.string();
             if ( !fs::exists(full_config_path) ||  !fs::is_directory(full_config_path) )
             {
             po::store(parsed_service_options,vm);
             po::notify(vm);
 
-            if(vm.count("service.protocol") && vm.count("service.host") && vm.count("service.login") && vm.count("service.password"))
+            if(vm.count("protocol") && vm.count("host") && vm.count("login") && vm.count("password"))
             {
                 // create the corresponding service
-                string protocol = vm["service.protocol"].as<string>();
-                string host = vm["service.host"].as<string>();
-                string login = vm["service.login"].as<string>();
-                string password = vm["service.password"].as<string>();
+                string protocol = vm["protocol"].as<string>();
+                string host = vm["host"].as<string>();
+                string login = vm["login"].as<string>();
+                string password = vm["password"].as<string>();
 
                 // TODO: convert protocol to lowercase
                 //protocol = tolower(protocol.c_str());
     {
         try
         {
-            po::variables_map vm;
             po::parsed_options parsed_main_options = po::parse_config_file(main_config_file,*this->Opt_desc_conf_main,true);
-            po::store(parsed_main_options,vm);
-            po::notify(vm);
+            po::store(parsed_main_options,Variables_map);
+            po::notify(Variables_map);
 
-            if(vm.count("main.daemon_mode") && vm.count("main.logfile") && vm.count("main.loglevel") && vm.count("main.syslog"))
+            if(Variables_map.count("daemon_mode") && Variables_map.count("logfile") && Variables_map.count("loglevel") && Variables_map.count("syslog"))
             {
-                Daemon_mode = vm["main.daemon_mode"].as<bool>();
-                Logfile = vm["main.logfile"].as<string>();
-                Loglevel = vm["main.loglevel"].as<int>();
-                Syslog = vm["main.syslog"].as<bool>();
+                Daemon_mode = Variables_map["daemon_mode"].as<bool>();
+                Logfile = Variables_map["logfile"].as<string>();
+                Loglevel = Variables_map["loglevel"].as<int>();
+                Syslog = Variables_map["syslog"].as<bool>();
             }
         }
         catch ( po::unknown_option e )
 {
     return Opt_desc_conf_service;
 }
+
+/**
+ * Getter for member Loglevel.
+ * @return Member Loglevel.
+ */
+int Config::get_loglevel()
+{
+    return Loglevel;
+}