diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b63946d5b31084bbb7dda418ceb3d75eb686373
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/src/main/java/edu/ntnu/idatt2003/ChaosCanvas.java b/src/main/java/edu/ntnu/idatt2003/chaos/ChaosCanvas.java
similarity index 92%
rename from src/main/java/edu/ntnu/idatt2003/ChaosCanvas.java
rename to src/main/java/edu/ntnu/idatt2003/chaos/ChaosCanvas.java
index bf6902cfdb13bbeec2614385c4f6814917198b3a..46784b96b396302809b27eb0313ec865c33204cc 100644
--- a/src/main/java/edu/ntnu/idatt2003/ChaosCanvas.java
+++ b/src/main/java/edu/ntnu/idatt2003/chaos/ChaosCanvas.java
@@ -1,4 +1,8 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.chaos;
+
+import edu.ntnu.idatt2003.model.Matrix2x2;
+import edu.ntnu.idatt2003.model.Vector2D;
+import edu.ntnu.idatt2003.transformations.AffineTransform2D;
 
 /**
  * Represents a canvas for drawing points in 2D space.
diff --git a/src/main/java/edu/ntnu/idatt2003/ChaosGame.java b/src/main/java/edu/ntnu/idatt2003/chaos/ChaosGame.java
similarity index 91%
rename from src/main/java/edu/ntnu/idatt2003/ChaosGame.java
rename to src/main/java/edu/ntnu/idatt2003/chaos/ChaosGame.java
index cfcfee539e5730875afaaa1bb4c9a9e7a9d44ddc..d86cff0f3cd9099b8a60f331fc8e7ab6cee14db1 100644
--- a/src/main/java/edu/ntnu/idatt2003/ChaosGame.java
+++ b/src/main/java/edu/ntnu/idatt2003/chaos/ChaosGame.java
@@ -1,4 +1,7 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.chaos;
+
+import edu.ntnu.idatt2003.model.Vector2D;
+import edu.ntnu.idatt2003.transformations.Transform2D;
 
 import java.util.Random;
 
diff --git a/src/main/java/edu/ntnu/idatt2003/ChaosGameDescription.java b/src/main/java/edu/ntnu/idatt2003/chaos/ChaosGameDescription.java
similarity index 91%
rename from src/main/java/edu/ntnu/idatt2003/ChaosGameDescription.java
rename to src/main/java/edu/ntnu/idatt2003/chaos/ChaosGameDescription.java
index 517953a0e7a434a2fc60ce516453d481bec921a2..c6214019b2d34af5f628e4a9504a08403368f44e 100644
--- a/src/main/java/edu/ntnu/idatt2003/ChaosGameDescription.java
+++ b/src/main/java/edu/ntnu/idatt2003/chaos/ChaosGameDescription.java
@@ -1,4 +1,7 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.chaos;
+
+import edu.ntnu.idatt2003.model.Vector2D;
+import edu.ntnu.idatt2003.transformations.Transform2D;
 
 import java.util.List;
 
diff --git a/src/main/java/edu/ntnu/idatt2003/Complex.java b/src/main/java/edu/ntnu/idatt2003/model/Complex.java
similarity index 98%
rename from src/main/java/edu/ntnu/idatt2003/Complex.java
rename to src/main/java/edu/ntnu/idatt2003/model/Complex.java
index 6b74dba09cb13004fff4d94cfafc17432e5a0e1f..053097f3f5275c6a5a984420722f44cba3fac8fe 100644
--- a/src/main/java/edu/ntnu/idatt2003/Complex.java
+++ b/src/main/java/edu/ntnu/idatt2003/model/Complex.java
@@ -1,4 +1,4 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.model;
 
 /**
  * Represents a complex number in 2D space.
diff --git a/src/main/java/edu/ntnu/idatt2003/Matrix2x2.java b/src/main/java/edu/ntnu/idatt2003/model/Matrix2x2.java
similarity index 96%
rename from src/main/java/edu/ntnu/idatt2003/Matrix2x2.java
rename to src/main/java/edu/ntnu/idatt2003/model/Matrix2x2.java
index 72b86994cddd45ede8fba04ec42280a241698f58..134e5b20cd650be93d50955cb439281d0eadb56d 100644
--- a/src/main/java/edu/ntnu/idatt2003/Matrix2x2.java
+++ b/src/main/java/edu/ntnu/idatt2003/model/Matrix2x2.java
@@ -1,4 +1,4 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.model;
 
 /**
  * Represents a 2x2 matrix.
diff --git a/src/main/java/edu/ntnu/idatt2003/Vector2D.java b/src/main/java/edu/ntnu/idatt2003/model/Vector2D.java
similarity index 97%
rename from src/main/java/edu/ntnu/idatt2003/Vector2D.java
rename to src/main/java/edu/ntnu/idatt2003/model/Vector2D.java
index c153fbb3c6b4ee325ef042b44124ed5b08ab8bb0..74f8cc0f8ac5bcd3837acd07a06560b6793e4cd6 100644
--- a/src/main/java/edu/ntnu/idatt2003/Vector2D.java
+++ b/src/main/java/edu/ntnu/idatt2003/model/Vector2D.java
@@ -1,4 +1,4 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.model;
 /**
  * Represents a 2D vector.
  */
