Index: trunk/FACT++/src/Configuration.cc
===================================================================
--- trunk/FACT++/src/Configuration.cc	(revision 12998)
+++ trunk/FACT++/src/Configuration.cc	(revision 13005)
@@ -989,9 +989,12 @@
 //!    - proper handling and error messages if files not available
 //
-const po::variables_map &Configuration::Parse(int argc, const char **argv)
+const po::variables_map &Configuration::Parse(int argc, const char **argv, const std::function<void()> &PrintHelp)
 {
     const po::positional_options_description &opt_positional = fArgumentPositions;
 
     // ------------------------ (0) --------------------------
+#ifdef DEBUG
+    cout << "--0--" << endl;
+#endif
 
     po::options_description opt_commandline;
@@ -1009,4 +1012,7 @@
 
     // ------------------------ (1) --------------------------
+#ifdef DEBUG
+    cout << "--1--" << endl;
+#endif
 
     fPriorityFile = "";
@@ -1015,4 +1021,7 @@
 
     // ------------------------ (2) --------------------------
+#ifdef DEBUG
+    cout << "--2--" << endl;
+#endif
 
     po::command_line_parser parser(argc, const_cast<char**>(argv));
@@ -1025,4 +1034,7 @@
 
     // ------------------------ (3) --------------------------
+#ifdef DEBUG
+    cout << "--3--" << endl;
+#endif
 
     po::variables_map getfiles;
@@ -1049,5 +1061,10 @@
         cout << fOptionsDatabase[kVisible] << endl;
 
+
+
     // ------------------------ (4) --------------------------
+#ifdef DEBUG
+    cout << "--4--" << endl;
+#endif
 
     if (getfiles.count("print") || getfiles.count("print-all"))
@@ -1058,5 +1075,15 @@
     }
 
+    if (getfiles.count("help")     || getfiles.count("help-config") ||
+        getfiles.count("help-env") || getfiles.count("help-database"))
+    {
+        if (PrintHelp)
+            PrintHelp();
+    }
+
     // ------------------------ (5) --------------------------
+#ifdef DEBUG
+    cout << "--5--" << endl;
+#endif
 
     const boost::filesystem::path path(GetName());
@@ -1073,4 +1100,7 @@
 
     // ------------------------ (6) --------------------------
+#ifdef DEBUG
+    cout << "--6--" << endl;
+#endif
 
     // Get default file from command line
@@ -1093,4 +1123,7 @@
 
     // ------------------------ (7) --------------------------
+#ifdef DEBUG
+    cout << "--7--" << endl;
+#endif
 
     if (getfiles.count("print-default") || getfiles.count("print-all"))
@@ -1109,4 +1142,7 @@
 
     // ------------------------ (8) --------------------------
+#ifdef DEBUG
+    cout << "--8--" << endl;
+#endif
 
     // Get priority from commandline(1), defaultfile(2)
@@ -1124,4 +1160,7 @@
 
     // ------------------------ (9) --------------------------
+#ifdef DEBUG
+    cout << "--9--" << endl;
+#endif
 
     if (getfiles.count("print-config") || getfiles.count("print-all"))
@@ -1138,4 +1177,7 @@
 
     // ------------------------ (10) -------------------------
+#ifdef DEBUG
+    cout << "--10--" << endl;
+#endif
 
     po::variables_map getdatabase;
@@ -1161,4 +1203,7 @@
 #endif
     // ------------------------ (11) -------------------------
+#ifdef DEBUG
+    cout << "--11--" << endl;
+#endif
 
     if (getfiles.count("print-database") || getfiles.count("print-all"))
@@ -1175,8 +1220,14 @@
 
     // ------------------------ (12) -------------------------
+#ifdef DEBUG
+    cout << "--12--" << endl;
+#endif
 
     const po::parsed_options parsed_environment = po::parse_environment(opt_environment, fNameMapper);
 
     // ------------------------ (13) -------------------------
+#ifdef DEBUG
+    cout << "--13--" << endl;
+#endif
 
     if (getfiles.count("print-environment"))
@@ -1188,4 +1239,8 @@
 
     // ------------------------ (14) -------------------------
+#ifdef DEBUG
+    cout << "--14--" << endl;
+#endif
+
     po::variables_map result;
     po::store(parsed_commandline,  result);
@@ -1200,4 +1255,7 @@
 
     // ------------------------ (15) -------------------------
+#ifdef DEBUG
+    cout << "--15--" << endl;
+#endif
 
     const vector<string> unknown0 = collect_unrecognized(parsed_globalfile.options,   po::exclude_positional);
@@ -1215,8 +1273,14 @@
 
     // ------------------------ (16) -------------------------
+#ifdef DEBUG
+    cout << "--16--" << endl;
+#endif
 
     CreateWildcardOptions();
 
     // ------------------------ (17) -------------------------
+#ifdef DEBUG
+    cout << "--17--" << endl;
+#endif
 
     if (result.count("print-options"))
@@ -1229,4 +1293,8 @@
         PrintUnknown();
 
+#ifdef DEBUG
+    cout << "------" << endl;
+#endif
+
     return fVariables;
 }
@@ -1236,5 +1304,5 @@
     try
     {
-        Parse(argc, argv);
+        Parse(argc, argv, PrintHelp);
     }
 #if BOOST_VERSION > 104000
@@ -1251,15 +1319,5 @@
     }
 
-    if (HasVersion() || HasPrint())
-        return false;
-
-    if (HasHelp())
-    {
-        if (PrintHelp)
-            PrintHelp();
-        return false;
-    }
-
-    return true;
+    return !HasVersion() && !HasPrint() && !HasHelp();
 }
 
Index: trunk/FACT++/src/Configuration.h
===================================================================
--- trunk/FACT++/src/Configuration.h	(revision 12998)
+++ trunk/FACT++/src/Configuration.h	(revision 13005)
@@ -124,5 +124,5 @@
 
     // Process command line arguments
-    const po::variables_map &Parse(int argc, const char **argv);
+    const po::variables_map &Parse(int argc, const char **argv, const std::function<void()> &func=std::function<void()>());
     bool DoParse(int argc, const char **argv, const std::function<void()> &func=std::function<void()>());
 
