Index: src/Actions/CmdAction/HelpAction.cpp
===================================================================
--- src/Actions/CmdAction/HelpAction.cpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/Actions/CmdAction/HelpAction.cpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -27,10 +27,17 @@
 
 Action::state_ptr CommandLineHelpAction::performCall() {
+  ostringstream usage;
   Dialog *dialog = UIFactory::getInstance().makeDialog();
 
-  cout << CommandLineParser::getInstance().visible << endl;
+  usage << CommandLineParser::getInstance().visible << endl;
+  dialog->queryEmpty(NAME, usage.str());
 
-  delete dialog;
-  return Action::failure;
+  if(dialog->display()) {
+    delete dialog;
+    return Action::success;
+  } else {
+    delete dialog;
+    return Action::failure;
+  }
 }
 
Index: src/UIElements/CommandLineDialog.cpp
===================================================================
--- src/UIElements/CommandLineDialog.cpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/UIElements/CommandLineDialog.cpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -35,37 +35,52 @@
 
 
-void CommandLineDialog::queryInt(const char* title, int* target){
-  registerQuery(new IntTextQuery(title,target));
+void CommandLineDialog::queryEmpty(const char* title, string _description){
+  registerQuery(new EmptyCommandLineQuery(title, _description));
 }
 
-void CommandLineDialog::queryDouble(const char* title, double* target){
-  registerQuery(new DoubleTextQuery(title,target));
+void CommandLineDialog::queryInt(const char* title, int* target, string _description){
+  registerQuery(new IntCommandLineQuery(title,target, _description));
 }
 
-void CommandLineDialog::queryString(const char* title, string* target){
-  registerQuery(new StringTextQuery(title,target));
+void CommandLineDialog::queryDouble(const char* title, double* target, string _description){
+  registerQuery(new DoubleCommandLineQuery(title,target, _description));
 }
 
-void CommandLineDialog::queryMolecule(const char* title, molecule **target, MoleculeListClass *molecules) {
-  registerQuery(new MoleculeTextQuery(title,target,molecules));
+void CommandLineDialog::queryString(const char* title, string* target, string _description){
+  registerQuery(new StringCommandLineQuery(title,target, _description));
 }
 
-void CommandLineDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check) {
-  registerQuery(new VectorTextQuery(title,target,cellSize,check));
+void CommandLineDialog::queryMolecule(const char* title, molecule **target, MoleculeListClass *molecules, string _description) {
+  registerQuery(new MoleculeCommandLineQuery(title,target,molecules, _description));
 }
 
-void CommandLineDialog::queryElement(const char* title, const element **target){
-  registerQuery(new ElementTextQuery(title,target));
+void CommandLineDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check, string _description) {
+  registerQuery(new VectorCommandLineQuery(title,target,cellSize,check, _description));
+}
+
+void CommandLineDialog::queryElement(const char* title, const element **target, string _description){
+  registerQuery(new ElementCommandLineQuery(title,target, _description));
 }
 
 /************************** Query Infrastructure ************************/
 
-CommandLineDialog::IntTextQuery::IntTextQuery(string title,int *_target) :
-    Dialog::IntQuery(title,_target)
+CommandLineDialog::EmptyCommandLineQuery::EmptyCommandLineQuery(string title, string _description) :
+    Dialog::EmptyQuery(title, _description)
 {}
 
-CommandLineDialog::IntTextQuery::~IntTextQuery() {}
+CommandLineDialog::EmptyCommandLineQuery::~EmptyCommandLineQuery() {}
 
-bool CommandLineDialog::IntTextQuery::handle() {
+bool CommandLineDialog::EmptyCommandLineQuery::handle() {
+  cout << "Message of " << getTitle() << ":\n" << getDescription() << "\n";
+  return true;
+}
+
+CommandLineDialog::IntCommandLineQuery::IntCommandLineQuery(string title,int *_target, string _description) :
+    Dialog::IntQuery(title,_target, _description)
+{}
+
+CommandLineDialog::IntCommandLineQuery::~IntCommandLineQuery() {}
+
+bool CommandLineDialog::IntCommandLineQuery::handle() {
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
     tmp = CommandLineParser::getInstance().vm[getTitle()].as<int>();
@@ -75,13 +90,13 @@
 }
 
-CommandLineDialog::StringTextQuery::StringTextQuery(string title,string *_target) :
-    Dialog::StringQuery(title,_target)
+CommandLineDialog::StringCommandLineQuery::StringCommandLineQuery(string title,string *_target, string _description) :
+    Dialog::StringQuery(title,_target, _description)
 {}
 
-CommandLineDialog::StringTextQuery::~StringTextQuery() {}
+CommandLineDialog::StringCommandLineQuery::~StringCommandLineQuery() {}
 
-bool CommandLineDialog::StringTextQuery::handle() {
+bool CommandLineDialog::StringCommandLineQuery::handle() {
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
-    tmp = CommandLineParser::getInstance().vm[getTitle()].as<std::string>();
+    tmp = CommandLineParser::getInstance().vm[getTitle()].as<string>();
     return true;
   } else
@@ -89,11 +104,11 @@
 }
 
-CommandLineDialog::DoubleTextQuery::DoubleTextQuery(string title,double *_target) :
-    Dialog::DoubleQuery(title,_target)
+CommandLineDialog::DoubleCommandLineQuery::DoubleCommandLineQuery(string title,double *_target, string _description) :
+    Dialog::DoubleQuery(title,_target, _description)
 {}
 
-CommandLineDialog::DoubleTextQuery::~DoubleTextQuery() {}
+CommandLineDialog::DoubleCommandLineQuery::~DoubleCommandLineQuery() {}
 
-bool CommandLineDialog::DoubleTextQuery::handle() {
+bool CommandLineDialog::DoubleCommandLineQuery::handle() {
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
     tmp = CommandLineParser::getInstance().vm[getTitle()].as<double>();
@@ -103,11 +118,11 @@
 }
 
-CommandLineDialog::MoleculeTextQuery::MoleculeTextQuery(string title, molecule **_target, MoleculeListClass *_molecules) :
-    Dialog::MoleculeQuery(title,_target,_molecules)
+CommandLineDialog::MoleculeCommandLineQuery::MoleculeCommandLineQuery(string title, molecule **_target, MoleculeListClass *_molecules, string _description) :
+    Dialog::MoleculeQuery(title,_target,_molecules, _description)
 {}
 
-CommandLineDialog::MoleculeTextQuery::~MoleculeTextQuery() {}
+CommandLineDialog::MoleculeCommandLineQuery::~MoleculeCommandLineQuery() {}
 
-bool CommandLineDialog::MoleculeTextQuery::handle() {
+bool CommandLineDialog::MoleculeCommandLineQuery::handle() {
   int IdxOfMol = -1;
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
@@ -119,12 +134,12 @@
 }
 
-CommandLineDialog::VectorTextQuery::VectorTextQuery(std::string title, Vector *_target, const double *const _cellSize, bool _check) :
-    Dialog::VectorQuery(title,_target,_cellSize,_check)
+CommandLineDialog::VectorCommandLineQuery::VectorCommandLineQuery(string title, Vector *_target, const double *const _cellSize, bool _check, string _description) :
+    Dialog::VectorQuery(title,_target,_cellSize,_check, _description)
 {}
 
-CommandLineDialog::VectorTextQuery::~VectorTextQuery()
+CommandLineDialog::VectorCommandLineQuery::~VectorCommandLineQuery()
 {}
 
-bool CommandLineDialog::VectorTextQuery::handle() {
+bool CommandLineDialog::VectorCommandLineQuery::handle() {
   vector<double> temp;
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
@@ -140,12 +155,12 @@
 
 
-CommandLineDialog::ElementTextQuery::ElementTextQuery(std::string title, const element **target) :
-    Dialog::ElementQuery(title,target)
+CommandLineDialog::ElementCommandLineQuery::ElementCommandLineQuery(string title, const element **target, string _description) :
+    Dialog::ElementQuery(title,target, _description)
 {}
 
-CommandLineDialog::ElementTextQuery::~ElementTextQuery()
+CommandLineDialog::ElementCommandLineQuery::~ElementCommandLineQuery()
 {}
 
-bool CommandLineDialog::ElementTextQuery::handle() {
+bool CommandLineDialog::ElementCommandLineQuery::handle() {
   int Z = -1;
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
Index: src/UIElements/CommandLineDialog.hpp
===================================================================
--- src/UIElements/CommandLineDialog.hpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/UIElements/CommandLineDialog.hpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -22,52 +22,60 @@
   virtual ~CommandLineDialog();
 
-  virtual void queryInt(const char *, int *);
-  virtual void queryString(const char*, std::string *);
-  virtual void queryDouble(const char*, double*);
-  virtual void queryMolecule(const char*,molecule**,MoleculeListClass*);
-  virtual void queryVector(const char*,Vector *,const double * const,bool);
-  virtual void queryElement(const char*,const element **);
+  virtual void queryEmpty(const char *, std::string = "");
+  virtual void queryInt(const char *, int *, std::string = "");
+  virtual void queryString(const char*, std::string *, std::string = "");
+  virtual void queryDouble(const char*, double*, std::string = "");
+  virtual void queryMolecule(const char*,molecule**,MoleculeListClass*, std::string = "");
+  virtual void queryVector(const char*,Vector *,const double * const,bool, std::string = "");
+  virtual void queryElement(const char*,const element **, std::string = "");
 
 protected:
   // specialized stuff for text queries
-  class IntTextQuery : public Dialog::IntQuery {
+  class EmptyCommandLineQuery : public Dialog::EmptyQuery {
   public:
-    IntTextQuery(std::string title, int *_target);
-    virtual ~IntTextQuery();
+    EmptyCommandLineQuery(std::string title, std::string _description = "");
+    virtual ~EmptyCommandLineQuery();
     virtual bool handle();
   };
 
-  class DoubleTextQuery : public Dialog::DoubleQuery {
+  class IntCommandLineQuery : public Dialog::IntQuery {
   public:
-    DoubleTextQuery(std::string title, double *_target);
-    virtual ~DoubleTextQuery();
+    IntCommandLineQuery(std::string title, int *_target, std::string _description = "");
+    virtual ~IntCommandLineQuery();
     virtual bool handle();
   };
 
-  class StringTextQuery : public Dialog::StringQuery {
+  class DoubleCommandLineQuery : public Dialog::DoubleQuery {
   public:
-    StringTextQuery(std::string title, std::string *_target);
-    virtual ~StringTextQuery();
+    DoubleCommandLineQuery(std::string title, double *_target, std::string _description = "");
+    virtual ~DoubleCommandLineQuery();
     virtual bool handle();
   };
 
-  class MoleculeTextQuery : public Dialog::MoleculeQuery {
+  class StringCommandLineQuery : public Dialog::StringQuery {
   public:
-    MoleculeTextQuery(std::string title, molecule **_target, MoleculeListClass *_molecules);
-    virtual ~MoleculeTextQuery();
+    StringCommandLineQuery(std::string title, std::string *_target, std::string _description = "");
+    virtual ~StringCommandLineQuery();
     virtual bool handle();
   };
 
-  class VectorTextQuery : public Dialog::VectorQuery {
+  class MoleculeCommandLineQuery : public Dialog::MoleculeQuery {
   public:
-    VectorTextQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check);
-    virtual ~VectorTextQuery();
+    MoleculeCommandLineQuery(std::string title, molecule **_target, MoleculeListClass *_molecules, std::string _description = "");
+    virtual ~MoleculeCommandLineQuery();
     virtual bool handle();
   };
 
-  class ElementTextQuery : public Dialog::ElementQuery {
+  class VectorCommandLineQuery : public Dialog::VectorQuery {
   public:
-    ElementTextQuery(std::string title, const element **_target);
-    virtual ~ElementTextQuery();
+    VectorCommandLineQuery(std::string title,Vector *_target,const double *const _cellSize,bool _check, std::string _description = "");
+    virtual ~VectorCommandLineQuery();
+    virtual bool handle();
+  };
+
+  class ElementCommandLineQuery : public Dialog::ElementQuery {
+  public:
+    ElementCommandLineQuery(std::string title, const element **_target, std::string _description = "");
+    virtual ~ElementCommandLineQuery();
     virtual bool handle();
   };
Index: src/UIElements/CommandLineUIFactory.cpp
===================================================================
--- src/UIElements/CommandLineUIFactory.cpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/UIElements/CommandLineUIFactory.cpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -25,5 +25,5 @@
 
 Dialog* CommandLineUIFactory::makeDialog() {
-  return NULL;
+  return new CommandLineDialog();
 }
 
Index: src/UIElements/Dialog.cpp
===================================================================
--- src/UIElements/Dialog.cpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/UIElements/Dialog.cpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -65,4 +65,15 @@
   return description;
 }
+// empty Queries
+
+Dialog::EmptyQuery::EmptyQuery(string title, std::string description) :
+    Query(title, description)
+{}
+
+Dialog::EmptyQuery::~EmptyQuery() {}
+
+void Dialog::EmptyQuery::setResult() {
+}
+
 // Int Queries
 
Index: src/UIElements/Dialog.hpp
===================================================================
--- src/UIElements/Dialog.hpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/UIElements/Dialog.hpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -23,4 +23,5 @@
   virtual ~Dialog();
 
+  virtual void queryEmpty(const char *, std::string = "")=0;
   virtual void queryInt(const char *, int *, std::string = "")=0;
   virtual void queryDouble(const char*,double *, std::string = "")=0;
@@ -56,4 +57,13 @@
     std::string title;  //!< short title of the query
     std::string description; //!< longer description for tooltips or for help
+  };
+
+  // Empty Query is just meant for showing text, such as version, help, initial message or alike
+  class EmptyQuery : public Query {
+  public:
+    EmptyQuery(std::string title, std::string _description = "");
+    virtual ~EmptyQuery();
+    virtual bool handle()=0;
+    virtual void setResult();
   };
 
Index: src/UIElements/TextDialog.cpp
===================================================================
--- src/UIElements/TextDialog.cpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/UIElements/TextDialog.cpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -29,4 +29,8 @@
 
 
+void TextDialog::queryEmpty(const char* title, string description){
+  registerQuery(new EmptyTextQuery(title,description));
+}
+
 void TextDialog::queryInt(const char* title, int* target, string description){
   registerQuery(new IntTextQuery(title,target,description));
@@ -55,5 +59,16 @@
 /************************** Query Infrastructure ************************/
 
-TextDialog::IntTextQuery::IntTextQuery(string title,int *_target, std::string _description) :
+TextDialog::EmptyTextQuery::EmptyTextQuery(string title, std::string _description) :
+    Dialog::EmptyQuery(title,_description)
+{}
+
+TextDialog::EmptyTextQuery::~EmptyTextQuery() {}
+
+bool TextDialog::EmptyTextQuery::handle() {
+  cout << "Message of " << getTitle() << ":\n" << getDescription() << "\n";
+  return true;
+}
+
+TextDialog::IntTextQuery::IntTextQuery(string title, int * _target, std::string _description) :
     Dialog::IntQuery(title,_target,_description)
 {}
Index: src/UIElements/TextDialog.hpp
===================================================================
--- src/UIElements/TextDialog.hpp	(revision 148d8f042c90bf58b016bf5fd1feec9a2b925406)
+++ src/UIElements/TextDialog.hpp	(revision 86466e070d1b66f70981d199068ca4eb345320b0)
@@ -19,4 +19,5 @@
   virtual ~TextDialog();
 
+  virtual void queryEmpty(const char *, std::string = "");
   virtual void queryInt(const char *, int *, std::string = "");
   virtual void queryString(const char*, std::string *, std::string = "");
@@ -28,4 +29,11 @@
 protected:
   // specialized stuff for text queries
+  class EmptyTextQuery : public Dialog::EmptyQuery {
+  public:
+    EmptyTextQuery(std::string title, std::string _description = NULL);
+    virtual ~EmptyTextQuery();
+    virtual bool handle();
+  };
+
   class IntTextQuery : public Dialog::IntQuery {
   public:
