diff --git a/core/src/tdt4240/netrunner/game/GameController.kt b/core/src/tdt4240/netrunner/game/GameController.kt
index 06f7412a9ee03ec6243af7fd4e0c3cf897cb258e..0ad54042f84cedce1ef22d666423bc385fb023c2 100644
--- a/core/src/tdt4240/netrunner/game/GameController.kt
+++ b/core/src/tdt4240/netrunner/game/GameController.kt
@@ -11,11 +11,18 @@ import tdt4240.netrunner.model.response.EntityData
 import tdt4240.netrunner.model.response.StatusCode
 import tdt4240.netrunner.model.response.StatusResponse
 import tdt4240.netrunner.model.util.gsonImpl
+<<<<<<< core/src/tdt4240/netrunner/game/GameController.kt
 import tdt4240.netrunner.view.controllers.CameraController
 import tdt4240.netrunner.view.controllers.GroundRenderer
 import tdt4240.netrunner.view.controllers.ParallaxRenderer
 import tdt4240.netrunner.view.controllers.PlatformRenderer
 import tdt4240.netrunner.view.controllers.PlayerRenderer
+import tdt4240.netrunner.view.GameScreen
+import tdt4240.netrunner.view.controllers.*
+=======
+
+
+>>>>>>> core/src/tdt4240/netrunner/game/GameController.kt
 
 /**
  * Client game processor
@@ -42,6 +49,7 @@ class GameController(val game: Netrunner) {
         addController(PlatformRenderer(this@GameController, this))
 
         addController(CameraController(this@GameController, this))
+        addController(PowerUpRenderer(this@GameController, this))
     }
 
     fun joinGame(username: String, playerColor: PlayerColor) {
diff --git a/core/src/tdt4240/netrunner/view/controllers/PowerUpRenderer.kt b/core/src/tdt4240/netrunner/view/controllers/PowerUpRenderer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..02e4a4314e0fbacd6890c11f603bb36c9431af41
--- /dev/null
+++ b/core/src/tdt4240/netrunner/view/controllers/PowerUpRenderer.kt
@@ -0,0 +1,31 @@
+package tdt4240.netrunner.view.controllers
+
+import com.badlogic.gdx.graphics.Texture
+import tdt4240.netrunner.game.GameController
+import tdt4240.netrunner.model.game.EcsController
+import tdt4240.netrunner.model.game.EcsEngine
+import tdt4240.netrunner.model.game.components.dynamic.PositionComponent
+import tdt4240.netrunner.model.game.components.living.PlayerComponent
+import tdt4240.netrunner.model.game.components.powerups.PowerupComponent
+
+class PowerUpRenderer(val gController: GameController, engine: EcsEngine) : EcsController(engine) {
+    private val texture = Texture("powerup.png")
+
+
+    override fun render() {
+        gController.game.batch.begin()
+        val powerups = super.ecs.getEntitiesByComponent(PowerupComponent::class.java)
+        for (powerup in powerups){
+            powerup.getComponent(PositionComponent::class.java).also{ pos ->
+                if (pos == null){
+                    throw RuntimeException("Misconfiguration; this should never throw.")
+                }
+                    gController.game.apply {
+                        batch.draw(texture, pos.pos.x, pos.pos.y, PowerupComponent.WIDTH, PowerupComponent.HEIGHT)
+                    }
+
+            }
+        }
+        gController.game.batch.end()
+    }
+}
\ No newline at end of file
diff --git a/model/src/main/kotlin/tdt4240/netrunner/model/game/components/powerups/PowerupComponent.kt b/model/src/main/kotlin/tdt4240/netrunner/model/game/components/powerups/PowerupComponent.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2e8efd31a0c7538a86f008f283539487a8e1079d
--- /dev/null
+++ b/model/src/main/kotlin/tdt4240/netrunner/model/game/components/powerups/PowerupComponent.kt
@@ -0,0 +1,13 @@
+package tdt4240.netrunner.model.game.components.powerups
+
+import tdt4240.netrunner.model.game.components.Component
+import java.lang.reflect.Modifier
+
+class PowerupComponent (val speedModifier: Float, var consumed: Boolean = false) : Component {
+    override val componentName: String = this::class.java.name
+
+    companion object{
+        const val WIDTH = 60f
+        const val HEIGHT = 60f
+    }
+}
\ No newline at end of file
diff --git a/model/src/main/kotlin/tdt4240/netrunner/model/game/factories/PowerupFactory.kt b/model/src/main/kotlin/tdt4240/netrunner/model/game/factories/PowerupFactory.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cec42500995797f76b54efc28d1c2c08e8d53e2d
--- /dev/null
+++ b/model/src/main/kotlin/tdt4240/netrunner/model/game/factories/PowerupFactory.kt
@@ -0,0 +1,32 @@
+package tdt4240.netrunner.model.game.factories
+
+import tdt4240.netrunner.model.game.Entity
+import tdt4240.netrunner.model.game.components.dynamic.PositionComponent
+import tdt4240.netrunner.model.game.components.dynamic.VelocityComponent
+import tdt4240.netrunner.model.game.components.living.LivingComponent
+import tdt4240.netrunner.model.game.components.living.PlayerComponent
+import tdt4240.netrunner.model.game.components.powerups.PowerupComponent
+import tdt4240.netrunner.model.game.data.PlayerColor
+import tdt4240.netrunner.model.util.Vec2f
+import java.lang.reflect.Modifier
+
+class PowerupFactory {
+    lateinit var pos:Vec2f
+    var speedModifier:Float = 0f
+
+    fun withPos(pos:Vec2f) = this.also {
+        this.pos = pos
+    }
+
+    fun withSpeedModifier(speedModifier:Float) = this.also {
+        this.speedModifier = speedModifier
+    }
+
+
+    fun build() : Entity {
+        return Entity(hashSetOf(
+            PositionComponent(pos),
+            PowerupComponent(speedModifier)
+        ))
+    }
+}
\ No newline at end of file
diff --git a/server/src/main/java/tdt4240/netrunner/game/WorldGen.kt b/server/src/main/java/tdt4240/netrunner/game/WorldGen.kt
index 5c08f64a527fad9bd4d485941af13b5ff84af763..f23d067db0cffca571f20327d6e9655fc695fbb6 100644
--- a/server/src/main/java/tdt4240/netrunner/game/WorldGen.kt
+++ b/server/src/main/java/tdt4240/netrunner/game/WorldGen.kt
@@ -4,23 +4,39 @@ import tdt4240.netrunner.model.game.Entity
 import tdt4240.netrunner.model.game.components.level.GroundComponent
 import tdt4240.netrunner.model.game.components.living.PlayerComponent
 import tdt4240.netrunner.model.game.factories.GroundFactory
-import tdt4240.netrunner.model.game.factories.PlatformFactory
+import tdt4240.netrunner.model.game.factories.PowerupFactory
 import tdt4240.netrunner.model.util.Vec2f
 import tdt4240.netrunner.server.game.GameRoom
-import java.util.Random
+import java.util.*
 import kotlin.math.roundToInt
 
 class WorldGen(val room: GameRoom) {
-    private val rand = Random()
-    fun genGround(length: Int) : List<Entity> {
+    fun genWorld(length: Int) : List<Entity> {
+
         val entities = mutableListOf<Entity>()
 
+        val randSpeed = 0.5f
+        val random = Random()
+        fun rand(from: Int, to: Int) : Int {
+            return random.nextInt(to - from) + from
+        }
+        val randNum = rand(0,1)
+        if(randNum == 0){
+            val randSpeed = 1.5f
+        }
+
         for (i in -3..(length / GroundComponent.MAX_WIDTH).roundToInt() + 2) {
             entities.add(GroundFactory()
                     .withStartPos(Vec2f(i * GroundComponent.MAX_WIDTH, BASE_HEIGHT))
                     .withEndPos(Vec2f((i + 1) * GroundComponent.MAX_WIDTH, BASE_HEIGHT))
                     .build()
             )
+
+            //entities.add(PowerupFactory()
+              //  .withPos(entities[entities.size-1].getComponent(GroundComponent::class.java)!!.startPos)
+                //.withSpeedModifier(randSpeed)        //TODO fix random speed
+                //.build()
+            //)
         }
 
         var x = 500f
@@ -35,6 +51,11 @@ class WorldGen(val room: GameRoom) {
             x += rand.nextInt(200, 5000)
         }
 
+        entities.add(PowerupFactory()
+          .withPos(Vec2f(140f, 300f))
+        .withSpeedModifier(randSpeed)        //TODO fix random speed
+        .build()
+        )
         return entities
     }
 
diff --git a/server/src/main/java/tdt4240/netrunner/game/controllers/powerupSpeedController.kt b/server/src/main/java/tdt4240/netrunner/game/controllers/powerupSpeedController.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ea7b8ff4e0b836d79ca55a5de156c6e68ddc0e62
--- /dev/null
+++ b/server/src/main/java/tdt4240/netrunner/game/controllers/powerupSpeedController.kt
@@ -0,0 +1,58 @@
+package tdt4240.netrunner.game.controllers
+
+import tdt4240.netrunner.model.game.EcsController
+import tdt4240.netrunner.model.game.EcsEngine
+import tdt4240.netrunner.model.game.components.dynamic.PositionComponent
+import tdt4240.netrunner.model.game.components.dynamic.VelocityComponent
+import tdt4240.netrunner.model.game.components.living.PlayerComponent
+import tdt4240.netrunner.model.game.components.powerups.PowerupComponent
+
+class powerupSpeedController(ecs: EcsEngine) : EcsController(ecs) {
+    override fun tick(delta: Double) {
+
+        super.tick(delta)
+
+        val players = super.ecs.getEntitiesByComponent(PlayerComponent::class.java)
+        val powerups = super.ecs.getEntitiesByComponent(PowerupComponent::class.java)
+
+        val PLAYER_HEIGHT = 125f            //TODO fix
+        val PLAYER_WIDTH = 100f
+
+
+        for (player in players){
+            for (powerup in powerups){
+                val powerupComponent = powerup.getComponent(PowerupComponent::class.java)!!
+                println(powerupComponent.consumed)
+                if(powerupComponent.consumed){
+                    continue
+                }
+                player.getComponent(PositionComponent::class.java).also { pos ->
+                    powerup.getComponent(PositionComponent::class.java).also { powerupPos ->
+                        if (pos == null || powerupPos == null) {
+                            throw RuntimeException("Misconfiguration")
+                        }
+                        powerupComponent.consumed = false
+                        if (
+                            !(pos.pos.x + PLAYER_WIDTH < powerupPos.pos.x
+                                    || pos.pos.x > powerupPos.pos.x + PowerupComponent.WIDTH
+                                    || pos.pos.y + PLAYER_HEIGHT < powerupPos.pos.y
+                                    || pos.pos.y > powerupPos.pos.y + PowerupComponent.HEIGHT)
+
+                        ){
+                            val playerVelocity = player.getComponent(VelocityComponent::class.java)!!
+
+                            powerupComponent.consumed = true
+                            playerVelocity.velocity *= powerupComponent.speedModifier
+                            //TODO add timeout functionality
+                        }
+                    }
+
+                }
+            }
+        }
+        super.ecs.entities.removeIf{entity->
+            val component = entity.getComponent(PowerupComponent::class.java)
+            component?.consumed ?: false
+        }
+    }
+}
diff --git a/server/src/main/java/tdt4240/netrunner/server/game/GameRoom.kt b/server/src/main/java/tdt4240/netrunner/server/game/GameRoom.kt
index 2a77bc33dc45ce7a2b54a82e2a21fb315ea57afe..926784b7fd1ac7314502684a7fbb80dbc527dbe6 100644
--- a/server/src/main/java/tdt4240/netrunner/server/game/GameRoom.kt
+++ b/server/src/main/java/tdt4240/netrunner/server/game/GameRoom.kt
@@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory
 import tdt4240.netrunner.game.WorldGen
 import tdt4240.netrunner.game.controllers.GravityController
 import tdt4240.netrunner.game.controllers.MovementController
+import tdt4240.netrunner.game.controllers.powerupSpeedController
 import tdt4240.netrunner.model.game.EcsEngine
 import tdt4240.netrunner.model.game.Entity
 import tdt4240.netrunner.model.game.components.dynamic.VelocityComponent
@@ -32,7 +33,7 @@ class GameRoom(val socketRoomID: String, val server: SocketIoServer, val control
     val createdAt = System.currentTimeMillis()
     val players = ConcurrentHashMap<String, Entity>()
     val ecs = EcsEngine().also {
-        it.entities.addAll(gen.genGround(STANDARD_FIELD_LENGTH))
+        it.entities.addAll(gen.genWorld(STANDARD_FIELD_LENGTH))
     }
     var started = false
         private set
@@ -42,6 +43,7 @@ class GameRoom(val socketRoomID: String, val server: SocketIoServer, val control
     init {
         ecs.addController(MovementController(ecs))
         ecs.addController(GravityController(ecs))
+        ecs.addController(powerupSpeedController(ecs))
 
         logger.info("New room created. ID: ${socketRoomID}")
     }