diff --git a/src/main/java/serializer/DrawerWithSave.java b/src/main/java/serializer/DrawerWithSave.java
index 2852edf47f756a132226ce5463599bdf1b95601c..e3b746fd415672722e43a9b679e9588d9e837fd8 100644
--- a/src/main/java/serializer/DrawerWithSave.java
+++ b/src/main/java/serializer/DrawerWithSave.java
@@ -1,14 +1,10 @@
 package serializer;
 
-import javafx.scene.canvas.Canvas;
 import javafx.scene.control.Alert;
 import javafx.stage.FileChooser;
-import shape.Shape;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
 
 
 public class DrawerWithSave extends state.Drawer {
diff --git a/src/main/java/serializer/ShapeReader.java b/src/main/java/serializer/ShapeReader.java
index 4905948e502223776ff4e2f8367b633669915e01..8ef764c8933c0f6c831227c259df8e7933d22eba 100644
--- a/src/main/java/serializer/ShapeReader.java
+++ b/src/main/java/serializer/ShapeReader.java
@@ -1,13 +1,12 @@
 package serializer;
 
-import shape.Shape;
+import shape.tp3.Shape;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.List;
-import java.util.stream.Collector;
 
 public class ShapeReader {
     public static List<Shape> read(File file) throws IOException {
diff --git a/src/main/java/serializer/ShapeWriter.java b/src/main/java/serializer/ShapeWriter.java
index 6a76ef8f7616a2a5ec8e21e533b3b09060e6d2c3..5e2f5d49041b1df9802e8c01290e125671488f46 100644
--- a/src/main/java/serializer/ShapeWriter.java
+++ b/src/main/java/serializer/ShapeWriter.java
@@ -1,6 +1,6 @@
 package serializer;
 
-import shape.Shape;
+import shape.tp3.Shape;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java
index 45baec7a94932af54d2fe6087214dc014d978c03..640d39bc22fe535ae969c1ecaabe327be25f01cb 100644
--- a/src/main/java/shape/App.java
+++ b/src/main/java/shape/App.java
@@ -8,6 +8,7 @@ import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.paint.Color;
 import javafx.stage.Stage;
+import shape.tp3.*;
 
 public class App extends Application {
 
diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/tp3/AbstractShape.java
similarity index 96%
rename from src/main/java/shape/AbstractShape.java
rename to src/main/java/shape/tp3/AbstractShape.java
index 21e40a1edebb004e5fe1993931ce4500dfc5e8cb..04f7b1421eafdf7067d40e117c4d52f15b3860bd 100644
--- a/src/main/java/shape/AbstractShape.java
+++ b/src/main/java/shape/tp3/AbstractShape.java
@@ -1,6 +1,7 @@
-package shape;
+package shape.tp3;
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/tp3/BorderDecorator.java
similarity index 97%
rename from src/main/java/shape/BorderDecorator.java
rename to src/main/java/shape/tp3/BorderDecorator.java
index 37c778799a659fbd896d567b1749f550482f2c89..89d03b5ccffae0c6649bf7020a6d2985e8a374bc 100644
--- a/src/main/java/shape/BorderDecorator.java
+++ b/src/main/java/shape/tp3/BorderDecorator.java
@@ -1,4 +1,4 @@
-package shape;
+package shape.tp3;
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.paint.Color;
diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/tp3/CenterDecorator.java
similarity index 98%
rename from src/main/java/shape/CenterDecorator.java
rename to src/main/java/shape/tp3/CenterDecorator.java
index e0bc27f0dd5db47940a50b0503bf9158ab9995f9..c10005e72f3a88d96aa35dc2a7576db953e926d1 100644
--- a/src/main/java/shape/CenterDecorator.java
+++ b/src/main/java/shape/tp3/CenterDecorator.java
@@ -1,4 +1,4 @@
-package shape;
+package shape.tp3;
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.paint.Color;
diff --git a/src/main/java/shape/Circle.java b/src/main/java/shape/tp3/Circle.java
similarity index 97%
rename from src/main/java/shape/Circle.java
rename to src/main/java/shape/tp3/Circle.java
index d573b2633688a6a4d979d6c24ca265726590b0bf..d4cc5b8a97372e095fe0d2039ed874032eddf09b 100644
--- a/src/main/java/shape/Circle.java
+++ b/src/main/java/shape/tp3/Circle.java
@@ -1,4 +1,4 @@
-package shape;
+package shape.tp3;
 
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/tp3/Decorator.java
similarity index 97%
rename from src/main/java/shape/Decorator.java
rename to src/main/java/shape/tp3/Decorator.java
index d2428a05cf83f2e2d7baa58cc7690686a1b99c0c..fcae4d18ef411980fce195feaaf46b6ff353fc66 100644
--- a/src/main/java/shape/Decorator.java
+++ b/src/main/java/shape/tp3/Decorator.java
@@ -1,4 +1,4 @@
-package shape;
+package shape.tp3;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.geometry.Point2D;
 
diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/tp3/Polygon.java
similarity index 97%
rename from src/main/java/shape/Polygon.java
rename to src/main/java/shape/tp3/Polygon.java
index 6399e98ee47f9c91dad684d0b0d5236b72ba80fe..8765f938f55a907c1d0ddd21ed44a2c93b205a67 100644
--- a/src/main/java/shape/Polygon.java
+++ b/src/main/java/shape/tp3/Polygon.java
@@ -1,4 +1,4 @@
-package shape;
+package shape.tp3;
 
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/tp3/Rectangle.java
similarity index 98%
rename from src/main/java/shape/Rectangle.java
rename to src/main/java/shape/tp3/Rectangle.java
index 5651dec44cd19889a2ae310a311a2fedc01087e9..e816c2822f4d6ebd184047747517d7acd6ed52d9 100644
--- a/src/main/java/shape/Rectangle.java
+++ b/src/main/java/shape/tp3/Rectangle.java
@@ -1,4 +1,4 @@
-package shape;
+package shape.tp3;
 
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
diff --git a/src/main/java/shape/Shape.java b/src/main/java/shape/tp3/Shape.java
similarity index 91%
rename from src/main/java/shape/Shape.java
rename to src/main/java/shape/tp3/Shape.java
index 8e28d81538421ca80fdf1a1faf379ab81687fcab..5246727c47bbb0fc80a7e1c4f2c06fd91528d74e 100644
--- a/src/main/java/shape/Shape.java
+++ b/src/main/java/shape/tp3/Shape.java
@@ -1,4 +1,4 @@
-package shape;
+package shape.tp3;
 
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
diff --git a/src/main/java/shape/ShapeContainer.java b/src/main/java/shape/tp3/ShapeContainer.java
similarity index 95%
rename from src/main/java/shape/ShapeContainer.java
rename to src/main/java/shape/tp3/ShapeContainer.java
index 174f89d90438edfa29e561c4e3f7f09bebb24878..95477d558b17f9f4e0276297f443b640494fdc5e 100644
--- a/src/main/java/shape/ShapeContainer.java
+++ b/src/main/java/shape/tp3/ShapeContainer.java
@@ -1,6 +1,7 @@
-package shape;
+package shape.tp3;
 
 import javafx.scene.canvas.GraphicsContext;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/shape/tp5/Shape.java b/src/main/java/shape/tp5/Shape.java
new file mode 100644
index 0000000000000000000000000000000000000000..3750e0d79672a2c8f4b578bf35a57339de6dc192
--- /dev/null
+++ b/src/main/java/shape/tp5/Shape.java
@@ -0,0 +1,9 @@
+package shape.tp5;
+
+import javafx.scene.canvas.GraphicsContext;
+
+public interface Shape {
+    void paint(GraphicsContext graphicsContext);
+    boolean contains(double x, double y);
+    void translate(double dx, double dy);
+}
diff --git a/src/main/java/state/Drawer.java b/src/main/java/state/Drawer.java
index 67b9e1c37ec55c09b9965103ca38cab002b1d815..e5c46b2dd338a1a71da1880554dbea2147f5d8e5 100644
--- a/src/main/java/state/Drawer.java
+++ b/src/main/java/state/Drawer.java
@@ -1,8 +1,7 @@
 package state;
 
 import javafx.scene.canvas.Canvas;
-import shape.Circle;
-import shape.Shape;
+import shape.tp3.Shape;
 
 import java.util.ArrayList;
 import java.util.List;