diff --git a/src/constants/Constants.java b/src/constants/Constants.java
index 1c9fddc31255ec041d307c30274273d082bd3461..e73a1847ef494d84f28d875f03ec0cc136260ee6 100644
--- a/src/constants/Constants.java
+++ b/src/constants/Constants.java
@@ -47,6 +47,8 @@ public interface Constants {
 //	powerups
 	String lifeImg = "src/Images1/apple.png";
 	String powerImg = "src/Images1/zap.png";
+	double powerWidth = 40;
+	double powerHeight = 40;
 	
 	String bombImg = "src/Images1/bomb.png";
 	double bombWidth = 50;
diff --git a/src/states/ExtraLifePowerUp.java b/src/states/ExtraLifePowerUp.java
index 01641cf31eea0d1689eed087d03b4f39c3229a2f..539a46e2e0f25969e287cff010ec15de6eb540cb 100644
--- a/src/states/ExtraLifePowerUp.java
+++ b/src/states/ExtraLifePowerUp.java
@@ -2,15 +2,19 @@ package states;
 
 public class ExtraLifePowerUp extends PowerUp {
 
-	ExtraLifePowerUp(String image) {
-		super(image);
+	public ExtraLifePowerUp(String image, double x, double y, double h, double w) {
+		super(image, x, y, h, w);
 		// TODO Auto-generated constructor stub
 	}
 
 	@Override
-	public void use(Player player) {
-		// TODO Auto-generated method stub
+	public void use(Player player, PlayState playState) {
+		player.resetLives();
+		
+	}
+
 
+	
 	}
 
-}
+
diff --git a/src/states/PlayState.java b/src/states/PlayState.java
index 7fead83ea1db9c3cb4b32f875a8d42cc4ec4e703..27b7955c1d7c452c69eab4fd19eb74e101518b11 100644
--- a/src/states/PlayState.java
+++ b/src/states/PlayState.java
@@ -64,6 +64,7 @@ public class PlayState extends GameState {
 	private boolean isFlyingEnemyActive = false;
 	private String currScore;
 	private double collisionX = -1.00;
+	private SpeedPowerUp speedUp;
 
 
 
@@ -97,7 +98,8 @@ public class PlayState extends GameState {
 		player = new Player(Constants.playerImg);
 		slidingPlayer = Constants.slidingPlayerImg;
 		enemy = new Enemy(Constants.enemyImg, -100.00, 270.00, Constants.enemyHeight, Constants.enemyWidth);
-		//		extraLife = new ExtraLifePowerUp(Constants.lifeImg);
+		extraLife = new ExtraLifePowerUp(Constants.lifeImg, 800.00, 170, Constants.powerHeight, Constants.powerWidth);
+		speedUp = new SpeedPowerUp(Constants.powerImg, 800.00, 265.00, Constants.powerHeight, Constants.powerWidth);
 		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 20.00, Constants.enemyHeight, Constants.enemyWidth);
 		//		flyingEnemy.setAntagonistX(800.00);
 		//		tempy = flyingEnemy.getY();
@@ -110,7 +112,7 @@ public class PlayState extends GameState {
 		player = new Player(Constants.playerImg2);
 		slidingPlayer = Constants.slidingPlayerImg2;
 		enemy = new Enemy(Constants.enemyImg, -100.00, 270.00, Constants.enemyHeight, Constants.enemyWidth);
-		//		extraLife = new ExtraLifePowerUp(Constants.lifeImg);
+		extraLife = new ExtraLifePowerUp(Constants.lifeImg, 800.00, 270, Constants.powerHeight, Constants.powerWidth);
 		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 20.00, Constants.enemyHeight, Constants.enemyWidth);
 		//		flyingEnemy.setAntagonistX(800.00);
 		//		tempy = flyingEnemy.getY();
@@ -158,10 +160,18 @@ public class PlayState extends GameState {
 
 
 		drawEnemy(g);
+		
+		drawPowerUps(g);
 
 
 
 
+	}
+
+	private void drawPowerUps(GraphicsContext g) {
+		g.drawImage(speedUp.getImage(), speedUp.getX(), speedUp.getY(), Constants.powerWidth, Constants.powerHeight);
+//		g.drawImage(extraLife.getImage(), extraLife.getX(), extraLife.getY(), Constants.powerWidth, Constants.powerHeight);
+		
 	}
 
 	public void drawEnemy(GraphicsContext g) {
@@ -216,8 +226,14 @@ public class PlayState extends GameState {
 	//TODO om score är större än visst antal --> lotta mellan flying och vanlig, vi kan göra en random med 2 int, ochberoende på vad den blir kan vi rita en
 	//TODO göra en variabel för y positionen som hämtas om vi ritar flygande, för att den ska behålla samma position på hela y axeln
 
-
-
+	public int getSpeed() {
+		return movingSpeed;
+	}
+	
+	
+	public void setSpeed(int s) {
+		movingSpeed = s;
+	}
 
 
 
@@ -280,6 +296,11 @@ public class PlayState extends GameState {
 	@Override
 	public void update() {
 
+		speedUp.setX(speedUp.getX() - movingSpeed);
+		speedUp.handle(player, this);
+		
+//		extraLife.setX(extraLife.getX() - movingSpeed);
+//		extraLife.checkCollision(player);
 
 		if (isFlyingEnemyActive) {
 
@@ -332,11 +353,6 @@ public class PlayState extends GameState {
 				gameOver = true;
 			} 
 
-
-
-//			if (collided && enemy.getX() < collisionX) {
-//				collided = false;
-//			}
 		}
 
 
@@ -352,11 +368,7 @@ public class PlayState extends GameState {
 			up = false;
 		}
 
-		if (down) {
-
-			player.slide(slidingPlayer);
-
-		}
+		
 
 	}
 
diff --git a/src/states/Player.java b/src/states/Player.java
index f31fce23c175cec8cb9ed205d141749570927481..d5b24e289486a6f490db66fe932f73fd2288b2e5 100644
--- a/src/states/Player.java
+++ b/src/states/Player.java
@@ -14,8 +14,8 @@ import javafx.scene.input.KeyEvent;
 import javafx.scene.shape.Rectangle;
 
 public class Player {
-	
-//	TODO se över funktioner, kanske lättare att slå samman vissa
+
+	//	TODO se över funktioner, kanske lättare att slå samman vissa
 
 	private double playerX = (Constants.screenWidth - Constants.playerWidth) / 2;
 	private double playerY = 265.00;
@@ -24,40 +24,20 @@ public class Player {
 	private Image image;
 	private boolean down = false;
 	private boolean up = false;
-	private Image slidingImage;
+
 	private Image currImage = null;
 	private int passes = 0;
-	private Rectangle bounds;
-	private double topPos = playerY;
-
-
-
-
-
-	public int getPasses() {
-		return passes;
-	}
-
-
-
-
-
-	public void updatePasses(int passes) {
-		this.passes += passes;
-	}
-
-
 
+	private boolean livesLocked = false;
 
 
 	public Player(String playerImg) {
 
-		bounds = new Rectangle(playerX, topPos, Constants.playerWidth, Constants.playerHeight);
 
 		try {
 			image = new Image(new FileInputStream(playerImg));
 			//slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
-	
+
 		} catch (FileNotFoundException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
@@ -66,18 +46,22 @@ public class Player {
 		currImage = image;
 
 	}
-	
-	
-	public Bounds getBoundingBox() {
-	    return new Rectangle(playerX, playerY, Constants.playerWidth, Constants.playerHeight).getBoundsInParent();
+
+
+
+
+
+	public int getPasses() {
+		return passes;
 	}
 
 
-	public double getRect() {
-		return topPos;
+	public void updatePasses(int passes) {
+		this.passes += passes;
 	}
 
 
+
 	public Image getImage() {
 		return currImage;
 	}
@@ -90,9 +74,14 @@ public class Player {
 
 	public void decreaseLives() {
 
+		if (!livesLocked) {
+			this.lives--;
+		}
 
-		this.lives--;
+	}
 
+	public void resetLives() {
+		this.lives = 3;
 	}
 
 
@@ -116,7 +105,6 @@ public class Player {
 		if (!down) {
 
 			playerY -= movingSpeed;
-			topPos -= movingSpeed;
 
 			if (playerY <= 110) {
 
@@ -129,7 +117,6 @@ public class Player {
 		if (down) {
 
 			playerY += movingSpeed;
-			topPos += movingSpeed;
 
 			if (playerY == 265) {
 				down = false;
@@ -140,22 +127,12 @@ public class Player {
 	}
 
 
-	public void slide(String img) {
-		try {
-			slidingImage = new Image(new FileInputStream(img));
-			//slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
 	
-		} catch (FileNotFoundException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
+
+
+
 
 	
-		currImage = slidingImage;
-		topPos = 305.00;
-		
-			
-	}
 
 
 	public void setPlayerX(double playerX) {
@@ -170,8 +147,8 @@ public class Player {
 
 	public void standUp() {
 		currImage = image;
-		topPos = playerY;
-		
+
+
 	}
 
 
@@ -180,7 +157,7 @@ public class Player {
 
 	public void moveLeft(int movingSpeed) {
 		playerX -= movingSpeed;
-		
+
 	}
 
 
@@ -188,7 +165,16 @@ public class Player {
 
 	public void moveRight(int movingSpeed) {
 		playerX += movingSpeed;
-		
+
+	}
+
+
+
+
+
+	public void lockLives(boolean b) {
+		livesLocked = b;
+
 	}
 
 
diff --git a/src/states/PowerUp.java b/src/states/PowerUp.java
index e512fa41d2d3141939fc4474ebd8dcc4ee1b9564..11ad1bb5a42402e5ad02f08c3dc1a51489a5de4d 100644
--- a/src/states/PowerUp.java
+++ b/src/states/PowerUp.java
@@ -13,14 +13,17 @@ public abstract class PowerUp extends Object{
 		// TODO Auto-generated constructor stub
 	}
 
+	protected int getScoreSinceActive() {
+		return scoreSinceActive;
+	}
 	
-	public void checkCollision(Player player) {
+	public void checkCollision(Player player, PlayState playState) {
 		if (this.playerObjectCollision(player)) {
-			use(player);
+			use(player, playState);
 			scoreSinceActive = player.getPasses();
 		}	
 	}
 	
-	public abstract void use(Player player);
+	public abstract void use(Player player, PlayState playState);
 
 }
diff --git a/src/states/SpeedPowerUp.java b/src/states/SpeedPowerUp.java
new file mode 100644
index 0000000000000000000000000000000000000000..7146300fb7148dc5f06eacd5dfc9a337660407df
--- /dev/null
+++ b/src/states/SpeedPowerUp.java
@@ -0,0 +1,55 @@
+package states;
+
+public class SpeedPowerUp extends PowerUp {
+
+	private boolean active = false;
+	private int speed;
+	private int start;
+
+	public SpeedPowerUp(String image, double x, double y, double h, double w) {
+		super(image, x, y, h, w);
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public void use(Player player, PlayState playState) {
+
+		player.lockLives(true);
+
+		playState.setSpeed(100);
+
+		active = true;
+
+
+		// TODO Auto-generated method stub
+
+	}
+
+	public void handle(Player player, PlayState playState) {
+		if (!active) {
+
+			start = player.getPasses();
+			speed = playState.getSpeed();
+
+			this.checkCollision(player, playState);
+
+			
+
+		} else {
+
+
+			if ((player.getPasses() - start) >= 10) {
+				playState.setSpeed(speed);
+				player.lockLives(false);
+				active = false;
+
+			}
+
+
+		}
+
+
+
+	}
+
+}