diff --git a/core/app/GameController.java b/core/app/GameController.java
index 07334ffbfb608032fc0002d24060bfb1d9d8acf3..e5c4f61cc44d20ea12ffb9a8eaa280278df6e4e1 100644
--- a/core/app/GameController.java
+++ b/core/app/GameController.java
@@ -83,8 +83,8 @@ public class GameController implements PropertyChangeListener{
 			if(lastKey != null)
 			{
 				// previous values of the players ZPM counts
-				int prevColonelZpm = Model.getInstance().getColonel().getZpmCount();
-				int prevJaffaZpm = Model.getInstance().getJaffa().getZpmCount();
+				Integer prevColonelZpm = Model.getInstance().getColonel().getZpmCount();
+				Integer prevJaffaZpm = Model.getInstance().getJaffa().getZpmCount();
 
 				switch(lastKey)
 				{
@@ -214,8 +214,7 @@ public class GameController implements PropertyChangeListener{
 					break;
 				}
 
-				takenUpZPMCountInOneTurn += updateZPMCount( rZPMCount, prevColonelZpm, prevJaffaZpm );
-				takenUpZPMCountInOneTurn = invokeZPMSpawn(takenUpZPMCountInOneTurn);
+				updateZPMCount( rZPMCount, prevColonelZpm, prevJaffaZpm );
 			} // end of if key pressed
 
 		} // end of while
@@ -225,45 +224,6 @@ public class GameController implements PropertyChangeListener{
 		return;	// Map finished
 	}
 
-	/**
-	 * Checks if a new ZPM should be spawned.
-	 * If so, than it creates a zpm in a random empty Field
-	 * @param zpms zpm's taken up since the last spawn
-	 * @return zpm's tanken up since the last spawn
-	 */
-	private int invokeZPMSpawn(int zpms) {
-		if(zpms > 1) {
-			randomZPMSpawn();
-			return 0;
-		}
-		return zpms;
-	}
-
-	/**
-	 * Searches for an empty field and inserts a zpm
-	 */
-	private void randomZPMSpawn() {
-		boolean ready = false;
-		ArrayList<Field> map = Model.getInstance().getMap();
-
-
-		Random rand = new Random();
-		while( !ready ) {
-			// TODO not works
-			int randNum = rand.nextInt(map.size());
-			if(map.get(randNum).getElementNum() == 0) {
-
-				System.out.println("new zpm at: " + randNum);
-				Field chosedField = map.get(randNum);
-				ZPM zpm = new ZPM(chosedField);
-				chosedField.addElement(zpm);
-				chosedField.addToInsert(zpm);
-				ready = true;
-			}
-		}
-
-	}
-
 	private void updateViewToolbar(Integer beforeColonelLives, Integer beforeJaffaLives)
 	{
 		int afterColonelLives = Model.getInstance().getColonel().getPlayerLives();
@@ -324,7 +284,7 @@ public class GameController implements PropertyChangeListener{
 	 * @param prevColonelZpm the previous ZPM count of
 	 *  the colonel on the current map
 	 */
-	private int updateZPMCount( int[] rZPMCount, int prevColonelZpm, int prevJaffaZpm)
+	private void updateZPMCount( int[] rZPMCount, Integer prevColonelZpm, Integer prevJaffaZpm)
 	{
 		if( rZPMCount == null)
 			rZPMCount = new int[] {0, 0};
@@ -336,17 +296,9 @@ public class GameController implements PropertyChangeListener{
 		rZPMCount[0] += colonelZPMChange;
 		rZPMCount[1] += jaffaZPMChange;
 
-		int returnValue = colonelZPMChange + jaffaZPMChange;
-
-
-		// update previous values of ZPM's on the current map
-		prevColonelZpm = Model.getInstance().getColonel().getZpmCount();
-		prevJaffaZpm = Model.getInstance().getJaffa().getZpmCount();
 
 		this.view.setColonelZPMDisplayed(rZPMCount[0]);
 		this.view.setJaffaZPMDisplayed(rZPMCount[1]);
-
-		return returnValue;
 	}
 
 	@Override
diff --git a/core/game/Model.java b/core/game/Model.java
index b8c276e8541e7edf27244b8f2ad3a4dbe0190801..8b7f978fa5fd455634bd206b64960a8632cb0ad2 100644
--- a/core/game/Model.java
+++ b/core/game/Model.java
@@ -145,7 +145,7 @@ public class Model implements PropertyChangeListener
 			int rndNum = rnd.nextInt(options.size());
 
 			Field tmp = options.get(rndNum);
-			tmp.addElement(new ZPM(tmp));
+			tmp.meet(new ZPM(tmp));
 			this.ZPMs++;
 		}
 	}
diff --git a/core/mapobjs/defobjs/Field.java b/core/mapobjs/defobjs/Field.java
index 553482b3d59223a364271c03c460f7a3501472cb..b0691d97466435ce5c28ad5ca4568bf16ab04bd4 100644
--- a/core/mapobjs/defobjs/Field.java
+++ b/core/mapobjs/defobjs/Field.java
@@ -338,4 +338,14 @@ public class Field implements IElement {
 
 		return false;
 	}
+	
+	public boolean meet(ZPM zpm)
+	{
+		if(elements.size() != 0)
+			return false;
+		
+		addToInsert(zpm);
+		insertInsertables();
+		return true;
+	}
 }