diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java
index f717409bc704a5c1c2f7f92c7491112da4c42715..99620fdb81b920e24505f9fe576d23d8b100b655 100644
--- a/src/main/java/model/Cloud.java
+++ b/src/main/java/model/Cloud.java
@@ -15,16 +15,32 @@ public class Cloud {
         this.neighbors = neighbors;
     }
 
-    public Position getPosition() {
-        return position;
+    public void moveAndExtinguishFire(Fire fire) {
+        Position newPosition = moveToNewPosition();
+        this.position = newPosition;
+
+        extinguishNeighboringFires(fire);
+    }
+
+    private Position moveToNewPosition() {
+        List<Position> neighborsList = neighbors.get(position);
+        return neighborsList.get((int) (Math.random() * neighborsList.size()));
     }
 
-    public void moveRandomly() {
-        List<Position> adjacentPositions = neighbors.get(position);
-        position = adjacentPositions.get(randomGenerator.nextInt(adjacentPositions.size()));
+    private void extinguishNeighboringFires(Fire fire) {
+        List<Position> neighboringPositions = neighbors.get(position);
+        for (Position neighbor : neighboringPositions) {
+            if (fire.getFirePositions().contains(neighbor)) {
+                fire.extinguishFire(neighbor);
+            }
+        }
+    }
+
+    public Position getPosition() {
+        return position;
     }
 
-    public void extinguishFire(Fire fire) {
+    public void extinguishFireCloud(Fire fire) {
             fire.getFirePositions().remove(position);
     }
 }