diff --git a/src/main/java/serializer/DrawerWithSave.java b/src/main/java/serializer/DrawerWithSave.java
index e3b746fd415672722e43a9b679e9588d9e837fd8..2852edf47f756a132226ce5463599bdf1b95601c 100644
--- a/src/main/java/serializer/DrawerWithSave.java
+++ b/src/main/java/serializer/DrawerWithSave.java
@@ -1,10 +1,14 @@
 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 54540cca74b29246f5f44d2344925d4792a3e4a0..4905948e502223776ff4e2f8367b633669915e01 100644
--- a/src/main/java/serializer/ShapeReader.java
+++ b/src/main/java/serializer/ShapeReader.java
@@ -7,6 +7,7 @@ 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/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java
deleted file mode 100644
index db97daddd5da35efae50a2178be048ab9c716e3f..0000000000000000000000000000000000000000
--- a/src/main/java/shape/AbstractShape.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package shape;
-
-import javafx.geometry.Point2D;
-import javafx.scene.canvas.GraphicsContext;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public abstract class AbstractShape implements Shape {
-
-    protected List<Point2D> points = new ArrayList<>();
-
-    public void addPoints(Point2D... points){
-        this.points.addAll(Arrays.asList(points));
-    }
-    @Override
-    public int pointsCount() {
-        return points.size();
-    }
-
-    @Override
-    public Point2D point(int index) {
-        if( index >= 0 && index < points.size()){
-            return points.get(index);
-        }else {
-            throw new IndexOutOfBoundsException("Index out of bounds");
-        }
-    }
-
-    @Override
-    public abstract void draw(GraphicsContext context) ;
-}
diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java
index 0ba88a56c91b19fc643b0488c92db27a9362a639..1a519e1401fe032f06aeee35967a27e48ca362fe 100644
--- a/src/main/java/shape/App.java
+++ b/src/main/java/shape/App.java
@@ -7,6 +7,7 @@ import javafx.scene.Scene;
 import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.paint.Color;
+import javafx.scene.paint.Paint;
 import javafx.stage.Stage;
 
 
@@ -20,20 +21,12 @@ public class App extends Application {
     @Override
     public void start(Stage primaryStage) {
         Group root = new Group();
-        Canvas canvas = new Canvas(300, 300);
+        Canvas canvas = new Canvas(130, 110);
         GraphicsContext graphicsContext = canvas.getGraphicsContext2D();
         ShapeContainer shapeContainer = new ShapeContainer();
-
-        Shape rectangle = new Rectangle(Color.BLUE, new Point2D(50, 50), new Point2D(150, 100));
-        rectangle = new BorderDecorator(rectangle, 10);
-        rectangle = new CenterDecorator(rectangle, 5);
-        shapeContainer.addShape(rectangle);
-
-        Shape polygone = new Polygon(Color.YELLOW, new Point2D(210,100),new Point2D(250,100),new Point2D(150,160), new Point2D(90,100));
-        polygone = new BorderDecorator(polygone, 15);
-        polygone = new CenterDecorator(polygone, 5);
-        shapeContainer.addShape(polygone);
-
+        graphicsContext.setFill(Color.AQUAMARINE);
+        graphicsContext.fillOval(10,10,10,10);
+        shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40)));
         shapeContainer.draw(graphicsContext);
         root.getChildren().add(canvas);
         primaryStage.setScene(new Scene(root));
diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java
deleted file mode 100644
index bb0865612f230286f105742efda3e9c2a4fe51b0..0000000000000000000000000000000000000000
--- a/src/main/java/shape/BorderDecorator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package shape;
-
-import javafx.geometry.Point2D;
-import javafx.scene.canvas.GraphicsContext;
-import javafx.scene.paint.Color;
-
-public class BorderDecorator extends Decorator {
-
-    private final double radius;
-
-    public BorderDecorator(Shape decoratedShape ,double radius) {
-        super(decoratedShape);
-        this.radius = radius;
-    }
-    protected void drawDecoration(GraphicsContext context) {
-        context.setStroke(Color.BLACK);
-        context.setLineWidth(2);
-
-        if (decoratedshape.pointsCount() >= 2){
-            Point2D point0 = decoratedshape.point(0);
-            Point2D point1 = decoratedshape.point(1);
-
-            double x = Math.min(point0.getX(), point1.getX());
-            double y = Math.min(point0.getY(), point1.getY());
-            double width = Math.abs(point1.getX() - point0.getX());
-            double height = Math.abs(point1.getY() - point0.getY());
-            context.strokeRoundRect(x,y, width,height,radius, radius);
-        }
-    }
-}
diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java
deleted file mode 100644
index 8a7c68a07a6b52549afdd6e8ba75520136c3c5d6..0000000000000000000000000000000000000000
--- a/src/main/java/shape/CenterDecorator.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package shape;
-
-import javafx.geometry.Point2D;
-import javafx.scene.canvas.GraphicsContext;
-import javafx.scene.paint.Color;
-
-public class CenterDecorator extends Decorator{
-    private final double radius;
-    public CenterDecorator(Shape decoratedShape, double radius) {
-        super(decoratedShape);
-        this.radius = radius;
-    }
-        protected void drawDecoration(GraphicsContext context) {
-
-        if (decoratedshape.pointsCount() >= 2) {
-            Point2D point0 = decoratedshape.point(0);
-            Point2D point1 = decoratedshape.point(1);
-
-            double centerX = point0.getX() + point1.getX() / 2;
-            double centerY = point0.getY() + point1.getY() / 2;
-
-            context.setFill(Color.RED);
-            context.strokeOval(centerX - radius, centerY - radius, radius * 2, radius * 2);
-        }
-    }
-}
diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java
deleted file mode 100644
index 08bed2e38c7ac74ec230676535c0101f24189c61..0000000000000000000000000000000000000000
--- a/src/main/java/shape/Decorator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package shape;
-
-import javafx.geometry.Point2D;
-import javafx.scene.canvas.GraphicsContext;
-
-public abstract class Decorator implements Shape {
-    protected final Shape decoratedshape;
-    public Decorator(Shape decoratedShape) {
-        this.decoratedshape = decoratedShape;
-    }
-    @Override
-    public int pointsCount() {
-        return decoratedshape.pointsCount();
-    }
-
-    @Override
-    public Point2D point(int index) {
-        return decoratedshape.point(index);
-    }
-
-    @Override
-    public void draw(GraphicsContext context) {
-        decoratedshape.draw(context);
-        drawDecoration(context);
-    }
-    protected abstract void drawDecoration(GraphicsContext context) ;
-}
diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java
deleted file mode 100644
index 9140320794131795fca7aed9cfd9cf713c133f65..0000000000000000000000000000000000000000
--- a/src/main/java/shape/Polygon.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package shape;
-
-import javafx.geometry.Point2D;
-import javafx.scene.canvas.GraphicsContext;
-import javafx.scene.paint.Color;
-
-public class Polygon extends AbstractShape {
-
-    private final Color color;
-
-    public Polygon(Color color, Point2D... points) {
-        this.color = color;
-        addPoints(points);
-    }
-
-
-    @Override
-    public void draw(GraphicsContext context) {
-        context.setStroke(color);
-        context.beginPath();
-        context.moveTo(points.get(0).getX(), points.get(0).getY());
-        for (int i = 1; i < pointsCount() ; i++) {
-            context.lineTo(points.get(i).getX(), points.get(i).getY());
-        }
-        context.closePath();
-        context.stroke();
-
-    }
-}
diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java
index efb2f0a8c1921129416949b2c95e29f6d50ab0b3..b0e90627b6345f22ac31ab8bf5fb40f81e4d4f66 100644
--- a/src/main/java/shape/Rectangle.java
+++ b/src/main/java/shape/Rectangle.java
@@ -4,26 +4,24 @@ import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.paint.Color;
 
-public class Rectangle extends AbstractShape{
-    private final Color color;
-
-    public Rectangle(Color color, Point2D point0, Point2D point1){
+public class Rectangle implements Shape{
+    Color color;
+    Rectangle(Color color, Point2D point0, Point2D point1){
         this.color = color;
-        addPoints(point0, point1);
     }
 
     @Override
-    public void draw(GraphicsContext context) {
-        context.setStroke(color);
+    public int pointsCount() {
+        return 0;
+    }
 
-        Point2D point0 = points.get(0);
-        Point2D point1 = points.get(1);
+    @Override
+    public Point2D point(int index) {
+        return null;
+    }
 
-        double x = Math.min(point0.getX(), point1.getX());
-        double y = Math.min(point0.getY(), point1.getY());
-        double width = Math.abs(point1.getX() - point0.getX());
-        double height = Math.abs(point1.getY() - point0.getY());
+    @Override
+    public void draw(GraphicsContext context) {
 
-        context.strokeRect(x,y,width,height);
     }
 }
diff --git a/src/main/java/shape/ShapeContainer.java b/src/main/java/shape/ShapeContainer.java
index aae70ed5e542047b60b0f7147f021811017bdbc7..91c7d2977ecd7352ceb7ffbe45f9c541bfd8d45f 100644
--- a/src/main/java/shape/ShapeContainer.java
+++ b/src/main/java/shape/ShapeContainer.java
@@ -9,9 +9,7 @@ public class ShapeContainer{
 
     private List<Shape> shapes = new ArrayList<>();
 
-    public void addShape(Shape shape){
-        shapes.add(shape);
-    }
+    public void addShape(Shape shape){}
 
     public void  draw(GraphicsContext context){
         for(Shape shape : shapes)
diff --git a/src/main/java/state/Drawer.java b/src/main/java/state/Drawer.java
index c6e5f278d50e2910a22e24478b246c9a9679dc87..67b9e1c37ec55c09b9965103ca38cab002b1d815 100644
--- a/src/main/java/state/Drawer.java
+++ b/src/main/java/state/Drawer.java
@@ -1,6 +1,7 @@
 package state;
 
 import javafx.scene.canvas.Canvas;
+import shape.Circle;
 import shape.Shape;
 
 import java.util.ArrayList;