diff --git a/aminimize/src/Minimize.cpp b/aminimize/src/Minimize.cpp
index 94834d87b40134778a60245c7244628a56eabe0a..71c6eb173f9960d1b7cc3c3106c03155ab5bdbdf 100644
--- a/aminimize/src/Minimize.cpp
+++ b/aminimize/src/Minimize.cpp
@@ -24,10 +24,11 @@ automaton::State fromInteger(int number) {
 automaton::FSM Minimize::minimize(automaton::FSM& fsm) {
 	std::map<automaton::State, std::map<alphabet::Symbol, automaton::State > > refactor;
 
+	for(std::set<automaton::State>::const_iterator iter = fsm.getStates().begin(); iter != fsm.getStates().end(); iter++) {
+		refactor.insert(std::pair<automaton::State, std::map<alphabet::Symbol, automaton::State> >(*iter, std::map<alphabet::Symbol, automaton::State>()));
+	}
+	
 	for(std::set<automaton::TransitionFSM>::const_iterator iter = fsm.getTransitions().begin(); iter != fsm.getTransitions().end(); iter++) {
-		if(refactor.find(iter->getFrom()) == refactor.end()) {
-			refactor.insert(std::pair<automaton::State, std::map<alphabet::Symbol, automaton::State> >(iter->getFrom(), std::map<alphabet::Symbol, automaton::State>()));
-		}
 		refactor[iter->getFrom()].insert(std::pair<alphabet::Symbol, automaton::State>(iter->getInput(), iter->getTo()));
 	}
 
@@ -94,7 +95,7 @@ automaton::FSM Minimize::minimize(automaton::FSM& fsm) {
 			
 		}
 
-	} while(toEquvivalentStates1 != toEquvivalentStates2);
+	} while(minimizedTransitionFunction1.size() != minimizedTransitionFunction2.size());
 
 	automaton::FSM result;
 	for(auto iter = fsm.getInputAlphabet().begin(); iter != fsm.getInputAlphabet().end(); iter++) {