;
 
     // Define valid command line parameters
-    Opt_desc_cmd = new po::options_description("Command line options");
+    Options_descriptionPtr _opt_desc_cmd(new po::options_description("Command line options"));
+    Opt_desc_cmd = _opt_desc_cmd;
+    _opt_desc_cmd.reset();
     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");
+    Options_descriptionPtr _opt_desc_conf_main(new po::options_description("Config file options"));
+    Opt_desc_conf_main = _opt_desc_conf_main;
+    _opt_desc_conf_main.reset();
     Opt_desc_conf_main->add(opt_desc_generic);
 
     // Define valid service file options
-    Opt_desc_conf_service = new po::options_description("Service file options");
+    Options_descriptionPtr _opt_desc_conf_service(new po::options_description("Service file options"));
+    Opt_desc_conf_service = _opt_desc_conf_service;
+    _opt_desc_conf_service.reset();
     Opt_desc_conf_service->add(opt_desc_service);
 }
 
  */
 Config::~Config()
 {
-    delete Opt_desc_cmd;
-    delete Opt_desc_conf_main;
-    delete Opt_desc_conf_service;
 }
 
 
  * Getter method for member Opt_desc_cmd.
  * @return options_description*.
  */
-po::options_description* Config::get_opt_desc_cmd()
+Options_descriptionPtr Config::get_opt_desc_cmd()
 {
     return Opt_desc_cmd;
 }
  * Getter method for member Opt_desc_conf_main.
  * @return options_description*.
  */
-po::options_description* Config::get_opt_desc_conf_main()
+Options_descriptionPtr Config::get_opt_desc_conf_main()
 {
     return Opt_desc_conf_main;
 }
  * Getter method for member Opt_desc_conf_service.
  * @return options_description*.
  */
-po::options_description* Config::get_opt_desc_conf_service()
+Options_descriptionPtr Config::get_opt_desc_conf_service()
 {
     return Opt_desc_conf_service;
 }
 
 typedef boost::shared_ptr<Service> ServicePtr;
 typedef boost::shared_ptr<Logger> LoggerPtr;
 typedef boost::shared_ptr<Serviceholder> ServiceholderPtr;
+typedef boost::shared_ptr<boost::program_options::options_description> Options_descriptionPtr;
 
 class Config
 {
 
 private:
 
-    boost::program_options::options_description *Opt_desc_cmd;
-    boost::program_options::options_description *Opt_desc_conf_main;
-    boost::program_options::options_description *Opt_desc_conf_service;
+    Options_descriptionPtr Opt_desc_cmd;
+    Options_descriptionPtr Opt_desc_conf_main;
+    Options_descriptionPtr Opt_desc_conf_service;
     boost::program_options::variables_map Variables_map;
 
     std::list<ServicePtr> Services;
 
     std::list<ServicePtr> get_services();
 
-    boost::program_options::options_description* get_opt_desc_cmd();
+    Options_descriptionPtr get_opt_desc_cmd();
 
-    boost::program_options::options_description* get_opt_desc_conf_main();
+    Options_descriptionPtr get_opt_desc_conf_main();
 
-    boost::program_options::options_description* get_opt_desc_conf_service();
+    Options_descriptionPtr get_opt_desc_conf_service();
 
     bool get_daemon_mode();