diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp
index 3c3907832cefcd0a1de96ba2cc833525e3827f6a..2188fc904f1e523cb48867d0cd5c356337b2732e 100644
--- a/aepsilon2/src/aepsilon.cpp
+++ b/aepsilon2/src/aepsilon.cpp
@@ -45,36 +45,28 @@ int main(int argc, char** argv) {
 			sax::SaxParseInterface::parseStdin(tokens);
 		}
 
-		if(efficient.getValue()) {
-			if(algorithm.getValue() == "outgoing") {
+		if(algorithm.getValue() == "outgoing") {
+			if(efficient.getValue())
 				alib::XmlDataFactory::toStdout(automaton::simplify::efficient::EpsilonRemoverOutgoing::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens)));
-			} else if(algorithm.getValue() == "incoming") {
-				alib::XmlDataFactory::toStdout(automaton::simplify::efficient::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::efficient::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens)));
-				else if(alib::XmlDataFactory::first<grammar::Grammar>(tokens))
-					throw exception::AlibException("NYI");
-				else
-					throw exception::AlibException("Invalid formalism");
-			} else {
-				throw exception::AlibException("Invalid algorithm");
-			}
-		} else {
-			if(algorithm.getValue() == "outgoing") {
+			else
 				alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverOutgoing::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens)));
-			} else if(algorithm.getValue() == "incoming") {
+		} else if(algorithm.getValue() == "incoming") {
+			if(efficient.getValue())
+				alib::XmlDataFactory::toStdout(automaton::simplify::efficient::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens)));
+			else
 				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))
+		} else if(algorithm.getValue() == "default") {
+			if(alib::XmlDataFactory::first<automaton::Automaton>(tokens))
+				if(efficient.getValue())
 					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");
-			}
+					alib::XmlDataFactory::toStdout(automaton::simplify::efficient::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");
 		}
 		return 0;