diff --git a/src/killer_sokoban/Main.java b/src/killer_sokoban/Main.java
index 7a3c7a0b4192c2e1a65c607849d8b7df2f33a365..d50aa45d5b102752e6b72b0e08889bce3df57bd2 100644
--- a/src/killer_sokoban/Main.java
+++ b/src/killer_sokoban/Main.java
@@ -46,15 +46,17 @@ public class Main extends Application {
 			}
 			
 			//swapping active worker
-			boolean activeFound = false;
-			int i;
-			for(i=0; i<workers.size() && !activeFound; i++) {
-				if(workers.values().toArray()[i] == activeWorker) {
-					activeFound = true;
+			if (aliveWorkers.size() != 0) {
+				boolean activeFound = false;
+				int i;
+				for(i=0; i<aliveWorkers.size() && !activeFound; i++) {
+					if(aliveWorkers.values().toArray()[i] == activeWorker) {
+						activeFound = true;
+					}
 				}
+				if(i==aliveWorkers.size()) activeWorker = (Worker)aliveWorkers.values().toArray()[0];
+				else activeWorker = (Worker)aliveWorkers.values().toArray()[i];
 			}
-			if(i==workers.size()) activeWorker = (Worker)workers.values().toArray()[0];
-			else activeWorker = (Worker)workers.values().toArray()[i];
 			
 			//checking if game should end
 			checkGameEnded();
@@ -68,6 +70,8 @@ public class Main extends Application {
 	private static HashMap<String, Worker> workers = new HashMap<>(); //a munkások
 	private static HashMap<String, Crate> crates = new HashMap<>(); //a ládák - azért szedtem így külön mindent, hogy a játék vége detektálásánál végig lehessen kérdezgetni csak a ládákat - comment by SF
 	
+	private static HashMap<String, Worker> aliveWorkers = new HashMap<>();
+	
 	private static Worker activeWorker;
 	private static boolean gameRunning;
 	
@@ -158,20 +162,9 @@ public class Main extends Application {
 		af.shouldDraw(view);
 	}
 	public static void main(String[] args) throws IOException {
-		
 		launch(args);
-		
-//		while (true) {
-//			String line;
-//			line = br.readLine();
-//
-//			if (line == null) break;
-//			
-//			runCommand(line);			
-//		}
 	}
 	
-	
 	public static String getFieldName(AbstractField field)
 	{
 		return getKeyByValue(map, field);
@@ -189,7 +182,7 @@ public class Main extends Application {
 	
 	public static void deleteWorker(Worker w)
 	{
-		workers.remove(getKeyByValue(workers, w));
+		aliveWorkers.remove(getKeyByValue(workers, w));
 	}
 	
 	public static void deleteCrate(Crate c)
@@ -198,6 +191,11 @@ public class Main extends Application {
 	}
 	
 	private static void checkGameEnded() {
+		if (aliveWorkers.size() == 0) {
+			endGame();
+			return;
+		}
+		
 		boolean ended = true;
 		for(Crate c : crates.values()) {
 			if(!c.couldGameFinish()) ended = false;
@@ -208,12 +206,7 @@ public class Main extends Application {
 		}
 	}
 	
-	private static void endGame()
-	{
-		for (Entry<String, Worker> e : workers.entrySet())
-		{
-			System.out.println(e.getKey() + ": " + e.getValue());
-		}
+	private static void endGame() {
 		gameRunning=false;
 	}
 	
@@ -335,6 +328,7 @@ public class Main extends Application {
 	{
 		Worker w=new Worker(force);
 		workers.put(name, w);
+		aliveWorkers.put(name, w);
 		AbstractField f=map.get(field);
 		f.accept(Direction.RIGHT, w, w);
 	}
diff --git a/src/killer_sokoban/Worker.java b/src/killer_sokoban/Worker.java
index d0ebb1d69120435d9e7171b06bc8f765039161bc..30dc1d8fd63c6c426422c3a2781e1c85230d61fe 100644
--- a/src/killer_sokoban/Worker.java
+++ b/src/killer_sokoban/Worker.java
@@ -75,6 +75,7 @@ public class Worker extends Moveable {
 	public void kill() {
 		force=0;
 		alive=false;
+		Main.deleteWorker(this);
 		super.kill();
 	}