diff --git a/.gradle/8.3/executionHistory/executionHistory.bin b/.gradle/8.3/executionHistory/executionHistory.bin
index 623a2f91317550f1c7586ca6f068d914a5838be4..9d3780f8123b4b4aa99b163cdd09e0d50c25b984 100644
Binary files a/.gradle/8.3/executionHistory/executionHistory.bin and b/.gradle/8.3/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.3/executionHistory/executionHistory.lock b/.gradle/8.3/executionHistory/executionHistory.lock
index 4328d34d87aaf6308042d605fc4a9ea514de7d77..9bf0aadeb3d123b6a6b39d6f6802b6ebea54b56b 100644
Binary files a/.gradle/8.3/executionHistory/executionHistory.lock and b/.gradle/8.3/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.3/fileHashes/fileHashes.bin b/.gradle/8.3/fileHashes/fileHashes.bin
index 39f4305e248a513d9b56bab3cad9b2791e5a2bc3..c681bf04987bbb8a1e646e413d17e66df3f27ee4 100644
Binary files a/.gradle/8.3/fileHashes/fileHashes.bin and b/.gradle/8.3/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.3/fileHashes/fileHashes.lock b/.gradle/8.3/fileHashes/fileHashes.lock
index 1e2285d9aa005d790fa74ca1df1b2f94692d1c42..9985402729aff453d9a26afe68ab825daa6aaa2a 100644
Binary files a/.gradle/8.3/fileHashes/fileHashes.lock and b/.gradle/8.3/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.3/fileHashes/resourceHashesCache.bin b/.gradle/8.3/fileHashes/resourceHashesCache.bin
index 92c7a7e7608b2a7b85fe279be2a8c630a4807fec..3be5c8489c27517fcf6ee91220bf625c1df0f3a7 100644
Binary files a/.gradle/8.3/fileHashes/resourceHashesCache.bin and b/.gradle/8.3/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index e8458cb93c584c2b9cefe6f9381a9ca5ebfed6b9..8b519276fb08d350f4b602b988a77bb7c1c6a9dc 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/Display.class b/build/classes/java/main/Display.class
index 13d5b1473bb0bc4f5c31962d8a9686185786f79b..e7e857e22dc489bfff642e97414440dea28d0f10 100644
Binary files a/build/classes/java/main/Display.class and b/build/classes/java/main/Display.class differ
diff --git a/build/classes/java/main/Mirror.class b/build/classes/java/main/Mirror.class
new file mode 100644
index 0000000000000000000000000000000000000000..d0314c2c103f34bd32ad68d559914890f2ce5582
Binary files /dev/null and b/build/classes/java/main/Mirror.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0
index a76ef314521ee9fbfc354abfba4f2fbdcd0cb270..73740c541d8ee3dff57ce2a98eb1fcf6f07e5eb4 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index e79fbdfb6131979f5220a236efaf0484b598948f..4880c63038c9a0c87ab265ca3b2e0f8ebf7d6a2d 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/Display.java b/src/main/java/Display.java
index f80091bc4a84b8d23c2f9d4f0be152537c96acc5..a11e53b19ac7c83d2bd2630a8c21179f88e8734e 100644
--- a/src/main/java/Display.java
+++ b/src/main/java/Display.java
@@ -22,7 +22,7 @@ public class Display implements Initializable {
 
         this.image = MatrixGrayImage.createImageFromPGMFile("images/luminy.pgm");
 
-        transform[] transformList = new transform[] {new DecreaseGrayLevels(8), new Outline(0.05), new Invert()};
+        transform[] transformList = new transform[] {new Mirror("both")};
 
         transform transformation = new CompositeTransform(transformList);
 
diff --git a/src/main/java/Mirror.java b/src/main/java/Mirror.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0edc869ec4bc3f83a8bc6961712007c077677c9
--- /dev/null
+++ b/src/main/java/Mirror.java
@@ -0,0 +1,51 @@
+public class Mirror implements transform {
+    private String axes;
+
+    public Mirror(String axes) {
+        this.axes = axes;
+    }
+
+    public void applyTo(GrayImage image) {
+        modify(image);
+    }
+
+    public void modify(GrayImage image) {
+        int width = image.getWidth();
+        int height = image.getHeight();
+        GrayColor shortLivedColor = new ByteGrayColor();
+
+        if (axes.equals("horizontal")) {
+            horizontalFlip(image, width, height, shortLivedColor);
+        }
+
+        if (axes.equals("vertical")) {
+            verticalFlip(image, width, height, shortLivedColor);
+        }
+
+        if (axes.equals("both")) {
+            horizontalFlip(image, width, height, shortLivedColor);
+            verticalFlip(image, width, height, shortLivedColor);
+        }
+    }
+
+
+    public void horizontalFlip(GrayImage image, int width, int height, GrayColor shortLivedColor) {
+        for (int i = 0; i < width * 0.5; i++){
+            for (int j = 0; j < height; j++){
+                shortLivedColor = image.getPixelGrayColor(i, j);
+                image.setPixel(image.getPixelGrayColor(width - 1 - i, j), i, j);
+                image.setPixel(shortLivedColor, width - 1 - i, j);
+            }
+        }
+    }
+
+    public void verticalFlip(GrayImage image, int width, int height, GrayColor shortLivedColor) {
+        for (int i = 0; i < width; i++){
+            for (int j = 0; j < height * 0.5; j++){
+                shortLivedColor = image.getPixelGrayColor(i, j);
+                image.setPixel(image.getPixelGrayColor(i, height - 1 -j), i, j);
+                image.setPixel(shortLivedColor, i, height - 1 - j);
+            }
+        }
+    }
+}