diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
index 4678063669fc614e1c95eb01c8d106279a85cba8..456d1de406c748d872b4d02df25ab8bc66063f61 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -132,15 +132,12 @@ std::map<State, std::set<State> > EpsilonNFA::getEpsilonTransitionsFromState(con
 	if( states.find(from) == states.end())
 		throw AutomatonException("State \"" + (std::string) from.getName() + "\" doesn't exist");
 
-	std::map<State, std::set<State> > transitionsFromState;
-	for (std::map<std::pair<State, std::variant<string::Epsilon, alphabet::Symbol> >, std::set<State> >::const_iterator transition = transitions.begin(); transition != transitions.end();
-			transition++) {
-		if (transition->first.first == from && transition->first.second.is<string::Epsilon>()) {
-			transitionsFromState[transition->first.first].insert(transition->second.begin(), transition->second.end());
-		}
-	}
-
-	return transitionsFromState;
+	std::pair<State, std::variant<string::Epsilon, alphabet::Symbol> > key(from, std::variant<string::Epsilon, alphabet::Symbol>(string::Epsilon::EPSILON));
+	std::map<State, std::set<State>> res;
+	auto transition = transitions.find(key);
+	if(transition != transitions.end())
+		res.insert(std::make_pair(from, transition->second));
+	return res;
 }
 
 std::map<std::pair<State, alphabet::Symbol>, std::set<State> > EpsilonNFA::getSymbolTransitionsFromState(const State& from) const {