diff --git a/src/HighScore.txt b/src/HighScore.txt
index 2e66562e2705f8e5c5ddccceeecaab861194f30a..147ea53ba1b4b991eb9a128a1231e006722485a3 100644
--- a/src/HighScore.txt
+++ b/src/HighScore.txt
@@ -1 +1 @@
-49
\ No newline at end of file
+158
\ No newline at end of file
diff --git a/src/Images1/8ball.png b/src/Images1/8ball.png
new file mode 100644
index 0000000000000000000000000000000000000000..86a16f6f593a3626a93b5f8d1e63cee76cf5f2c7
Binary files /dev/null and b/src/Images1/8ball.png differ
diff --git a/src/Images1/fire_engine.png b/src/Images1/fire_engine.png
new file mode 100644
index 0000000000000000000000000000000000000000..0fc5d9fd1edb2d256849a3f11c98b73a393d9421
Binary files /dev/null and b/src/Images1/fire_engine.png differ
diff --git a/src/Images1/helicopter.png b/src/Images1/helicopter.png
new file mode 100644
index 0000000000000000000000000000000000000000..2da3f0284df9edac0f115da382168149a3d9a4c5
Binary files /dev/null and b/src/Images1/helicopter.png differ
diff --git a/src/constants/Constants.java b/src/constants/Constants.java
index c83009cc7cf37ea5104b41a479df964ae526d459..1182b0f15143a5091031846a8aa47dc67d03c9b1 100644
--- a/src/constants/Constants.java
+++ b/src/constants/Constants.java
@@ -25,7 +25,13 @@ public interface Constants {
 	
 	//enemies
 	String enemyImg = "src/Images1/lorry.png";
+	String enemyImg2 = "src/Images1/fire_engine.png";
 	String flyingEnemyImg = "src/Images1/saucer.png";
+	String flyingEnemyImg2 = "src/Images1/helicopter.png";
+	String bombImg = "src/Images1/bomb.png";
+	String bombImg2 = "src/Images1/8ball.png";
+	double bombWidth = 50;
+	double bombHeight = 50;
 	double enemyWidth = 80;
 	double enemyHeight = 80;
 	
@@ -35,7 +41,5 @@ public interface Constants {
 	double powerWidth = 40;
 	double powerHeight = 40;
 	
-	String bombImg = "src/Images1/bomb.png";
-	double bombWidth = 50;
-	double bombHeight = 50;
+	
 }
diff --git a/src/states/FlyingEnemy.java b/src/states/FlyingEnemy.java
index d7b93d077accd6663488af2ccf737bc5d9d07261..10bc96540e2a679943a802495872fc23820347eb 100644
--- a/src/states/FlyingEnemy.java
+++ b/src/states/FlyingEnemy.java
@@ -37,10 +37,10 @@ public class FlyingEnemy extends Object{
 
 
 	//om man vill kan man skicka med players x pos på dirren, blir lite svårare då ba
-	public Enemy dropBomb(Player p) {
+	public Enemy dropBomb(Player p, String s) {
 
 		if (!bombDropped && this.getX() >= bombDropX - 50 && this.getX() <= bombDropX + 50) {
-			Enemy bomb = new Enemy(Constants.bombImg, bombDropX, 50, Constants.bombHeight, Constants.bombWidth);  // Drop the bomb at bombDropX
+			Enemy bomb = new Enemy(s, bombDropX, 50, Constants.bombHeight, Constants.bombWidth);  // Drop the bomb at bombDropX
 			System.out.println("Bomb dropped at: " + bombDropX);
 
 			bombDropped = true;  // Mark that the bomb has been dropped
diff --git a/src/states/PlayState.java b/src/states/PlayState.java
index 979d637a9ff0d96fd20209bb9284434022c2b99d..b9bb0ce84745ecd10438bc11966c596f3e345d95 100644
--- a/src/states/PlayState.java
+++ b/src/states/PlayState.java
@@ -4,7 +4,6 @@ import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.input.KeyEvent;
 import javafx.scene.paint.Color;
 import javafx.scene.text.Font;
-import java.util.Random;
 import java.util.concurrent.ThreadLocalRandom;
 import constants.Constants;
 
@@ -29,8 +28,6 @@ public class PlayState extends GameState {
 	private String scoreText;
 	private ExtraLifePowerUp extraLife;
 	private FlyingEnemy flyingEnemy;
-	//	private double tempy;
-	private Random engen = new Random(); 
 	private int movingSpeed = 10;
 	private Enemy bomb;
 	private boolean isFlyingEnemyActive = false;
@@ -39,6 +36,9 @@ public class PlayState extends GameState {
 	private SpeedPowerUp speedUp;
 	private boolean isPowerUpActive;
 	private int num;
+	private String bombImg;
+	private PowerUp last = null;
+
 
 
 
@@ -60,10 +60,11 @@ public class PlayState extends GameState {
 
 	public void mode1() {
 		player = new Player(Constants.playerImg);
-		enemy = new Enemy(Constants.enemyImg, -100.00, 270.00, Constants.enemyHeight, Constants.enemyWidth);
-		extraLife = new ExtraLifePowerUp(Constants.lifeImg, 900.00, 170, Constants.powerHeight, Constants.powerWidth);
-		speedUp = new SpeedPowerUp(Constants.powerImg, 900.00, 265.00, Constants.powerHeight, Constants.powerWidth);
-		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 20.00, Constants.enemyHeight, Constants.enemyWidth);
+		enemy = new Enemy(Constants.enemyImg, 900.00, 270.00, Constants.enemyHeight, Constants.enemyWidth);
+		extraLife = new ExtraLifePowerUp(Constants.lifeImg, 1200.00, 170, Constants.powerHeight, Constants.powerWidth);
+		speedUp = new SpeedPowerUp(Constants.powerImg, 1200.00, 265.00, Constants.powerHeight, Constants.powerWidth);
+		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, 900.00, 20.00, Constants.enemyHeight, Constants.enemyWidth);
+		bombImg = Constants.bombImg;
 		bgColor = Color.ROYALBLUE;
 		lineColor = Color.WHITE;
 
@@ -71,10 +72,11 @@ public class PlayState extends GameState {
 
 	public void mode2() {
 		player = new Player(Constants.playerImg2);
-		enemy = new Enemy(Constants.enemyImg, -100.00, 270.00, Constants.enemyHeight, Constants.enemyWidth);
+		enemy = new Enemy(Constants.enemyImg2, 900.00, 270.00, Constants.enemyHeight, Constants.enemyWidth);
 		extraLife = new ExtraLifePowerUp(Constants.lifeImg, -100.00, 270, Constants.powerHeight, Constants.powerWidth);
 		speedUp = new SpeedPowerUp(Constants.powerImg, -100.00, 265.00, Constants.powerHeight, Constants.powerWidth);
-		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 20.00, Constants.enemyHeight, Constants.enemyWidth);
+		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg2, 900.00, 20.00, Constants.enemyHeight, Constants.enemyWidth);
+		bombImg = Constants.bombImg2;
 		bgColor = Color.BEIGE;
 		lineColor = Color.BLACK;
 
@@ -128,28 +130,41 @@ public class PlayState extends GameState {
 
 	private void drawPowerUps(GraphicsContext g) {
 
-		if (isPowerUpActive) {
+		if (isPowerUpActive && movingSpeed < 100) {
 
+			if (last == speedUp) {
+				num = 1;
+			}
 			if (num == 0) {
+				drawSpeedUp(g);
+				last = null;
 
-				if(speedUp.getX() < 0 - Constants.playerWidth) {
-					speedUp.setX(Constants.screenWidth);
-					isPowerUpActive = false;
-				}
+			} else if (num == 1){
+				drawExtraLife(g);
+				last = null;
+			}
+		}
+	}
 
-				g.drawImage(speedUp.getImage(), speedUp.getX(), speedUp.getY(), Constants.powerWidth, Constants.powerHeight);
+	public void drawSpeedUp(GraphicsContext g) {
+		if(speedUp.getX() < 0 - Constants.playerWidth) {
+			speedUp.setX(Constants.screenWidth);
+			isPowerUpActive = false;
+		}
 
-			} else if (num == 1){
+		g.drawImage(speedUp.getImage(), speedUp.getX(), speedUp.getY(), Constants.powerWidth, Constants.powerHeight);
 
-				if(extraLife.getX() < 0 - Constants.playerWidth) {
-					extraLife.setX(Constants.screenWidth);
-					isPowerUpActive = false;
-				}
-				g.drawImage(extraLife.getImage(), extraLife.getX(), extraLife.getY(), Constants.powerWidth, Constants.powerHeight);
+		last = speedUp;
+	}
 
-			}
+	public void drawExtraLife(GraphicsContext g) {
+		if(extraLife.getX() < 0 - Constants.playerWidth) {
+			extraLife.setX(Constants.screenWidth);
+			isPowerUpActive = false;
 		}
+		g.drawImage(extraLife.getImage(), extraLife.getX(), extraLife.getY(), Constants.powerWidth, Constants.powerHeight);
 
+		last = extraLife;
 	}
 
 	public void drawEnemies(GraphicsContext g) {
@@ -173,15 +188,18 @@ public class PlayState extends GameState {
 		g.drawImage(flyingEnemy.getImage(), flyingEnemy.getX(), flyingEnemy.getY(), Constants.enemyWidth, Constants.enemyHeight);
 
 		if (flyingEnemy.getX() < 0 - Constants.enemyWidth) {
-			isFlyingEnemyActive = false;
+			flyingEnemy.setX(Constants.screenWidth);
 			player.updatePasses(1);
-
-
 			// Reset bomb drop flag to allow the next bomb drop
 			flyingEnemy.resetBombDrop();
-
 			speedCheck();
 
+			int r = getRandom();
+
+			if(r == 1) {
+				isFlyingEnemyActive = false;
+			}
+
 
 		}		
 	}
@@ -200,9 +218,10 @@ public class PlayState extends GameState {
 			speedCheck();
 
 
-			if (getRandom() == 1 && player.getPasses() > 2) {  // 50% chance after player hase passed 
+			if (player.getPasses() > 4 && getRandom() == 0) {  // 50% chance after player hase passed 
 				isFlyingEnemyActive = true;
-				flyingEnemy.setX(Constants.screenWidth);  // Reset position
+				// Reset position
+				System.out.println("Stage one activated, flyingenemy added to the mix");
 			}
 		}		
 	}
@@ -214,11 +233,10 @@ public class PlayState extends GameState {
 		if (player.getPasses() % 5 == 0) {
 			movingSpeed += 1;
 			System.out.println("speed set to: " + Integer.toString(movingSpeed));
-		} else if (player.getPasses() % 2 == 0) {
-
+		} else if (player.getPasses() > 10 && player.getPasses() % 2 == 0) {
 			isPowerUpActive = true;			
-			//			num = 0;
 			num = getRandom();
+
 		}
 	}
 
@@ -359,7 +377,7 @@ public class PlayState extends GameState {
 
 			flyingEnemy.setX(flyingEnemy.getX() -movingSpeed);
 
-			Enemy droppedBomb = flyingEnemy.dropBomb(player);
+			Enemy droppedBomb = flyingEnemy.dropBomb(player, bombImg);
 
 			if (droppedBomb != null) {
 				bomb = droppedBomb;
diff --git a/src/states/SpeedPowerUp.java b/src/states/SpeedPowerUp.java
index 5d2ff7b907c8e9cfb0db17bfea41c6cbfd1ddb50..9b3dd7f54fc1bea9065eed9f4faf0b7335313303 100644
--- a/src/states/SpeedPowerUp.java
+++ b/src/states/SpeedPowerUp.java
@@ -19,6 +19,8 @@ public class SpeedPowerUp extends PowerUp {
 	@Override
 	public void use(Player player, PlayState playState) {
 
+
+		
 		player.lockLives(true);
 
 		playState.setSpeed(100);
@@ -37,7 +39,7 @@ public class SpeedPowerUp extends PowerUp {
 
 		} else {
 
-			if ((player.getPasses() - start) >= 10) {
+			if ((player.getPasses() - start) >= 5) {
 				playState.setSpeed(speed);
 				player.lockLives(false);
 				player.setPlayerY(265);