diff --git a/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameGui.java b/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameGui.java
index b88b84974de88b92be847855a363a15b1071c60c..60c13d17308afd7248a20b9faeea8d0fc5ca1381 100644
--- a/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameGui.java
+++ b/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameGui.java
@@ -15,6 +15,7 @@ import javafx.application.Platform;
 import javafx.geometry.Insets;
 import javafx.scene.Scene;
 import javafx.scene.canvas.Canvas;
+import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.control.*;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
@@ -28,7 +29,6 @@ import javafx.stage.Stage;
 import javafx.util.Duration;
 
 import java.io.IOException;
-import java.util.concurrent.atomic.AtomicReference;
 
 public class ChaosGameGui implements ChaosGameObserver {
   private int currentLine = 0;
@@ -51,11 +51,6 @@ public class ChaosGameGui implements ChaosGameObserver {
    */
   private ChaosGameDescriptionFactory factory;
 
-  /**
-   * The AtomicReference for the ChaosGameDescription.
-   */
-  private AtomicReference<ChaosGameDescription> descriptionRef;
-
   /**
    * The ImageView for the GUI..
    */
@@ -188,10 +183,10 @@ public class ChaosGameGui implements ChaosGameObserver {
   private void initializeGameComponents() {
     // Description
     this.factory = new ChaosGameDescriptionFactory();
-    this.descriptionRef = new AtomicReference<>(factory.getDescriptions().get(0));
-    this.description = descriptionRef.get();
+    this.description = factory.getDescriptions().get(0);
 
-    this.chaosCanvas = new ChaosCanvas(100, 100, descriptionRef.get().getMinCoords(), descriptionRef.get().getMaxCoords());
+    this.chaosCanvas = new ChaosCanvas(100, 100, this.description.getMinCoords(),
+        this.description.getMaxCoords());
     game = new ChaosGame(this.description, chaosCanvas);
   }
 
@@ -204,9 +199,9 @@ public class ChaosGameGui implements ChaosGameObserver {
     width = 1000;
     height = 1000;
     this.canvas = new Canvas(width, height);
-    this.imageView.setImage(canvas.snapshot(null, null));
+    //this.imageView.setImage(canvas.snapshot(null, null));
 
-    //this.clearImageView();
+    this.clearImageView();
 
   }
 
@@ -214,19 +209,11 @@ public class ChaosGameGui implements ChaosGameObserver {
    * Color the entire image view white.
    */
   private void clearImageView() {
-    // Color the image white
-    for (int i = 0; i < height; i++) {
-      for (int j = 0; j < width; j++) {
-        this.canvas.getGraphicsContext2D().setFill(Color.WHITE);
-        this.canvas.getGraphicsContext2D().fillRect(i, j, 1, 1);
-        //this.imageView.setImage(canvas.snapshot(null, null));
-      }
-    }
-
+    GraphicsContext gc = canvas.getGraphicsContext2D();
+    gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
+    imageView.setImage(null);
   }
 
-
-
   /**
    * Initialize the buttons related to managing the fractals.
    */
@@ -245,9 +232,6 @@ public class ChaosGameGui implements ChaosGameObserver {
     improvedBarnsleyButton.setToggleGroup(group);
 
 
-
-    AtomicReference<ChaosCanvas> canvasRef = new AtomicReference<>(chaosCanvas);
-
     // Set action for Sierpinski radio button.
     sierpinskiRadioButton.setOnAction(event -> {
       this.updateDescription(0);
@@ -265,16 +249,6 @@ public class ChaosGameGui implements ChaosGameObserver {
 
     improvedBarnsleyButton.setOnAction(event -> {
       this.updateDescription(3);
-
-      /*for (int i = 0; i < this.description.getTransforms().size(); i++) {
-        System.out.println(((AffineTransform2D) this.description.getTransforms().get(i)).getMatrix().getA00());
-        System.out.println(((AffineTransform2D) this.description.getTransforms().get(i)).getMatrix().getA01());
-        System.out.println(((AffineTransform2D) this.description.getTransforms().get(i)).getMatrix().getA10());
-        System.out.println(((AffineTransform2D) this.description.getTransforms().get(i)).getMatrix().getA11());
-        System.out.println(((AffineTransform2D) this.description.getTransforms().get(i)).getVector().getX0());
-        System.out.println(((AffineTransform2D) this.description.getTransforms().get(i)).getVector().getX1());
-      }*/
-
     });
 
     // Load fractal file button
@@ -463,19 +437,18 @@ public class ChaosGameGui implements ChaosGameObserver {
    */
   @Override
   public void updateDescription(int index) {
-    AtomicReference<ChaosCanvas> canvasRef = new AtomicReference<>(chaosCanvas);
     timeline.stop();
-    canvasRef.get().clearCanvas();
+    this.chaosCanvas.clearCanvas();
     this.canvas.getGraphicsContext2D().clearRect(0, 0, this.canvas.getGraphicsContext2D().
         getCanvas().getWidth(), this.canvas.getGraphicsContext2D().getCanvas().getHeight());
     this.clearImageView();
-    chaosCanvas.clearCanvas();
+    this.chaosCanvas.clearCanvas();
 
-    this.descriptionRef.set(factory.getDescriptions().get(index)); // Assuming the Sierpinski description is at index 0
-    canvasRef.set(new ChaosCanvas(1000, 1000, this.descriptionRef.get().getMinCoords(),
-        this.descriptionRef.get().getMaxCoords()));
-    this.updateCanvas(canvasRef.get());
-    game = new ChaosGame(this.descriptionRef.get(), canvasRef.get());
+    this.description = this.factory.getDescriptions().get(index); // Assuming the Sierpinski description is at index 0
+    this.chaosCanvas = new ChaosCanvas(1000, 1000, this.description.getMinCoords(),
+        this.description.getMaxCoords());
+    this.updateCanvas(this.chaosCanvas);
+    game = new ChaosGame(this.description, this.chaosCanvas);
     //this.game.setDescription(description);
   }
 
@@ -485,6 +458,7 @@ public class ChaosGameGui implements ChaosGameObserver {
    *
    * @param canvas the canvas to update with.
    */
+  @Override
   public void updateCanvas(ChaosCanvas canvas) {
     float zoomRatio = (float) this.chaosCanvas.getHeight() / canvas.getHeight();
     //this.imageView.fixedZoom(zoomRatio); // Set new zoom factor.
diff --git a/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameImageView.java b/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameImageView.java
index 3b90438d774120d75dfb88c1be9d9dc4a8b4a4bf..e956a4f580081ca591abdba502bf203d5e644846 100644
--- a/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameImageView.java
+++ b/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameImageView.java
@@ -130,7 +130,7 @@ public class ChaosGameImageView extends ImageView {
       PopupManager.displayError("Zoom error", e.getMessage());
     }
   }
-
+// TODO: remove if unused
   private void updateController() {
     this.controller.updateDetail(this.zoomLevel, this.centreX, this.centreY);
   }
diff --git a/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameObserver.java b/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameObserver.java
index 82b482f257d69ce09b41f23f744e769f696c92aa..5eb1f0888f1a289801c797e4f626a307b1857adc 100644
--- a/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameObserver.java
+++ b/src/main/java/edu/ntnu/stud/chaosgame/view/ChaosGameObserver.java
@@ -1,6 +1,7 @@
 package edu.ntnu.stud.chaosgame.view;
 
 import edu.ntnu.stud.chaosgame.controller.game.ChaosGame;
+import edu.ntnu.stud.chaosgame.controller.game.ChaosCanvas;
 import edu.ntnu.stud.chaosgame.controller.game.ChaosGameDescription;
 
 /**
@@ -8,15 +9,6 @@ import edu.ntnu.stud.chaosgame.controller.game.ChaosGameDescription;
  * TODO: Do we want to have separate update methods for the canvas and description or just one for the whole game? (likely the latter)
  */
 public interface ChaosGameObserver {
-// TODO: Create interface
-
-
-  /**
-   * Perform update of the ChaosCanvas.
-   *
-   * @param canvas the canvas.
-   */
-  //void updateCanvas(Chaosanvas canvas);
 
   /**
    * Perform update of the ChaosGameDescription.
@@ -26,6 +18,13 @@ public interface ChaosGameObserver {
   //void updateDescription(ChaosGameDescription description);
   void updateDescription(int index);
 
+  /**
+   * Update the ChaosCanvas.
+   *
+   * @param canvas the canvas to update with.
+   */
+  void updateCanvas(ChaosCanvas canvas);
+
   /**
    * Update the observer based on changes to the chaos game.
    *