diff --git a/src/GUI/DrawingArea.java b/src/GUI/DrawingArea.java
index 9e80b51cf1442d9f9abde67e9a4a0421a89f932e..c1f7a65306f82f3b6277cea4197b1e61cafe319e 100644
--- a/src/GUI/DrawingArea.java
+++ b/src/GUI/DrawingArea.java
@@ -52,9 +52,6 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis
         setBackground(Color.WHITE); // Set Background color
         setDoubleBuffered(false);   // Non-buffered drawing
         image = new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_ARGB);
-        g2 = (Graphics2D) image.getGraphics();
-        /// Antialiasing the graphic for smoothness ///
-        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         shapeColor =  new Color(0, 0, 0);
         currentMode = Mode.FREEHAND;
         strokeSize = 3;
@@ -97,8 +94,6 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis
     public void clear() {
 
         image = new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_ARGB);
-        g2 = (Graphics2D) image.getGraphics();
-        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         repaint();
 
     }
@@ -144,22 +139,6 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis
         }
     }
 
-//    public void saveFile() {
-//        try {
-//            ImageIO.write(image, "PNG", new File("Saved_White_Board.png"));
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//        }
-//    }
-
-    public void saveAsFile(File file) {
-        try {
-            ImageIO.write(image, "PNG", file);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
     public void openFile(File file) {
         try {
             image = ImageIO.read(file);
@@ -243,6 +222,8 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis
 
     @Override
     public void mousePressed(MouseEvent e) {
+        g2 = (Graphics2D) image.getGraphics();
+        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         startPoint = previousPoint = e.getPoint();
 
 /// Instantiate object based on current mode ///
@@ -299,9 +280,6 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis
             default:
                 break;
         }
-
-        g2 = (Graphics2D) image.getGraphics();
-        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         g2.setColor(shapeColor);
 
         /// This repaint is needed if we want to fill the drawing shape with color
@@ -357,7 +335,7 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis
 /// Eraser is continuously drawing "small white circle" from current point to previous point ///
             case ERASE:
 
-                ((Ellipse2D) drawing).setFrame(currentPoint.getX(), currentPoint.getY(), eraserSize, eraserSize);
+                ((Ellipse2D) drawing).setFrame((currentPoint.getX() - (eraserSize / 2)), (currentPoint.getY() - (eraserSize / 2)), eraserSize, eraserSize);
                 g2.setColor(Color.WHITE);
                 g2.fill(drawing);
                 g2.draw(drawing);
diff --git a/src/GUI/SerializableImage.java b/src/GUI/SerializableImage.java
deleted file mode 100644
index 10ddffd3c0500cafb7cf7661d9546288018f4d02..0000000000000000000000000000000000000000
--- a/src/GUI/SerializableImage.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package GUI;
-
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
-import java.awt.image.ColorModel;
-import java.awt.image.IndexColorModel;
-import java.awt.image.WritableRaster;
-import java.io.*;
-import java.util.Hashtable;
-
-public class SerializableImage extends BufferedImage implements Serializable {
-
-    transient BufferedImage image;
-
-    public SerializableImage(int width, int height, int imageType) {
-        super(width, height, imageType);
-        image = new BufferedImage(width, height, imageType);
-    }
-
-    public BufferedImage getImage() {
-        return image;
-    }
-
-    public void setImage(BufferedImage image) {
-        this.image = image;
-    }
-
-    public SerializableImage(int width, int height, int imageType, IndexColorModel cm) {
-        super(width, height, imageType, cm);
-    }
-
-    public SerializableImage(ColorModel cm, WritableRaster raster, boolean isRasterPremultiplied, Hashtable<?, ?> properties) {
-        super(cm, raster, isRasterPremultiplied, properties);
-    }
-
-
-    public void writeObject(ObjectOutputStream output) throws IOException {
-        output.defaultWriteObject();
-        ImageIO.write(image, "png", output);
-    }
-
-    public void readObject(ObjectInputStream input) throws IOException, ClassNotFoundException {
-        input.defaultReadObject();
-        image = ImageIO.read(input);
-    }
-}
diff --git a/src/remote/IDrawingController.java b/src/remote/IDrawingController.java
index 635c490c49e86dd5ee1bee1ed89ca997de08308c..df062613d0f9144d0139326c74bac84d764507cd 100644
--- a/src/remote/IDrawingController.java
+++ b/src/remote/IDrawingController.java
@@ -1,6 +1,6 @@
 package remote;
 
-import GUI.SerializableImage;
+
 import client.Client;
 
 import java.awt.*;
@@ -33,7 +33,6 @@ public interface IDrawingController extends Remote {
     ArrayList<Font> getFontList() throws RemoteException;
     ArrayList<Point> getTextStartPointList() throws RemoteException;
 //    BufferedImage getCurrentImage() throws RemoteException;
-    SerializableImage getCurrentImage() throws RemoteException;
     void getImage(String fromClient) throws RemoteException;
 
 }
diff --git a/src/server/DrawingController.java b/src/server/DrawingController.java
index d52aebe4592c31b9e5c84be2d689a33490ac17fb..f48100e88489a1f04fb35da20924907aa5514c63 100644
--- a/src/server/DrawingController.java
+++ b/src/server/DrawingController.java
@@ -1,15 +1,11 @@
 package server;
 
-import GUI.SerializableImage;
-import client.Client;
 import remote.IDrawingController;
 import remote.IDrawingUpdate;
 
-import javax.imageio.ImageIO;
 import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.*;
-import java.lang.reflect.Array;
 import java.rmi.RemoteException;
 import java.rmi.server.UnicastRemoteObject;
 import java.util.ArrayList;
@@ -20,7 +16,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
     private final static int AREA_HEIGHT = 600;
 
     private Server server;
-    private SerializableImage serializableImage;
+//    private SerializableImage bufferedImage;
     private BufferedImage bufferedImage;
     private Graphics2D g2;
 
@@ -40,8 +36,8 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
 //        g2 = (Graphics2D) bufferedImage.getGraphics();
 //        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
-        this.serializableImage = new SerializableImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_ARGB);
-        g2 = (Graphics2D) serializableImage.getGraphics();
+        this.bufferedImage = new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_ARGB);
+        g2 = (Graphics2D) bufferedImage.getGraphics();
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
 
@@ -63,10 +59,10 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
         textStartPointList.add(startPoint);
 
 
-        g2 = (Graphics2D) serializableImage.getGraphics();
+        g2 = (Graphics2D) bufferedImage.getGraphics();
         g2.setFont(font);
         g2.drawString(text, startPoint.x, startPoint.y);
-        g2 = (Graphics2D) serializableImage.getGraphics();
+        g2 = (Graphics2D) bufferedImage.getGraphics();
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
 
@@ -94,7 +90,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
         colorList.add(color);
         strokeSizeList.add(strokeSize);
 
-        g2 = (Graphics2D) serializableImage.getGraphics();
+        g2 = (Graphics2D) bufferedImage.getGraphics();
         switch (mode) {
             case "OVAL":
             case "RECTANGLE":
@@ -111,7 +107,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
             default:
                 break;
         }
-        g2 = (Graphics2D) serializableImage.getGraphics();
+        g2 = (Graphics2D) bufferedImage.getGraphics();
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         g2.setColor(color);
 
@@ -141,7 +137,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
             strokeSizeList.add(strokeSize);
         }
 
-        g2 = (Graphics2D) serializableImage.getGraphics();
+        g2 = (Graphics2D) bufferedImage.getGraphics();
         switch (mode) {
             case "FREEHAND":
                 g2.setColor(color);
@@ -158,7 +154,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
             default:
                 break;
         }
-        g2 = (Graphics2D) serializableImage.getGraphics();
+        g2 = (Graphics2D) bufferedImage.getGraphics();
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         g2.setColor(color);
 
@@ -208,16 +204,16 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
         return true;
     }
 
-    public SerializableImage getCurrentImage() throws RemoteException {
-        return serializableImage;
+    public BufferedImage getCurrentImage() throws RemoteException {
+        return bufferedImage;
     }
 
     public void getImage(String fromClient) throws RemoteException {
-//        if (serializableImage.getImage().)
+//        if (bufferedImage.getImage().)
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         IDrawingUpdate client;
         try {
-            javax.imageio.ImageIO.write(serializableImage, "png", baos);
+            javax.imageio.ImageIO.write(bufferedImage, "png", baos);
             baos.flush();
         }
         catch (IOException err) {