diff --git a/src/main/java/edu/ntnu/idatt2003/AffineTransform2D.java b/src/main/java/edu/ntnu/idatt2003/transformations/AffineTransform2D.java
similarity index 85%
rename from src/main/java/edu/ntnu/idatt2003/AffineTransform2D.java
rename to src/main/java/edu/ntnu/idatt2003/transformations/AffineTransform2D.java
index 6999d926623f1ee31aeed1071fe4cd531833a5b4..a2a9a9aa02fa8f7d659c0fd0429b86fe010f330e 100644
--- a/src/main/java/edu/ntnu/idatt2003/AffineTransform2D.java
+++ b/src/main/java/edu/ntnu/idatt2003/transformations/AffineTransform2D.java
@@ -1,4 +1,7 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.transformations;
+
+import edu.ntnu.idatt2003.model.Matrix2x2;
+import edu.ntnu.idatt2003.model.Vector2D;
 
 /**
  * Represents an affine transformation in 2D space.
diff --git a/src/main/java/edu/ntnu/idatt2003/JuliaTransform.java b/src/main/java/edu/ntnu/idatt2003/transformations/JuliaTransform.java
similarity index 88%
rename from src/main/java/edu/ntnu/idatt2003/JuliaTransform.java
rename to src/main/java/edu/ntnu/idatt2003/transformations/JuliaTransform.java
index f975b2ab2d9a895ad8d84043493966d74c23d823..c84ae32c5d869bd9e8fefffcb213d1596fc7a372 100644
--- a/src/main/java/edu/ntnu/idatt2003/JuliaTransform.java
+++ b/src/main/java/edu/ntnu/idatt2003/transformations/JuliaTransform.java
@@ -1,4 +1,7 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.transformations;
+
+import edu.ntnu.idatt2003.model.Complex;
+import edu.ntnu.idatt2003.model.Vector2D;
 
 /**
  * Represents a Julia transformation in 2D space.
diff --git a/src/main/java/edu/ntnu/idatt2003/Transform2D.java b/src/main/java/edu/ntnu/idatt2003/transformations/Transform2D.java
similarity index 57%
rename from src/main/java/edu/ntnu/idatt2003/Transform2D.java
rename to src/main/java/edu/ntnu/idatt2003/transformations/Transform2D.java
index 82be164e059c26f7f3d51833b2ec03d9fa929874..6e1210e860e54014080fb029e43634a32be3ee9c 100644
--- a/src/main/java/edu/ntnu/idatt2003/Transform2D.java
+++ b/src/main/java/edu/ntnu/idatt2003/transformations/Transform2D.java
@@ -1,4 +1,6 @@
-package edu.ntnu.idatt2003;
+package edu.ntnu.idatt2003.transformations;
+
+import edu.ntnu.idatt2003.model.Vector2D;
 
 /**
  * Represents a 2D transformation.
diff --git a/src/test/java/edu/ntnu/idatt2003/ComplexTest.java b/src/test/java/edu/ntnu/idatt2003/ComplexTest.java
index e64ea5bb380932f04fbaec4a3deef784ba13667d..2245abf81af33768a1bb71d52128c0b4b2dd3617 100644
--- a/src/test/java/edu/ntnu/idatt2003/ComplexTest.java
+++ b/src/test/java/edu/ntnu/idatt2003/ComplexTest.java
@@ -1,5 +1,7 @@
 package edu.ntnu.idatt2003;
 
+import edu.ntnu.idatt2003.model.Complex;
+import edu.ntnu.idatt2003.model.Vector2D;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
diff --git a/src/test/java/edu/ntnu/idatt2003/JuliaTransformTest.java b/src/test/java/edu/ntnu/idatt2003/JuliaTransformTest.java
index f02255532295a0fcf4f758927c37ac98e840a285..5999a2af716b4bb80b891407a3c15cff4fd452bb 100644
--- a/src/test/java/edu/ntnu/idatt2003/JuliaTransformTest.java
+++ b/src/test/java/edu/ntnu/idatt2003/JuliaTransformTest.java
@@ -2,6 +2,9 @@ package edu.ntnu.idatt2003;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import edu.ntnu.idatt2003.model.Complex;
+import edu.ntnu.idatt2003.model.Vector2D;
+import edu.ntnu.idatt2003.transformations.JuliaTransform;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;