diff --git a/src/main/java/model/elements/CloudHandler.java b/src/main/java/model/elements/CloudHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..be6d37a9b2d5e02bc7cabd8249fa74b13bc23e89
--- /dev/null
+++ b/src/main/java/model/elements/CloudHandler.java
@@ -0,0 +1,39 @@
+package model.elements;
+
+import model.Cloud;
+import model.ModelElement;
+import util.Position;
+
+import java.util.*;
+
+public class CloudHandler implements ElementHandler {
+    private final List<Cloud> clouds;
+    private final Map<Position, List<Position>> neighbors;
+
+    public CloudHandler(List<Cloud> clouds, Map<Position, List<Position>> neighbors) {
+        this.clouds = clouds;
+        this.neighbors = neighbors;
+    }
+
+    @Override
+    public void addElement(Position position) {
+        clouds.add(new Cloud(position, neighbors));
+    }
+
+    @Override
+    public void removeElement(Position position) {
+        clouds.removeIf(cloud -> cloud.getPosition().equals(position));
+    }
+
+    @Override
+    public boolean hasElement(Position position) {
+        return clouds.stream().anyMatch(cloud -> cloud.getPosition().equals(position));
+    }
+
+
+    @Override
+    public ModelElement getModelElement() {
+        return ModelElement.CLOUD;
+    }
+}
+