diff --git a/aarbology2/src/aarbology.cpp b/aarbology2/src/aarbology.cpp
index d8a19530ecd6a343c6d36cc4ac362ef9371f9054..6752b0a903f51c5c0878965d45b4382ec0e658e3 100644
--- a/aarbology2/src/aarbology.cpp
+++ b/aarbology2/src/aarbology.cpp
@@ -32,6 +32,9 @@
 
 int main ( int argc, char * argv[] ) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Arbology algorithm access binary", ' ', "0.01" );
 
 		std::vector < std::string > allowed;
diff --git a/acast2/src/acast.cpp b/acast2/src/acast.cpp
index 6e1bce8bd87170ca7e7ad18d5b428ecafa69caa6..caea20f99e7cc70104b5a106a7e95c4e9c2807db 100644
--- a/acast2/src/acast.cpp
+++ b/acast2/src/acast.cpp
@@ -19,6 +19,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("cast binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Input to echo",	false,	"-",		"file");
diff --git a/acompaction2/src/acompaction.cpp b/acompaction2/src/acompaction.cpp
index 794037d07d4907cd86d7311c62a5b47de6cc4dc5..3678758241de32765bc9223798c1745e465503ee 100644
--- a/acompaction2/src/acompaction.cpp
+++ b/acompaction2/src/acompaction.cpp
@@ -15,8 +15,10 @@
 #include "automaton/transform/Compaction.h"
 
 int main(int argc, char** argv) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Automaton compaction binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton to compactify",		false,	"-",		"file");
diff --git a/acompare2/src/acompare.cpp b/acompare2/src/acompare.cpp
index 36ee75972fdc372e5f81f84b6f56b20e6c150d06..117b9197818e7f031f6780ed7024239e982510c8 100644
--- a/acompare2/src/acompare.cpp
+++ b/acompare2/src/acompare.cpp
@@ -17,8 +17,9 @@
 #include "GrammarCompare.h"
 
 int main(int argc, char** argv) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
 
 		TCLAP::CmdLine cmd("Regexp derivative compute binary", ' ', "0.01");
 
diff --git a/aconversions2/src/aconversion.cpp b/aconversions2/src/aconversion.cpp
index cd68615cc8ee846a5e265be6e0fdb4537e99829b..29ccd7d839383e0860326b8fddad4ce05f36cd84 100644
--- a/aconversions2/src/aconversion.cpp
+++ b/aconversions2/src/aconversion.cpp
@@ -15,9 +15,11 @@
 
 #include "ConversionHandler.h"
 
