diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java
new file mode 100644
index 0000000000000000000000000000000000000000..8275b719a39bc78b66d1d07c24eb39e7323f2460
--- /dev/null
+++ b/src/main/java/shape/AbstractShape.java
@@ -0,0 +1,38 @@
+package shape;
+
+import javafx.scene.canvas.GraphicsContext;
+import java.awt.geom.Point2D;
+import java.util.List;
+
+public abstract class AbstractShape implements Shape{
+    private List<Point2D> points ;
+
+
+
+
+    public void addPoints(Point2D... pointsToAdd) {
+        for (Point2D point : pointsToAdd) {
+            points.add(point);
+        }
+    }
+
+
+    public  int pointsCount(){return points.size();}
+
+
+    public Point2D point(int index){
+        Point2D result = null;
+        for(int i =0;i<points.size();i++){
+            if (i == index) {
+                result = points.get(i);
+                break;
+            }
+        }
+        return result;
+    }
+
+
+
+    public abstract void draw(GraphicsContext graphicsContext);
+
+}