diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 66229213367b0b0a3d7068fb2c7013558ce98ced..622f299be73bda6bfa6d432bab94166b956ca21c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,11 +4,8 @@
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
-        <option name="delegatedBuild" value="true" />
-        <option name="testRunner" value="GRADLE" />
-        <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
-        <option name="gradleJvm" value="11" />
+        <option name="gradleJvm" value="openjdk-21" />
         <option name="modules">
           <set>
             <option value="$PROJECT_DIR$" />
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 480dc8a7b94017006a3c6b6c36395e0fff6eaa41..5d9825616f6a0738b6c655b9418a4d1d99c32d55 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
   <component name="FrameworkDetectionExcludesConfiguration">
     <file type="web" url="file://$PROJECT_DIR$" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java
index 81a833e8218611d89e4170771072c9fbd7d8efc1..782e71f494fc04e79afb470596bc3ab96842b063 100644
--- a/src/main/java/shape/AbstractShape.java
+++ b/src/main/java/shape/AbstractShape.java
@@ -3,6 +3,7 @@ package shape;
 import javafx.geometry.Point2D;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 
@@ -13,10 +14,7 @@ public abstract class AbstractShape implements Shape {
     }
 
     public void addPoints(Point2D... points){
-        for (Point2D point : points) {
-            points.add()
-            points[points.length] = point;
-        }
+        Collections.addAll(this.points, points);
 
     }
 }
diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java
index 8952fff72bc3a64b7cdaba4edcd5955a5d0e5df2..39050386de3aee6c2a7669091bee3693dd74f903 100644
--- a/src/main/java/shape/App.java
+++ b/src/main/java/shape/App.java
@@ -26,8 +26,17 @@ public class App extends Application {
         ShapeContainer shapeContainer = new ShapeContainer();
         graphicsContext.setFill(Color.PAPAYAWHIP);
         graphicsContext.fillOval(10,10,10,10);
-        shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40)));
+        Rectangle rec = new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40));
+        BorderDecorator borderDecorator = new BorderDecorator(rec,5) ;
+        shapeContainer.addShape(rec);
+        shapeContainer.addShape(borderDecorator);
+        Polygon polygon = new Polygon(Color.RED,new Point2D(40,40), new Point2D(60,60), new Point2D(80,40));
+        CenterDecorator centerDecorator = new CenterDecorator(polygon, 5);
+        shapeContainer.addShape(polygon);
+        shapeContainer.addShape(centerDecorator);
+
         shapeContainer.draw(graphicsContext);
+
         root.getChildren().add(canvas);
         primaryStage.setScene(new Scene(root));
         primaryStage.show();
diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java
index a8e924f30f81b619cd15b8f58829600d7772903f..a4f898a3222260e72f60a55445a0a33d60b6bb62 100644
--- a/src/main/java/shape/BorderDecorator.java
+++ b/src/main/java/shape/BorderDecorator.java
@@ -21,15 +21,7 @@ public class BorderDecorator extends Decorator {
         }
     }
 
-    @Override
-    public int pointsCount() {
-        return decoratedShape.pointsCount();
-    }
 
-    @Override
-    public Point2D point(int index) {
-        return decoratedShape.point(index);
-    }
 
 
 }
diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java
new file mode 100644
index 0000000000000000000000000000000000000000..e5729f5873bff5cc8f4097419c4bd70fc3930aa4
--- /dev/null
+++ b/src/main/java/shape/CenterDecorator.java
@@ -0,0 +1,28 @@
+package shape;
+
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+
+public class CenterDecorator extends Decorator{
+
+    private final double radius;
+
+    protected CenterDecorator(Shape decoratedShape, double radius) {
+        super(decoratedShape);
+        this.radius = radius;
+    }
+
+    @Override
+    protected void drawDecoration(GraphicsContext graphicsContext) {
+        double xAll = 0, yAll = 0;
+        for (int i = 0; i < decoratedShape.pointsCount(); i++) {
+            xAll += decoratedShape.point(i).getX();
+            yAll += decoratedShape.point(i).getY();
+        }
+
+        graphicsContext.fillOval((xAll/pointsCount())-radius,(yAll/pointsCount())-radius,radius*2,radius*2);
+
+    }
+
+
+}
diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java
index b22e0038da1dfcc855efad459a1bdfdbcccd1bca..a6e0aad8dc8f05b5019b1a5ddda4f24137b2e772 100644
--- a/src/main/java/shape/Decorator.java
+++ b/src/main/java/shape/Decorator.java
@@ -1,5 +1,6 @@
 package shape;
 
+import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
 
 public abstract class Decorator implements Shape{
@@ -14,4 +15,13 @@ public abstract class Decorator implements Shape{
         drawDecoration(context);
     }
     abstract void drawDecoration(GraphicsContext graphicsContext);
+
+    public int pointsCount() {
+        return decoratedShape.pointsCount();
+    }
+
+    @Override
+    public Point2D point(int index) {
+        return decoratedShape.point(index);
+    }
 }
diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java
index 6239892eab683a63e4d9f88863d436aa42400a8d..2d0f5e2d2cc73a9de6385b92d8c052b28d597309 100644
--- a/src/main/java/shape/Polygon.java
+++ b/src/main/java/shape/Polygon.java
@@ -36,5 +36,7 @@ public class Polygon implements Shape{
         }
 
         context.fillPolygon(xPoints, yPoints, points.length);
+        context.setFill(Color.BLACK);
+
     }
 }
diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java
index d476131bf40ea4688fed9c625460c14c6f97d409..b1f2048121328bf88c95f55b703aab5affc6d41a 100644
--- a/src/main/java/shape/Rectangle.java
+++ b/src/main/java/shape/Rectangle.java
@@ -32,6 +32,6 @@ public class Rectangle implements Shape{
         double h = points[1].getY() - y;
         context.setFill(color);
         context.fillRect(x,y,w,h);
-
+        context.setFill(Color.BLACK);
     }
 }