-int main(int argc, char* argv[])
-{
+int main(int argc, char* argv[]) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Converts between regular expressions, regular grammars and finite automaton.", ' ', "0.01");
 
 		std::vector<std::string> formalisms {"fa", "re", "rg", "pda" };
diff --git a/aconvert2/src/aconvert.cpp b/aconvert2/src/aconvert.cpp
index a039d94effb10e3b2aad321d79509f525012808f..6f99235791017fdaaf47800be0bb9b1ef0638fc7 100644
--- a/aconvert2/src/aconvert.cpp
+++ b/aconvert2/src/aconvert.cpp
@@ -137,6 +137,9 @@ void automatonToTikZ ( std::istream & in, std::ostream & out ) {
 
 int main ( int argc, char * argv[] ) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Convert binary", ' ', "0.01" );
 
 		TCLAP::SwitchArg automaton_from_string ( "", "automaton_from_string", "Convert automaton from string representation" );
diff --git a/aderivation2/src/aderivation.cpp b/aderivation2/src/aderivation.cpp
index 20198a7ce8eeeab4497072fd7497bce89743fd76..e4b8010f7e31fcff06d494d2ef9b0d21120b2238 100644
--- a/aderivation2/src/aderivation.cpp
+++ b/aderivation2/src/aderivation.cpp
@@ -17,6 +17,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Regexp derivative compute binary", ' ', "0.01");
 		TCLAP::ValueArg<std::string> string(	"s",	"string",	"String to derivate by",	false,	"-",		"file");
 		cmd.add( string );
diff --git a/adeterminize2/src/adeterminize.cpp b/adeterminize2/src/adeterminize.cpp
index 78d9283a498cce78accb6724a8c7889648a4277b..c76462d4865f873ab82b1a291f61098e0728b537 100644
--- a/adeterminize2/src/adeterminize.cpp
+++ b/adeterminize2/src/adeterminize.cpp
@@ -17,6 +17,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Automaton determinize binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton to determinize",		false,	"-",		"file");
diff --git a/aecho2/src/aecho.cpp b/aecho2/src/aecho.cpp
index fb3b14cfedfda3c8430152622e53cad2f644f161..1c530e8e43dbd68b1cb73a06cc75f6bcb11876d1 100644
--- a/aecho2/src/aecho.cpp
+++ b/aecho2/src/aecho.cpp
@@ -16,6 +16,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("echo binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Input to echo",		false,	"-",		"file");
diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp
index 7cf5944a1025e98135b5f61600d721729ce04624..1df0e3c8cc9dabbcec50202867ddd3dd0065a237 100644
--- a/aepsilon2/src/aepsilon.cpp
+++ b/aepsilon2/src/aepsilon.cpp
@@ -20,8 +20,10 @@
 #include "grammar/simplify/EpsilonRemover.h"
 
 int main(int argc, char** argv) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Automaton rename binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton/Grammar where to remove epsilon transitions",		false,	"-",		"file");
diff --git a/agenerate2/src/agenerate.cpp b/agenerate2/src/agenerate.cpp
index d49136fd3b053e6f1fce12d8800ec182e7975e85..9cb35ea75c005af7b3b9b6add11257de48f11155 100644
--- a/agenerate2/src/agenerate.cpp
+++ b/agenerate2/src/agenerate.cpp
@@ -22,6 +22,9 @@
 
 int main ( int argc, char * argv[] ) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "String generate from grammar", ' ', "0.01" );
 
 		std::vector < std::string > allowed;
diff --git a/agraphbench2/src/agraphbench.cpp b/agraphbench2/src/agraphbench.cpp
index a7614ba67f42e5c04e399dfc4d5eedb7ed2dab55..8491b1ca190b71b29259f509f817f11c2f6cbdbb 100644
--- a/agraphbench2/src/agraphbench.cpp
+++ b/agraphbench2/src/agraphbench.cpp
@@ -13,6 +13,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Graph benchmark binary", ' ', "0.01");
 
 		TCLAP::ValueArg<int> size(	"",	"size",	"Size of graph",		false,	10, "integer");
diff --git a/aintegral2/src/aintegral.cpp b/aintegral2/src/aintegral.cpp
index feb642d292849490432505f09aa71063f27c7937..4e7824901ec6770d052551f96d302134952f60fc 100644
--- a/aintegral2/src/aintegral.cpp
+++ b/aintegral2/src/aintegral.cpp
@@ -17,6 +17,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Regexp derivative compute binary", ' ', "0.01");
 		TCLAP::ValueArg<std::string> string(	"s",	"string",	"String to derivate by",	false,	"-",		"file");
 		cmd.add( string );
diff --git a/alangop2/src/alangop.cpp b/alangop2/src/alangop.cpp
index 6cdd3cac7fe97d07373a0eb05540d9409a74a45b..0e0a6d94e53e7da203a84cdf59ce0369b935f181 100644
--- a/alangop2/src/alangop.cpp
+++ b/alangop2/src/alangop.cpp
@@ -26,6 +26,9 @@
 
 int main(int argc, char* argv[]) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Stringology algorithm access binary", ' ', "0.01");
 
 		std::vector<std::string> allowed;
diff --git a/alib2common/src/exception/CommonException.cpp b/alib2common/src/exception/CommonException.cpp
index 5c5af56eafdc52c8af6ffe10e50a9fcd12c14f21..82bd8dd3d9555e39757967c98a6ec8211aa27d79 100644
--- a/alib2common/src/exception/CommonException.cpp
+++ b/alib2common/src/exception/CommonException.cpp
@@ -10,6 +10,7 @@
 #include "../sax/FromXMLParserHelper.h"
 #include "../object/Object.h"
 #include "../XmlApi.hpp"
+#include "../global/GlobalData.h"
 
 #ifdef DEBUG
 	#include "../debug/simpleStacktrace.h"
@@ -17,28 +18,24 @@
 
 namespace exception {
 
-CommonException::CommonException ( ) {
+CommonException::CommonException ( std::string cause ) : cause(std::move(cause)) {
 	#ifdef DEBUG
 		this->backtrace = std::simpleStacktrace();
 	#else
 		this->backtrace = "";
 	#endif
 
+	for(int i = 0; i < common::GlobalData::argc; i++) {
+		if(i != 0) this->command += " ";
+		this->command += common::GlobalData::argv[i];
+	}
 	this->whatMessage += this->backtrace;
-}
-
-CommonException::CommonException ( std::string cause ) : CommonException { } {
 	this->whatMessage += this->cause;
-
-	this->cause = std::move(cause);
 }
 
-CommonException::CommonException ( std::string cause, std::string backtrace ) {
+CommonException::CommonException ( std::string cause, std::string backtrace, std::string command ) : cause(std::move(cause)), backtrace(std::move(backtrace)), command(std::move(command)) {
 	this->whatMessage += this->backtrace;
 	this->whatMessage += this->cause;
-
-	this->backtrace = std::move(backtrace);
-	this->cause = std::move(cause);
 }
 
 alib::ObjectBase* CommonException::clone() const {
@@ -91,8 +88,15 @@ CommonException CommonException::parse(std::deque<sax::Token>::iterator& input)
 		++input;
 	}
 	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "backtrace");
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "command");
+	std::string command = "";
+	if (input->getType() == sax::Token::TokenType::CHARACTER) {
+		command = std::move(*input).moveData();
+		++input;
+	}
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "command");
 	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, CommonException::XML_TAG_NAME);
