diff --git a/src/test/java/org/example/chaosgame/.idea/vcs.xml b/.idea/vcs.xml
similarity index 64%
rename from src/test/java/org/example/chaosgame/.idea/vcs.xml
rename to .idea/vcs.xml
index 821e530ddc3b630be065c610c6d0f2f9dfba9472..35eb1ddfbbc029bcab630581847471d7f238ec53 100644
--- a/src/test/java/org/example/chaosgame/.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/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8e073c1a3641d5a6040b55eaeb505c17cefa9889
--- /dev/null
+++ b/README.md
@@ -0,0 +1,178 @@
+# Portfolio project IDATT2003 - 2024
+
+GROUP ID = "0019"
+
+STUDENT NAME = "Vetle Solheim Hodne"
+<br>
+STUDENT ID = "10013"
+
+
+STUDENT NAME = "Edvard Berdal Eek"
+<br>
+STUDENT ID = "10036"
+
+
+## Project description
+
+This project revolves around visual representation of fractals. 
+The chaos game is a method for creating fractals by randomly placing points 
+in a plane and then moving a point towards the randomly placed points.
+With affine transformations, the chaos game can be used to create fractals such as the Sierpinski triangle and the Barnsley fern.
+Here the points are applied a random transformation from a set of transformations.
+
+Chaos Julia-transformations are can be created by iterating a complex through a function, which takes the square root of
+the sum of the complex number and another a constant complex number then randomly selects the
+sign to be positive or negative, and then plotting the result.
+ 
+## Project structure
+
+
+- `IDATT2003-2024-0019-ChaosGame`
+    - `src/` (folder for source files)
+        - `main/`
+            - `java/`
+                - `edu.ntnu.stud/`
+                    - `controller` (package for controller classes)
+                        - `interfaces` (package for interfaces in controller package)
+                            - `GameController.java` (interface for game controllers)
+                            - `Observer.java` (interface for observer implementation)
+                            - `Subject.java` (interface for subject implementation)
+                        - `ChaosGameController.java` (controller for chaos game)
+                        - `ChaosGameDescriptionFactory.java` (factory pattern for chaos game descriptions)
+                        - `ChaosGameFileHandler.java` (file handler for chaos games)
+                        - `ExploreGameController.java` (controller for explore game)
+                        - `HomeController.java` (controller for home page)
+                        - `PageController.java` (controller for pages)
+                    - `model` (package for running the program)
+                      - `chaos` (package for fractal game related entity classes)
+                        - `ChaosCanvas.java` (class for chaos canvas)
+                        - `ChaosGame.java` (class for chaos game)
+                        - `ChaosGameDescription.java` (class for chaos game description)
+                        - `ChaosGameType.java` (enum for chaos game type)
+                        - `ExploreGame.java` (class for explore game)
+                      - `linalg` (package for linear algebra related classes)
+                        - `Complex.java` (class for complex numbers)
+                        - `Matrix2x2.java` (class for 2x2 matrices)
+                        - `Vector2D.java` (class for 2D vectors)
+                      - `transformations` (package for transformations related classes)
+                        - `AffineTransform2D.java` (class for affine transformations)
+                        - `ExploreJulia.java` (class for explore julia)
+                        - `JuliaTransform.java` (class for julia transformations)
+                        - `Trandsform2D.java` (interface for 2D transformations)
+                    - `view` (package for view classes)
+                        - `ChaosPage.java` (view class for chaos game)
+                        - `ExplorePage.java` (view class for explore game)
+                        - `GamePage.java` (abstract class for game pages)
+                        - `HomePage.java` (view class for the home page)
+                - `module-info.java` (module info file)
+            - `resources/` (folder for resources)
+                - `media/` (folder for css files)
+                  - `ChaosVideoFinal.mp4` (image for chaos game)
+                  - `ExploreVideoFinal.mp4` (image for explore game)
+                  - `White-home-icon.png` (image for home page)
+                - `stylesheets/` (folder for fxml files)
+                  - `style.css` (css file for styling the application)
+                - `testFiles/` (folder for images)
+                  - `barnsley.txt` (text file for barnsley fern)
+                  - `juila.txt` (text file for julia set)
+                  - `sierpinski.txt` (text file for sierpinski triangle)
+                    
+        - `test/` (folder for JUnit-tests)
+            - `java/`
+                - `edu.ntnu.stud/`
+                    - `controller` (package for controller classes)
+                        - `interfaces` (package for interfaces in controller package)
+                            - `GameControllerTest.java` (interface for game controllers)
+                            - `ObserverTest.java` (interface for observer implementation)
+                            - `SubjectTest.java` (interface for subject implementation)
+                        - `ChaosGameControllerTest.java` (controller for chaos game)
+                        - `ChaosGameDescriptionFactoryTest.java` (factory pattern for chaos game descriptions)
+                        - `ChaosGameFileHandlerTest.java` (file handler for chaos games)
+                        - `ExploreGameControllerTest.java` (controller for explore game)
+                        - `HomeControllerTest.java` (controller for home page)
+                        - `PageControllerTest.java` (controller for pages)
+                    - `model` (package for running the program)
+                        - `chaos` (package for fractal game related entity classes)
+                            - `ChaosCanvasTest.java` (class for chaos canvas)
+                            - `ChaosGameTest.java` (class for chaos game)
+                            - `ChaosGameDescriptionTest.java` (class for chaos game description)
+                            - `ChaosGameTypeTest.java` (enum for chaos game type)
+                            - `ExploreGameTest.java` (class for explore game)
+                        - `linalg` (package for linear algebra related classes)
+                            - `ComplexTest.java` (class for complex numbers)
+                            - `Matrix2x2Test.java` (class for 2x2 matrices)
+                            - `Vector2DTest.java` (class for 2D vectors)
+                        - `transformations` (package for transformations related classes)
+                            - `AffineTransform2DTest.java` (class for affine transformations)
+                            - `ExploreJuliaTest.java` (class for explore julia)
+                            - `JuliaTransformTest.java` (class for julia transformations)
+## Link to repository
+[//]: # (TODO: Include a link to your repository here.)
+> https://gitlab.stud.idi.ntnu.no/idatt2003-19/chaosgame
+
+
+## How to run the project
+
+[//]: # (TODO: Describe how to run your project here. What is the main class? What is the main method?
+What is the input and output of the program? What is the expected behaviour of the program?)
+
+To run the program, run the main method in the MainApp class in the IDE of your choise.
+
+Or use the following command your terminal:
+
+```
+mvn javafx:run
+```
+The program runs from the Main-class.
+<p>Go to ChaosGame -> src -> main -> java -> edu.ntnu.stud -> Main and press run.
+
+This runs the main method in the MainApp class which then runs the launch method for the application.
+
+The user is presented with a home page that is split in the middle, one for the chaos game and one for the explore game.
+when the user hovers over the chaos game, a video of the chaos game is displayed. 
+When the user hovers over the explore game, a video of the explore game is displayed.
+The user can click on the chaos game to play the chaos game, or click on the explore game to play the explore game.
+
+In the chaos game the user can choose between displaying julia sets or affine fractals.
+The user types in the amount of iterations the game should attempt to place a pixel.
+They can also create their own fractals
+The user can choose between displaying julia sets or affine fractals with a so-called chaos game.
+
+In the explore game the user can explore the julia set by sliding the real and imaginary part sliders
+changing the parts of the complex number which is used to display the fractal.
+The zoom is used by scrolling and works both with and without a mouse.
+In addition, there buttons to zoom in and out,
+reset the image and a color picker allowing the user to change the color of the fractal
+
+For each page the user can choose to go back to the home page by clicking the home icon in the top left corner.
+
+On the home page there is a exit button in the bottom center of the application
+
+## How to run the tests
+
+[//]: # (TODO: Describe how to run the tests here.)
+Tests can be run by typing the following in the terminal:
+
+```
+mvn test
+```
+or
+
+```
+mvn clean test
+```
+
+<br>
+With IntelliJ IDEA, the tests can be run by right-clicking the edu.ntnu.stud package, either within the test or main folder,
+and selecting "Run 'Tests in edu.ntnu.stud'". If you want to run tests with coverage, 
+right-click the edu.ntnu.stud package and select "More Run/Debug" and then "Run 'Tests in edu.ntnu.stud' with Coverage".
+The same can be done specific classes within the package.
+## References
+
+
+## References
+[//]: # (TODO: Include references here, if any. For example, if you have used code from the course book, include a reference to the chapter.
+Or if you have used code from a website or other source, include a link to the source.)
+
+- [Chaos Game (wikipedia)](https://en.wikipedia.org/wiki/Chaos_game)
+- [Julia Set (wikipedia)](https://en.wikipedia.org/wiki/Julia_set)
diff --git a/Rapportmal IDATx2003.dotx b/Rapportmal IDATx2003.dotx
deleted file mode 100644
index c235173c70cf36908e3097b3dc226ecf76d8a174..0000000000000000000000000000000000000000
Binary files a/Rapportmal IDATx2003.dotx and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 250218dcad301f8f9f114f237cb1409fd19eb9c5..1c475bbd07c5174c768a4c245bf346388a6f33c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,27 +4,39 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.example</groupId>
+    <groupId>org.idatt2003</groupId>
     <artifactId>ChaosGame</artifactId>
     <version>1.0-SNAPSHOT</version>
     <name>ChaosGame</name>
 
+
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <junit.version>5.10.0</junit.version>
     </properties>
+
+    <!-- Dependencies -->
     <dependencies>
+        <!-- JavaFX controls-->
         <dependency>
             <groupId>org.openjfx</groupId>
             <artifactId>javafx-controls</artifactId>
             <version>21</version>
         </dependency>
+        <!-- JavaFX fxml-->
         <dependency>
             <groupId>org.openjfx</groupId>
             <artifactId>javafx-fxml</artifactId>
             <version>21</version>
         </dependency>
+        <!-- JavaFX media-->
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-media</artifactId>
+            <version>21.0.2</version>
+        </dependency>
 
+        <!-- JUnit 5 engine and api dependencies -->
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>
@@ -37,11 +49,11 @@
             <version>${junit.version}</version>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.openjfx</groupId>
-            <artifactId>javafx-media</artifactId>
-            <version>21.0.2</version>
-        </dependency>
+
+        <!-- Mockito Dependencies -->
+        <!-- Tried to implement mockito in controller
+             testing, but did not work because
+             controller classes uses JavaFX components-->
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
@@ -54,8 +66,6 @@
             <version>3.12.4</version>
             <scope>test</scope>
         </dependency>
-
-        <!-- Mockito JUnit Jupiter Dependency -->
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-junit-jupiter</artifactId>
@@ -64,9 +74,11 @@
         </dependency>
     </dependencies>
 
+    <!-- Build configuration -->
     <build>
         <plugins>
             <plugin>
+                <!-- Compiler plugin -->
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.11.0</version>
@@ -76,6 +88,7 @@
                 </configuration>
             </plugin>
             <plugin>
+                <!-- JavaFX plugin -->
                 <groupId>org.openjfx</groupId>
                 <artifactId>javafx-maven-plugin</artifactId>
                 <version>0.0.8</version>
@@ -84,7 +97,7 @@
                         <!-- Default configuration for running with: mvn clean javafx:run -->
                         <id>default-cli</id>
                         <configuration>
-                            <mainClass>org.example.chaosgame/org.example.chaosgame.MainApp</mainClass>
+                            <mainClass>org.idatt2003/org.idatt2003.MainApp</mainClass>
                             <launcher>app</launcher>
                             <jlinkZipName>app</jlinkZipName>
                             <jlinkImageName>app</jlinkImageName>
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index c70812699bb333697db7104f6b1f23d8790fafdf..49050d498d8591559b60367b212f8731e8533c59 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -1,9 +1,9 @@
-module org.example.chaosgame {
+module org.idatt2003 {
   requires javafx.controls;
   requires javafx.fxml;
   requires javafx.media;
 
 
-  opens org.example.chaosgame to javafx.fxml;
-  exports org.example.chaosgame;
+  opens org.idatt2003 to javafx.fxml;
+  exports org.idatt2003;
 }
\ No newline at end of file
diff --git a/src/main/java/org/example/chaosgame/model/transformations/Transform2D.java b/src/main/java/org/example/chaosgame/model/transformations/Transform2D.java
deleted file mode 100644
index c97d56a76b4b050050d7a306ad13bf2b04da1c43..0000000000000000000000000000000000000000
--- a/src/main/java/org/example/chaosgame/model/transformations/Transform2D.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.example.chaosgame.model.transformations;
-
-import org.example.chaosgame.model.linalg.Vector2D;
-
-/**
- * Interface for 2D transformations.
- */
-public interface Transform2D {
-  Vector2D transform(Vector2D point);
-}
diff --git a/src/main/java/org/example/chaosgame/Main.java b/src/main/java/org/idatt2003/Main.java
similarity index 88%
rename from src/main/java/org/example/chaosgame/Main.java
rename to src/main/java/org/idatt2003/Main.java
index 2e188dd5c1e626f16eed47f1693d428d4f341e21..57b87ad335c8f5d82d91333a0efcb23a5f69b774 100644
--- a/src/main/java/org/example/chaosgame/Main.java
+++ b/src/main/java/org/idatt2003/Main.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame;
+package org.idatt2003;
 
 /**
  * Main class for the application.
diff --git a/src/main/java/org/example/chaosgame/MainApp.java b/src/main/java/org/idatt2003/MainApp.java
similarity index 84%
rename from src/main/java/org/example/chaosgame/MainApp.java
rename to src/main/java/org/idatt2003/MainApp.java
index 9ee9023fea2108cfdcccbac8cfcc9c1ea564c2ab..5c4bee1c936f9e681f56019c23078fdfdd8ee4cf 100644
--- a/src/main/java/org/example/chaosgame/MainApp.java
+++ b/src/main/java/org/idatt2003/MainApp.java
@@ -1,13 +1,13 @@
-package org.example.chaosgame;
+package org.idatt2003;
 
 import java.util.Objects;
 import javafx.application.Application;
 import javafx.scene.Scene;
 import javafx.scene.layout.StackPane;
 import javafx.stage.Stage;
-import org.example.chaosgame.controller.ChaosGameController;
-import org.example.chaosgame.controller.ExploreGameController;
-import org.example.chaosgame.controller.PageController;
+import org.idatt2003.controller.ChaosGameController;
+import org.idatt2003.controller.ExploreGameController;
+import org.idatt2003.controller.PageController;
 
 /**
  * This is the main class for the JavaFX application.
diff --git a/src/main/java/org/example/chaosgame/view/GamePage.java b/src/main/java/org/idatt2003/controller/CanvasPainter.java
similarity index 66%
rename from src/main/java/org/example/chaosgame/view/GamePage.java
rename to src/main/java/org/idatt2003/controller/CanvasPainter.java
index 8217f98513996bd19e21e588524516d3545d3cee..b060de82a0614d0dc9ed498175bee449d2041bff 100644
--- a/src/main/java/org/example/chaosgame/view/GamePage.java
+++ b/src/main/java/org/idatt2003/controller/CanvasPainter.java
@@ -1,51 +1,39 @@
-package org.example.chaosgame.view;
+package org.idatt2003.controller;
 
-import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.image.PixelWriter;
 import javafx.scene.image.WritableImage;
-import javafx.scene.layout.BorderPane;
 import javafx.scene.paint.Color;
-import org.example.chaosgame.model.chaos.ChaosCanvas;
+import org.idatt2003.model.chaos.ChaosCanvas;
+
 
 /**
- * Abstract class for the GamePage, extends BorderPane.
- * The GamePage is used for displaying the game.
+ * Abstract class for the CanvasPainter.
+ * The CanvasPainter is used for painting a fractal 
+ * on the canvas.
+ * All methods are public and static.
  */
-public abstract class GamePage extends BorderPane {
-  protected final GraphicsContext gc;
+public abstract class CanvasPainter {
+  protected Color fractalColor = Color.WHITE;
   private static final int COLOR_FACTOR = 3;
-  private static final int CANVAS_WIDTH = 1250;
-  private static final int CANVAS_HEIGHT = 805;
   private static final int MAX_COLOR_VALUE = 255;
-  protected Color fractalColor;
-
-  /**
-   * Constructor for the GamePage.
-   * Initializes the canvas and fractal color.
-   */
-  public GamePage() {
-    this.gc = createCanvas();
-    this.fractalColor = Color.WHITE;
-  }
 
   /**
-   * Method for setting color of the fractal.
+   * Method for painting the canvas.
+   * Draws the canvas on the graphics context.
+   * Use the method createOffScreenImage to create the offscreen image.
    *
-   * @param newFractalColor the new fractal color
+   * @param chaosCanvas the chaos canvas
+   * @param gc the graphics context
    */
-  public void setFractalColor(Color newFractalColor) {
-    this.fractalColor = newFractalColor;
-  }
+  private void drawCanvas(ChaosCanvas chaosCanvas, GraphicsContext gc) {
+    double[][] canvasArray = chaosCanvas.getCanvasArray();
+    double cellWidth = gc.getCanvas().getWidth() / chaosCanvas.getWidth();
+    double cellHeight = gc.getCanvas().getHeight() / chaosCanvas.getHeight();
 
-  /**
-   * Method for creating the canvas.
-   *
-   * @return the GraphicsContext
-   */
-  private GraphicsContext createCanvas() {
-    Canvas canvas = new Canvas(CANVAS_WIDTH, CANVAS_HEIGHT);
-    return canvas.getGraphicsContext2D();
+    WritableImage offScreenImage = createOffScreenImage(chaosCanvas, canvasArray);
+    gc.drawImage(offScreenImage, 0, 0, cellWidth * chaosCanvas.getWidth(),
+            cellHeight * chaosCanvas.getHeight());
   }
 
   /**
@@ -54,31 +42,20 @@ public abstract class GamePage extends BorderPane {
    *
    * @param chaosCanvas the chaos canvas
    */
-  public void updateCanvas(ChaosCanvas chaosCanvas) {
-    clearCanvas();
-    drawCanvas(chaosCanvas);
+  protected void updateCanvas(ChaosCanvas chaosCanvas, GraphicsContext gc) {
+    this.clearCanvas(gc);
+    drawCanvas(chaosCanvas, gc);
   }
 
   /**
    * Method for clearing the canvas.
-   */
-  public void clearCanvas() {
-    gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight());
-  }
-
-  /**
-   * Method for drawing the canvas.
+   * Clears entire GraphicsContext canvas with built-in
+   * clearRect method.
    *
-   * @param chaosCanvas the chaos canvas
+   * @param gc the graphics context
    */
-  private void drawCanvas(ChaosCanvas chaosCanvas) {
-    double[][] canvasArray = chaosCanvas.getCanvasArray();
-    double cellWidth = gc.getCanvas().getWidth() / chaosCanvas.getWidth();
-    double cellHeight = gc.getCanvas().getHeight() / chaosCanvas.getHeight();
-
-    WritableImage offScreenImage = createOffScreenImage(chaosCanvas, canvasArray);
-    gc.drawImage(offScreenImage, 0, 0, cellWidth * chaosCanvas.getWidth(),
-            cellHeight * chaosCanvas.getHeight());
+  protected void clearCanvas(GraphicsContext gc) {
+    gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight());
   }
 
   /**
@@ -112,4 +89,13 @@ public abstract class GamePage extends BorderPane {
 
     return offScreenImage;
   }
+
+  /**
+   * Method for setting color of the fractal.
+   *
+   * @param newFractalColor the new fractal color
+   */
+  protected void setFractalColor(Color newFractalColor) {
+    fractalColor = newFractalColor;
+  }
 }
diff --git a/src/main/java/org/example/chaosgame/controller/ChaosGameController.java b/src/main/java/org/idatt2003/controller/ChaosGameController.java
similarity index 84%
rename from src/main/java/org/example/chaosgame/controller/ChaosGameController.java
rename to src/main/java/org/idatt2003/controller/ChaosGameController.java
index cb8678ba34d88366259e2af8b082804b159dec34..488c8c7737814bce511129e975d9c60dcc826bef 100644
--- a/src/main/java/org/example/chaosgame/controller/ChaosGameController.java
+++ b/src/main/java/org/idatt2003/controller/ChaosGameController.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import java.io.File;
 import java.io.IOException;
@@ -12,22 +12,22 @@ import javafx.scene.layout.StackPane;
 import javafx.scene.paint.Color;
 import javafx.stage.FileChooser;
 import javafx.util.Pair;
-import org.example.chaosgame.controller.interfaces.GameController;
-import org.example.chaosgame.controller.interfaces.Observer;
-import org.example.chaosgame.controller.interfaces.Subject;
-import org.example.chaosgame.model.chaos.ChaosGame;
-import org.example.chaosgame.model.chaos.ChaosGameDescription;
-import org.example.chaosgame.model.chaos.ChaosGameType;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.example.chaosgame.model.transformations.JuliaTransform;
-import org.example.chaosgame.model.transformations.Transform2D;
-import org.example.chaosgame.view.ChaosPage;
-import org.example.chaosgame.view.components.AlertUtility;
-import org.example.chaosgame.view.components.CreateFractalDialog;
-import org.example.chaosgame.view.components.MinMaxDialog;
+import org.idatt2003.controller.interfaces.GameController;
+import org.idatt2003.controller.interfaces.Observer;
+import org.idatt2003.controller.interfaces.Subject;
+import org.idatt2003.model.chaos.ChaosGame;
+import org.idatt2003.model.chaos.ChaosGameDescription;
+import org.idatt2003.model.chaos.ChaosGameType;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
+import org.idatt2003.model.transformations.JuliaTransform;
+import org.idatt2003.model.transformations.Transform2D;
+import org.idatt2003.view.ChaosPage;
+import org.idatt2003.view.components.AlertUtility;
+import org.idatt2003.view.components.CreateFractalDialog;
+import org.idatt2003.view.components.MinMaxDialog;
 
 /**
  * Controller class for the chaos game.
@@ -37,7 +37,8 @@ import org.example.chaosgame.view.components.MinMaxDialog;
  *
  * <p>Implements the GameController interface.
  */
-public class ChaosGameController implements Observer, Subject, GameController {
+public class ChaosGameController extends CanvasPainter
+        implements Observer, Subject, GameController {
   private final ChaosGame chaosGame;
   private final ChaosPage chaosPage;
   private final List<Observer> pageObservers;
@@ -49,7 +50,8 @@ public class ChaosGameController implements Observer, Subject, GameController {
    * Constructor for the ChaosGameController.
    *
    * <p>Initializes the ChaosGame and ChaosPage.
-   * Register the ChaosGame as an observer.
+   * Registers the controller as an observer of the
+   * chaos game
    *
    */
   public ChaosGameController() {
@@ -81,6 +83,7 @@ public class ChaosGameController implements Observer, Subject, GameController {
 
   /**
    * Method for selecting a new ChaosGameDescription.
+   * Uses the ChaosGameDescriptionFactory to change the game
    *
    * @param selectedGame Name of the selected game
    */
@@ -131,9 +134,10 @@ public class ChaosGameController implements Observer, Subject, GameController {
 
   /**
    * Method for setting the min and max coordinates for the chaos game.
+   * Updates the ChaosGameDescription to the new coordinate values.
+   * Catches different exceptions and displays a fitting message to user.
    *
    * <p>Opens a dialog for the user to enter the coordinates.
-   *
    */
   public void setMaxMinCoords() {
     MinMaxDialog dialog = new MinMaxDialog();
@@ -148,7 +152,8 @@ public class ChaosGameController implements Observer, Subject, GameController {
                 Double.parseDouble(coords.get(3)));
 
         updateChaosGame(new ChaosGameDescription(min, max,
-                chaosGame.getDescription().getTransforms()));
+                chaosGame.getDescription().getTransforms(),
+                chaosGame.getDescription().getProbabilities()));
       } catch (NumberFormatException e) {
         AlertUtility.showErrorDialog("Invalid input",
                 "Please enter a valid number.");
@@ -190,7 +195,7 @@ public class ChaosGameController implements Observer, Subject, GameController {
 
   /**
    * Method for user creation of fractal.
-   * {@link org.example.chaosgame.view.components.CreateFractalDialog} returns either a
+   * {@link CreateFractalDialog} returns either a
    * {@link java.util.List}<{@link java.util.List}<{@link java.lang.String}>>
    * or a {@link javafx.util.Pair}<{@link java.lang.String}, {@link java.lang.String}>.
    *
@@ -268,6 +273,9 @@ public class ChaosGameController implements Observer, Subject, GameController {
 
   /**
    * Method for resetting the chaos game.
+   * Resets the total steps.
+   * Updates the information on the chaos page's top bar
+   * and clears both the ChaosCanvas and the canvas
    */
   public void resetGame() {
     chaosGame.resetTotalSteps();
@@ -275,7 +283,8 @@ public class ChaosGameController implements Observer, Subject, GameController {
             chaosGame.getTotalSteps(),
             chaosGame.getDescription().getMinCoords(),
             chaosGame.getDescription().getMaxCoords());
-    chaosPage.clearCanvas();
+    chaosGame.getCanvas().clearCanvas();
+    clearCanvas(chaosPage.getGraphicsContext());
   }
 
   @Override
@@ -320,12 +329,21 @@ public class ChaosGameController implements Observer, Subject, GameController {
     }
   }
 
+  /**
+   * Method for updating the fractal color.
+   * Sets the color than updates the canvas with the new color.
+   *
+   * @param color the new color.
+   */
   @Override
   public void updateFractalColor(Color color) {
-    chaosPage.setFractalColor(color);
-    chaosPage.updateCanvas(chaosGame.getCanvas());
+    setFractalColor(color);
+    updateCanvas(chaosGame.getCanvas(), chaosPage.getGraphicsContext());
   }
 
+  /**
+   * Notifies the page observers when the button is clicked.
+   */
   @Override
   public void homeButtonClicked() {
     notifyObservers();
@@ -341,11 +359,11 @@ public class ChaosGameController implements Observer, Subject, GameController {
             chaosGame.getTotalSteps(),
             chaosGame.getDescription().getMinCoords(),
             chaosGame.getDescription().getMaxCoords());
-    chaosPage.updateCanvas(chaosGame.getCanvas());
+    updateCanvas(chaosGame.getCanvas(), chaosPage.getGraphicsContext());
   }
 
   /**
-   * Method for registering observers.
+   * Method for registering page observers.
    *
    * @param observer Observer to register
    */
@@ -355,7 +373,7 @@ public class ChaosGameController implements Observer, Subject, GameController {
   }
 
   /**
-   * Method for removing observers.
+   * Method for removing page observers.
    *
    * @param observer Observer to remove
    */
@@ -365,7 +383,10 @@ public class ChaosGameController implements Observer, Subject, GameController {
   }
 
   /**
-   * Method for notifying observers.
+   * Method for notifying page observers.
+   * Notifies if the displaying pages should
+   * be changed.
+   *
    */
   @Override
   public void notifyObservers() {
diff --git a/src/main/java/org/example/chaosgame/controller/ChaosGameDescriptionFactory.java b/src/main/java/org/idatt2003/controller/ChaosGameDescriptionFactory.java
similarity index 85%
rename from src/main/java/org/example/chaosgame/controller/ChaosGameDescriptionFactory.java
rename to src/main/java/org/idatt2003/controller/ChaosGameDescriptionFactory.java
index db3de3d27fb79488505c1f1d61df2ad70bffb01a..583a6f25936d149103893a050690650395dfe226 100644
--- a/src/main/java/org/example/chaosgame/controller/ChaosGameDescriptionFactory.java
+++ b/src/main/java/org/idatt2003/controller/ChaosGameDescriptionFactory.java
@@ -1,16 +1,17 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import java.util.List;
-import org.example.chaosgame.model.chaos.ChaosGameDescription;
-import org.example.chaosgame.model.chaos.ChaosGameType;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.example.chaosgame.model.transformations.JuliaTransform;
+import org.idatt2003.model.chaos.ChaosGameDescription;
+import org.idatt2003.model.chaos.ChaosGameType;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
+import org.idatt2003.model.transformations.JuliaTransform;
 
 /**
  * Factory class for creating ChaosGameDescription objects.
+ * Creates a ChaosGameDescription object based on the ChaosGameType-enum.
  */
 public class ChaosGameDescriptionFactory {
 
diff --git a/src/main/java/org/example/chaosgame/controller/ChaosGameFileHandler.java b/src/main/java/org/idatt2003/controller/ChaosGameFileHandler.java
similarity index 93%
rename from src/main/java/org/example/chaosgame/controller/ChaosGameFileHandler.java
rename to src/main/java/org/idatt2003/controller/ChaosGameFileHandler.java
index 050be3f8ffd4d511b5a88037a999ac96028cce6c..8499213dd7c981adc12645fa02f6900e4ef0a077 100644
--- a/src/main/java/org/example/chaosgame/controller/ChaosGameFileHandler.java
+++ b/src/main/java/org/idatt2003/controller/ChaosGameFileHandler.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -7,16 +7,17 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import org.example.chaosgame.model.chaos.ChaosGameDescription;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.example.chaosgame.model.transformations.JuliaTransform;
-import org.example.chaosgame.model.transformations.Transform2D;
+import org.idatt2003.model.chaos.ChaosGameDescription;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
+import org.idatt2003.model.transformations.JuliaTransform;
+import org.idatt2003.model.transformations.Transform2D;
 
 /**
  * Class for reading and writing chaos game descriptions from and to files.
+ * The class can read and write chaos game descriptions to text files.
  */
 public class ChaosGameFileHandler {
   private final List<Transform2D> transforms = new ArrayList<>();
diff --git a/src/main/java/org/example/chaosgame/controller/ExploreGameController.java b/src/main/java/org/idatt2003/controller/ExploreGameController.java
similarity index 79%
rename from src/main/java/org/example/chaosgame/controller/ExploreGameController.java
rename to src/main/java/org/idatt2003/controller/ExploreGameController.java
index b6ae5e8cfac2ea62c8c1e05d13df1bce44c5b727..2433d3a3866dfd6cf0d39099c3d041df789b8734 100644
--- a/src/main/java/org/example/chaosgame/controller/ExploreGameController.java
+++ b/src/main/java/org/idatt2003/controller/ExploreGameController.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -7,17 +7,17 @@ import javafx.scene.input.MouseEvent;
 import javafx.scene.input.ScrollEvent;
 import javafx.scene.layout.StackPane;
 import javafx.scene.paint.Color;
-import org.example.chaosgame.controller.interfaces.GameController;
-import org.example.chaosgame.controller.interfaces.Observer;
-import org.example.chaosgame.controller.interfaces.Subject;
-import org.example.chaosgame.model.chaos.ChaosCanvas;
-import org.example.chaosgame.model.chaos.ChaosGameDescription;
-import org.example.chaosgame.model.chaos.ExploreGame;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.ExploreJulia;
-import org.example.chaosgame.model.transformations.Transform2D;
-import org.example.chaosgame.view.ExplorePage;
+import org.idatt2003.controller.interfaces.GameController;
+import org.idatt2003.controller.interfaces.Observer;
+import org.idatt2003.controller.interfaces.Subject;
+import org.idatt2003.model.chaos.ChaosCanvas;
+import org.idatt2003.model.chaos.ChaosGameDescription;
+import org.idatt2003.model.chaos.ExploreGame;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.ExploreJulia;
+import org.idatt2003.model.transformations.Transform2D;
+import org.idatt2003.view.ExplorePage;
 
 /**
  * Controller class for the ExploreGame.
@@ -26,7 +26,8 @@ import org.example.chaosgame.view.ExplorePage;
  *
  * <p>The controller implements the GameController, and is a Subject and Observer.
  */
-public class ExploreGameController implements Observer, Subject, GameController {
+public class ExploreGameController extends CanvasPainter
+        implements Observer, Subject, GameController {
   private ExploreGame exploreGame;
   private final ExplorePage explorePage;
   private ChaosCanvas chaosCanvas;
@@ -46,6 +47,8 @@ public class ExploreGameController implements Observer, Subject, GameController
   /**
    * Constructor for ExploreGameController.
    * Initializes the ExploreGame and ExplorePage.
+   * It registers itself as an observer of the ExploreGame.
+   *
    */
   public ExploreGameController() {
     ExploreJulia exploreJulia = new ExploreJulia(new Complex(-0.835, 0.2321));
@@ -58,6 +61,7 @@ public class ExploreGameController implements Observer, Subject, GameController
     this.pageObservers = new ArrayList<>();
     exploreGame.registerObserver(this);
     this.explorePage = new ExplorePage(this);
+
   }
 
   public void setCanvas(Canvas canvas) {
@@ -79,7 +83,9 @@ public class ExploreGameController implements Observer, Subject, GameController
 
   /**
    * Method for handling mouse dragged events.
-   * Moves the canvas based on the distance dragged.
+   * Moves the canvas based on the distance dragged,
+   * by translating in the canvas in the x- and y-direction.
+   * Updates the drag start position.
    *
    * @param event MouseEvent
    */
@@ -132,6 +138,14 @@ public class ExploreGameController implements Observer, Subject, GameController
   /**
    * Method for handling scroll events.
    * Zooms in or out based on the scroll direction.
+   * Prevents zooming out too far by setting a zoom in/out limit
+   * and saving the cumulative scale factor.
+   * Allows for faster zooming when holding down the control key.
+   *
+   * <p>Inspired by:
+   * <a href="https://github.com/majidrouhani/idatt2003-gui-demo-mandelbrot">
+   * idatt2003-gui-demo-mandelbrot</a>
+   *
    *
    * @param event ScrollEvent
    */
@@ -172,9 +186,16 @@ public class ExploreGameController implements Observer, Subject, GameController
     maxCoords = canvasCenter.add(description.getMaxCoords()
             .subtract(canvasCenter).scale(scaleFactor));
     updateExplorePage();
+    event.consume();
   }
 
 
+  /**
+   * Method for updating the ExplorePage.
+   * Updates the ExplorePage with the new ExploreGame.
+   * Updates the canvas with the new fractal.
+   * Resets the canvas position and scale.
+   */
   private void updateExplorePage() {
     this.description.setMinCoords(minCoords);
     this.description.setMaxCoords(maxCoords);
@@ -184,15 +205,17 @@ public class ExploreGameController implements Observer, Subject, GameController
     this.exploreGame.registerObserver(this);
     this.chaosCanvas = exploreGame.getCanvas();
     exploreGame.exploreFractals();
-    explorePage.updateCanvas(exploreGame.getCanvas());
-
     this.canvas.setTranslateX(0);
     this.canvas.setTranslateY(0);
     this.canvas.setScaleX(1);
     this.canvas.setScaleY(1);
   }
 
-
+  /**
+   * Method for handling home button clicks.
+   * Notifies observers.
+   */
+  @Override
   public void homeButtonClicked() {
     notifyObservers();
   }
@@ -208,8 +231,8 @@ public class ExploreGameController implements Observer, Subject, GameController
    */
   @Override
   public void updateFractalColor(Color color) {
-    explorePage.setFractalColor(color);
-    explorePage.updateCanvas(exploreGame.getCanvas());
+    setFractalColor(color);
+    updateCanvas(chaosCanvas, canvas.getGraphicsContext2D());
   }
 
   /**
@@ -227,6 +250,14 @@ public class ExploreGameController implements Observer, Subject, GameController
     updateExplorePage();
   }
 
+
+  /**
+   * Method for binding the canvas to the main pane.
+   * Binds the canvas width and height to the main pane width and height.
+   * Updates the canvas width and height when the main pane width and height changes with listeners.
+   *
+   * @param mainPane Main pane of the application
+   */
   @Override
   public void setBind(StackPane mainPane) {
     canvas.widthProperty().bind(mainPane.widthProperty().multiply(0.85));
@@ -245,6 +276,12 @@ public class ExploreGameController implements Observer, Subject, GameController
     });
   }
 
+  /**
+   * Method for updating the Julia value.
+   *
+   * @param partType Part type
+   * @param value    New value
+   */
   @Override
   public void updateJuliaValue(String partType, double value) {
     ExploreJulia exploreTransform =
@@ -264,14 +301,14 @@ public class ExploreGameController implements Observer, Subject, GameController
    */
   @Override
   public void update() {
-    explorePage.updateCanvas(exploreGame.getCanvas());
+    updateCanvas(chaosCanvas, canvas.getGraphicsContext2D());
     explorePage.updateInformation(
             description.getTransforms().getFirst(),
             description.getMinCoords(), description.getMaxCoords());
   }
 
   /**
-   * Method for registering an observer.
+   * Method for registering a page observer.
    *
    * @param observer Observer
    */
@@ -281,7 +318,7 @@ public class ExploreGameController implements Observer, Subject, GameController
   }
 
   /**
-   * Method for removing an observer.
+   * Method for removing a page observer.
    *
    * @param observer Observer
    */
@@ -291,7 +328,7 @@ public class ExploreGameController implements Observer, Subject, GameController
   }
 
   /**
-   * Method for notifying observers.
+   * Method for notifying page observers.
    */
   @Override
   public void notifyObservers() {
@@ -299,4 +336,6 @@ public class ExploreGameController implements Observer, Subject, GameController
       pageObserver.update();
     }
   }
+
+
 }
diff --git a/src/main/java/org/example/chaosgame/controller/HomeController.java b/src/main/java/org/idatt2003/controller/HomeController.java
similarity index 83%
rename from src/main/java/org/example/chaosgame/controller/HomeController.java
rename to src/main/java/org/idatt2003/controller/HomeController.java
index 8695475a5698cb6c6eb0f06d34b94fe70cb37ad8..161f2853f0d0b9e62aed6ccbb6c5e3818c50ba56 100644
--- a/src/main/java/org/example/chaosgame/controller/HomeController.java
+++ b/src/main/java/org/idatt2003/controller/HomeController.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import javafx.event.EventType;
 import javafx.scene.effect.ColorAdjust;
@@ -7,7 +7,7 @@ import javafx.scene.media.MediaPlayer;
 import javafx.scene.media.MediaView;
 import javafx.scene.text.Text;
 import javafx.util.Duration;
-import org.example.chaosgame.view.HomePage;
+import org.idatt2003.view.HomePage;
 
 /**
  * Controller for the home page.
@@ -30,7 +30,9 @@ public class HomeController {
   }
 
   /**
-   * Handles mouse events for the home page.
+   * Handles MOUSE_ENTERED or MOUSE_EXITED events
+   * for the home page. Either plays or pauses video and adds
+   * opacity to the text and color adjusts the MediaView.
    *
    * @param mouseEvent   the mouse event
    * @param video        the video
@@ -46,7 +48,7 @@ public class HomeController {
       view.setEffect(colorAdjust);
       header.setEffect(headerAdjust);
       header.setOpacity(0.2);
-    } else {
+    } else if (mouseEvent == MouseEvent.MOUSE_EXITED) {
       video.seek(Duration.seconds(0));
       video.pause();
       view.setEffect(colorAdjust);
diff --git a/src/main/java/org/example/chaosgame/controller/PageController.java b/src/main/java/org/idatt2003/controller/PageController.java
similarity index 95%
rename from src/main/java/org/example/chaosgame/controller/PageController.java
rename to src/main/java/org/idatt2003/controller/PageController.java
index e8883f59932f90e390439bb4d34d2c6be884f8c1..03ddb8f23599985434fe2798070f95c01d22c632 100644
--- a/src/main/java/org/example/chaosgame/controller/PageController.java
+++ b/src/main/java/org/idatt2003/controller/PageController.java
@@ -1,11 +1,11 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import java.util.HashMap;
 import java.util.Map;
 import javafx.scene.Node;
 import javafx.scene.layout.StackPane;
-import org.example.chaosgame.controller.interfaces.Observer;
-import org.example.chaosgame.view.HomePage;
+import org.idatt2003.controller.interfaces.Observer;
+import org.idatt2003.view.HomePage;
 
 /**
  * Controller for the different pages in the application.
diff --git a/src/main/java/org/example/chaosgame/controller/interfaces/GameController.java b/src/main/java/org/idatt2003/controller/interfaces/GameController.java
similarity index 79%
rename from src/main/java/org/example/chaosgame/controller/interfaces/GameController.java
rename to src/main/java/org/idatt2003/controller/interfaces/GameController.java
index 7c29ebd4be12149da3dad240806c1eecbf30ff48..61d5ea9f363f32679567dc1ce8698b8ce3c74ba5 100644
--- a/src/main/java/org/example/chaosgame/controller/interfaces/GameController.java
+++ b/src/main/java/org/idatt2003/controller/interfaces/GameController.java
@@ -1,11 +1,13 @@
-package org.example.chaosgame.controller.interfaces;
+package org.idatt2003.controller.interfaces;
 
 import javafx.scene.layout.StackPane;
 import javafx.scene.paint.Color;
-import org.example.chaosgame.view.GamePage;
+import org.idatt2003.view.GamePage;
 
 /**
  * Interface for the GameController.
+ * Includes abstract methods for setting canvas bind,
+ * updating julia values, home button clicked and updating fractal colors
  */
 public interface GameController {
 
diff --git a/src/main/java/org/example/chaosgame/controller/interfaces/Observer.java b/src/main/java/org/idatt2003/controller/interfaces/Observer.java
similarity index 66%
rename from src/main/java/org/example/chaosgame/controller/interfaces/Observer.java
rename to src/main/java/org/idatt2003/controller/interfaces/Observer.java
index e20769649faa155b914b79bee914a6f32543018e..72c2e090459e45da893434521fe591949e664a3e 100644
--- a/src/main/java/org/example/chaosgame/controller/interfaces/Observer.java
+++ b/src/main/java/org/idatt2003/controller/interfaces/Observer.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.controller.interfaces;
+package org.idatt2003.controller.interfaces;
 
 /**
  * Observer interface for the observer pattern.
diff --git a/src/main/java/org/example/chaosgame/controller/interfaces/Subject.java b/src/main/java/org/idatt2003/controller/interfaces/Subject.java
similarity index 78%
rename from src/main/java/org/example/chaosgame/controller/interfaces/Subject.java
rename to src/main/java/org/idatt2003/controller/interfaces/Subject.java
index 9c0605d4fb3e3c1a5a36c6f925b9ab060be5e63b..ef59e5b961e0e658deb1784f5965c382015a0370 100644
--- a/src/main/java/org/example/chaosgame/controller/interfaces/Subject.java
+++ b/src/main/java/org/idatt2003/controller/interfaces/Subject.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.controller.interfaces;
+package org.idatt2003.controller.interfaces;
 
 /**
  * Subject interface for the observer pattern.
diff --git a/src/main/java/org/example/chaosgame/model/chaos/ChaosCanvas.java b/src/main/java/org/idatt2003/model/chaos/ChaosCanvas.java
similarity index 96%
rename from src/main/java/org/example/chaosgame/model/chaos/ChaosCanvas.java
rename to src/main/java/org/idatt2003/model/chaos/ChaosCanvas.java
index ed700b4911756bd4d62d8706bedc52679807e21e..1f9ab6f1a8a9b08cddd31ed3d1f4f749a13a67b0 100644
--- a/src/main/java/org/example/chaosgame/model/chaos/ChaosCanvas.java
+++ b/src/main/java/org/idatt2003/model/chaos/ChaosCanvas.java
@@ -1,8 +1,8 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
 
 /**
  * A class representing a canvas for the chaos game.
diff --git a/src/main/java/org/example/chaosgame/model/chaos/ChaosGame.java b/src/main/java/org/idatt2003/model/chaos/ChaosGame.java
similarity index 91%
rename from src/main/java/org/example/chaosgame/model/chaos/ChaosGame.java
rename to src/main/java/org/idatt2003/model/chaos/ChaosGame.java
index 6ee43e34f845e10696777fb0da4fe27442048edc..a0afed447e773ee300a48643634139808210edea 100644
--- a/src/main/java/org/example/chaosgame/model/chaos/ChaosGame.java
+++ b/src/main/java/org/idatt2003/model/chaos/ChaosGame.java
@@ -1,11 +1,11 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
-import org.example.chaosgame.controller.interfaces.Observer;
-import org.example.chaosgame.controller.interfaces.Subject;
-import org.example.chaosgame.model.linalg.Vector2D;
+import org.idatt2003.controller.interfaces.Observer;
+import org.idatt2003.controller.interfaces.Subject;
+import org.idatt2003.model.linalg.Vector2D;
 
 /**
  * Class for running a chaos game.
@@ -101,6 +101,8 @@ public class ChaosGame implements Subject {
 
   /**
    * Method for setting the chaos game description.
+   * Sets the description, resets the total steps,
+   * sets the chaosCanvas and
    *
    * @param newDescription New description of the chaos game
    * @throws IllegalArgumentException If newDescription is null
@@ -164,8 +166,11 @@ public class ChaosGame implements Subject {
   /**
    * Method for running the chaos game. Randomly selects a transformation
    * from the description and applies it to the current point.
+   *
+   * @param steps Number of steps to run
    */
   private void runStepsUniform(int steps) {
+    currentPoint = new Vector2D(0.0, 0.0);
     for (int i = 0; i < steps; i++) {
       int transformIndex = random.nextInt(description.getTransforms().size());
       currentPoint = description.getTransforms().get(transformIndex).transform(currentPoint);
@@ -177,11 +182,13 @@ public class ChaosGame implements Subject {
    * Method for running the chaos game with probabilities.
    * Randomly selects a transformation from the description based on the probabilities
    * and applies it to the current point.
+   * GitHub Copilot helped generate code logic.
    *
    * @param steps Number of steps to run
    * @param probabilities List of probabilities for the transformations
    */
   private void runStepsWithProbabilities(int steps, List<Integer> probabilities) {
+    currentPoint = new Vector2D(0.0, 0.0);
     for (int i = 0; i < steps; i++) {
       int test = random.nextInt(100);
       int transformIndex = -1;
@@ -201,7 +208,7 @@ public class ChaosGame implements Subject {
   }
 
   /**
-   * Method for registering an observer.
+   * Method for registering a game observer.
    *
    * @param gameObserver Observer to register
    */
@@ -211,7 +218,7 @@ public class ChaosGame implements Subject {
   }
 
   /**
-   * Method for removing an observer.
+   * Method for removing a game observer.
    *
    * @param gameObserver Observer to remove
    */
@@ -221,7 +228,8 @@ public class ChaosGame implements Subject {
   }
 
   /**
-   * Method for notifying observers.
+   * Method for notifying observers of the game.
+   *
    */
   @Override
   public void notifyObservers() {
diff --git a/src/main/java/org/example/chaosgame/model/chaos/ChaosGameDescription.java b/src/main/java/org/idatt2003/model/chaos/ChaosGameDescription.java
similarity index 79%
rename from src/main/java/org/example/chaosgame/model/chaos/ChaosGameDescription.java
rename to src/main/java/org/idatt2003/model/chaos/ChaosGameDescription.java
index 8c7177f940833f147f256ae1eea7b859cd1983a2..a724ef983910220c10742e285083afb3d667c695 100644
--- a/src/main/java/org/example/chaosgame/model/chaos/ChaosGameDescription.java
+++ b/src/main/java/org/idatt2003/model/chaos/ChaosGameDescription.java
@@ -1,9 +1,9 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
 import java.util.List;
 import java.util.Objects;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.Transform2D;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.Transform2D;
 
 
 /**
@@ -20,6 +20,7 @@ public class ChaosGameDescription {
 
   /**
    * Constructor for ChaosGameDescription.
+   * Validates the coordinates and transformations.
    *
    * @param minCoords Minimum coordinates of the game area
    *
@@ -53,7 +54,7 @@ public class ChaosGameDescription {
           throws IllegalArgumentException {
     validateCoordinates(minCoords, maxCoords);
     validateTransforms(transforms);
-    if (probabilities.size() != transforms.size()) {
+    if (probabilities != null && probabilities.size() != transforms.size()) {
       throw new IllegalArgumentException("Probabilities must match the number of transformations");
     }
     this.minCoords = minCoords;
@@ -68,8 +69,11 @@ public class ChaosGameDescription {
    * @param minCoords Minimum coordinates of the game area
    *
    * @param maxCoords Maximum coordinates of the game area
+   *
+   * @throws IllegalArgumentException if transformation is null or has more elements than 4
    */
-  private void validateCoordinates(Vector2D minCoords, Vector2D maxCoords) {
+  private void validateCoordinates(Vector2D minCoords, Vector2D maxCoords)
+          throws IllegalArgumentException {
     if (minCoords.getX() < -50 || minCoords.getY() < -50
             || minCoords.getX() > 50 || minCoords.getY() > 50
             || maxCoords.getX() > 50 || maxCoords.getY() > 50
@@ -84,20 +88,6 @@ public class ChaosGameDescription {
     }
   }
 
-  /**
-   * Method for validating the transformations.
-   *
-   * @param transforms List of transformations to apply to the points
-   */
-  private void validateTransforms(List<Transform2D> transforms) {
-    if (transforms == null) {
-      throw new IllegalArgumentException("Transformations cannot be null");
-    }
-    if (transforms.size() > 4 || transforms.isEmpty()) {
-      throw new IllegalArgumentException("Number of transformations must be between 1 and 4");
-    }
-  }
-
   public Vector2D getMinCoords() {
     return minCoords;
   }
@@ -114,15 +104,49 @@ public class ChaosGameDescription {
     return probabilities;
   }
 
+  /**
+   * Method for validating the transformations.
+   *
+   * @param transforms List of transformations to apply to the points
+   *
+   * @throws IllegalArgumentException if transformation is null, empty or has more elements than 4
+   */
+  private void validateTransforms(List<Transform2D> transforms) throws IllegalArgumentException {
+    if (transforms == null) {
+      throw new IllegalArgumentException("Transformations cannot be null");
+    }
+    if (transforms.size() > 4 || transforms.isEmpty()) {
+      throw new IllegalArgumentException("Number of transformations must be between 1 and 4");
+    }
+  }
+
+  /**
+   * Method for setting the description transformations.
+   * Validates first then, sets the transformations.
+   *
+   * @param transforms List of transformations to set
+   */
   public void setTransforms(List<Transform2D> transforms) {
     validateTransforms(transforms);
     this.transforms = transforms;
   }
 
+  /**
+   * Method for setting the descriptions min coordinates
+   * Does not validate because of the drag and drop functionality in Explore Game.
+   *
+   * @param minCoords new min coordinates
+   */
   public void setMinCoords(Vector2D minCoords) {
     this.minCoords = minCoords;
   }
 
+  /**
+   * Method for setting the description max coordinates.
+   * Does not validate because of the drag and drop functionality in Explore Game.
+   *
+   * @param maxCoords new max coordinates
+   */
   public void setMaxCoords(Vector2D maxCoords) {
     this.maxCoords = maxCoords;
   }
diff --git a/src/main/java/org/example/chaosgame/model/chaos/ChaosGameType.java b/src/main/java/org/idatt2003/model/chaos/ChaosGameType.java
similarity index 80%
rename from src/main/java/org/example/chaosgame/model/chaos/ChaosGameType.java
rename to src/main/java/org/idatt2003/model/chaos/ChaosGameType.java
index c709d9a32442da82d4072798fa91534f09e90d01..e0ca41e8d4455a7d021202d41c899ec1070e1680 100644
--- a/src/main/java/org/example/chaosgame/model/chaos/ChaosGameType.java
+++ b/src/main/java/org/idatt2003/model/chaos/ChaosGameType.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
 /**
  * Enum for the different types of chaos games.
diff --git a/src/main/java/org/example/chaosgame/model/chaos/ExploreGame.java b/src/main/java/org/idatt2003/model/chaos/ExploreGame.java
similarity index 70%
rename from src/main/java/org/example/chaosgame/model/chaos/ExploreGame.java
rename to src/main/java/org/idatt2003/model/chaos/ExploreGame.java
index 16aa2be8aad9ec1f1d27b468fd3e858ae91be351..7d95e42d245f09771167d83682de6c8720865e65 100644
--- a/src/main/java/org/example/chaosgame/model/chaos/ExploreGame.java
+++ b/src/main/java/org/idatt2003/model/chaos/ExploreGame.java
@@ -1,26 +1,31 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.IntStream;
-import org.example.chaosgame.controller.interfaces.Observer;
-import org.example.chaosgame.controller.interfaces.Subject;
-import org.example.chaosgame.model.linalg.Vector2D;
-
+import org.idatt2003.controller.interfaces.Observer;
+import org.idatt2003.controller.interfaces.Subject;
+import org.idatt2003.model.linalg.Vector2D;
 
 
 /**
- * Class for exploring julia sets.
+ * Class for exploring fractal sets.
+ * Currently, it is only set to calculate julia fractals,
+ * can be expanded to work with other fractals.
  */
 public class ExploreGame implements Subject {
   private static final int MAX_ITER = 256;
-  private final ChaosCanvas canvas;
+  private ChaosCanvas canvas;
   private ChaosGameDescription description;
   private Vector2D currentPoint = new Vector2D(0.0, 0.0);
   private final List<Observer> gameObservers;
 
   /**
    * Constructor for ExploreGame.
+   * Creates a new ExploreGame object with the
+   * given description, width, and height.
+   * Creates a new ChaosCanvas object with the
+   * minCoords and maxCoords in the ChaosGameDescription.
    *
    * @param description Description of the chaos game
    *
@@ -42,13 +47,12 @@ public class ExploreGame implements Subject {
    *
    * @param description Description of the chaos game
    *
-   * @param width Width of the canvas
-   *
-   * @param height Height of the canvas
+   * @param canvas ChaosCanvas object
    */
-  public void setExploreGame(ChaosGameDescription description, int width, int height) {
+  public void setExploreGame(ChaosGameDescription description, ChaosCanvas canvas) {
     this.description = description;
-    setChaosCanvas(description.getMinCoords(), description.getMaxCoords(), width, height);
+    this.canvas = canvas;
+    this.currentPoint = new Vector2D(0.0, 0.0);
 
   }
 
@@ -60,30 +64,14 @@ public class ExploreGame implements Subject {
     return description;
   }
 
-  /**
-   * Method for setting the chaos canvas.
-   *
-   * @param minCoords Minimum coordinates of the canvas
-   *
-   * @param maxCoords Maximum coordinates of the canvas
-   *
-   * @param width Width of the canvas
-   *
-   * @param height Height of the canvas
-   */
-  public void setChaosCanvas(Vector2D minCoords, Vector2D maxCoords, int width, int height) {
-    this.canvas.clearCanvas();
-    this.canvas.setMaxCoords(maxCoords);
-    this.canvas.setMinCoords(minCoords);
-    this.canvas.setWidth(width);
-    this.canvas.setHeight(height);
-  }
 
   /**
    * Method for exploring fractals. Iterates over all pixels in the canvas
    * and applies the transformation to the current point.
    * Inspiration from <a href="https://www.youtube.com/watch?v=uc2yok_pLV4">Pezzza's Work</a>
-   * and <a href="https://github.com/majidrouhani/idatt2003-gui-demo-mandelbrot">idatt2003-gui-demo-mandelbrot</a>
+   * for the smoothing algorithm.
+   * And also <a href="https://github.com/majidrouhani/idatt2003-gui-demo-mandelbrot">idatt2003-gui-demo-mandelbrot</a>
+   * for the parallel stream.
    *
    */
   public void exploreFractals() {
diff --git a/src/main/java/org/example/chaosgame/model/linalg/Complex.java b/src/main/java/org/idatt2003/model/linalg/Complex.java
similarity index 67%
rename from src/main/java/org/example/chaosgame/model/linalg/Complex.java
rename to src/main/java/org/idatt2003/model/linalg/Complex.java
index 8e671f699155addb30a3003d54272274c3124352..9db6200211c651f6596f223315ad19d9a1b2fe64 100644
--- a/src/main/java/org/example/chaosgame/model/linalg/Complex.java
+++ b/src/main/java/org/idatt2003/model/linalg/Complex.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.linalg;
+package org.idatt2003.model.linalg;
 
 import java.util.Random;
 
@@ -12,7 +12,7 @@ public class Complex extends Vector2D {
 
   /**
    * Constructor for Complex class.
-   * super(x, y) is used to call the constructor of the superclass, Vector2D.
+   * Method super(x, y) is used to call the constructor of the superclass, Vector2D.
    *
    * @param real x-coordinate.
    * @param imaginary y-coordinate.
@@ -23,10 +23,21 @@ public class Complex extends Vector2D {
 
   /**
    * Method to calculate the square root of a complex number.
+   * This formula describes the transformation:
+   * <br>
+   * <span style="font-family: Courier">
+   *   z → &#177;&radic;&#x305;(&#x305;a&#x305; &#x305;+&#x305;
+   *   &#x305;b&#x305;i&#x305;) </span>
+   * where:
+   * <ul>
+   *   <li>a is the real part of the complex number</li>
+   *   <li>b is the imaginary part of the complex number</li>
+   *   <li>i is the imaginary unit</li>
+   * </ul>
    *
    * @param realPart the real part of the complex number.
    * @param imaginaryPart the imaginary part of the complex number.
-   * @return a new complex number that is the square root of the input cRe and cIm.
+   * @return a new complex number that is the square root of the input realPart and imaginaryPart.
    */
   public Complex sqrt(double realPart, double imaginaryPart) {
     double a = Math.pow(realPart, 2) + Math.pow(imaginaryPart, 2);
diff --git a/src/main/java/org/example/chaosgame/model/linalg/Matrix2x2.java b/src/main/java/org/idatt2003/model/linalg/Matrix2x2.java
similarity index 89%
rename from src/main/java/org/example/chaosgame/model/linalg/Matrix2x2.java
rename to src/main/java/org/idatt2003/model/linalg/Matrix2x2.java
index ea2b4911ee21761c87b45e26ff255d7333db036e..9dd41a29c796aade5d45a797a7c4117796835fc2 100644
--- a/src/main/java/org/example/chaosgame/model/linalg/Matrix2x2.java
+++ b/src/main/java/org/idatt2003/model/linalg/Matrix2x2.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.linalg;
+package org.idatt2003.model.linalg;
 
 
 import java.util.Objects;
@@ -29,6 +29,9 @@ public record Matrix2x2(double a, double b, double c, double d) {
 
   /**
    * Method to multiply a 2x2 matrix with a 2D vector.
+   * Multiplies the matrix x-values with the vector x-values and the matrix
+   * y-values with the vector y-values.
+   * Method add the results together to get a new vector with new x and y values.
    *
    * @param vector the vector to multiply with.
    * @return a new 2D vector.
diff --git a/src/main/java/org/example/chaosgame/model/linalg/Vector2D.java b/src/main/java/org/idatt2003/model/linalg/Vector2D.java
similarity index 75%
rename from src/main/java/org/example/chaosgame/model/linalg/Vector2D.java
rename to src/main/java/org/idatt2003/model/linalg/Vector2D.java
index c06683ae4e49f58196a970b7dfae59891df163d5..2a9061e601b6781cb847eb5b00283b67959de567 100644
--- a/src/main/java/org/example/chaosgame/model/linalg/Vector2D.java
+++ b/src/main/java/org/idatt2003/model/linalg/Vector2D.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.linalg;
+package org.idatt2003.model.linalg;
 
 import java.util.Objects;
 
@@ -15,6 +15,7 @@ public class Vector2D {
 
   /**
    * Constructor for Vector2D.
+   * Creates a new 2D vector with the given x and y coordinates.
    *
    * @param x x-coordinate
    * @param y y-coordinate
@@ -34,6 +35,8 @@ public class Vector2D {
 
   /**
    * Add two vectors together.
+   * The sum of two vectors is a new vector with
+   * the sum of the x-coordinates and the sum of the y-coordinates.
    *
    * @param other the other vector
    * @return the sum of the two vectors
@@ -46,6 +49,8 @@ public class Vector2D {
 
   /**
    * Subtract one vector from another.
+   * The difference of two vectors is a new vector with
+   * the difference of the x-coordinates and the difference of the y-coordinates.
    *
    * @param other the other vector
    * @return the difference of the two vectors
@@ -58,6 +63,8 @@ public class Vector2D {
 
   /**
    * Scale a vector by a scalar.
+   * The scaled vector is a new vector with the
+   * x and y coordinates multiplied by the scalar.
    *
    * @param scalar the scalar to multiply the vector by
    * @return the scaled vector
@@ -70,6 +77,8 @@ public class Vector2D {
 
   /**
    * Multiply two vectors together.
+   * The product of two vectors is a new vector with
+   * the product of the x-coordinates and the product of the y-coordinates.
    *
    * @param other the other vector
    * @return the product of the two vectors
@@ -82,6 +91,8 @@ public class Vector2D {
 
   /**
    * Divide one vector by another.
+   * The quotient of two vectors is a new vector with
+   * the quotient of the x-coordinates and the quotient of the y-coordinates.
    *
    * @param other the other vector
    * @return the quotient of the two vectors
@@ -93,9 +104,11 @@ public class Vector2D {
   }
 
   /**
-   * Calculate the length of a vector.
+   * Calculate the squared length of a vector.
+   * The squared magnitude of a vector is the sum
+   * of the squares of the x and y coordinates.
    *
-   * @return the length of the vector
+   * @return the squared length of the vector
    */
   public double lengthSq() {
     return x * x + y * y;
diff --git a/src/main/java/org/example/chaosgame/model/transformations/AffineTransform2D.java b/src/main/java/org/idatt2003/model/transformations/AffineTransform2D.java
similarity index 92%
rename from src/main/java/org/example/chaosgame/model/transformations/AffineTransform2D.java
rename to src/main/java/org/idatt2003/model/transformations/AffineTransform2D.java
index da0db148c4a0ca696002e500fa59eec2bb692800..b6643cf52463fb409c298c5638e1bcac8689a553 100644
--- a/src/main/java/org/example/chaosgame/model/transformations/AffineTransform2D.java
+++ b/src/main/java/org/idatt2003/model/transformations/AffineTransform2D.java
@@ -1,8 +1,8 @@
-package org.example.chaosgame.model.transformations;
+package org.idatt2003.model.transformations;
 
 import java.util.Objects;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
 
 
 /**
diff --git a/src/main/java/org/example/chaosgame/model/transformations/ExploreJulia.java b/src/main/java/org/idatt2003/model/transformations/ExploreJulia.java
similarity index 87%
rename from src/main/java/org/example/chaosgame/model/transformations/ExploreJulia.java
rename to src/main/java/org/idatt2003/model/transformations/ExploreJulia.java
index 4d84a62e2352e3f4079d95b9a97105ccf2c57818..373b540c4b5a4d94ab1fa0465cb885a42a390f86 100644
--- a/src/main/java/org/example/chaosgame/model/transformations/ExploreJulia.java
+++ b/src/main/java/org/idatt2003/model/transformations/ExploreJulia.java
@@ -1,7 +1,7 @@
-package org.example.chaosgame.model.transformations;
+package org.idatt2003.model.transformations;
 
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Vector2D;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Vector2D;
 
 /**
  * Class for the Julia transformation.
diff --git a/src/main/java/org/example/chaosgame/model/transformations/JuliaTransform.java b/src/main/java/org/idatt2003/model/transformations/JuliaTransform.java
similarity index 88%
rename from src/main/java/org/example/chaosgame/model/transformations/JuliaTransform.java
rename to src/main/java/org/idatt2003/model/transformations/JuliaTransform.java
index 98119ed4144a9a0758c78c3b20e5ec157244db11..c3f5eec1fe94090304ab5f61f5f1eb98555f6f67 100644
--- a/src/main/java/org/example/chaosgame/model/transformations/JuliaTransform.java
+++ b/src/main/java/org/idatt2003/model/transformations/JuliaTransform.java
@@ -1,8 +1,8 @@
-package org.example.chaosgame.model.transformations;
+package org.idatt2003.model.transformations;
 
 import java.util.Objects;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Vector2D;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Vector2D;
 
 /**
  * Class for the Julia transformation.
@@ -18,6 +18,7 @@ public class JuliaTransform implements Transform2D {
 
   /**
    * Constructor for JuliaTransform.
+   * Creates a new JuliaTransform object with the given complex number and sign.
    *
    * @param point the complex number c
    * @param sign the sign of the transformation
@@ -32,6 +33,7 @@ public class JuliaTransform implements Transform2D {
   }
 
   /**
+   * JuliaTransform implementation of the transform method in Transform2D.
    * Method to transform a 2D vector using the Julia transformation.
    * This formula describes the transformation:
    * <br>
diff --git a/src/main/java/org/idatt2003/model/transformations/Transform2D.java b/src/main/java/org/idatt2003/model/transformations/Transform2D.java
new file mode 100644
index 0000000000000000000000000000000000000000..592258d21dbb53631becc7929be281f0c721f3c9
--- /dev/null
+++ b/src/main/java/org/idatt2003/model/transformations/Transform2D.java
@@ -0,0 +1,11 @@
+package org.idatt2003.model.transformations;
+
+import org.idatt2003.model.linalg.Vector2D;
+
+/**
+ * Interface for 2D transformations.
+ * Implementing classes should transform a 2D point.
+ */
+public interface Transform2D {
+  Vector2D transform(Vector2D point);
+}
diff --git a/src/main/java/org/example/chaosgame/view/ChaosPage.java b/src/main/java/org/idatt2003/view/ChaosPage.java
similarity index 80%
rename from src/main/java/org/example/chaosgame/view/ChaosPage.java
rename to src/main/java/org/idatt2003/view/ChaosPage.java
index 5ada76ba90ee8975e1c18c1baf38e51e97a7e8a4..f9487e2e1951699a45031b4636adbb95da484d75 100644
--- a/src/main/java/org/example/chaosgame/view/ChaosPage.java
+++ b/src/main/java/org/idatt2003/view/ChaosPage.java
@@ -1,12 +1,12 @@
-package org.example.chaosgame.view;
+package org.idatt2003.view;
 
 import javafx.scene.canvas.GraphicsContext;
-import org.example.chaosgame.controller.ChaosGameController;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.Transform2D;
-import org.example.chaosgame.view.components.BottomBar;
-import org.example.chaosgame.view.components.SideBar;
-import org.example.chaosgame.view.components.TopBar;
+import org.idatt2003.controller.ChaosGameController;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.Transform2D;
+import org.idatt2003.view.components.BottomBar;
+import org.idatt2003.view.components.SideBar;
+import org.idatt2003.view.components.TopBar;
 
 /**
  * Class for the ChaosPage, extends GamePage.
diff --git a/src/main/java/org/example/chaosgame/view/ExplorePage.java b/src/main/java/org/idatt2003/view/ExplorePage.java
similarity index 82%
rename from src/main/java/org/example/chaosgame/view/ExplorePage.java
rename to src/main/java/org/idatt2003/view/ExplorePage.java
index 610dce2870d3932bea90c088c3a446789c10a1ca..b9058362dc63fa058403232a3eec684ebeacd976 100644
--- a/src/main/java/org/example/chaosgame/view/ExplorePage.java
+++ b/src/main/java/org/idatt2003/view/ExplorePage.java
@@ -1,11 +1,11 @@
-package org.example.chaosgame.view;
+package org.idatt2003.view;
 
-import org.example.chaosgame.controller.ExploreGameController;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.Transform2D;
-import org.example.chaosgame.view.components.BottomBar;
-import org.example.chaosgame.view.components.SideBar;
-import org.example.chaosgame.view.components.TopBar;
+import org.idatt2003.controller.ExploreGameController;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.Transform2D;
+import org.idatt2003.view.components.BottomBar;
+import org.idatt2003.view.components.SideBar;
+import org.idatt2003.view.components.TopBar;
 
 /**
  * Class for the ExplorePage, extends GamePage.
diff --git a/src/main/java/org/idatt2003/view/GamePage.java b/src/main/java/org/idatt2003/view/GamePage.java
new file mode 100644
index 0000000000000000000000000000000000000000..00c845e743826ff972b252e1cdeaa20969701036
--- /dev/null
+++ b/src/main/java/org/idatt2003/view/GamePage.java
@@ -0,0 +1,25 @@
+package org.idatt2003.view;
+
+import javafx.scene.canvas.Canvas;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.layout.BorderPane;
+
+/**
+ * Abstract class for the GamePage, extends BorderPane.
+ * The GamePage is used for displaying the game.
+ */
+public abstract class GamePage extends BorderPane {
+  private static final int CANVAS_WIDTH = 1250;
+  private static final int CANVAS_HEIGHT = 805;
+  protected final GraphicsContext gc;
+
+  /**
+   * Constructor for the GamePage.
+   * Initializes the canvas and makes a new GraphicsContext
+   * available for subclasses.
+   */
+  public GamePage() {
+    Canvas canvas = new Canvas(CANVAS_WIDTH, CANVAS_HEIGHT);
+    this.gc = canvas.getGraphicsContext2D();
+  }
+}
diff --git a/src/main/java/org/example/chaosgame/view/HomePage.java b/src/main/java/org/idatt2003/view/HomePage.java
similarity index 94%
rename from src/main/java/org/example/chaosgame/view/HomePage.java
rename to src/main/java/org/idatt2003/view/HomePage.java
index 052d6c7ff0ece941c4382dff63a30a0c398ae52f..083cab1bfe9d47099806282b58063c9b162bc364 100644
--- a/src/main/java/org/example/chaosgame/view/HomePage.java
+++ b/src/main/java/org/idatt2003/view/HomePage.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view;
+package org.idatt2003.view;
 
 import java.util.Objects;
 import javafx.geometry.Pos;
@@ -12,10 +12,10 @@ import javafx.scene.media.Media;
 import javafx.scene.media.MediaPlayer;
 import javafx.scene.media.MediaView;
 import javafx.scene.text.Text;
-import org.example.chaosgame.controller.HomeController;
-import org.example.chaosgame.controller.PageController;
-import org.example.chaosgame.view.components.ExitButton;
-import org.example.chaosgame.view.components.GameHeader;
+import org.idatt2003.controller.HomeController;
+import org.idatt2003.controller.PageController;
+import org.idatt2003.view.components.ExitButton;
+import org.idatt2003.view.components.GameHeader;
 
 /**
  * Class for the home page, extends StackPane.
diff --git a/src/main/java/org/example/chaosgame/view/components/AlertUtility.java b/src/main/java/org/idatt2003/view/components/AlertUtility.java
similarity index 91%
rename from src/main/java/org/example/chaosgame/view/components/AlertUtility.java
rename to src/main/java/org/idatt2003/view/components/AlertUtility.java
index f0b2af5dea9aba7efd9b49e42504a59126062813..2faab9031ec9aef836b38c4cd8d45e9334294686 100644
--- a/src/main/java/org/example/chaosgame/view/components/AlertUtility.java
+++ b/src/main/java/org/idatt2003/view/components/AlertUtility.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.control.Alert;
 
diff --git a/src/main/java/org/example/chaosgame/view/components/BaseSlider.java b/src/main/java/org/idatt2003/view/components/BaseSlider.java
similarity index 88%
rename from src/main/java/org/example/chaosgame/view/components/BaseSlider.java
rename to src/main/java/org/idatt2003/view/components/BaseSlider.java
index 6f21a499d228cdb4bf26a27b57e9fbde446fb943..7964c50c8bfb27ff7e128ffb7ad99eb05a3ce8d0 100644
--- a/src/main/java/org/example/chaosgame/view/components/BaseSlider.java
+++ b/src/main/java/org/idatt2003/view/components/BaseSlider.java
@@ -1,7 +1,7 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.control.Slider;
-import org.example.chaosgame.controller.interfaces.GameController;
+import org.idatt2003.controller.interfaces.GameController;
 
 
 /**
diff --git a/src/main/java/org/example/chaosgame/view/components/BottomBar.java b/src/main/java/org/idatt2003/view/components/BottomBar.java
similarity index 82%
rename from src/main/java/org/example/chaosgame/view/components/BottomBar.java
rename to src/main/java/org/idatt2003/view/components/BottomBar.java
index d0117d724f9b5fddba3930c8f23c6808ee85e8c6..1d3a222b18e2a4efc6ffd4856c7811b9eb0981c5 100644
--- a/src/main/java/org/example/chaosgame/view/components/BottomBar.java
+++ b/src/main/java/org/idatt2003/view/components/BottomBar.java
@@ -1,13 +1,13 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.geometry.Pos;
 import javafx.scene.control.Label;
 import javafx.scene.layout.HBox;
-import org.example.chaosgame.controller.interfaces.GameController;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.transformations.ExploreJulia;
-import org.example.chaosgame.model.transformations.JuliaTransform;
-import org.example.chaosgame.model.transformations.Transform2D;
+import org.idatt2003.controller.interfaces.GameController;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.transformations.ExploreJulia;
+import org.idatt2003.model.transformations.JuliaTransform;
+import org.idatt2003.model.transformations.Transform2D;
 
 
 /**
@@ -70,8 +70,10 @@ public class BottomBar extends HBox {
     sliderInfoVisibility(true);
     sliderRealPart.setValue(complex.getX());
     sliderImaginaryPart.setValue(complex.getY());
-    realPartLabel.setText("Real Part: " + (double) Math.round(complex.getX() * 100) / 100);
-    imaginaryPartLabel.setText("Imaginary Part: " + (double) Math.round(complex.getY() * 100) / 100);
+    realPartLabel.setText("Real Part: "
+            + (double) Math.round(complex.getX() * 100) / 100);
+    imaginaryPartLabel.setText("Imaginary Part: "
+            + (double) Math.round(complex.getY() * 100) / 100);
   }
 
   /**
diff --git a/src/main/java/org/example/chaosgame/view/components/ColorPickerComponent.java b/src/main/java/org/idatt2003/view/components/ColorPickerComponent.java
similarity index 87%
rename from src/main/java/org/example/chaosgame/view/components/ColorPickerComponent.java
rename to src/main/java/org/idatt2003/view/components/ColorPickerComponent.java
index 643fe4576a7d6385a76ca74c46f65a760337c6a4..c8f87896ce5396d7ac0ba452c57d7084128566b2 100644
--- a/src/main/java/org/example/chaosgame/view/components/ColorPickerComponent.java
+++ b/src/main/java/org/idatt2003/view/components/ColorPickerComponent.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import java.util.function.Consumer;
 import javafx.scene.control.ColorPicker;
@@ -18,6 +18,8 @@ public class ColorPickerComponent extends ColorPicker {
     this.getStyleClass().add("color-picker");
     this.setMaxWidth(180);
     this.setMinWidth(180);
+    this.setMinHeight(40);
+    this.setMaxHeight(40);
     this.setOnAction(event -> colorChangeHandler.accept(this.getValue()));
   }
 }
diff --git a/src/main/java/org/example/chaosgame/view/components/CreateAffinePane.java b/src/main/java/org/idatt2003/view/components/CreateAffinePane.java
similarity index 98%
rename from src/main/java/org/example/chaosgame/view/components/CreateAffinePane.java
rename to src/main/java/org/idatt2003/view/components/CreateAffinePane.java
index c8bdcdc9ab335c2ce0abfb8322b09a6134eec46b..9d097289e799f3910417375cb417ed3f169a44f7 100644
--- a/src/main/java/org/example/chaosgame/view/components/CreateAffinePane.java
+++ b/src/main/java/org/idatt2003/view/components/CreateAffinePane.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/org/example/chaosgame/view/components/CreateFractalDialog.java b/src/main/java/org/idatt2003/view/components/CreateFractalDialog.java
similarity index 97%
rename from src/main/java/org/example/chaosgame/view/components/CreateFractalDialog.java
rename to src/main/java/org/idatt2003/view/components/CreateFractalDialog.java
index 7ee80bf29e35cb1d486c24b56b7db6bb7a06a10d..c3d609e93dfb76cd09b1dfec3bd6522a92831265 100644
--- a/src/main/java/org/example/chaosgame/view/components/CreateFractalDialog.java
+++ b/src/main/java/org/idatt2003/view/components/CreateFractalDialog.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.geometry.Insets;
 import javafx.scene.control.ButtonBar;
diff --git a/src/main/java/org/example/chaosgame/view/components/CreateJuliaPane.java b/src/main/java/org/idatt2003/view/components/CreateJuliaPane.java
similarity index 95%
rename from src/main/java/org/example/chaosgame/view/components/CreateJuliaPane.java
rename to src/main/java/org/idatt2003/view/components/CreateJuliaPane.java
index ecbec347ece7e46b313405f9eb4e0b93810b2ebd..37335ade77a522014f5e4ebb177aff21b320d65b 100644
--- a/src/main/java/org/example/chaosgame/view/components/CreateJuliaPane.java
+++ b/src/main/java/org/idatt2003/view/components/CreateJuliaPane.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.control.TextField;
 import javafx.scene.layout.HBox;
diff --git a/src/main/java/org/example/chaosgame/view/components/ExitButton.java b/src/main/java/org/idatt2003/view/components/ExitButton.java
similarity index 82%
rename from src/main/java/org/example/chaosgame/view/components/ExitButton.java
rename to src/main/java/org/idatt2003/view/components/ExitButton.java
index da97319bd86de1965b4987ab43f12b108a357ae1..f2dff273bcb2642d7f8ffcd067adc76edda679c1 100644
--- a/src/main/java/org/example/chaosgame/view/components/ExitButton.java
+++ b/src/main/java/org/idatt2003/view/components/ExitButton.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.control.Button;
 
diff --git a/src/main/java/org/example/chaosgame/view/components/FractalSelectionBox.java b/src/main/java/org/idatt2003/view/components/FractalSelectionBox.java
similarity index 79%
rename from src/main/java/org/example/chaosgame/view/components/FractalSelectionBox.java
rename to src/main/java/org/idatt2003/view/components/FractalSelectionBox.java
index f4f8edc93d77d0b71b889d584d18113232bf6e70..827747031b9e52f0cafb6a2b29eddc253eaa0253 100644
--- a/src/main/java/org/example/chaosgame/view/components/FractalSelectionBox.java
+++ b/src/main/java/org/idatt2003/view/components/FractalSelectionBox.java
@@ -1,7 +1,7 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.control.ComboBox;
-import org.example.chaosgame.controller.ChaosGameController;
+import org.idatt2003.controller.ChaosGameController;
 
 /**
  * Class for the FractalSelectionBox, extends ComboBox.
@@ -17,7 +17,10 @@ public class FractalSelectionBox extends ComboBox<String> {
    * @param chaosGameController the controller for the chaos game
    */
   public FractalSelectionBox(ChaosGameController chaosGameController) {
-    this.setPrefWidth(180);
+    this.setMaxWidth(180);
+    this.setMinWidth(180);
+    this.setMinHeight(40);
+    this.setMaxHeight(40);
     this.setPromptText("Julia ");
     this.getItems().addAll("Sierpinski", "Barnsley", "Julia");
 
diff --git a/src/main/java/org/example/chaosgame/view/components/GameButton.java b/src/main/java/org/idatt2003/view/components/GameButton.java
similarity index 81%
rename from src/main/java/org/example/chaosgame/view/components/GameButton.java
rename to src/main/java/org/idatt2003/view/components/GameButton.java
index 5f16d81db046dbd8e00d7120428a7f57c96d4ace..cc75f522fbbbbd345eec72c7d988ed6576224cb6 100644
--- a/src/main/java/org/example/chaosgame/view/components/GameButton.java
+++ b/src/main/java/org/idatt2003/view/components/GameButton.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.control.Button;
 
@@ -16,5 +16,7 @@ public class GameButton extends Button {
     super(text);
     this.setMaxWidth(180);
     this.setMinWidth(180);
+    this.setMinHeight(40);
+    this.setMaxHeight(40);
   }
 }
diff --git a/src/main/java/org/example/chaosgame/view/components/GameHeader.java b/src/main/java/org/idatt2003/view/components/GameHeader.java
similarity index 89%
rename from src/main/java/org/example/chaosgame/view/components/GameHeader.java
rename to src/main/java/org/idatt2003/view/components/GameHeader.java
index 5de562b39bab0d07741a87f7c121a4ad1b0978a5..25b0589b3b1bbeedfdb4426120cd2c12fb919b04 100644
--- a/src/main/java/org/example/chaosgame/view/components/GameHeader.java
+++ b/src/main/java/org/idatt2003/view/components/GameHeader.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.text.Text;
 
diff --git a/src/main/java/org/example/chaosgame/view/components/HomeButton.java b/src/main/java/org/idatt2003/view/components/HomeButton.java
similarity index 93%
rename from src/main/java/org/example/chaosgame/view/components/HomeButton.java
rename to src/main/java/org/idatt2003/view/components/HomeButton.java
index 2bec4e24f94f2c4392b9d5fe79232bc013a3f7e7..674bb26042f2d86d4847f5ec2c1a6ccd1e7083e6 100644
--- a/src/main/java/org/example/chaosgame/view/components/HomeButton.java
+++ b/src/main/java/org/idatt2003/view/components/HomeButton.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import java.util.Objects;
 import javafx.scene.control.Button;
diff --git a/src/main/java/org/example/chaosgame/view/components/MinMaxDialog.java b/src/main/java/org/idatt2003/view/components/MinMaxDialog.java
similarity index 58%
rename from src/main/java/org/example/chaosgame/view/components/MinMaxDialog.java
rename to src/main/java/org/idatt2003/view/components/MinMaxDialog.java
index 3286a6b549c2d5c0a9515c11ae87e07c785e67d1..42ee1c603be47e7747cf61cd01460cdd0f6c9ec4 100644
--- a/src/main/java/org/example/chaosgame/view/components/MinMaxDialog.java
+++ b/src/main/java/org/idatt2003/view/components/MinMaxDialog.java
@@ -1,7 +1,6 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import java.util.List;
-
 import javafx.scene.control.ButtonBar;
 import javafx.scene.control.ButtonType;
 import javafx.scene.control.Dialog;
@@ -13,10 +12,10 @@ import javafx.scene.layout.GridPane;
  * The dialog has fields for the min and max x and y coordinates.
  */
 public class MinMaxDialog extends Dialog<List<String>> {
-  private final TextField minXField;
-  private final TextField minYField;
-  private final TextField maxXField;
-  private final TextField maxYField;
+  private final TextField xMinField;
+  private final TextField yMinField;
+  private final TextField xMaxField;
+  private final TextField yMaxField;
 
   /**
    * Constructor for the MinMaxDialog.
@@ -33,29 +32,29 @@ public class MinMaxDialog extends Dialog<List<String>> {
     grid.setHgap(10);
     grid.setVgap(10);
 
-    minXField = new TextField();
-    minXField.setPromptText("Min X");
-    minYField = new TextField();
-    minYField.setPromptText("Min Y");
+    xMinField = new TextField();
+    xMinField.setPromptText("Min X");
+    yMinField = new TextField();
+    yMinField.setPromptText("Min Y");
 
-    maxXField = new TextField();
-    maxXField.setPromptText("Max X");
-    maxYField = new TextField();
-    maxYField.setPromptText("Max Y");
+    xMaxField = new TextField();
+    xMaxField.setPromptText("Max X");
+    yMaxField = new TextField();
+    yMaxField.setPromptText("Max Y");
 
-    grid.add(minXField, 0, 0);
-    grid.add(minYField, 1, 0);
-    grid.add(maxXField, 0, 1);
-    grid.add(maxYField, 1, 1);
+    grid.add(xMinField, 0, 0);
+    grid.add(yMinField, 1, 0);
+    grid.add(xMaxField, 0, 1);
+    grid.add(yMaxField, 1, 1);
 
     getDialogPane().setContent(grid);
 
     setResultConverter(dialogButton -> {
       if (dialogButton == saveButtonType) {
-        String minX = minXField.getText();
-        String minY = minYField.getText();
-        String maxX = maxXField.getText();
-        String maxY = maxYField.getText();
+        String minX = xMinField.getText();
+        String minY = yMinField.getText();
+        String maxX = xMaxField.getText();
+        String maxY = yMaxField.getText();
         return List.of(minX, minY, maxX, maxY);
       }
       return null;
diff --git a/src/main/java/org/example/chaosgame/view/components/NumberOfStepsInput.java b/src/main/java/org/idatt2003/view/components/NumberOfStepsInput.java
similarity index 91%
rename from src/main/java/org/example/chaosgame/view/components/NumberOfStepsInput.java
rename to src/main/java/org/idatt2003/view/components/NumberOfStepsInput.java
index ee59938e76cb7a23b6a565220a5ee04d958c0103..19e052aabe2dbf35d7718cbfdc194c61253ad577 100644
--- a/src/main/java/org/example/chaosgame/view/components/NumberOfStepsInput.java
+++ b/src/main/java/org/idatt2003/view/components/NumberOfStepsInput.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.scene.control.TextField;
 
diff --git a/src/main/java/org/example/chaosgame/view/components/SideBar.java b/src/main/java/org/idatt2003/view/components/SideBar.java
similarity index 89%
rename from src/main/java/org/example/chaosgame/view/components/SideBar.java
rename to src/main/java/org/idatt2003/view/components/SideBar.java
index d866803f75142d8bffb6016ec700a8a849e7959a..3bf3c60d67a64961c23441fd87dcb915a4fce8dc 100644
--- a/src/main/java/org/example/chaosgame/view/components/SideBar.java
+++ b/src/main/java/org/idatt2003/view/components/SideBar.java
@@ -1,12 +1,12 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.control.Button;
 import javafx.scene.control.TextField;
 import javafx.scene.layout.VBox;
-import org.example.chaosgame.controller.ChaosGameController;
-import org.example.chaosgame.controller.ExploreGameController;
+import org.idatt2003.controller.ChaosGameController;
+import org.idatt2003.controller.ExploreGameController;
 
 /**
  * Class for the sidebar, extends VBox.
@@ -47,12 +47,12 @@ public class SideBar extends VBox {
             chaosGameController::updateFractalColor);
 
     this.getChildren().addAll(
-            fractalSelectionBox, colorPicker, coordinatesButton,
-            createOwnFractal, saveFractalButton, openFileButton,
+            fractalSelectionBox, colorPicker, createOwnFractal,
+            coordinatesButton, saveFractalButton, openFileButton,
             numberOfStepsInput, runGame, resetGame);
     this.setAlignment(Pos.CENTER_RIGHT);
 
-    VBox.setMargin(coordinatesButton, new Insets(30, 0, 0, 0));
+    VBox.setMargin(createOwnFractal, new Insets(30, 0, 0, 0));
     VBox.setMargin(numberOfStepsInput, new Insets(30, 0, 0, 0));
 
     this.getStyleClass().add("side-bar");
diff --git a/src/main/java/org/example/chaosgame/view/components/SliderImaginaryPart.java b/src/main/java/org/idatt2003/view/components/SliderImaginaryPart.java
similarity index 73%
rename from src/main/java/org/example/chaosgame/view/components/SliderImaginaryPart.java
rename to src/main/java/org/idatt2003/view/components/SliderImaginaryPart.java
index 14649a0f31469f9d64083859a2b53ec1d5b87518..5a557563c0640718d99600ca424fb7ad1e8375a6 100644
--- a/src/main/java/org/example/chaosgame/view/components/SliderImaginaryPart.java
+++ b/src/main/java/org/idatt2003/view/components/SliderImaginaryPart.java
@@ -1,6 +1,6 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
-import org.example.chaosgame.controller.interfaces.GameController;
+import org.idatt2003.controller.interfaces.GameController;
 
 /**
  * Class for the imaginary part slider, extends BaseSlider.
@@ -18,7 +18,9 @@ public class SliderImaginaryPart extends BaseSlider {
   }
 
   /**
-   * {@inheritDoc}
+   * Get the complex number type of the slider.
+   *
+   * @return the part type of the slider
    */
   @Override
   protected String getPartType() {
diff --git a/src/main/java/org/example/chaosgame/view/components/SliderRealPart.java b/src/main/java/org/idatt2003/view/components/SliderRealPart.java
similarity index 71%
rename from src/main/java/org/example/chaosgame/view/components/SliderRealPart.java
rename to src/main/java/org/idatt2003/view/components/SliderRealPart.java
index 48926964ef8a20808c1dc612775d2866df9feeb7..851e913cc41484adf740f60b2302f2fff3d1f02b 100644
--- a/src/main/java/org/example/chaosgame/view/components/SliderRealPart.java
+++ b/src/main/java/org/idatt2003/view/components/SliderRealPart.java
@@ -1,6 +1,6 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
-import org.example.chaosgame.controller.interfaces.GameController;
+import org.idatt2003.controller.interfaces.GameController;
 
 /**
  * Class for the real part slider, extends BaseSlider.
@@ -17,6 +17,11 @@ public class SliderRealPart extends BaseSlider {
     this.getStyleClass().add("top-bottom-padding");
   }
 
+  /**
+   * Get the complex number type of the slider.
+   *
+   * @return the part type of the slider
+   */
   @Override
   protected String getPartType() {
     return "real";
diff --git a/src/main/java/org/example/chaosgame/view/components/TopBar.java b/src/main/java/org/idatt2003/view/components/TopBar.java
similarity index 78%
rename from src/main/java/org/example/chaosgame/view/components/TopBar.java
rename to src/main/java/org/idatt2003/view/components/TopBar.java
index 90a397acbe8e35a9c228236fa941c7bd80153b9f..e6b5cd0665782d0bb5ba659372d1936ccaa7bbd6 100644
--- a/src/main/java/org/example/chaosgame/view/components/TopBar.java
+++ b/src/main/java/org/idatt2003/view/components/TopBar.java
@@ -1,12 +1,12 @@
-package org.example.chaosgame.view.components;
+package org.idatt2003.view.components;
 
 import javafx.geometry.Pos;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.layout.HBox;
-import org.example.chaosgame.controller.interfaces.GameController;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.Transform2D;
+import org.idatt2003.controller.interfaces.GameController;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.Transform2D;
 
 /**
  * Class for the top bar, extends HBox.
@@ -60,7 +60,10 @@ public class TopBar extends HBox {
    * @param max the max coordinates
    */
   public void updateTopBar(Vector2D min, Vector2D max) {
-    coordinatesLabel.setText("Coordinates: " + (double) Math.round(min.getX() * 100) / 100 + " , " + (double) Math.round(min.getY() * 100) / 100 +
-            " (min), " + (double) Math.round(max.getX() * 100) / 100 + ", " + (double) Math.round(max.getY() * 100) / 100 + " (max)");
+    coordinatesLabel.setText("Coordinates: "
+            + (double) Math.round(min.getX() * 100) / 100 + " , "
+            + (double) Math.round(min.getY() * 100) / 100 + " (min), "
+            + (double) Math.round(max.getX() * 100) / 100 + ", "
+            + (double) Math.round(max.getY() * 100) / 100 + " (max)");
   }
 }
diff --git a/src/main/resources/media/ChaosVideoFinal.mp4 b/src/main/resources/media/ChaosVideoFinal.mp4
index b2bb62c540422906e609e26a7ace544f3fc0af41..8dafc2098ec921f51e9c2587040c8f8813ea10c4 100644
Binary files a/src/main/resources/media/ChaosVideoFinal.mp4 and b/src/main/resources/media/ChaosVideoFinal.mp4 differ
diff --git a/src/test/java/org/example/chaosgame/.idea/.gitignore b/src/test/java/org/example/chaosgame/.idea/.gitignore
deleted file mode 100644
index 13566b81b018ad684f3a35fee301741b2734c8f4..0000000000000000000000000000000000000000
--- a/src/test/java/org/example/chaosgame/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/src/test/java/org/example/chaosgame/.idea/checkstyle-idea.xml b/src/test/java/org/example/chaosgame/.idea/checkstyle-idea.xml
deleted file mode 100644
index 3339f5f9b69cd39465df2570b84c4f8a1447fed1..0000000000000000000000000000000000000000
--- a/src/test/java/org/example/chaosgame/.idea/checkstyle-idea.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="CheckStyle-IDEA" serialisationVersion="2">
-    <checkstyleVersion>10.16.0</checkstyleVersion>
-    <scanScope>JavaOnly</scanScope>
-    <option name="thirdPartyClasspath" />
-    <option name="activeLocationIds" />
-    <option name="locations">
-      <list>
-        <ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
-        <ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
-      </list>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/src/test/java/org/example/chaosgame/.idea/misc.xml b/src/test/java/org/example/chaosgame/.idea/misc.xml
deleted file mode 100644
index 69ace3f6affaf674f40a55887f3d6f3564afd626..0000000000000000000000000000000000000000
--- a/src/test/java/org/example/chaosgame/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/out" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/src/test/java/org/example/chaosgame/.idea/modules.xml b/src/test/java/org/example/chaosgame/.idea/modules.xml
deleted file mode 100644
index 736e215e9a3892ce6caf68e1ce25b8c9dd87b2c6..0000000000000000000000000000000000000000
--- a/src/test/java/org/example/chaosgame/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/chaosgame.iml" filepath="$PROJECT_DIR$/chaosgame.iml" />
-    </modules>
-  </component>
-</project>
\ No newline at end of file
diff --git a/src/test/java/org/example/chaosgame/controller/HomeControllerTest.java b/src/test/java/org/example/chaosgame/controller/HomeControllerTest.java
deleted file mode 100644
index c32f31ad6d11ba9334513ff41893d28879e4a99a..0000000000000000000000000000000000000000
--- a/src/test/java/org/example/chaosgame/controller/HomeControllerTest.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.example.chaosgame.controller;
-
-import org.junit.jupiter.api.Test;
-
-class HomeControllerTest {
-
-  @Test
-  void getHomePage() {
-  }
-
-  @Test
-  void mouseEvent() {
-  }
-}
\ No newline at end of file
diff --git a/src/test/java/org/example/chaosgame/controller/ChaosGameControllerTest.java b/src/test/java/org/idatt2003/controller/ChaosGameControllerTest.java
similarity index 71%
rename from src/test/java/org/example/chaosgame/controller/ChaosGameControllerTest.java
rename to src/test/java/org/idatt2003/controller/ChaosGameControllerTest.java
index 1e16946f1d1a9978186686d4afb38f6e343cbe8e..d486fc6766213bf7f5a4aa1c066b53814ba887ad 100644
--- a/src/test/java/org/example/chaosgame/controller/ChaosGameControllerTest.java
+++ b/src/test/java/org/idatt2003/controller/ChaosGameControllerTest.java
@@ -1,7 +1,13 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import org.junit.jupiter.api.Test;
 
+/**
+ * Test class for the ChaosGameController class.
+ * Tried to implement Mockito to test the ChaosGameController class.
+ * But we could not because the controller requires JavaFX components.
+ * We have tested the ChaosGameController class manually.
+ */
 class ChaosGameControllerTest {
 
   @Test
diff --git a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameDescriptionFactoryTest.java b/src/test/java/org/idatt2003/controller/ChaosGameDescriptionFactoryTest.java
similarity index 83%
rename from src/test/java/org/example/chaosgame/model/chaos/ChaosGameDescriptionFactoryTest.java
rename to src/test/java/org/idatt2003/controller/ChaosGameDescriptionFactoryTest.java
index 00e0ad8b31c767e8df81fd56b14cb5b5f93fb962..b7853a51a07364192c7054c4df54a53066bb0be3 100644
--- a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameDescriptionFactoryTest.java
+++ b/src/test/java/org/idatt2003/controller/ChaosGameDescriptionFactoryTest.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.controller;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -6,17 +6,29 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.util.List;
-import org.example.chaosgame.controller.ChaosGameDescriptionFactory;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.example.chaosgame.model.transformations.JuliaTransform;
+import org.idatt2003.model.chaos.ChaosGameDescription;
+import org.idatt2003.model.chaos.ChaosGameType;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
+import org.idatt2003.model.transformations.JuliaTransform;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
+/**
+ * Test class for the ChaosGameDescriptionFactory class.
+ * Tests the get method in the ChaosGameDescriptionFactory class, and
+ * that the factory returns the correct ChaosGameDescription object.
+ *
+ * <p>For each method that creates a ChaosGameDescription object,
+ * we test that the object is not null,
+ * that the object is an instance of ChaosGameDescription,
+ * and that the object is equal to the expected object.
+ * After the first tests were created, we used Copilot to generate the rest of the tests.
+ */
 class ChaosGameDescriptionFactoryTest {
   private static ChaosGameDescription expectedJulia;
   private static ChaosGameDescription expectedSierpinski;
diff --git a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameFileHandlerTest.java b/src/test/java/org/idatt2003/controller/ChaosGameFileHandlerTest.java
similarity index 93%
rename from src/test/java/org/example/chaosgame/model/chaos/ChaosGameFileHandlerTest.java
rename to src/test/java/org/idatt2003/controller/ChaosGameFileHandlerTest.java
index 32c0fa2d95254b55ec7692efd67634e8735a3659..db942ef38f742c4a10e3b5841373e38e4cee1d7e 100644
--- a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameFileHandlerTest.java
+++ b/src/test/java/org/idatt2003/controller/ChaosGameFileHandlerTest.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.controller;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -10,22 +10,27 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.List;
-import org.example.chaosgame.controller.ChaosGameFileHandler;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.example.chaosgame.model.transformations.JuliaTransform;
-import org.example.chaosgame.model.transformations.Transform2D;
+
+import org.idatt2003.model.chaos.ChaosGameDescription;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
+import org.idatt2003.model.transformations.JuliaTransform;
+import org.idatt2003.model.transformations.Transform2D;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
-
-
-
-
+/**
+ * Test class for the ChaosGameFileHandler class.
+ * Tests the readFromFile and writeToFile methods.
+ * Tests the skipComments, selectTransformation, parseVector, parseAffine and parseJulia methods.
+ * GitHub Copilot helped with setting up test data and test cases.
+ * Especially in the testReadValidAffine and testReadValidJulia methods,
+ * as these are methods that handle much logic.
+ */
 class ChaosGameFileHandlerTest {
   private static ChaosGameFileHandler fileHandler;
   private static String validAffineContent;
diff --git a/src/test/java/org/example/chaosgame/controller/ExploreGameControllerTest.java b/src/test/java/org/idatt2003/controller/ExploreGameControllerTest.java
similarity index 69%
rename from src/test/java/org/example/chaosgame/controller/ExploreGameControllerTest.java
rename to src/test/java/org/idatt2003/controller/ExploreGameControllerTest.java
index 05f43e043ac30ae963730e3b8c98e4a8d67a78ea..a73d75b7112bac8d10ec8fbf64d956727391c77e 100644
--- a/src/test/java/org/example/chaosgame/controller/ExploreGameControllerTest.java
+++ b/src/test/java/org/idatt2003/controller/ExploreGameControllerTest.java
@@ -1,7 +1,13 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import org.junit.jupiter.api.Test;
 
+/**
+ * Test class for the ExploreGameController class.
+ * Tried to implement Mockito to test the ExploreGameController class.
+ * But we could not because the controller requires JavaFX components.
+ * We have tested the ExploreGameController class manually.
+ */
 class ExploreGameControllerTest {
 
   @Test
diff --git a/src/test/java/org/idatt2003/controller/HomeControllerTest.java b/src/test/java/org/idatt2003/controller/HomeControllerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c9e7b79b466c07e84b320fed560e1ab28e269be
--- /dev/null
+++ b/src/test/java/org/idatt2003/controller/HomeControllerTest.java
@@ -0,0 +1,18 @@
+package org.idatt2003.controller;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * Test class for the HomeController class.
+ * We have tested the HomeController class manually.
+ */
+class HomeControllerTest {
+
+  @Test
+  void getHomePage() {
+  }
+
+  @Test
+  void mouseEvent() {
+  }
+}
\ No newline at end of file
diff --git a/src/test/java/org/example/chaosgame/controller/PageControllerTest.java b/src/test/java/org/idatt2003/controller/PageControllerTest.java
similarity index 53%
rename from src/test/java/org/example/chaosgame/controller/PageControllerTest.java
rename to src/test/java/org/idatt2003/controller/PageControllerTest.java
index 7cc833bfb1dc27426e54df472030aa6002e7e3ed..effd2ae8e2fa17bfabe2b4566e6aadc1ee4b50cb 100644
--- a/src/test/java/org/example/chaosgame/controller/PageControllerTest.java
+++ b/src/test/java/org/idatt2003/controller/PageControllerTest.java
@@ -1,9 +1,11 @@
-package org.example.chaosgame.controller;
+package org.idatt2003.controller;
 
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.*;
-
+/**
+ * Test class for the PageController class.
+ * We have tested the PageController class manually.
+ */
 class PageControllerTest {
 
   @Test
diff --git a/src/test/java/org/example/chaosgame/model/chaos/ChaosCanvasTest.java b/src/test/java/org/idatt2003/model/chaos/ChaosCanvasTest.java
similarity index 96%
rename from src/test/java/org/example/chaosgame/model/chaos/ChaosCanvasTest.java
rename to src/test/java/org/idatt2003/model/chaos/ChaosCanvasTest.java
index a55ef4c5ce55787d116f5675911918a616002274..a9b76a0036adfeae15087dbb13a47e8299490e88 100644
--- a/src/test/java/org/example/chaosgame/model/chaos/ChaosCanvasTest.java
+++ b/src/test/java/org/idatt2003/model/chaos/ChaosCanvasTest.java
@@ -1,7 +1,7 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
diff --git a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameDescriptionTest.java b/src/test/java/org/idatt2003/model/chaos/ChaosGameDescriptionTest.java
similarity index 95%
rename from src/test/java/org/example/chaosgame/model/chaos/ChaosGameDescriptionTest.java
rename to src/test/java/org/idatt2003/model/chaos/ChaosGameDescriptionTest.java
index c85c23b3fcbc496ad9fb13f41cdba2b9932a7eab..d65f131ab266cffaa0317570045975c3aaa21e84 100644
--- a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameDescriptionTest.java
+++ b/src/test/java/org/idatt2003/model/chaos/ChaosGameDescriptionTest.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -8,10 +8,10 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.util.Arrays;
 import java.util.List;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.example.chaosgame.model.transformations.Transform2D;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
+import org.idatt2003.model.transformations.Transform2D;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
diff --git a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameTest.java b/src/test/java/org/idatt2003/model/chaos/ChaosGameTest.java
similarity index 94%
rename from src/test/java/org/example/chaosgame/model/chaos/ChaosGameTest.java
rename to src/test/java/org/idatt2003/model/chaos/ChaosGameTest.java
index 5d967a7f1718f0bdc92c934b2abb08212207de42..d913b6652377f255b9216ce57ebf3b8844df05db 100644
--- a/src/test/java/org/example/chaosgame/model/chaos/ChaosGameTest.java
+++ b/src/test/java/org/idatt2003/model/chaos/ChaosGameTest.java
@@ -1,4 +1,4 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -7,12 +7,12 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.List;
-import org.example.chaosgame.controller.interfaces.Observer;
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.example.chaosgame.model.transformations.JuliaTransform;
+import org.idatt2003.controller.interfaces.Observer;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.AffineTransform2D;
+import org.idatt2003.model.transformations.JuliaTransform;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
diff --git a/src/test/java/org/example/chaosgame/model/chaos/ExploreGameTest.java b/src/test/java/org/idatt2003/model/chaos/ExploreGameTest.java
similarity index 76%
rename from src/test/java/org/example/chaosgame/model/chaos/ExploreGameTest.java
rename to src/test/java/org/idatt2003/model/chaos/ExploreGameTest.java
index ab56bbba654425e121d2513449db4646e630adce..463bc6fc38fa1194b19ea563b6719579d2c0573b 100644
--- a/src/test/java/org/example/chaosgame/model/chaos/ExploreGameTest.java
+++ b/src/test/java/org/idatt2003/model/chaos/ExploreGameTest.java
@@ -1,10 +1,10 @@
-package org.example.chaosgame.model.chaos;
+package org.idatt2003.model.chaos;
 
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.ExploreJulia;
-import org.example.chaosgame.model.transformations.Transform2D;
-import org.example.chaosgame.controller.interfaces.Observer;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.transformations.ExploreJulia;
+import org.idatt2003.model.transformations.Transform2D;
+import org.idatt2003.controller.interfaces.Observer;
 import org.junit.jupiter.api.*;
 
 import java.util.ArrayList;
@@ -47,7 +47,7 @@ class ExploreGameTest {
     newTransforms.add(new ExploreJulia(new Complex(1, 1)));
     ChaosGameDescription newDescription = new ChaosGameDescription(newMinCoords, newMaxCoords, newTransforms);
 
-    exploreGame.setExploreGame(newDescription, 200, 200);
+    exploreGame.setExploreGame(newDescription, new ChaosCanvas(200, 200, newMinCoords, newMaxCoords));
 
     assertEquals(newDescription, exploreGame.getDescription());
     ChaosCanvas canvas = exploreGame.getCanvas();
@@ -70,19 +70,6 @@ class ExploreGameTest {
     assertEquals(description, exploreGame.getDescription());
   }
 
-  @Test
-  void testSetChaosCanvas() {
-    Vector2D newMinCoords = new Vector2D(-2, -2);
-    Vector2D newMaxCoords = new Vector2D(2, 2);
-    exploreGame.setChaosCanvas(newMinCoords, newMaxCoords, 300, 300);
-
-    ChaosCanvas canvas = exploreGame.getCanvas();
-    assertEquals(300, canvas.getWidth());
-    assertEquals(300, canvas.getHeight());
-    assertEquals(newMinCoords, canvas.getMinCoords());
-    assertEquals(newMaxCoords, canvas.getMaxCoords());
-  }
-
   @Test
   void testExploreFractals() {
 
diff --git a/src/test/java/org/example/chaosgame/model/linalg/ComplexTest.java b/src/test/java/org/idatt2003/model/linalg/ComplexTest.java
similarity index 91%
rename from src/test/java/org/example/chaosgame/model/linalg/ComplexTest.java
rename to src/test/java/org/idatt2003/model/linalg/ComplexTest.java
index 5cb701a87fba88d8556f81947b3abaa1fb582555..888884fa9758b5533a1728b95e0699a0a1fb86aa 100644
--- a/src/test/java/org/example/chaosgame/model/linalg/ComplexTest.java
+++ b/src/test/java/org/idatt2003/model/linalg/ComplexTest.java
@@ -1,6 +1,5 @@
-package org.example.chaosgame.model.linalg;
+package org.idatt2003.model.linalg;
 
-import org.example.chaosgame.model.linalg.Complex;
 import org.junit.jupiter.api.*;
 
 
diff --git a/src/test/java/org/example/chaosgame/model/linalg/Matrix2x2Test.java b/src/test/java/org/idatt2003/model/linalg/Matrix2x2Test.java
similarity index 90%
rename from src/test/java/org/example/chaosgame/model/linalg/Matrix2x2Test.java
rename to src/test/java/org/idatt2003/model/linalg/Matrix2x2Test.java
index bb210cb61a55047bdd3e67f1d9deb27190bd0a40..10b7ce93fb3b46f9e478d98fbc00e9fe373f9fb4 100644
--- a/src/test/java/org/example/chaosgame/model/linalg/Matrix2x2Test.java
+++ b/src/test/java/org/idatt2003/model/linalg/Matrix2x2Test.java
@@ -1,7 +1,5 @@
-package org.example.chaosgame.model.linalg;
+package org.idatt2003.model.linalg;
 
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
 import org.junit.jupiter.api.*;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/org/example/chaosgame/model/linalg/Vector2DTest.java b/src/test/java/org/idatt2003/model/linalg/Vector2DTest.java
similarity index 97%
rename from src/test/java/org/example/chaosgame/model/linalg/Vector2DTest.java
rename to src/test/java/org/idatt2003/model/linalg/Vector2DTest.java
index 3d432956948a6ea1985ddd1c3c3e02d6d9fd85a2..3511b0b90a9846b9ba6804aeb56a2432744fb07d 100644
--- a/src/test/java/org/example/chaosgame/model/linalg/Vector2DTest.java
+++ b/src/test/java/org/idatt2003/model/linalg/Vector2DTest.java
@@ -1,6 +1,5 @@
-package org.example.chaosgame.model.linalg;
+package org.idatt2003.model.linalg;
 
-import org.example.chaosgame.model.linalg.Vector2D;
 import org.junit.jupiter.api.*;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/org/example/chaosgame/model/transformations/AffineTransform2DTest.java b/src/test/java/org/idatt2003/model/transformations/AffineTransform2DTest.java
similarity index 63%
rename from src/test/java/org/example/chaosgame/model/transformations/AffineTransform2DTest.java
rename to src/test/java/org/idatt2003/model/transformations/AffineTransform2DTest.java
index 3ac169cfe2adc38c08c7f344a1d8fad92fb9248b..25c82034aefbe83cb3a0e782024238508b7100e5 100644
--- a/src/test/java/org/example/chaosgame/model/transformations/AffineTransform2DTest.java
+++ b/src/test/java/org/idatt2003/model/transformations/AffineTransform2DTest.java
@@ -1,11 +1,10 @@
-package org.example.chaosgame.model.transformations;
+package org.idatt2003.model.transformations;
 
-import org.example.chaosgame.model.linalg.Matrix2x2;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.AffineTransform2D;
-import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import static org.junit.jupiter.api.Assertions.*;
+import org.idatt2003.model.linalg.Matrix2x2;
+import org.idatt2003.model.linalg.Vector2D;
+import org.junit.jupiter.api.Test;
 
 class AffineTransform2DTest {
   private final Matrix2x2 matrix = new Matrix2x2(0.5, 1.0, 1.0, 0.5);
diff --git a/src/test/java/org/example/chaosgame/model/transformations/ExploreJuliaTest.java b/src/test/java/org/idatt2003/model/transformations/ExploreJuliaTest.java
similarity index 83%
rename from src/test/java/org/example/chaosgame/model/transformations/ExploreJuliaTest.java
rename to src/test/java/org/idatt2003/model/transformations/ExploreJuliaTest.java
index 55900355656ec5fd5f0d02927ff67eb57adb5392..59942c3a595d8ce01c22ba60a2783175b9f83c0e 100644
--- a/src/test/java/org/example/chaosgame/model/transformations/ExploreJuliaTest.java
+++ b/src/test/java/org/idatt2003/model/transformations/ExploreJuliaTest.java
@@ -1,7 +1,7 @@
-package org.example.chaosgame.model.transformations;
+package org.idatt2003.model.transformations;
 
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Vector2D;
+import org.idatt2003.model.linalg.Complex;
+import org.idatt2003.model.linalg.Vector2D;
 import org.junit.jupiter.api.*;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -24,7 +24,7 @@ class ExploreJuliaTest {
 
   @Test
   void testGetComplex() {
-    assertEquals(complexPoint, exploreJulia.getComplex());
+    Assertions.assertEquals(complexPoint, exploreJulia.getComplex());
   }
   @Nested
   @DisplayName("Test transforms")
diff --git a/src/test/java/org/example/chaosgame/model/transformations/JuliaTransformTest.java b/src/test/java/org/idatt2003/model/transformations/JuliaTransformTest.java
similarity index 70%
rename from src/test/java/org/example/chaosgame/model/transformations/JuliaTransformTest.java
rename to src/test/java/org/idatt2003/model/transformations/JuliaTransformTest.java
index ef90b6a8acdb156d34e38aa36f7cd84f88f5257b..1950a0aaa98f9c00a04341126c6ca3b7bc50bd03 100644
--- a/src/test/java/org/example/chaosgame/model/transformations/JuliaTransformTest.java
+++ b/src/test/java/org/idatt2003/model/transformations/JuliaTransformTest.java
@@ -1,8 +1,7 @@
-package org.example.chaosgame.model.transformations;
+package org.idatt2003.model.transformations;
 
-import org.example.chaosgame.model.linalg.Complex;
-import org.example.chaosgame.model.linalg.Vector2D;
-import org.example.chaosgame.model.transformations.JuliaTransform;
+import org.idatt2003.model.linalg.Vector2D;
+import org.idatt2003.model.linalg.Complex;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;