diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin
index f566d0aed52bf3de784fee4fc6c2202dde008dd2..70c61e009c399686f85c6b37b026b3c4ef139934 100644
Binary files a/.gradle/8.4/executionHistory/executionHistory.bin and b/.gradle/8.4/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.4/executionHistory/executionHistory.lock b/.gradle/8.4/executionHistory/executionHistory.lock
index b40c2038d7a08e222a9a7f42efbb97a641e2f7bd..d597cbc717a5c523cec987c22053e7e76e4f16e6 100644
Binary files a/.gradle/8.4/executionHistory/executionHistory.lock and b/.gradle/8.4/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.bin b/.gradle/8.4/fileHashes/fileHashes.bin
index fd8277fe82bb31de9e13670633c4083078e4ec89..abd9f9127b24f3863acd957d4e460c8230929de4 100644
Binary files a/.gradle/8.4/fileHashes/fileHashes.bin and b/.gradle/8.4/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.4/fileHashes/fileHashes.lock b/.gradle/8.4/fileHashes/fileHashes.lock
index 96fa37fbb2ec393380611cf3004999ce72d2130f..9e286c2f755a9b7805724c5405cf6d401c4dbe78 100644
Binary files a/.gradle/8.4/fileHashes/fileHashes.lock and b/.gradle/8.4/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.4/fileHashes/resourceHashesCache.bin b/.gradle/8.4/fileHashes/resourceHashesCache.bin
index cd9c8b06f0cc4170c7dfb0c7e96412680139faee..f78ae3afe86e5b4fc5a28f5059eb564f2f40e708 100644
Binary files a/.gradle/8.4/fileHashes/resourceHashesCache.bin and b/.gradle/8.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 5eaf3da50e8c5278410f413566655ae7dcad49b9..d732a1f7cf414c8789077cfb8abfee1f786b2f75 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index f8cb187624ffbb26d41258e3922aa23b160b14df..6391a0d797af751d0ba5999b4428020db87b5f76 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/model/Flammable/Fire.class b/build/classes/java/main/model/Flammable/Fire.class
index 2abe65e01501600b8be246ec1309fd52be8e240e..a7534c073261818efcf7e8d0e72a3be1d51000bb 100644
Binary files a/build/classes/java/main/model/Flammable/Fire.class and b/build/classes/java/main/model/Flammable/Fire.class differ
diff --git a/build/classes/java/main/model/GameBoard.class b/build/classes/java/main/model/GameBoard.class
index 4707bcbed7e4df42d26cf1253c962fde60af02f3..a61dea08ff055d2bcb69a0bd10780582622abcf8 100644
Binary files a/build/classes/java/main/model/GameBoard.class and b/build/classes/java/main/model/GameBoard.class differ
diff --git a/build/classes/java/main/model/Rockery.class b/build/classes/java/main/model/Rockery.class
index 1b8e6d4f410b9c144b5ea91b8c2b5f2ec3c4fdde..cd15169f840d0245dca9ecbab7f10a5feb9d937e 100644
Binary files a/build/classes/java/main/model/Rockery.class and b/build/classes/java/main/model/Rockery.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20 b/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20
index 2256a7e2ca817fb4f525a7e510a7f8eea8efd504..c1ac782b5f46bd7f37d2c4881517a34968693188 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20 and b/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18
index d6224bfde1cc1b9ed9565103382b8dc093a773a0..2abe65e01501600b8be246ec1309fd52be8e240e 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18 and b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId2
index a48e607bf20ec2286b91bc85c367d382db10334e..e5012f6d28881d7d171c7bdeae973cc76e0c994c 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId2 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId2 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21 b/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21
index 30dc7c9cc4bb6ce1ad75865c2025651d64289c2b..4707bcbed7e4df42d26cf1253c962fde60af02f3 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21 and b/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25 b/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25
index 7d8817e94bda0cd8245de773217e48c39e5d2108..7a3633c64f4abb59132f6defb8834ff76bd4328c 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25 and b/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26 b/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26
index 5013ecbf5a932a3fdeb6999d3282c7cade0dcaa7..ae11d7286c4c24792a71f92ca96b264da36693fa 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26 and b/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Road.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/Road.class.uniqueId6
index 39210ff31b582a70c294b28ae19f2fee138ad836..7cd384b65e4f170977907646f5f16002041872ed 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Road.class.uniqueId6 and b/build/tmp/compileJava/compileTransaction/stash-dir/Road.class.uniqueId6 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 4af7b5f944fed88cd680642b32492c3734ddb34c..e0505c646b6a2c3fd187f5260fefc847b321f82d 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/model/Builder/Director.java b/src/main/java/model/Builder/Director.java
new file mode 100644
index 0000000000000000000000000000000000000000..65851f293d5691bb31e479c44a16db96dca2d2e4
--- /dev/null
+++ b/src/main/java/model/Builder/Director.java
@@ -0,0 +1,19 @@
+package model.Builder;
+
+public class Director {
+    IGameBuilder gameBuilder;
+    public Director(IGameBuilder gameBuilder){
+        this.gameBuilder=gameBuilder;
+    }
+    public void constructGame(int initialFireCount,int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,
+                              int initialMountainCount ,int initialRoadCount,int initialRockeryCount) {
+        this.gameBuilder.setFire(initialFireCount)
+                .setFireFighter(initialFirefighterCount)
+                .setRoad(initialRoadCount)
+                .setCloud(initialCloudCount)
+                .setMotorizedFireFighter(initialMotorizedFireFighterCount)
+                .setMountain(initialMountainCount)
+                .setRockery(initialRockeryCount)
+                .build();
+    }
+}
diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java
index fca8a57d14a3f5c4a4900620360e0486ee371485..84dc54a9367aa38f948fea322fed17c16e75d513 100644
--- a/src/main/java/model/GameBoard.java
+++ b/src/main/java/model/GameBoard.java
@@ -1,5 +1,6 @@
 package model;
 
+import model.Builder.Director;
 import model.Builder.GameBuilder;
 
 import model.Visitor.FireFinder;
@@ -40,16 +41,11 @@ public class GameBoard implements Board{
         this.initialRockeryCount = initialRockeryCount;
     }
 
+
     public void initializeElements(){
-        GameBuilder gameBuilder=new GameBuilder();
-        gameBuilder.setFire(initialFireCount)
-                        .setFireFighter(initialFirefighterCount)
-                        .setRoad(initialRoadCount)
-                        .setCloud(initialCloudCount)
-                        .setMotorizedFireFighter(initialMotorizedFireFighterCount)
-                        .setMountain(initialMountainCount)
-                        .setRockery(initialRockeryCount)
-                        .build();
+        Director director=new Director(new GameBuilder());
+        director.constructGame(initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount,
+                initialMountainCount ,initialRoadCount,initialRockeryCount);
     }
 
     public static Position randomPosition() {