Index: src/UIElements/CommandLineUI/CommandLineParser.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineParser.cpp	(revision 5284fffa7f4365151a666b79f37c046f73411a9e)
+++ src/UIElements/CommandLineUI/CommandLineParser.cpp	(revision 2f429ef69adf29a1bf0267338e9cecd1fb5b238c)
@@ -390,5 +390,5 @@
 //            currentOption->hasDefaultValue() ?
 //                  po::value < const element * >()->default_value(boost::lexical_cast<const element *>(currentOption->getDefaultValue().c_str())) :
-                  po::value < int >(),
+                  po::value < std::string >(),
                   currentOption->getDescription().c_str())
         ;
@@ -399,5 +399,5 @@
 //            currentOption->hasDefaultValue() ?
 //                  po::value < std::vector<const element *> >()->default_value(boost::lexical_cast< std::vector<const element *> >(currentOption->getDefaultValue().c_str())) :
-                  po::value < std::vector<int> >()->multitoken(),
+                  po::value < std::vector<std::string> >()->multitoken(),
                   currentOption->getDescription().c_str())
         ;
Index: src/UIElements/CommandLineUI/Query/ElementCommandLineQuery.cpp
===================================================================
--- src/UIElements/CommandLineUI/Query/ElementCommandLineQuery.cpp	(revision 5284fffa7f4365151a666b79f37c046f73411a9e)
+++ src/UIElements/CommandLineUI/Query/ElementCommandLineQuery.cpp	(revision 2f429ef69adf29a1bf0267338e9cecd1fb5b238c)
@@ -36,4 +36,6 @@
 #include "CodePatterns/MemDebug.hpp"
 
+#include <string>
+
 #include "CommandLineUI/Query/CommandLineQuery.hpp"
 #include "CommandLineUI/CommandLineParser.hpp"
@@ -54,13 +56,18 @@
   // TODO: vector of ints and removing first is not correctly implemented yet. How to remove from a vector?
   periodentafel *periode = World::getInstance().getPeriode();
-  int Z = -1;
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    std::string argument("none");
     try {
-      Z = CommandLineParser::getInstance().vm[getTitle()].as< int >();
+      argument = CommandLineParser::getInstance().vm[getTitle()].as< std::string >();
+      try {
+        int Z = -1;
+        Z = boost::lexical_cast<int>(argument);
+        temp = periode->FindElement(Z);
+      } catch(boost::bad_lexical_cast &e) {
+        temp = periode->FindElement(argument);
+      }
     } catch(boost::bad_any_cast &e) {
-      Z = -1;
       return false;
     }
-    temp = periode->FindElement(Z);
     ASSERT(temp != NULL, "Invalid element specified in ElementCommandLineQuery");
     return true;
Index: src/UIElements/CommandLineUI/Query/ElementsCommandLineQuery.cpp
===================================================================
--- src/UIElements/CommandLineUI/Query/ElementsCommandLineQuery.cpp	(revision 5284fffa7f4365151a666b79f37c046f73411a9e)
+++ src/UIElements/CommandLineUI/Query/ElementsCommandLineQuery.cpp	(revision 2f429ef69adf29a1bf0267338e9cecd1fb5b238c)
@@ -36,4 +36,6 @@
 #include "CodePatterns/MemDebug.hpp"
 
+#include <string>
+
 #include "CommandLineUI/Query/CommandLineQuery.hpp"
 #include "CommandLineUI/CommandLineParser.hpp"
@@ -51,22 +53,41 @@
 {}
 
+template <typename T>
+std::vector<const element *> getElementsFromInput(const std::vector<std::string> &_input)
+{
+  periodentafel *periode = World::getInstance().getPeriode();
+  std::vector<const element *> result;
+  const element *temp_element;
+  for (typename std::vector<std::string>::const_iterator ZRunner = _input.begin(); ZRunner != _input.end(); ++ZRunner) {
+    const T argument = boost::lexical_cast<T>(*ZRunner);
+    temp_element = periode->FindElement(argument);
+    ASSERT(temp_element != NULL, "Invalid element specified in ElementCommandLineQuery");
+    result.push_back(temp_element);
+  }
+  return result;
+}
+
 bool CommandLineDialog::ElementsCommandLineQuery::handle() {
   // TODO: vector of ints and removing first is not correctly implemented yet. How to remove from a vector?
-  periodentafel *periode = World::getInstance().getPeriode();
-  std::vector<int> AllElements;
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
     try {
-      AllElements = CommandLineParser::getInstance().vm[getTitle()].as< vector<int> >();
+      std::vector<std::string> AllArguments;
+      AllArguments = CommandLineParser::getInstance().vm[getTitle()].as< vector<std::string> >();
+      try {
+        temp = getElementsFromInput<int>(AllArguments);
+      } catch(boost::bad_lexical_cast &e) {
+        try {
+        temp = getElementsFromInput<std::string>(AllArguments);
+        } catch(boost::bad_lexical_cast &e) {
+          return false;
+        }
+      }
     } catch(boost::bad_any_cast &e) {
-      AllElements.clear();
       return false;
     }
-    const element *temp_element;
-    for (vector<int>::iterator ZRunner = AllElements.begin(); ZRunner != AllElements.end(); ++ZRunner) {
-      temp_element = periode->FindElement(*ZRunner);
-      ASSERT(temp_element != NULL, "Invalid element specified in ElementCommandLineQuery");
-      temp.push_back(temp_element);
-    }
-    return true;
+    if (temp.empty())
+      return false;
+    else
+      return true;
   }
   return false;
