diff --git a/services/histserv/app/ProgramOptions.cxx b/services/histserv/app/ProgramOptions.cxx
index cfe378e94af9b114fa763a04b2959f744ec929a5..e8b4e545ececb4e02c5f70a5d92c5a65fba1a928 100644
--- a/services/histserv/app/ProgramOptions.cxx
+++ b/services/histserv/app/ProgramOptions.cxx
@@ -22,38 +22,34 @@ namespace cbm::services::histserv
   {
 
     // --- Define generic options
-    po::options_description generic("Generic options");
+    po::options_description generic("  Generic options");
     auto generic_add = generic.add_options();
     generic_add("help,h", "display this help and exit");
 
-    // --- Build default config file path
-    //string defconfig = std::getenv("VMCWORKDIR");
-    //defconfig.append("/");
-    //defconfig.append(DEFAULT_CONFIG);
+    // --- Define configuration options: Mandatory
+    po::options_description config_req("  Configuration (required)");
+    auto config_req_add = config_req.add_options();
+    config_req_add("input,i", po::value<string>(&fsChanHistosIn)->required()->value_name("<protocol://xxxxxx>"),
+                   "name or host:port or whatever is needed for input channel (histos/canvases config and data), "
+                   "cf http://api.zeromq.org/2-1:zmq-bind");
 
-    // --- Define configuration options
-    po::options_description config("Configuration");
+    // --- Define configuration options: Optional
+    po::options_description config("  Configuration (optional or with default)");
     auto config_add = config.add_options();
-    config_add("input,i", po::value<string>(&fsChanHistosIn)->value_name("<protocol://xxxxxx>"),
-               "name or host:port or whatever is needed for input channel (histos/canvases config and data), "
-               " cf http://api.zeromq.org/2-1:zmq-bind");
     config_add("port,p", po::value<uint32_t>(&fuHttpServerPort)->default_value(8080),
-               "port on which the http ROOT server (JSroot) will be available");
+               "port on which the http ROOT server (JSroot) will be available (mind default value!)");
     config_add("output,o", po::value<string>(&fsHistoFileName)->value_name("<file name>"),
                "name of the output ROOT file with histograms backup");
-    // config_add("config,c", po::value<string>(&fConfig)->value_name("<file name>")->default_value(defconfig),
-    //            "name of a YAML file describing the configuration of reconstruction");
     config_add("overwrite,w", po::bool_switch(&fOverwrite)->default_value(false),
                "allow to overwite an existing output file");
 
     // --- Allowed options
     po::options_description cmdline_options("Allowed options");
-    cmdline_options.add(generic).add(config);
+    cmdline_options.add(generic).add(config_req).add(config);
 
     // --- Parse command line
     po::variables_map vars;
     po::store(po::parse_command_line(argc, argv, cmdline_options), vars);
-    po::notify(vars);
 
     // --- Help: print help information and exit program
     if (vars.count("help") != 0u) {
@@ -61,9 +57,8 @@ namespace cbm::services::histserv
       exit(EXIT_SUCCESS);
     }
 
-    // --- Catch mandatory parameters not being specified
-    if (vars.count("input") == 0u) { throw std::runtime_error("no input channel specified"); }
-    if (vars.count("port") == 0u) { throw std::runtime_error("no http port specified"); }
+    // --- Run notify after processing the help to avoid it being blocked by missing arguments
+    po::notify(vars);
   }
   // --------------------------------------------------------------------------