diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java
index fdf5a6dcaee50ce24becc265ea70f5abb0d52419..91f193fced858156016641ce137f3039ad9177ff 100644
--- a/src/main/java/shape/AbstractShape.java
+++ b/src/main/java/shape/AbstractShape.java
@@ -1,4 +1,36 @@
 package shape;
 
-public class AbstractShape {
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.List;
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+
+public abstract class AbstractShape implements Shape {
+    private List<Point2D>points;
+
+    public AbstractShape(){
+        points = new ArrayList<>();
+    }
+    public void addPoint(Point2D... points){
+        for(Point2D point : points){
+            this.points.add(point);
+        }
+    }
+
+    public int pointsCount(){
+        return points.size();
+    }
+
+    public Point2D getPoint(int index){
+        if(index < 0 || index >= points.size()){
+            throw new IndexOutOfBoundsException("index out of bounds");
+        }
+        return points.get(index);
+    }
+
+    public abstract void draw(GraphicsContext graphicsContent);
+
+
+
 }