diff --git a/src/resources/mountainofdoom.png b/src/resources/mountainofdoom.png
index f4b1b6f69ec048d703cf3711209a7fb9f50dbced..3d1cacc82c44a415e957bb0edbc0fb6cfc2db6a8 100644
Binary files a/src/resources/mountainofdoom.png and b/src/resources/mountainofdoom.png differ
diff --git a/src/view/FieldView.java b/src/view/FieldView.java
index 18c8003966627b9c5871de449d5c8d391485aed0..095a1a576806c3cc5b25f8feb968f11cd4cbe290 100644
--- a/src/view/FieldView.java
+++ b/src/view/FieldView.java
@@ -1,5 +1,7 @@
 package view;
 
+import java.awt.Color;
+import java.awt.Font;
 import java.awt.Graphics;
 import java.awt.Image;
 import java.io.*;
@@ -23,6 +25,7 @@ public class FieldView {
 	private static Image roadturnleftdownimage;
 	private static Image roadturnlefttopimage;
 	private static Image roadturntoprightimage;
+	private static Font enemyCountFont;
 
 	static {
 		try {
@@ -53,6 +56,7 @@ public class FieldView {
 					"src\\resources\\roadturnlefttop.png"));
 			roadturntoprightimage = ImageIO.read(new File(
 					"src\\resources\\roadturntopright.png"));
+			enemyCountFont = new Font("Arial", Font.PLAIN, 12);
 		} catch (IOException e) {
 			System.out.println("Failed to load Field Image(s)!");
 		}
@@ -123,9 +127,11 @@ public class FieldView {
 		}
 		else
 			g.drawImage(emptyfieldimage, x, y, null);
-		int enemies = f.getEnemies().size();
-		if (enemies > 1) {
-			g.drawString((new Integer(enemies)).toString(), x, y+8);
+		int enemyCount = f.getEnemies().size();
+		if (enemyCount > 1) {
+			g.setFont(enemyCountFont);
+			g.setColor(Color.white);
+			g.drawString((new Integer(enemyCount)).toString(), x, y+8);
 		}
 	}
 
diff --git a/src/view/GamePanel.java b/src/view/GamePanel.java
index 92f881eb2c4d47dd07648e24b294c650f205c241..989db6667498c68d03b7d9b2b9812f76a39be8bb 100644
--- a/src/view/GamePanel.java
+++ b/src/view/GamePanel.java
@@ -39,7 +39,6 @@ public class GamePanel extends JPanel {
 	@Override
 	public void paint(Graphics g) {
 		Point towerRangePoint = null;
-		g.setFont(font);
 		g.setColor(Color.black);
 		g.fillRect(0, 0, g.getClipBounds().width, marginTop);
 		for (int i = 0; i < 15; i++) {
@@ -75,7 +74,8 @@ public class GamePanel extends JPanel {
 		if (towerRangePoint != null) {
 			TowerView.Draw(clickedField.getTower(), towerRangePoint.x, towerRangePoint.y, g, true);
 		}
-		
+
+		g.setFont(font);
 		g.setColor(Color.white);
 		PlayerView.Draw(world.getPlayer(), 30, 30, g);
 
diff --git a/src/view/TowerView.java b/src/view/TowerView.java
index ba51dc63cf91a0692504111ef358b18040458273..16fd3edd463bae1dd29250c868def162b1397d0d 100644
--- a/src/view/TowerView.java
+++ b/src/view/TowerView.java
@@ -21,7 +21,6 @@ public class TowerView
 			image = ImageIO.read(new File("src\\resources\\tower.png"));
 			fogimage = ImageIO.read(new File("src\\resources\\fog.png"));
 		} catch (IOException e) {
-			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 	}
@@ -38,5 +37,4 @@ public class TowerView
 			g.fillOval(x-50*range, y-50*range, (range*2+1)*50, (range*2+1)*50);
 		}
 	}
-
 }
\ No newline at end of file
diff --git a/src/world/Enemy.java b/src/world/Enemy.java
index 2a366e64f7d2a3b7776c2f5b9bdae0bf67288889..aca632af77b51a2a422191e9bd22b6f4d947ddec 100644
--- a/src/world/Enemy.java
+++ b/src/world/Enemy.java
@@ -14,8 +14,6 @@ public class Enemy extends Placeable implements ITickable {
 	private Field prevField;
 	private int moveTries;
 	private static HashMap<EnemyType, Integer> moveTimes = new HashMap<EnemyType, Integer>();
-	public static boolean alwaysSplit = false;
-	public static boolean randomMovement = true;
 	static
 		{
 		moveTimes.put(EnemyType.HUMAN, 3);
@@ -35,14 +33,17 @@ public class Enemy extends Placeable implements ITickable {
 
 		Random rand = new Random();
 		hp -= dmg;
-		if(alwaysSplit)
-			split();
 		if (hp <= 0) {
-			field.getWorld().notifyEnemyDied(this);
-			field.stepOff(this);
+			Die();
 		} else if (rand.nextInt(15) == 0)
 			split();
 	}
+	
+	private void Die()
+	{
+		field.getWorld().notifyEnemyDied(this);
+		field.stepOff(this);
+	}
 
 	public EnemyType getType() {
 		return type;
@@ -62,11 +63,8 @@ public class Enemy extends Placeable implements ITickable {
 				}
 			}
 			if(!potentials.isEmpty()){
-			int index = 0;
-			if (randomMovement) {
-				Random rand = new Random();
-				index = rand.nextInt(potentials.size());
-			}
+			Random rand = new Random();
+			int index = rand.nextInt(potentials.size());
 			field.stepOff(this);
 			prevField = field;
 			reset();
@@ -79,7 +77,11 @@ public class Enemy extends Placeable implements ITickable {
 
 	public void split() {
 		hp=hp/2;
-		field.getWorld().getSpawnManager().spawnEnemy(field, type, Math.round(hp),prevField);
+		if (hp == 0) {
+			Die();
+			return;
+		}
+		field.getWorld().getSpawnManager().spawnEnemy(field, type, hp, prevField);
 	}
 
 	private void reset() {
diff --git a/src/world/SpawnManager.java b/src/world/SpawnManager.java
index ae6ee3f382ef736a7311e5b9b29620b44b6fbd7c..04247f1ab882f91d37ae75c62b63bf4e8d5d0cff 100644
--- a/src/world/SpawnManager.java
+++ b/src/world/SpawnManager.java
@@ -25,7 +25,7 @@ public class SpawnManager implements ITickable, IEnemyObserver
 		this.engine = engine;
 		this.spawns = spawns;
 		spawnTimeLeft = nextSpawnTime();
-		enemiesLeft = 60;
+		enemiesLeft = 30;
 		world.addEnemyObserver(this);
 	}
 
@@ -124,7 +124,6 @@ public class SpawnManager implements ITickable, IEnemyObserver
 	{
 		//do nothing
 	}
-
 	public void enemyDied(Enemy enemy)
 	{
 		enemiesAlive--;
diff --git a/src/world/Tower.java b/src/world/Tower.java
index cdea5714efba25927c198cf432ca3c4fa2d9a7bc..538bd1136839f7fea3612156d15ab1e13771ca98 100644
--- a/src/world/Tower.java
+++ b/src/world/Tower.java
@@ -96,7 +96,10 @@ public class Tower extends Placeable implements ITickable, IEnemyObserver,
 		for (Field field : visibleFields) {
 			if (field == null)
 				continue;
-			enemiesInRange.addAll(field.getEnemies());
+			for (Enemy e : field.getEnemies()) {
+				if(!enemiesInRange.contains(e))
+					enemiesInRange.add(e);
+			}
 		}
 		target = null;
 	}
diff --git a/src/world/World.java b/src/world/World.java
index b612a72131caf339a77baa8a6074a781e69265a4..69b2197580e525f632127a4ae60268927ddbd744 100644
--- a/src/world/World.java
+++ b/src/world/World.java
@@ -61,7 +61,6 @@ public class World implements IEnemyObserver {
 		this.engine = engine;
 
 		enemyObservers = new ArrayList<IEnemyObserver>();
-		addEnemyObserver(this);
 
 		player = new Player();
 		addEnemyObserver(player);
@@ -181,6 +180,8 @@ public class World implements IEnemyObserver {
 		
 		spawnManager = new SpawnManager(engine, this, s);
 		engine.addTickable(spawnManager);
+		
+		addEnemyObserver(this);
 	}
 
 	@Override