diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp
index 2afd29fe7b0f6bf3f1862ca0332213dfcfdc4242..40106b6e88affd68fb5cf220460596cd153b3a9a 100644
--- a/aepsilon2/src/aepsilon.cpp
+++ b/aepsilon2/src/aepsilon.cpp
@@ -12,13 +12,14 @@
 
 #include "automaton/simplify/EpsilonRemoverIncoming.h"
 #include "automaton/simplify/EpsilonRemoverOutgoing.h"
+#include "grammar/simplify/EpsilonRemover.h"
 
 int main(int argc, char** argv) {
 
 	try {
 		TCLAP::CmdLine cmd("Automaton rename binary", ' ', "0.01");
 
-		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton where to remove epsilon transitions",		false,	"-",		"file");
+		TCLAP::ValueArg<std::string> input(	"i",	"input",	"Automaton/Grammar where to remove epsilon transitions",		false,	"-",		"file");
 		cmd.add( input );
 
 		std::vector<std::string> algorithms{"incoming", "outgoing", "default" };
@@ -39,10 +40,17 @@ int main(int argc, char** argv) {
 			sax::SaxParseInterface::parseStdin(tokens);
 		}
 
-		if(algorithm.getValue() == "outgoing")
+		if(algorithm.getValue() == "outgoing") {
 			alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverOutgoing::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens)));
-		else if(algorithm.getValue() == "incoming" || algorithm.getValue() == "default") {
+		} else if(algorithm.getValue() == "incoming") {
 			alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens)));
+		} else if(algorithm.getValue() == "default") {
+			if(alib::XmlDataFactory::first<automaton::Automaton>(tokens))
+				alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens)));
+			else if(alib::XmlDataFactory::first<grammar::Grammar>(tokens))
+				alib::XmlDataFactory::toStdout(grammar::simplify::EpsilonRemover::remove(alib::XmlDataFactory::fromTokens<grammar::Grammar>(tokens)));
+			else
+				throw exception::AlibException("Invalid formalism");
 		} else {
 			throw exception::AlibException("Invalid algorithm");
 		}