-	return CommonException(std::move(cause), std::move(backtrace));
+	return CommonException(std::move(cause), std::move(backtrace), std::move(command));
 }
 
 void CommonException::compose(std::deque<sax::Token>& out) const {
@@ -103,6 +107,9 @@ void CommonException::compose(std::deque<sax::Token>& out) const {
 	out.emplace_back("backtrace", sax::Token::TokenType::START_ELEMENT);
 	out.emplace_back(backtrace, sax::Token::TokenType::CHARACTER);
 	out.emplace_back("backtrace", sax::Token::TokenType::END_ELEMENT);
+	out.emplace_back("command", sax::Token::TokenType::START_ELEMENT);
+	out.emplace_back(command, sax::Token::TokenType::CHARACTER);
+	out.emplace_back("command", sax::Token::TokenType::END_ELEMENT);
 	out.emplace_back(CommonException::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT);
 }
 
diff --git a/alib2common/src/exception/CommonException.h b/alib2common/src/exception/CommonException.h
index f614550c746a95f0db0fad4108634b6aaac809f3..0f697f0f721e6ad5ac496bc1bb319974cde19a4d 100644
--- a/alib2common/src/exception/CommonException.h
+++ b/alib2common/src/exception/CommonException.h
@@ -27,13 +27,12 @@ protected:
 	std::string cause;
 	std::string backtrace;
 	std::string whatMessage;
+	std::string command;
 
 public:
-	explicit CommonException ( );
-
 	explicit CommonException ( std::string cause );
 
-	explicit CommonException ( std::string cause, std::string backtrace );
+	explicit CommonException ( std::string cause, std::string backtrace, std::string command );
 
 	virtual alib::ObjectBase * clone ( ) const;
 
diff --git a/alib2common/src/sax/ComposerException.cpp b/alib2common/src/sax/ComposerException.cpp
index e398ec2cc5e9067341c8af522680194eaebf1fc6..382023204420871406a119e99d7867541c82e6a5 100644
--- a/alib2common/src/sax/ComposerException.cpp
+++ b/alib2common/src/sax/ComposerException.cpp
@@ -9,10 +9,7 @@
 
 namespace sax {
 
-ComposerException::ComposerException(const Token& expected, const Token& read) :
-		expected(expected), read(read) {
-
-	cause = "Composer Exception: Expected: " + expected.getData() + " Read: " + read.getData();
+ComposerException::ComposerException(const Token& expected, const Token& read) : CommonException("Composer Exception: Expected: " + expected.getData() + " Read: " + read.getData()), expected(expected), read(read) {
 }
 
 } /* namespace sax */
diff --git a/alib2common/src/sax/ParserException.cpp b/alib2common/src/sax/ParserException.cpp
index c92d6c4a0c5522a32edc8732f28690103f722fbd..3e462848550d56c73ce164fb65d58887c2721168 100644
--- a/alib2common/src/sax/ParserException.cpp
+++ b/alib2common/src/sax/ParserException.cpp
@@ -9,10 +9,7 @@
 
 namespace sax {
 
-ParserException::ParserException(const Token& expected, const Token& read) :
-		expected(expected), read(read) {
-
-	cause = "Parser Exception: Expected: " + expected.getData() + " Read: " + read.getData();
+ParserException::ParserException(const Token& expected, const Token& read) : CommonException("Parser Exception: Expected: " + expected.getData() + " Read: " + read.getData()), expected(expected), read(read) {
 }
 
 } /* namespace sax */
diff --git a/alib2data/src/alphabet/SymbolException.cpp b/alib2data/src/alphabet/SymbolException.cpp
index 4f838d17cefa8933b1066178764da81e4c89ea45..fd4c910504d25dd1ed5cdea865ebf8971539a476 100644
--- a/alib2data/src/alphabet/SymbolException.cpp
+++ b/alib2data/src/alphabet/SymbolException.cpp
@@ -9,9 +9,6 @@
 
 namespace alphabet {
 
-SymbolException::SymbolException() {
-}
-
 SymbolException::SymbolException(const std::string& cause) :
 		CommonException(cause) {
 }
diff --git a/alib2data/src/alphabet/SymbolException.h b/alib2data/src/alphabet/SymbolException.h
index 2c7445b854dcc2bcc80bf1d12aba007526075d97..c05da7a7b32a207e1024170a4e5603e4521dcd12 100644
--- a/alib2data/src/alphabet/SymbolException.h
+++ b/alib2data/src/alphabet/SymbolException.h
@@ -17,7 +17,6 @@ namespace alphabet {
  */
 class SymbolException: public exception::CommonException {
 public:
-	SymbolException();
 	explicit SymbolException(const std::string& cause);
 };
 
diff --git a/alib2data/src/automaton/AutomatonException.cpp b/alib2data/src/automaton/AutomatonException.cpp
index a533f710da3edf0e36563f3923eda227e4b44992..57193ee179d13c2a77ad8ba16a69e157c6c4a83b 100644
--- a/alib2data/src/automaton/AutomatonException.cpp
+++ b/alib2data/src/automaton/AutomatonException.cpp
@@ -9,9 +9,6 @@
 
 namespace automaton {
 
-AutomatonException::AutomatonException() {
-}
-
 AutomatonException::AutomatonException(const std::string& cause) :
 		CommonException(cause) {
 }
diff --git a/alib2data/src/automaton/AutomatonException.h b/alib2data/src/automaton/AutomatonException.h
index 3005dfd0a35d64d34488e6d2a30590da5c75c5ee..1f68a7efb8acd47425401df8c28d4b4775517009 100644
--- a/alib2data/src/automaton/AutomatonException.h
+++ b/alib2data/src/automaton/AutomatonException.h
@@ -17,7 +17,6 @@ namespace automaton {
  */
 class AutomatonException: public exception::CommonException {
 public:
-	AutomatonException();
 	explicit AutomatonException(const std::string& cause);
 };
 
diff --git a/alib2data/src/grammar/GrammarException.cpp b/alib2data/src/grammar/GrammarException.cpp
index 83e5c7cc7199c8547f8855ed59992f99b56477e2..f554f459c80c77e11ce68ccb6780c8e1512ae4ac 100644
--- a/alib2data/src/grammar/GrammarException.cpp
+++ b/alib2data/src/grammar/GrammarException.cpp
@@ -9,9 +9,6 @@
 
 namespace grammar {
 
-GrammarException::GrammarException() {
-}
-
 GrammarException::GrammarException(const std::string& cause) :
 		CommonException(cause) {
 }
diff --git a/alib2data/src/grammar/GrammarException.h b/alib2data/src/grammar/GrammarException.h
index 847360e22b21a6563dc14694a6c191d7e8843356..e8242fea971cde33f9b5b62a0a6fd2c16ef248b2 100644
--- a/alib2data/src/grammar/GrammarException.h
+++ b/alib2data/src/grammar/GrammarException.h
@@ -17,7 +17,6 @@ namespace grammar {
  */
 class GrammarException: public exception::CommonException {
 public:
-	GrammarException();
 	explicit GrammarException(const std::string& cause);
 };
 
diff --git a/alib2data/src/tree/TreeException.cpp b/alib2data/src/tree/TreeException.cpp
index e1ebc16f975ee44d6ecba5a27d1cef5c7b0142d4..12215588cf272d68648aa5d898393f8b7bf742ba 100644
--- a/alib2data/src/tree/TreeException.cpp
+++ b/alib2data/src/tree/TreeException.cpp
@@ -9,9 +9,6 @@
 
 namespace tree {
 
-TreeException::TreeException() {
-}
-
 TreeException::TreeException(const std::string& cause) :
 		CommonException(cause) {
 }
diff --git a/alib2data/src/tree/TreeException.h b/alib2data/src/tree/TreeException.h
index 7dd4b74b1764c54856443ae50cafeab7f1dde6b7..334753b36b42620591fbc2728e2d32239807d94c 100644
--- a/alib2data/src/tree/TreeException.h
+++ b/alib2data/src/tree/TreeException.h
@@ -17,7 +17,6 @@ namespace tree {
  */
 class TreeException: public exception::CommonException {
 public:
-	TreeException();
 	explicit TreeException(const std::string& cause);
 };
 
diff --git a/alphabetManip2/src/alphabetManip.cpp b/alphabetManip2/src/alphabetManip.cpp
index 881759486506f0f18e25eff5ccdca3fdc3387d23..1a279613dbe6dd6b3016ace79595df6223301974 100644
--- a/alphabetManip2/src/alphabetManip.cpp
+++ b/alphabetManip2/src/alphabetManip.cpp
@@ -55,6 +55,9 @@ void process ( T & data, TCLAP::ValueArg < std::string > & operation, std::deque
 
 int main ( int argc, char * argv[] ) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Alphabet manipulation binary", ' ', "0.01" );
 
 		std::vector < std::string > allowed;
diff --git a/ameasure2/src/ameasure.cpp b/ameasure2/src/ameasure.cpp
index 28f5bee981a65f800e3b6bce2598f8ae779a46dc..cae11db5828482f05a902362f4a0d267046f68a3 100644
--- a/ameasure2/src/ameasure.cpp
+++ b/ameasure2/src/ameasure.cpp
@@ -4,20 +4,29 @@
 
 #include "exception/CommonException.h"
 #include "sax/SaxParseInterface.h"
+#include <global/GlobalData.h>
 #include <tclap/CmdLine.h>
 
 #include <measure>
 #include <measurepp>
 
 int main ( int argc, char * * argv ) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Measurement provisioner binary", ' ', "0.01" );
 
 		TCLAP::UnlabeledValueArg < std::string > input ( "input", "provisioning file", false, "-", "file" );
 		cmd.add ( input );
 
-		cmd.parse ( argc, argv );
+		TCLAP::SwitchArg verbose(		"v",	"verbose",	"Be verbose",			false);
+		cmd.add( verbose );
+
+		cmd.parse(argc, argv);
+
+		if(verbose.isSet())
+			common::GlobalData::verbose = true;
 
 		std::deque < sax::Token > tokens;
 
diff --git a/ameasurep2/src/ameasureproc.cpp b/ameasurep2/src/ameasureproc.cpp
index ba60963a3fd6c6661821635b5b092ecd00b1c6a4..99e9f645ccf759df449866397628addd865e135a 100644
--- a/ameasurep2/src/ameasureproc.cpp
+++ b/ameasurep2/src/ameasureproc.cpp
@@ -4,14 +4,17 @@
 
 #include "exception/CommonException.h"
 #include "sax/SaxParseInterface.h"
+#include <global/GlobalData.h>
 #include <tclap/CmdLine.h>
 
 #include <measure>
 #include <measurepp>
 
 int main ( int argc, char * * argv ) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Measurement processor binary", ' ', "0.01" );
 
 		std::vector < std::string > allowedOutput;
@@ -48,7 +51,13 @@ int main ( int argc, char * * argv ) {
 		TCLAP::UnlabeledValueArg < std::string > input ( "input", "provisioning results file", false, "-", "file" );
 		cmd.add ( input );
 
-		cmd.parse ( argc, argv );
+		TCLAP::SwitchArg verbose(		"v",	"verbose",	"Be verbose",			false);
+		cmd.add( verbose );
+
+		cmd.parse(argc, argv);
+
+		if(verbose.isSet())
+			common::GlobalData::verbose = true;
 
 		std::deque < sax::Token > tokens;
 
diff --git a/aminimize2/src/aminimize.cpp b/aminimize2/src/aminimize.cpp
index 004a4169413978221104f7d3946d0af81b06ef2f..8a4739a3c9e7221d479ec2a6646b7bd9ccb91def 100644
--- a/aminimize2/src/aminimize.cpp
+++ b/aminimize2/src/aminimize.cpp
@@ -17,8 +17,10 @@
 #include "automaton/simplify/MinimizeBrzozowski.h"
 
 int main(int argc, char** argv) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Automaton minimize binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton to minimize",	false,	"-",		"file");
diff --git a/anormalize2/src/anormalize.cpp b/anormalize2/src/anormalize.cpp
index 957698ebfce822a9356b94101d3433f0faafae68..73284372b7cee24698c4bdc035b4382b457edd7a 100644
--- a/anormalize2/src/anormalize.cpp
+++ b/anormalize2/src/anormalize.cpp
@@ -22,8 +22,10 @@
 #include "grammar/parsing/DeterministicLL1Grammar.h"
 
 int main ( int argc, char * * argv ) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Automaton normalize binary", ' ', "0.01" );
 
 		TCLAP::ValueArg < std::string > input ( "i", "input", "Input to normalize", false, "-", "file" );
diff --git a/arand2/src/arand.cpp b/arand2/src/arand.cpp
index 26c435c11e33da468d36fbb513b75f7b7ed73049..c12fd9d6b1cb0b0b23d6560698d0598a0eedeb42 100644
--- a/arand2/src/arand.cpp
+++ b/arand2/src/arand.cpp
@@ -21,6 +21,9 @@
 
 int main ( int argc, char * argv[] ) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Random generator binary", ' ', "0.01" );
 
 		std::vector < std::string > allowed;
diff --git a/araw2/src/araw.cpp b/araw2/src/araw.cpp
index f81b5e4f6df769dbe843b9980ad7a3f211681323..f0bbe200941a86c2bd78803a9442f36a5b15820f 100644
--- a/araw2/src/araw.cpp
+++ b/araw2/src/araw.cpp
@@ -23,6 +23,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("raw reading binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Input to read",		false,	"-",		"file");
diff --git a/arename2/src/arename.cpp b/arename2/src/arename.cpp
index c71839e22c85488b85fbd2819480db20082e33ee..226e7c83bbb6f07e014f4716ed76733ff111255f 100644
--- a/arename2/src/arename.cpp
+++ b/arename2/src/arename.cpp
@@ -15,8 +15,10 @@
 #include "automaton/simplify/Rename.h"
 
 int main(int argc, char** argv) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Automaton rename binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton to rename",		false,	"-",		"file");
diff --git a/areverse2/src/areverse.cpp b/areverse2/src/areverse.cpp
index 8e7e79e1330248b8cb954be4ffd11670c41d6fb7..2884225fa4b1e7debf2730d484d00d2dcd070e11 100644
--- a/areverse2/src/areverse.cpp
+++ b/areverse2/src/areverse.cpp
@@ -15,8 +15,10 @@
 #include "automaton/transform/Reverse.h"
 
 int main(int argc, char** argv) {
-
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Automaton reverse binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton to reverse",		false,	"-",		"file");
diff --git a/arun2/src/arun.cpp b/arun2/src/arun.cpp
index 255be348a1b3aae2a9dd5d5075f3bc9704144895..900f83169c4351941c8f92aa18f908330bd6f92a 100644
--- a/arun2/src/arun.cpp
+++ b/arun2/src/arun.cpp
@@ -27,6 +27,9 @@
 
 int main(int argc, char* argv[]) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Automaton run binary", ' ', "0.01");
 
 		std::vector<std::string> allowed;
diff --git a/astat2/src/astat.cpp b/astat2/src/astat.cpp
index 115c22f5cabc31453ce39c7c0ac7fa702dea119b..d3caba844911110e6e9dba9388f8b22d1d368fd7 100644
--- a/astat2/src/astat.cpp
+++ b/astat2/src/astat.cpp
@@ -36,6 +36,9 @@ PrintingOptions translatePrintingOptions ( std::string value ) {
 
 int main ( int argc, char * argv[] ) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Prints usefull information about automata, grammars, regexps, ...", ' ', "0.01" );
 
 		// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/astringology2/src/astringology.cpp b/astringology2/src/astringology.cpp
index 3c7d355b0a94596f58df2646939523906f1de4cf..5b69fb38de7741800ef59ebd9c49f8d9e0d63e52 100644
--- a/astringology2/src/astringology.cpp
+++ b/astringology2/src/astringology.cpp
@@ -38,6 +38,9 @@
 
 int main ( int argc, char * argv[] ) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd ( "Stringology algorithm access binary", ' ', "0.01" );
 
 		std::vector < std::string > allowed;
diff --git a/atrim2/src/atrim.cpp b/atrim2/src/atrim.cpp
index 24b04e059995b1876eb030c5c08986d7d47fc0fc..01b0421849bca6ebfb9837a066c6b6a430c9348b 100644
--- a/atrim2/src/atrim.cpp
+++ b/atrim2/src/atrim.cpp
@@ -60,6 +60,9 @@ regexp::RegExp optimizeRegExp(const regexp::RegExp& r) {
 
 int main(int argc, char* argv[]) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Removes unreachable and useless states from FSM, productive and unreachable nonterminals from CFG. Simplifies representation of RE", ' ', "0.01");
 
 		TCLAP::SwitchArg useless(		"u",	"useless",	"Removes useless states (or symbols). (works with FSM or CFG)"		);
diff --git a/tniceprint/src/tniceprint.cpp b/tniceprint/src/tniceprint.cpp
index 09a7951bd296e8a65e2a8c1824e89216f40d3ca7..8c8e26e0c10bcd936bb217d79b758fa61adf0d7b 100644
--- a/tniceprint/src/tniceprint.cpp
+++ b/tniceprint/src/tniceprint.cpp
@@ -18,6 +18,9 @@
 
 int main(int argc, char** argv) {
 	try {
+		common::GlobalData::argc = argc;
+		common::GlobalData::argv = argv;
+
 		TCLAP::CmdLine cmd("Tree nice print binary", ' ', "0.01");
 
 		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Input to nice print",		false,	"-",		"file");