diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7f4cb416c083d265558da75d457237d671..35eb1ddfbbc029bcab630581847471d7f238ec53 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+    <mapping directory="" vcs="Git" />
   </component>
 </project>
\ No newline at end of file
diff --git a/src/main/java/serializer/ShapeWriter.java b/src/main/java/serializer/ShapeWriter.java
index b5c4856dea8284cb0f0fbcdb62f36ad3b09b1dcd..249102af90390b615612aa5afd0e65cad828eeaf 100644
--- a/src/main/java/serializer/ShapeWriter.java
+++ b/src/main/java/serializer/ShapeWriter.java
@@ -7,17 +7,26 @@ import shape.Shape;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class ShapeWriter implements ShapeVisitor {
 
     private PrintWriter printWriter;
+    private static final Map<Class<? extends Shape>, ShapeSerializer<? extends Shape>> serializers = new HashMap<>();
+
+    static {
+        serializers.put(Circle.class, new CircleSerializer());
+        serializers.put(Rectangle.class, new RectangleSerializer());
+    }
+
 
     public ShapeWriter(PrintWriter printWriter) {
         this.printWriter = printWriter;
     }
 
-    public static void write (File file, List<Shape> shapes) throws IOException {
+    public static void write (File file, Iterable<Shape> shapes) throws IOException {
         try(PrintWriter printWriter = new PrintWriter(file)){
         ShapeWriter shapeWriter = new ShapeWriter(printWriter);
 
@@ -29,11 +38,23 @@ public class ShapeWriter implements ShapeVisitor {
 
     @Override
     public void visit(Circle circle) {
-        printWriter.printf("Circle %f %f %f%n", circle.getX(), circle.getY(), circle.getRadius());
+        ShapeSerializer<Circle> serializer = (ShapeSerializer<Circle>) serializers.get(Circle.class);
+        if (serializer != null) {
+            String serializedData = serializer.serialize(circle);
+            printWriter.println(serializedData);
+        } else {
+            throw new IllegalArgumentException("No serializer found for Circle");
+        }
     }
 
     @Override
     public void visit(Rectangle rectangle) {
-        printWriter.printf("Rectangle %f %f %f %f%n", rectangle.getX(), rectangle.getY(), rectangle.getWidth() ,rectangle.getHeight());
+        ShapeSerializer<Rectangle> serializer = (ShapeSerializer<Rectangle>) serializers.get(Rectangle.class);
+        if (serializer != null) {
+            String serializedData = serializer.serialize(rectangle);
+            printWriter.println(serializedData);
+        } else {
+            throw new IllegalArgumentException("No serializer found for Rectangle");
+        }
     }
 }