Index: /trunk/FACT++/src/Configuration.h
===================================================================
--- /trunk/FACT++/src/Configuration.h	(revision 11328)
+++ /trunk/FACT++/src/Configuration.h	(revision 11329)
@@ -2,4 +2,5 @@
 #define FACT_Configuration
 
+#include <iostream>
 #include <boost/program_options.hpp>
 
@@ -124,5 +125,5 @@
         return Has("print-all") || Has("print") || Has("print-default") ||
             Has("print-database") || Has("print-config") ||
-            Has("print-environment") || Has("print-unkown") ||
+            Has("print-environment") || Has("print-unknown") ||
             Has("print-options");
     }
@@ -130,6 +131,34 @@
     // Simplified access to the parsed options
     template<class T>
-       T Get(const char *var) const { return Has(var) ? fVariables[var].as<T>() : T(); }
+       T Get(const char *var) const { return fVariables[var].as<T>(); }
     bool Has(const char *var) const { return fVariables.count(var)>0; }
+
+    template<class T>
+        std::map<std::string, T> GetMap(const std::string &var) const
+    {
+        const size_t len = var.length();
+
+        std::map<std::string, T> rc;
+        for (std::map<std::string, boost::program_options::variable_value>::const_iterator it=fVariables.begin();
+             it!=fVariables.end(); it++)
+            if (it->first.substr(0, len)==var)
+                rc[it->first] = it->second.as<T>();
+
+        return rc;
+    }
+
+    template<class T>
+        std::vector<std::string> GetKeys(const std::string &var) const
+    {
+        const size_t len = var.length();
+
+        std::vector<std::string> rc;
+        for (std::map<std::string, boost::program_options::variable_value>::const_iterator it=fVariables.begin();
+             it!=fVariables.end(); it++)
+            if (it->first.substr(0, len)==var)
+                rc.push_back(it->first);
+
+        return rc;
+    }
 
     const std::string &GetName() const { return fName; }
