diff --git a/src/main/java/org/example/chaosgame/controller/ChaosGameController.java b/src/main/java/org/example/chaosgame/controller/ChaosGameController.java
index 3039c17e017c4f131c117c1670661cb8a10d3e36..568a6048358db757a8b1bbfc35bd0f23d0dff2b8 100644
--- a/src/main/java/org/example/chaosgame/controller/ChaosGameController.java
+++ b/src/main/java/org/example/chaosgame/controller/ChaosGameController.java
@@ -1,20 +1,32 @@
 package org.example.chaosgame.controller;
 
 import javafx.scene.Node;
-import javafx.scene.control.TextField;
+import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
 import javafx.scene.paint.Color;
 import javafx.stage.FileChooser;
+import javafx.util.Pair;
 import org.example.chaosgame.model.chaos.*;
 import org.example.chaosgame.controller.observer.GameObserver;
 import org.example.chaosgame.controller.observer.PageObserver;
 import org.example.chaosgame.controller.observer.PageSubject;
+import org.example.chaosgame.model.linalg.Complex;
+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.CreateAffineDialog;
+import org.example.chaosgame.view.components.CreateJuliaDialog;
+import org.example.chaosgame.view.components.DialogUtils;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 
 public class ChaosGameController implements GameObserver, PageSubject {
   private final ChaosGame chaosGame;
@@ -36,16 +48,15 @@ public class ChaosGameController implements GameObserver, PageSubject {
     return chaosPage;
   }
 
-  private void updateChaosGame(ChaosGameDescription description){
+  private void updateChaosGame(ChaosGameDescription description) {
     chaosGame.setChaosGameDescription(description);
-    chaosGame.setChaosCanvas(description.getMinCoords(), description.getMaxCoords());
   }
 
-  public void gameSelection(String selectedGame){
+  public void gameSelection(String selectedGame) {
     updateChaosGame(ChaosGameDescriptionFactory.get(ChaosGameType.valueOf(selectedGame)));
   }
 
-  public void runStepsValidation(TextField stepsField){
+  public void runStepsValidation(TextField stepsField) {
     String input = stepsField.getText();
     try {
       int steps = Integer.parseInt(input);
@@ -57,11 +68,12 @@ public class ChaosGameController implements GameObserver, PageSubject {
     } catch (NumberFormatException ex) {
       stepsField.clear();
       stepsField.getStyleClass().add("text-field-invalid");
-      stepsField.setPromptText("Write a number between 1 - 10 000 000.");
+      DialogUtils.showErrorDialog("Invalid input", "Please enter a number between 1 - 10 000 000.");
+      //stepsField.setPromptText("Write a number between 1 - 10 000 000.");
     }
   }
 
-  public void openFromFile(){
+  public void openFromFile() {
     FileChooser fileChooser = new FileChooser();
     fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt"));
     File selectedFile = fileChooser.showOpenDialog(null);
@@ -69,19 +81,101 @@ public class ChaosGameController implements GameObserver, PageSubject {
     if (selectedFile != null) {
       try {
         ChaosGameFileHandler fileHandler = new ChaosGameFileHandler();
-        ChaosGameDescription description = fileHandler.readFromFile(selectedFile.getAbsolutePath());
-        updateChaosGame(description);
-      } catch (IOException ex) {
-        ex.printStackTrace();
+        chaosGame.setChaosGameDescription(fileHandler.readFromFile(selectedFile.getAbsolutePath()));
+      } catch (NumberFormatException ex) {
+        DialogUtils.showErrorDialog("Error", "Invalid input in the file. Try another file.");
+      } catch (IOException e) {
+        DialogUtils.showErrorDialog("Error", "Could not read the file. Try another file.");
       }
     }
-  }
+}
 
-  public void updateFractalColor(Color color){
+  public void updateFractalColor(Color color) {
     chaosPage.setFractalColor(color);
     chaosPage.updateCanvas(chaosGame.getCanvas());
   }
 
+  public void createOwnJuliaFractal() {
+    CreateJuliaDialog dialog = new CreateJuliaDialog();
+    Optional<Pair<String, String>> result = dialog.showAndWait();
+    String errorTitle = "Invalid input";
+    String errorMessage = "Please enter a double between -1 and 1. No letters are allowed.";
+
+    if (result.isPresent()) {
+      Pair<String, String> userInput = result.get();
+      try {
+        double real = Double.parseDouble(userInput.getKey());
+        double imaginary = Double.parseDouble(userInput.getValue());
+
+        if (real < -1 || real > 1 || imaginary < -1 || imaginary > 1) {
+          DialogUtils.showErrorDialog(errorTitle, errorMessage);
+        } else {
+          chaosGame.setChaosGameDescription(new ChaosGameDescription(
+                  new Vector2D(-1.6, -1),
+                  new Vector2D(1.6, 1.0),
+                  List.of(new JuliaTransform(new Complex(real, imaginary), 1))));
+        }
+      } catch (NumberFormatException ex) {
+        DialogUtils.showErrorDialog(errorTitle, errorMessage);
+      }
+    }
+  }
+
+  public void createOwnAffineFractal() {
+    CreateAffineDialog dialog = new CreateAffineDialog();
+    Optional<List<AffineTransform2D>> result = dialog.showAndWait();
+    String errorTitle = "Invalid input";
+    String errorMessage = "Please enter a valid number.";
+
+    if (result.isPresent()) {
+      List<AffineTransform2D> transformations = result.get();
+      List<Transform2D> transforms = new ArrayList<>(transformations);
+      chaosGame.setChaosGameDescription(new ChaosGameDescription(
+              new Vector2D(0, 0),
+              new Vector2D(1.0, 1.0),
+              transforms));
+    } else {
+      DialogUtils.showErrorDialog(errorTitle, errorMessage);
+    }
+  }
+
+  public void updateJuliaImValue(double reValue, double imValue) {
+
+    chaosGame.setChaosGameDescription(new ChaosGameDescription(
+            new Vector2D(-1.6, -1),
+            new Vector2D(1.6, 1.0),
+            List.of(new JuliaTransform(new Complex(reValue, imValue), 1))));
+    chaosGame.runSteps(100000);
+  }
+
+  public void updateJuliaReValue(double reValue, double imValue) {
+    chaosGame.setChaosGameDescription(new ChaosGameDescription(
+            new Vector2D(-1.6, -1),
+            new Vector2D(1.6, 1.0),
+            List.of(new JuliaTransform(new Complex(reValue, imValue), 1))));
+    chaosGame.runSteps(100000);
+  }
+
+  public boolean isJuliaShowing() {
+    return chaosGame.getDescription().getTransforms().getFirst() instanceof JuliaTransform;
+  }
+
+  public void saveFractal() {
+    FileChooser fileChooser = new FileChooser();
+    fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt"));
+    File selectedFile = fileChooser.showSaveDialog(null);
+
+    if (selectedFile != null) {
+      try {
+        ChaosGameFileHandler fileHandler = new ChaosGameFileHandler();
+        ChaosGameDescription description = chaosGame.getDescription();
+        fileHandler.writeToFile(description, selectedFile.getAbsolutePath());
+      } catch (IOException ex) {
+        DialogUtils.showErrorDialog("Error", "Could not save file. Try again.");
+      }
+    }
+  }
+
   public void homeButtonClicked() {
     notifyObservers(chaosPage);
   }
diff --git a/src/main/java/org/example/chaosgame/model/chaos/ChaosGame.java b/src/main/java/org/example/chaosgame/model/chaos/ChaosGame.java
index 8a7a7c8a665445086404dbac220c279487cb8561..082e4533806c55a98ac44f470ed241874d30c9fe 100644
--- a/src/main/java/org/example/chaosgame/model/chaos/ChaosGame.java
+++ b/src/main/java/org/example/chaosgame/model/chaos/ChaosGame.java
@@ -21,7 +21,7 @@ import org.example.chaosgame.model.linalg.Vector2D;
 public class ChaosGame implements GameSubject {
   private final ChaosCanvas canvas;
   private ChaosGameDescription description;
-  private Vector2D currentPoint; //endret her
+  private Vector2D currentPoint;
   private final Random random = new Random();
   private final List<GameObserver> gameObservers;
 
@@ -46,6 +46,10 @@ public class ChaosGame implements GameSubject {
     return canvas;
   }
 
+  public ChaosGameDescription getDescription() {
+    return description;
+  }
+
   /**
    * Method for running the chaos game. Randomly selects a transformation
    * from the description and applies it to the current point.
@@ -99,6 +103,7 @@ public class ChaosGame implements GameSubject {
   public void setChaosGameDescription(ChaosGameDescription description) {
     this.description = description;
     canvas.clearCanvas();
+    setChaosCanvas(description.getMinCoords(), description.getMaxCoords());
     notifyObservers();
   }
 
diff --git a/src/main/java/org/example/chaosgame/view/ChaosPage.java b/src/main/java/org/example/chaosgame/view/ChaosPage.java
index d3344c8bf7304c3c9158e8dfa63ed004a734652d..f46c1c1789439263b2bc6b71f33d913325528194 100644
--- a/src/main/java/org/example/chaosgame/view/ChaosPage.java
+++ b/src/main/java/org/example/chaosgame/view/ChaosPage.java
@@ -5,18 +5,16 @@ import javafx.geometry.Pos;
 import javafx.scene.control.*;
 import javafx.scene.layout.StackPane;
 import javafx.scene.layout.VBox;
+import javafx.scene.text.Text;
 import org.example.chaosgame.controller.ChaosGameController;
 import org.example.chaosgame.model.chaos.*;
 import org.example.chaosgame.view.components.*;
 
 public class ChaosPage extends GamePage {
-  private final VBox sidebar;
-  private final Button homeButton;
-
   public ChaosPage(ChaosGameController chaosGameController) {
     super();
-    this.sidebar = new SideBar(chaosGameController);
-    this.homeButton = createHomeButton(event -> chaosGameController.homeButtonClicked());
+    VBox sidebar = new SideBar(chaosGameController);
+    Button homeButton = createHomeButton(event -> chaosGameController.homeButtonClicked());
     this.getChildren().addAll(gc.getCanvas(), sidebar, homeButton);
   }
 }
\ No newline at end of file
diff --git a/src/main/java/org/example/chaosgame/view/HomePage.java b/src/main/java/org/example/chaosgame/view/HomePage.java
index 5f631bdabaddb6694937746b5f7fb4433f374a23..708ad41d6718c83e769e8e80bedcc51a5927457f 100644
--- a/src/main/java/org/example/chaosgame/view/HomePage.java
+++ b/src/main/java/org/example/chaosgame/view/HomePage.java
@@ -20,8 +20,6 @@ import org.example.chaosgame.controller.PageController;
 import org.example.chaosgame.model.chaos.ChaosGameDescription;
 import org.example.chaosgame.model.chaos.ChaosGameFileHandler;
 import org.example.chaosgame.view.components.ChooseGameButton;
-import org.example.chaosgame.view.components.ChooseGameButton;
-import org.example.chaosgame.view.components.GameButton;
 import org.example.chaosgame.view.components.GameHeader;
 import javafx.scene.media.Media;
 
diff --git a/src/main/java/org/example/chaosgame/view/MenuView.java b/src/main/java/org/example/chaosgame/view/MenuView.java
deleted file mode 100644
index 7f2541a2f378118eba57fc036bda66e5c0a22503..0000000000000000000000000000000000000000
--- a/src/main/java/org/example/chaosgame/view/MenuView.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.example.chaosgame.view;
-
-import javafx.geometry.Insets;
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.effect.ColorAdjust;
-import javafx.scene.input.MouseEvent;
-import javafx.scene.layout.HBox;
-
-public class MenuView {
-  private final HBox menuBar = new HBox();;
-  private final Button chaosButton = new Button("Chaos Game");
-  private final Button exploreButton = new Button("Explore Game");
-
-
-  public MenuView() {
-    chaosButton.setPadding(new Insets(10, 20, 10, 20));
-    menuBar.setAlignment(Pos.CENTER_LEFT);
-
-    menuBar.getChildren().addAll(chaosButton, exploreButton);
-    menuBar.setPrefHeight(60);
-    menuBar.setSpacing(10);
-    menuBar.setPadding(new Insets(10));
-  }
-
-  public HBox getMenuBar() {
-    return menuBar;
-  }
-  public Button getChaosButton() {
-    return chaosButton;
-  }
-  public Button getExploreButton() {
-    return exploreButton;
-  }
-
-}
diff --git a/src/main/java/org/example/chaosgame/view/components/ColorPickerComponent.java b/src/main/java/org/example/chaosgame/view/components/ColorPickerComponent.java
index b11d7e05001f85bd94e8b763c3623a4982d32e0e..2ba9780b4e05a78a088cd7d7036a6118877d1903 100644
--- a/src/main/java/org/example/chaosgame/view/components/ColorPickerComponent.java
+++ b/src/main/java/org/example/chaosgame/view/components/ColorPickerComponent.java
@@ -9,8 +9,8 @@ public class ColorPickerComponent extends ColorPicker {
   public ColorPickerComponent(Consumer<Color> colorChangeHandler) {
     super();
     this.getStyleClass().add("color-picker");
-    this.setMaxWidth(210);
-    this.setMinWidth(210);
+    this.setMaxWidth(200);
+    this.setMinWidth(200);
     this.setOnAction(event -> colorChangeHandler.accept(this.getValue() ));
   }
 }
diff --git a/src/main/java/org/example/chaosgame/view/components/CreateAffineDialog.java b/src/main/java/org/example/chaosgame/view/components/CreateAffineDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..a6d8c4598d8e6e2b441d4e044b041ee1a9c1de2b
--- /dev/null
+++ b/src/main/java/org/example/chaosgame/view/components/CreateAffineDialog.java
@@ -0,0 +1,57 @@
+package org.example.chaosgame.view.components;
+
+import javafx.scene.control.*;
+import javafx.scene.layout.GridPane;
+import org.example.chaosgame.model.linalg.Matrix2x2;
+import org.example.chaosgame.model.linalg.Vector2D;
+import org.example.chaosgame.model.transformations.AffineTransform2D;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class CreateAffineDialog extends Dialog<List<AffineTransform2D>> {
+  public CreateAffineDialog() {
+    this.setTitle("Create Affine Transformations");
+    this.setHeaderText("Enter the values for the affine transformation matrices");
+
+    ButtonType createButtonType = new ButtonType("Create", ButtonBar.ButtonData.OK_DONE);
+    this.getDialogPane().getButtonTypes().addAll(createButtonType, ButtonType.CANCEL);
+
+    GridPane content = new GridPane();
+    List<TextField> fields = new ArrayList<>();
+
+    for (int i = 0; i < 3; i++) {
+      for (int j = 0; j < 6; j++) {
+        TextField field = new TextField();
+        field.setPromptText("Value " + (j + 1));
+        fields.add(field);
+        content.add(field, j, i);
+      }
+    }
+
+    this.getDialogPane().setContent(content);
+
+    this.setResultConverter(dialogButton -> {
+      if (dialogButton == createButtonType) {
+        try {
+          List<AffineTransform2D> transformations = new ArrayList<>();
+          for (int i = 0; i < 3; i++) {
+            double a = Double.parseDouble(fields.get(i * 6).getText());
+            double b = Double.parseDouble(fields.get(i * 6 + 1).getText());
+            double c = Double.parseDouble(fields.get(i * 6 + 2).getText());
+            double d = Double.parseDouble(fields.get(i * 6 + 3).getText());
+            double x = Double.parseDouble(fields.get(i * 6 + 4).getText());
+            double y = Double.parseDouble(fields.get(i * 6 + 5).getText());
+
+            transformations.add(new AffineTransform2D(new Matrix2x2(a, b, c, d), new Vector2D(x, y)));
+          }
+          return transformations;
+        } catch (NumberFormatException ex) {
+          return null;
+        }
+      }
+      return null;
+    });
+  }
+}
diff --git a/src/main/java/org/example/chaosgame/view/components/CreateJuliaDialog.java b/src/main/java/org/example/chaosgame/view/components/CreateJuliaDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..5aefcd4dbde693e725af6d3df1b012fe638bed92
--- /dev/null
+++ b/src/main/java/org/example/chaosgame/view/components/CreateJuliaDialog.java
@@ -0,0 +1,31 @@
+package org.example.chaosgame.view.components;
+
+import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
+import javafx.util.Pair;
+
+public class CreateJuliaDialog extends Dialog<Pair<String, String>> {
+  public CreateJuliaDialog() {
+    this.setTitle("Create Julia fractal");
+    this.setHeaderText("Enter the real and imaginary part of the constant c.");
+
+    ButtonType createButtonType = new ButtonType("Create", ButtonBar.ButtonData.OK_DONE);
+    this.getDialogPane().getButtonTypes().addAll(createButtonType, ButtonType.CANCEL);
+
+    HBox content = new HBox();
+    TextField realPart = new TextField();
+    realPart.setPromptText("Real part");
+    TextField imaginaryPart = new TextField();
+    imaginaryPart.setPromptText("Imaginary part");
+
+    content.getChildren().addAll(realPart, imaginaryPart);
+    this.getDialogPane().setContent(content);
+
+    this.setResultConverter(dialogButton -> {
+      if (dialogButton == createButtonType) {
+        return new Pair<>(realPart.getText(), imaginaryPart.getText());
+      }
+      return null;
+    });
+  }
+}
diff --git a/src/main/java/org/example/chaosgame/view/components/DialogUtils.java b/src/main/java/org/example/chaosgame/view/components/DialogUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac51d0b81e13af21214db2b994cc5a18232b2cf9
--- /dev/null
+++ b/src/main/java/org/example/chaosgame/view/components/DialogUtils.java
@@ -0,0 +1,13 @@
+package org.example.chaosgame.view.components;
+
+import javafx.scene.control.Alert;
+
+public class DialogUtils {
+  public static void showErrorDialog(String title, String message){
+    Alert alert = new Alert(Alert.AlertType.ERROR);
+    alert.setTitle(title);
+    alert.setHeaderText(null);
+    alert.setContentText(message);
+    alert.showAndWait();
+  }
+}
diff --git a/src/main/java/org/example/chaosgame/view/components/DoubleSlider.java b/src/main/java/org/example/chaosgame/view/components/DoubleSlider.java
new file mode 100644
index 0000000000000000000000000000000000000000..51498ff15a69794f848270ec5f48a2b6db5c4d3c
--- /dev/null
+++ b/src/main/java/org/example/chaosgame/view/components/DoubleSlider.java
@@ -0,0 +1,19 @@
+package org.example.chaosgame.view.components;
+
+import javafx.scene.control.Slider;
+import javafx.scene.layout.HBox;
+import org.example.chaosgame.controller.ChaosGameController;
+
+public class DoubleSlider extends Slider {
+  public DoubleSlider(ChaosGameController chaosGameController) {
+    //min value -1 and max is 1
+    super();
+    this.setMin(-1);
+    this.setMax(1);
+    this.setValue(0);
+    this.setShowTickLabels(true);
+    this.setShowTickMarks(true);
+    this.setMaxWidth(200);
+
+  }
+}
diff --git a/src/main/java/org/example/chaosgame/view/components/GameButton.java b/src/main/java/org/example/chaosgame/view/components/GameButton.java
index 1c185ea9e13eca2129b6443987d7ed1f39384498..c77f77ec636065fdd77f67817bd903103e6a15a1 100644
--- a/src/main/java/org/example/chaosgame/view/components/GameButton.java
+++ b/src/main/java/org/example/chaosgame/view/components/GameButton.java
@@ -5,7 +5,7 @@ import javafx.scene.control.Button;
 public class GameButton extends Button {
   public GameButton(String text){
     super(text);
-    this.setMaxWidth(150);
-    this.setMinWidth(150);
+    this.setMaxWidth(200);
+    this.setMinWidth(200);
   }
 }
diff --git a/src/main/java/org/example/chaosgame/view/components/GameSelectionBox.java b/src/main/java/org/example/chaosgame/view/components/GameSelectionBox.java
index 5bbd6c8540b5bb5936291b9009fecacc164160a8..0f9804192afadce64b43026fc7891889087c3c21 100644
--- a/src/main/java/org/example/chaosgame/view/components/GameSelectionBox.java
+++ b/src/main/java/org/example/chaosgame/view/components/GameSelectionBox.java
@@ -5,7 +5,7 @@ import org.example.chaosgame.controller.ChaosGameController;
 
 public class GameSelectionBox extends ComboBox<String> {
   public GameSelectionBox(ChaosGameController chaosGameController){
-    this.setPrefWidth(210);
+    this.setPrefWidth(200);
     this.setPromptText("Select fractal");
     this.getItems().addAll("Julia", "Sierpinski", "Barnsley");
     this.setOnAction(event -> {
diff --git a/src/main/java/org/example/chaosgame/view/components/NumberOfStepsInput.java b/src/main/java/org/example/chaosgame/view/components/NumberOfStepsInput.java
index b351cb45b7a74efa0ac648690dac2fdd7fbbb49e..28a0b5d420f0df5257c68597aae7e100bf207ac9 100644
--- a/src/main/java/org/example/chaosgame/view/components/NumberOfStepsInput.java
+++ b/src/main/java/org/example/chaosgame/view/components/NumberOfStepsInput.java
@@ -5,8 +5,8 @@ import javafx.scene.control.TextField;
 public class NumberOfStepsInput extends TextField {
   public NumberOfStepsInput(){
     this.setPromptText("Number of steps");
-    this.setMaxWidth(210);
-    this.setMinWidth(210);
+    this.setMaxWidth(200);
+    this.setMinWidth(200);
     this.setMinHeight(30);
     this.setMaxHeight(30);
   }
diff --git a/src/main/java/org/example/chaosgame/view/components/SideBar.java b/src/main/java/org/example/chaosgame/view/components/SideBar.java
index 95f4b1be426be967b12b023fa06f25d71f48d2d8..1e12ee6cbf312849482b25e5202b48a2c2ce00e6 100644
--- a/src/main/java/org/example/chaosgame/view/components/SideBar.java
+++ b/src/main/java/org/example/chaosgame/view/components/SideBar.java
@@ -1,29 +1,62 @@
 package org.example.chaosgame.view.components;
 
+import javafx.beans.property.BooleanProperty;
+import javafx.beans.property.SimpleBooleanProperty;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.control.Button;
+import javafx.scene.control.Slider;
 import javafx.scene.control.TextField;
 import javafx.scene.layout.VBox;
 import org.example.chaosgame.controller.ChaosGameController;
 import org.example.chaosgame.controller.ExploreGameController;
+import javafx.beans.value.ChangeListener;
 
 public class SideBar extends VBox {
+  private Slider reValueslider;
+  private Slider imValueslider;
+  private TextField numberOfStepsInput;
+
   public SideBar(ChaosGameController chaosGameController){
     GameSelectionBox gameSelectionBox = new GameSelectionBox(chaosGameController);
-    TextField numberOfStepsInput = new NumberOfStepsInput();
-    Button runStepsButton = new GameButton("Run steps");
+    this.numberOfStepsInput = new NumberOfStepsInput();
+    this.reValueslider = new DoubleSlider(chaosGameController);
+    this.imValueslider = new DoubleSlider(chaosGameController);
+
+    Button createOwnJuliaFractalButton = new GameButton("Create Julia fractal");
+    Button createOwnAffineFractalButton = new GameButton("Create Affine fractal");
+    Button saveFractalButton = new GameButton("Save fractal");
     Button openFileButton = new GameButton("Open file");
     ColorPickerComponent colorPicker = new ColorPickerComponent(chaosGameController::updateFractalColor);
 
-    runStepsButton.setOnAction(event -> chaosGameController.runStepsValidation(numberOfStepsInput));
+    Button runStepsButton = new GameButton("Run ChaosGame");
+
     openFileButton.setOnAction(event -> chaosGameController.openFromFile());
+    createOwnJuliaFractalButton.setOnAction(event -> chaosGameController.createOwnJuliaFractal());
+    createOwnAffineFractalButton.setOnAction(event -> chaosGameController.createOwnAffineFractal());
+    saveFractalButton.setOnAction(event -> chaosGameController.saveFractal());
+    reValueslider.valueProperty().addListener((observable, oldValue, newValue) ->
+            chaosGameController.updateJuliaReValue(newValue.doubleValue(), imValueslider.getValue()));
+    imValueslider.valueProperty().addListener((observable, oldValue, newValue) ->
+            chaosGameController.updateJuliaImValue(reValueslider.getValue(), newValue.doubleValue()));
 
-    this.getChildren().addAll(gameSelectionBox, colorPicker, numberOfStepsInput, runStepsButton, openFileButton);
+    runStepsButton.setOnAction(event -> chaosGameController.runStepsValidation(numberOfStepsInput));
+
+    this.getChildren().addAll(gameSelectionBox, colorPicker, numberOfStepsInput,
+            reValueslider, imValueslider,
+            createOwnJuliaFractalButton, createOwnAffineFractalButton,
+            saveFractalButton, openFileButton, runStepsButton);
     this.setSpacing(10);
     this.setPadding(new Insets(10));
     this.setAlignment(Pos.CENTER_RIGHT);
+
+    VBox.setMargin(createOwnJuliaFractalButton, new Insets(50, 0, 0, 0));
+    VBox.setMargin(runStepsButton, new Insets(50, 0, 0, 0));
+
+
+
   }
+
   public SideBar(ExploreGameController exploreGameController){
     Button zoomInButton = new GameButton("Zoom in");
     Button zoomOutButton = new GameButton("Zoom out");
@@ -39,4 +72,8 @@ public class SideBar extends VBox {
     this.setAlignment(Pos.CENTER_RIGHT);
     this.setSpacing(10);
   }
+
+  public TextField getStepsTextField() {
+    return numberOfStepsInput;
+  }
 }
diff --git a/src/main/resources/global.css b/src/main/resources/global.css
index c017ac3c40a396bf5c6db115c6be26ba691ed702..be077eee2d43c85c16ead93c0b97ab288b23d26f 100644
--- a/src/main/resources/global.css
+++ b/src/main/resources/global.css
@@ -1,6 +1,6 @@
 .button {
     -fx-text-fill: white;
-    -fx-font: 22 arial;
+    -fx-font: 20 arial;
     -fx-background-color: #0d2d3a;
     -fx-border-radius: 20;
     -fx-background-radius: 20;
@@ -16,7 +16,7 @@
 
 .home-button {
     -fx-text-fill: white;
-    -fx-font: 22 arial;
+    -fx-font: 20 arial;
     -fx-background-color: #0d2d3a;
     -fx-border-radius: 20;
     -fx-background-radius: 20;
@@ -26,7 +26,7 @@
 }
 
 .text-field {
-    -fx-font: 10 arial;
+    -fx-font: 14 arial;
     -fx-border-color: black;
     -fx-border-width: 2;
     -fx-background-insets: 1;
@@ -40,7 +40,7 @@
 }
 
 .combo-box {
-    -fx-font: 22 arial;
+    -fx-font: 20 arial;
     -fx-background-color: #0d2d3a;
     -fx-border-radius: 20;
     -fx-background-radius: 20;
@@ -56,7 +56,6 @@
 
 .combo-box .indexed-cell:selected {
     -fx-text-fill: white;
-    -fx-font: 22 arial;
     -fx-background-radius: 20;
 }
 
@@ -82,7 +81,7 @@
 }
 
 .color-picker {
-    -fx-font: 22 arial;
+    -fx-font: 20 arial;
     -fx-background-color: #0d2d3a;
     -fx-border-radius: 20;
     -fx-background-radius: 20;