diff --git a/README.md b/README.md
index d351a7e1c76dec53336acb562d9f67b5c8075daf..36649891de9120708f42d1e77509733f2abd6a23 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
 ## Hier könnte ihre Werbung stehn
 
-### Known issues
- - Videos sometimes don't load in windows 11 especially on weaker systems
+### Known issues:
+ - Videos sometimes don't load in Windows 11 especially on weaker systems
+ - SQL server is very slow (thanks Oracle)
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateAccountController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateAccountController.java
new file mode 100644
index 0000000000000000000000000000000000000000..826cb76c7ba083c1cd0608fe5d6d83e28ef68733
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateAccountController.java
@@ -0,0 +1,86 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Label;
+import javafx.scene.control.RadioButton;
+import javafx.scene.control.TextField;
+import javafx.scene.control.ToggleGroup;
+import javafx.scene.layout.VBox;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class CreateAccountController implements Initializable {
+    @FXML
+    private VBox parent;
+    @FXML
+    private RadioButton local;
+    @FXML
+    private ToggleGroup statistics;
+    @FXML
+    private TextField playerName, password;
+    @FXML
+    private Label errorMessage, passwordLabel;
+
+    String selectedButton;
+    SceneLoader sceneLoader = new SceneLoader();
+    Persistence persistence = Persistence.getInstance();
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        getSelected();
+    }
+
+    private void getSelected() {
+        statistics.selectedToggleProperty().addListener((observableValue, toggle, t1) -> {
+            if (statistics.getSelectedToggle() != null) {
+                RadioButton selectedToggle = (RadioButton) statistics.getSelectedToggle();
+                selectedButton = selectedToggle.getText();
+                System.out.println(selectedButton);
+            }
+            if (local.isSelected()) {
+                password.setEditable(false);
+                password.setText("");
+                passwordLabel.setStyle("-fx-text-fill: rgba(0, 0, 0, 0.3)");
+                password.setStyle("-fx-border-color: rgba(0, 0, 0, 0.3)");
+            } else {
+                passwordLabel.setStyle("-fx-text-fill: black");
+                password.setEditable(true);
+                password.setStyle("-fx-border-color: black");
+            }
+        });
+    }
+
+    private void switchScene(String name) {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene(name));
+    }
+
+    @FXML
+    private void create() {
+        AccountType accountType;
+        if (selectedButton.equals("Local")) {
+            accountType = AccountType.LOCAL;
+        } else {
+            accountType = AccountType.ONLINE;
+        }
+        try {
+            persistence.createAccount(playerName.getText(), password.getText(), accountType);
+            persistence.resetPlayerStatistics();
+            persistence.loadPlayerStatistics();
+            switchScene("MainMenu");
+        } catch (DatabaseException e) {
+            errorMessage.setText(e.getMessage());
+        }
+    }
+
+    @FXML
+    private void back() {
+        switchScene("PlayerCreateScene");
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java
index 0ee284ce321557aafe682c4accff45c12625da6c..6a99c538617e193578e4a80332c60baa7c0bcf5e 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java
@@ -1,9 +1,7 @@
 package de.hdm_stuttgart.battlearena.Controller;
 
 import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer;
-import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException;
 import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
-import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.StartupThread;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
 import javafx.fxml.Initializable;
@@ -40,7 +38,6 @@ public class IntroController implements Initializable {
         introParent.setStyle("-fx-background-color: black;");
         introParent.setCursor(Cursor.NONE);
         createMediaPlayer();
-        new StartupThread().run();
     }
 
     private void createMediaPlayer() {
@@ -50,11 +47,7 @@ public class IntroController implements Initializable {
 
         mediaPlayer.setOnEndOfMedia(() -> {
             if (counter == videos.length - 1) {
-                try {
-                    videoEnd();
-                } catch (IOException e) {
-                    throw new RuntimeException(e);
-                }
+                videoEnd();
             } else {
                 nextVideo();
             }
@@ -63,42 +56,20 @@ public class IntroController implements Initializable {
 //        TODO: make any button pressed work
         introParent.setOnMouseClicked((mouseEvent) -> {
             if (counter == videos.length - 1) {
-                try {
-                    videoEnd();
-                } catch (IOException e) {
-                    throw new RuntimeException(e);
-                }
+                videoEnd();
             } else {
                 nextVideo();
             }
         });
     }
 
-    private void videoEnd() throws IOException {
-        boolean isStartUp = true, noAccount = false, statsLoaded = false;
-        while (isStartUp) {
-            try {
-                persistence.loadPlayerAccount();
-                persistence.verifyPlayerAccount();
-                mediaPlayer.dispose();
-                isStartUp = false;
-            } catch (DatabaseException e) {
-                noAccount = true;
-//            TODO: reset player account if account fails to load in loadPlayerAccount()
-            }
-            if (noAccount) {
-                introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/PlayerCreateScene.fxml"))));
-            }
-        }
-        while (!statsLoaded) { // while loop because Martin said so
-            try {
-                persistence.loadPlayerStatistics();
-                statsLoaded = true;
-            } catch (DatabaseException e) {
-                log.error(e);
-            }
+    private void videoEnd() {
+        try {
+            mediaPlayer.dispose();
+            introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/LoadingScreen.fxml"))));
+        } catch (IOException e) {
+            throw new RuntimeException();
         }
-        introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml"))));
     }
 
     private void nextVideo() {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7aa8a685f37286da95ba3edda224fc8c78f30d4
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java
@@ -0,0 +1,143 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ThreadStartup1;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ThreadStartup2;
+import javafx.application.Platform;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.geometry.Rectangle2D;
+import javafx.scene.control.Label;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.BorderPane;
+import javafx.stage.Screen;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.*;
+
+public class LoadingScreenController implements Initializable {
+    @FXML
+    private Label tips;
+    @FXML
+    private BorderPane parent;
+    @FXML
+    private ImageView logo, throbber;
+
+    boolean isReady = false;
+    private int counter = 0;
+    private boolean statsLoaded = false;
+    private final String[] loadingTips = {
+            "Did you know, that since 2009, Martin isn't on the FBI list?",
+            "BattleArena is actually derived from the combination of the words 'Battle' and 'Arena'.",
+            "Yannik ist over 1,80m tall.",
+            "Electricity is a vital part to play this game.",
+            "There is a typo in one of the tips.",
+            "Over 1000 people play games every day.",
+            "A lot of people believe Nikola Tesla was the first to invent electricity but some clouds beat him to it.",
+            "Monkeys usually don't have keys.",
+            "While you're reading this, you've wasted 2 seconds.",
+            "If you die, you're dead.",
+            "If you take damage, you loose hp.",
+            "Did you know that Java is also an Island?",
+            "This loading screen might never end.",
+            "Get the BattleArena Ultimate-Edition for only 420,69€.",
+            "To move left, press one of the keys on your keyboard.",
+            "To use the gravity-gun, close the game and start Half Life 2.",
+            "Buying this game was a good decision! (no refunds)."
+    };
+
+    private final List<String> shuffledTips = Arrays.asList(loadingTips);
+    private static final Logger log = LogManager.getLogger(Persistence.class);
+    Rectangle2D screen = Screen.getPrimary().getVisualBounds();
+    ThreadStartup1 thread1 = new ThreadStartup1();
+    ThreadStartup2 thread2 = new ThreadStartup2();
+    Persistence persistence = Persistence.getInstance();
+
+    Thread tipsThread = new Thread(() -> {
+        try {
+            setLoadingTips();
+        } catch (InterruptedException e) {
+            log.info("Data finished loading");
+        }
+    });
+
+    Thread loadingDataThread = new Thread(() -> {
+        try {
+            Thread.sleep(4000);
+            loadData();
+        } catch (IOException e) {
+            throw new RuntimeException();
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    });
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        Collections.shuffle(shuffledTips);
+        setImages();
+
+        tipsThread.start();
+        thread1.start();
+
+        boolean threadOneIsRunning = true, threadTwoIsRunning = false;
+        while (!isReady) {
+            if (!thread1.isAlive() && threadOneIsRunning) {
+                thread2.start();
+                threadTwoIsRunning = true;
+                threadOneIsRunning = false;
+            }
+            if (!thread2.isAlive() && threadTwoIsRunning) {
+                isReady = true;
+            }
+        }
+        loadingDataThread.start();
+    }
+
+    private void setImages() {
+        logo.setTranslateY(screen.getHeight() * 0.08);
+        System.out.println(screen.getHeight());
+        logo.setFitWidth(screen.getWidth() * 0.3);
+        throbber.setFitWidth(screen.getWidth() * 0.07);
+        logo.setPreserveRatio(true);
+        throbber.setPreserveRatio(true);
+    }
+
+    private void setLoadingTips() throws InterruptedException {
+        while (!statsLoaded && counter < loadingTips.length) {
+            String nextTip = shuffledTips.get(counter);
+            Platform.runLater(() -> tips.setText(nextTip)); // JavaFX method to queue a task that needs to be executed on the JavaFX application thread (update ui components)
+            counter++;
+
+//            check if statsLoaded is still false before sleeping
+            if (!statsLoaded) {
+                if (nextTip.length() > 60) {
+                    Thread.sleep(6000);
+                } else {
+                    Thread.sleep(3500);
+                }
+                setLoadingTips();
+            }
+        }
+    }
+
+    private void loadData() throws IOException {
+        if (persistence.getAccount().getAccountType() != AccountType.NONE) {
+            try {
+                persistence.loadPlayerStatistics();
+                statsLoaded = true;
+            } catch (DatabaseException e) {
+                log.error(e);
+            }
+        }
+
+        Platform.runLater(tipsThread::interrupt);
+        parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml"))));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoginController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoginController.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb09e4518c634f517185a5dbd2ce4f3691b4fa6b
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoginController.java
@@ -0,0 +1,52 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
+import javafx.application.Platform;
+import javafx.fxml.FXML;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.VBox;
+
+import java.security.NoSuchAlgorithmException;
+
+public class LoginController {
+    @FXML
+    private VBox parent;
+    @FXML
+    private TextField playerName, password;
+    @FXML
+    private Label errorMessage;
+
+    SceneLoader sceneLoader = new SceneLoader();
+    Persistence persistence = Persistence.getInstance();
+
+    private void switchScene(String name) {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene(name));
+    }
+
+    @FXML
+    private void login() {
+        errorMessage.setText("Loading an eternity because of slow SQL server...");
+        thread.start();
+    }
+
+    Thread thread = new Thread(() -> {
+        try {
+            persistence.login(playerName.getText(), password.getText());
+            Platform.runLater(() -> switchScene("MainMenu"));
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException(e);
+        } catch (DatabaseException e) {
+            Platform.runLater(() -> errorMessage.setText(e.getMessage()));
+        }
+    });
+
+    @FXML
+    private void back() {
+        thread.interrupt();
+        switchScene("PlayerCreateScene");
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java
index 392326c31e7e700ca491b955e92531d125bf9e5f..75315ab525f8037751af3070d1402fe0c9ed7f71 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java
@@ -3,6 +3,7 @@ package de.hdm_stuttgart.battlearena.Controller;
 import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer;
 import de.hdm_stuttgart.battlearena.Controller.Utilities.MusicPlayerSingleton;
 import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType;
 import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
 import javafx.fxml.FXML;
 import javafx.fxml.Initializable;
@@ -34,7 +35,7 @@ public class MenuBorderPaneController implements Initializable {
     private MediaPlayer musicPlayer, mediaPlayer;
     private MediaView mediaView;
     private final String[] videoFiles = {"depression", "allMyFellas", "wooOOoo", "myMind", "dogCheese", "gta", "cat", "bobama", "roomba", "firework", "cheezburger",
-            "kangaroo", "lifeCouldBeMonke", "seal", "imNotYou", "parkingTickets", "russianKid", "rejectHumanity", "horse", "catSitting", "pablo", "holyCrap",
+            "kangaroo", "lifeCouldBeMonke", "seal", "rolling", "imNotYou", "parkingTickets", "russianKid", "rejectHumanity", "horse", "catSitting", "pablo", "holyCrap",
             "lessGoo", "sadCat", "basketball", "yoinkySploinky", "msPuff", "=D", "banana", "chaCha", "async", "sadHorse", "minecraftCat", "muecke", "top10Cats", "dog",
             "pot", "mineCraftCat2", "catEating", "catJump", "bear", "pancake", "frog", "gtfo", "carl", "dog2", "slippery", "wolf", "legCat", "sad", "waaahhh"};
 
@@ -44,7 +45,11 @@ public class MenuBorderPaneController implements Initializable {
 
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
-        center.getChildren().add(sceneLoader.loadScene("MainMenu"));
+        if (Persistence.getInstance().getAccount().getAccountType() == AccountType.NONE) {
+            center.getChildren().add(sceneLoader.loadScene("PlayerCreateScene"));
+        } else {
+            center.getChildren().add(sceneLoader.loadScene("MainMenu"));
+        }
 //        set size for rusty gear image depending on screen resolution
         final double imageWidth = screen.getWidth() / 6;
         imgRight.setFitWidth(imageWidth);
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlaceholderController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlaceholderController.java
new file mode 100644
index 0000000000000000000000000000000000000000..a018d9e82ae12e61b22762484397f479597ff0c1
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlaceholderController.java
@@ -0,0 +1,51 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Button;
+import javafx.scene.layout.BorderPane;
+import javafx.scene.media.Media;
+import javafx.scene.media.MediaPlayer;
+import javafx.scene.media.MediaView;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Objects;
+import java.util.ResourceBundle;
+
+public class PlaceholderController implements Initializable {
+    @FXML
+    private BorderPane parent;
+    @FXML
+    private MediaView mediaView;
+    @FXML
+    private Button button;
+    private MediaPlayer mediaPlayer, musicPlayer;
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        File file = new File("src/main/resources/videos/construction.mp4");
+        mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, true, parent);
+        mediaView.setMediaPlayer(mediaPlayer);
+        mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
+        parent.setStyle("-fx-font-size: 50; -fx-text-fill: white; -fx-font-family: 'Arial Black'");
+
+        Media musicMedia = new Media(new File("src/main/resources/sound/music/constructionJazz.mp3").toURI().toString());
+        musicPlayer = new MediaPlayer(musicMedia);
+        musicPlayer.setCycleCount(MediaPlayer.INDEFINITE);
+        musicPlayer.setAutoPlay(true);
+
+        button.setOnMouseClicked(mouseEvent -> {
+            try {
+                mediaPlayer.dispose();
+                musicPlayer.dispose();
+                parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml"))));
+            } catch (IOException e) {
+                throw new RuntimeException();
+            }
+        });
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java
index 68dfd4029aad7452c5d19d82fdfcaec3f0e8435e..56f73045145a2c36b567f177e7423cd86f0bcd07 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java
@@ -1,51 +1,34 @@
 package de.hdm_stuttgart.battlearena.Controller;
 
-import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer;
+import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
 import javafx.fxml.FXML;
-import javafx.fxml.FXMLLoader;
-import javafx.fxml.Initializable;
-import javafx.scene.control.Button;
-import javafx.scene.layout.BorderPane;
-import javafx.scene.media.Media;
-import javafx.scene.media.MediaPlayer;
-import javafx.scene.media.MediaView;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
 
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Objects;
-import java.util.ResourceBundle;
-
-public class PlayerCreateController implements Initializable {
-    @FXML
-    private BorderPane parent;
-    @FXML
-    private MediaView mediaView;
+public class PlayerCreateController {
     @FXML
-    private Button button;
-    private MediaPlayer mediaPlayer, musicPlayer;
+    private VBox parent;
 
-    @Override
-    public void initialize(URL url, ResourceBundle resourceBundle) {
-        File file = new File("src/main/resources/videos/construction.mp4");
-        mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, true, parent);
-        mediaView.setMediaPlayer(mediaPlayer);
-        mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
-        parent.setStyle("-fx-font-size: 50; -fx-text-fill: white; -fx-font-family: 'Arial Black'");
+    SceneLoader sceneLoader = new SceneLoader();
 
-        Media musicMedia = new Media(new File("src/main/resources/sound/music/constructionJazz.mp3").toURI().toString());
-        musicPlayer = new MediaPlayer(musicMedia);
-        musicPlayer.setCycleCount(MediaPlayer.INDEFINITE);
-        musicPlayer.setAutoPlay(true);
+    private void switchScene(String name) {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene(name));
+    }
 
-        button.setOnMouseClicked(mouseEvent -> {
-            try {
-                mediaPlayer.dispose();
-                musicPlayer.dispose();
-                parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml"))));
-            } catch (IOException e) {
-                throw new RuntimeException();
-            }
-        });
+    @FXML
+    private void createScene() {
+        switchScene("CreateAccount");
+    }
+
+    @FXML
+    private void loginScene() {
+        switchScene("Login");
+    }
+
+    @FXML
+    private void exit() {
+        Stage stage = (Stage) parent.getScene().getWindow();
+        stage.close();
     }
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java
index a04eb1c6d84b615f3eff95b33d86485cb0ef5b51..836c9cf9df4f8f17b7633fac1c0867d9b00bac02 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java
@@ -38,8 +38,17 @@ public class SettingsController implements Initializable {
 
     @FXML
     private void backButton() {
+        switchScene("MainMenu");
+    }
+
+    @FXML
+    private void account() {
+        switchScene("PlayerCreateScene");
+    }
+
+    private void switchScene(String name) {
         parent.getChildren().clear();
-        parent.getChildren().add(sceneLoader.loadScene("MainMenu"));
+        parent.getChildren().add(sceneLoader.loadScene(name));
     }
 
     private void setMusicVolume() {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/ButtonTransition.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/ButtonTransition.java
index b129d469320cdd8549e234a3a5d6fae8901187ea..8e59516428834ab48bf7a9b2cfebb1760ad63308 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/ButtonTransition.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/ButtonTransition.java
@@ -1,6 +1,7 @@
 package de.hdm_stuttgart.battlearena.Controller.Utilities;
 
 import javafx.animation.ScaleTransition;
+import javafx.application.Platform;
 import javafx.scene.control.Button;
 import javafx.scene.control.skin.ButtonSkin;
 import javafx.util.Duration;
@@ -13,14 +14,20 @@ public class ButtonTransition extends ButtonSkin {
         fadeIn.setNode(button);
         fadeIn.setToX(1.1);
         fadeIn.setToY(1.1);
-        button.setOnMouseEntered(e -> fadeIn.playFromStart());
+
+//        this ensures that any JavaFX related code is run on the JavaFX application thread
+        button.setOnMouseEntered(e -> {
+            Platform.runLater(fadeIn::playFromStart);
+        });
 
 //        set transition for mouse exiting buttonButtonTransitionScale
         final ScaleTransition fadeOut = new ScaleTransition(Duration.millis(150));
         fadeOut.setNode(button);
         fadeOut.setToX(1.0);
         fadeOut.setToY(1.0);
-        button.setOnMouseExited(e -> fadeOut.playFromStart());
+        button.setOnMouseExited(e -> {
+            Platform.runLater(fadeOut::playFromStart);
+        });
 
         button.setScaleX(1.0);
         button.setScaleY(1.0);
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Driver.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Driver.java
new file mode 100644
index 0000000000000000000000000000000000000000..66f93ada9d0e18cccb86262356517c4f79d881e3
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Driver.java
@@ -0,0 +1,75 @@
+package de.hdm_stuttgart.battlearena.Main;
+
+
+import de.hdm_stuttgart.battlearena.Model.Sound.SoundManager;
+import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.geometry.Rectangle2D;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.scene.text.Font;
+import javafx.stage.Screen;
+import javafx.stage.Stage;
+
+import javafx.stage.StageStyle;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Objects;
+
+public class Driver extends Application {
+
+    private static final Logger log = LogManager.getLogger(Driver.class);
+    Rectangle2D screen = Screen.getPrimary().getVisualBounds();
+
+    InputHandler inputHandler = InputHandler.getInstance();
+
+    SoundManager soundManager = new SoundManager();
+
+    @Override
+    public void start(Stage stage) throws Exception {
+
+//        loading font in start() because CSS can't handle whitespace in folder names
+        Font.loadFont(getClass().getResourceAsStream("/fonts/StarshipShadow.ttf"), 50);
+        Font.loadFont(getClass().getResourceAsStream("/fonts/AmaticSC-Bold.ttf"), 50);
+        Font.loadFont(getClass().getResourceAsStream("/fonts/Arthemis-mLA22.ttf"), 50);
+        Font.loadFont(getClass().getResourceAsStream("/fonts/ShadowsIntoLight-Regular.ttf"), 50);
+
+        Parent root =  FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/LoadingScreen.fxml")));
+
+        Scene scene = new Scene(root);
+
+        scene.setOnKeyPressed(inputHandler::handleKeyPress);
+        scene.setOnKeyReleased(inputHandler::handleKeyRelease);
+
+        stage.setTitle("BattleArena");
+        stage.getIcons().add(new Image("file:src/main/resources/textures/images/icon.png"));
+        stage.setScene(scene);
+        stage.minHeightProperty().setValue(400);
+        stage.minWidthProperty().setValue(600);
+        stage.setMaximized(true);
+        stage.setWidth(screen.getWidth());
+        stage.setHeight(screen.getHeight());
+        stage.initStyle(StageStyle.UNDECORATED);
+        scene.getStylesheets().add(Objects.requireNonNull(this.getClass().getResource("/styles/style.css")).toExternalForm());
+        stage.setScene(scene);
+
+        stage.setOnCloseRequest(event -> {
+            if (soundManager != null) {
+                soundManager.stopMusic();
+            }
+        });
+
+        stage.show();
+        log.debug("Project started successfully!");
+
+//        Exiting program if an exception occurs
+//        Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {
+//            log.error(throwable.getMessage());
+//            System.exit(1);
+//        });
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
index dd93c23719f1f4cb260c6b9da8a0f1f1fac2b475..77261800125e391620b0facc16c47a6ee3217f79 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
@@ -1,76 +1,9 @@
 package de.hdm_stuttgart.battlearena.Main;
 
-
-import de.hdm_stuttgart.battlearena.Model.Sound.MusicType;
-import de.hdm_stuttgart.battlearena.Model.Sound.SFX;
-import de.hdm_stuttgart.battlearena.Model.Sound.SoundManager;
-import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
-
 import javafx.application.Application;
-import javafx.fxml.FXMLLoader;
-import javafx.geometry.Rectangle2D;
-import javafx.scene.Parent;
-import javafx.scene.Scene;
-import javafx.scene.image.Image;
-import javafx.scene.text.Font;
-import javafx.stage.Screen;
-import javafx.stage.Stage;
-
-import javafx.stage.StageStyle;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Objects;
-
-public class Main extends Application {
-
-    private static final Logger log = LogManager.getLogger(Main.class);
-    Rectangle2D screen = Screen.getPrimary().getVisualBounds();
-
-    InputHandler inputHandler = InputHandler.getInstance();
 
+public class Main {
     public static void main(String[] args) {
-        launch(args);
-    }
-
-    @Override
-    public void start(Stage stage) throws Exception {
-
-//        loading font in start() because CSS can't handle whitespace in folder names
-        Font.loadFont(getClass().getResourceAsStream("/fonts/StarshipShadow.ttf"), 50);
-
-//        TODO: revert back to intro scene
-        Parent root =  FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/Intro.fxml")));
-
-        Scene scene = new Scene(root);
-
-        scene.setOnKeyPressed(inputHandler::handleKeyPress);
-        scene.setOnKeyReleased(inputHandler::handleKeyRelease);
-
-        stage.setTitle("BattleArena");
-        stage.getIcons().add(new Image("file:src/main/resources/textures/images/icon.png"));
-        stage.setScene(scene);
-        stage.minHeightProperty().setValue(400);
-        stage.minWidthProperty().setValue(600);
-        stage.setMaximized(true);
-        stage.setWidth(screen.getWidth());
-        stage.setHeight(screen.getHeight());
-        stage.initStyle(StageStyle.UNDECORATED);
-        scene.getStylesheets().add(Objects.requireNonNull(this.getClass().getResource("/styles/style.css")).toExternalForm());
-        stage.setScene(scene);
-
-
-        SoundManager soundManager = new SoundManager();
-
-        stage.setOnCloseRequest(event -> {
-            if (soundManager != null) {
-                soundManager.stopMusic();
-            }
-        });
-
-        soundManager.playMusic(MusicType.GAME);
-
-        stage.show();
-        log.debug("Project started successfully!");
+        Application.launch(Driver.class, args);
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index f285d18da30c1071cb11d03a973fb9c61f0306bc..f0029279f9b345c8bca30dd1ea57552d991b6c83 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -24,4 +24,4 @@ module gui {
     exports de.hdm_stuttgart.battlearena.Model.Inputs;
     exports de.hdm_stuttgart.battlearena.Model.Map;
     exports de.hdm_stuttgart.battlearena.Controller.Utilities;
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/fonts/AmaticSC-Bold.ttf b/src/main/resources/fonts/AmaticSC-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..63cd7ae5be0bce367f8c0aa0e30702d065680923
Binary files /dev/null and b/src/main/resources/fonts/AmaticSC-Bold.ttf differ
diff --git a/src/main/resources/fonts/AmaticSC-Regular.ttf b/src/main/resources/fonts/AmaticSC-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..b860368bec2246d3c268c075167c9d7333d454d0
Binary files /dev/null and b/src/main/resources/fonts/AmaticSC-Regular.ttf differ
diff --git a/src/main/resources/fonts/Arthemis-mLA22.ttf b/src/main/resources/fonts/Arthemis-mLA22.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..165d0d21fda6832a71ff683dcfafe042a5d2d016
Binary files /dev/null and b/src/main/resources/fonts/Arthemis-mLA22.ttf differ
diff --git a/src/main/resources/fonts/ShadowsIntoLight-Regular.ttf b/src/main/resources/fonts/ShadowsIntoLight-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..d20640513b188b6627c3b11383721eba624f1b26
Binary files /dev/null and b/src/main/resources/fonts/ShadowsIntoLight-Regular.ttf differ
diff --git a/src/main/resources/fxml/CreateAccount.fxml b/src/main/resources/fxml/CreateAccount.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..b75267745fd38367a38728324cf4b7a0aefa720c
--- /dev/null
+++ b/src/main/resources/fxml/CreateAccount.fxml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.RadioButton?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.ToggleGroup?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.Pane?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Text?>
+
+<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.CreateAccountController">
+   <children>
+      <Pane VBox.vgrow="ALWAYS" />
+      <VBox alignment="CENTER" VBox.vgrow="ALWAYS">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Tracking statistics:" />
+            <HBox alignment="CENTER" spacing="30.0" VBox.vgrow="ALWAYS">
+               <children>
+                  <RadioButton fx:id="local" mnemonicParsing="false" text="Local">
+                     <toggleGroup>
+                        <ToggleGroup fx:id="statistics" />
+                     </toggleGroup>
+                  </RadioButton>
+                  <RadioButton mnemonicParsing="false" text="Online" toggleGroup="$statistics" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Player Name:" />
+      <TextField fx:id="playerName" alignment="CENTER" />
+      <Label fx:id="passwordLabel" text="Password:" />
+      <TextField fx:id="password" alignment="CENTER" />
+      <Label fx:id="errorMessage" />
+      <Button mnemonicParsing="false" onAction="#create" text="Create" />
+      <Button mnemonicParsing="false" onAction="#back" text="Back" />
+      <Pane VBox.vgrow="ALWAYS" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/LoadingScreen.fxml b/src/main/resources/fxml/LoadingScreen.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..4e242f48920d3c22e5351886ead0da65eaa80b44
--- /dev/null
+++ b/src/main/resources/fxml/LoadingScreen.fxml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.Pane?>
+<?import javafx.scene.shape.Rectangle?>
+<?import javafx.scene.text.Font?>
+
+<BorderPane id="loadingScreen" fx:id="parent" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.LoadingScreenController">
+   <bottom>
+      <HBox alignment="BOTTOM_CENTER" BorderPane.alignment="BOTTOM_CENTER">
+         <children>
+            <Rectangle arcHeight="5.0" arcWidth="5.0" fill="#ffffff00" height="180.0" stroke="TRANSPARENT" strokeType="INSIDE" width="180.0" HBox.hgrow="NEVER">
+               <HBox.margin>
+                  <Insets bottom="50.0" left="50.0" right="50.0" />
+               </HBox.margin>
+            </Rectangle>
+            <Pane HBox.hgrow="ALWAYS" />
+            <Label fx:id="tips" alignment="CENTER" contentDisplay="CENTER" text="If you see this, then something went wrong lmao" textFill="WHITE" wrapText="true">
+               <font>
+                  <Font name="Helvetica Neue LT Com 53 Extended" size="40.0" />
+               </font>
+               <HBox.margin>
+                  <Insets bottom="50.0" />
+               </HBox.margin>
+            </Label>
+            <Pane HBox.hgrow="ALWAYS" />
+            <ImageView fx:id="throbber" fitHeight="180.0" fitWidth="180.0" pickOnBounds="true" preserveRatio="true">
+               <image>
+                  <Image url="@../textures/images/throbber.gif" />
+               </image>
+               <HBox.margin>
+                  <Insets bottom="50.0" left="50.0" right="50.0" />
+               </HBox.margin>
+            </ImageView>
+         </children>
+         <BorderPane.margin>
+            <Insets />
+         </BorderPane.margin>
+      </HBox>
+   </bottom>
+   <center>
+      <ImageView fx:id="logo" fitHeight="800.0" fitWidth="900.0" pickOnBounds="true" preserveRatio="true" BorderPane.alignment="CENTER">
+         <image>
+            <Image url="@../textures/images/logo_transparent.png" />
+         </image>
+      </ImageView>
+   </center>
+</BorderPane>
diff --git a/src/main/resources/fxml/Login.fxml b/src/main/resources/fxml/Login.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..a63c7c127ff2c30d0499ffc963851e061324bf58
--- /dev/null
+++ b/src/main/resources/fxml/Login.fxml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.Pane?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Text?>
+
+<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.LoginController">
+   <children>
+      <Pane VBox.vgrow="ALWAYS" />
+      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Login with existing online account" />
+      <Pane VBox.vgrow="ALWAYS" />
+      <Pane VBox.vgrow="ALWAYS" />
+      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Player Name:" />
+      <TextField fx:id="playerName" alignment="CENTER" />
+      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Password:" />
+      <TextField fx:id="password" alignment="CENTER" />
+      <Label fx:id="errorMessage" />
+      <Button mnemonicParsing="false" onAction="#login" text="Login" />
+      <Button mnemonicParsing="false" onAction="#back" text="Back" />
+      <Pane VBox.vgrow="ALWAYS" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/Placeholder.fxml b/src/main/resources/fxml/Placeholder.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..5b08cde3dfdf168d0e09cc1f005c3f62ac8e09c5
--- /dev/null
+++ b/src/main/resources/fxml/Placeholder.fxml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.media.MediaView?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane fx:id="parent" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PlaceholderController">
+   <center>
+      <StackPane BorderPane.alignment="CENTER">
+         <children>
+            <MediaView fx:id="mediaView" fitHeight="200.0" fitWidth="200.0" />
+            <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="10.0">
+               <children>
+                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="WELCOME!" />
+                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="This page is still under construction" />
+                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="please have some patience" />
+                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Thank you" />
+                  <Button fx:id="button" mnemonicParsing="false" text="Get me out of here" />
+               </children>
+            </VBox>
+         </children>
+      </StackPane>
+   </center>
+</BorderPane>
diff --git a/src/main/resources/fxml/PlayerCreateScene.fxml b/src/main/resources/fxml/PlayerCreateScene.fxml
index 5200c6495466b6bf62772664a6f3a093ac2f5453..9a7e5e347bd49fc7a87467f5700922cbf3fdb937 100644
--- a/src/main/resources/fxml/PlayerCreateScene.fxml
+++ b/src/main/resources/fxml/PlayerCreateScene.fxml
@@ -1,27 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <?import javafx.scene.control.Button?>
-<?import javafx.scene.layout.BorderPane?>
-<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.Pane?>
 <?import javafx.scene.layout.VBox?>
-<?import javafx.scene.media.MediaView?>
-<?import javafx.scene.text.Text?>
 
-<BorderPane fx:id="parent" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PlayerCreateController">
-   <center>
-      <StackPane BorderPane.alignment="CENTER">
-         <children>
-            <MediaView fx:id="mediaView" fitHeight="200.0" fitWidth="200.0" />
-            <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="10.0">
-               <children>
-                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="WELCOME!" />
-                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="This page is still under construction" />
-                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="please have some patience" />
-                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Thank you" />
-                  <Button fx:id="button" mnemonicParsing="false" text="Get me out of here" />
-               </children>
-            </VBox>
-         </children>
-      </StackPane>
-   </center>
-</BorderPane>
+
+<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="50.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PlayerCreateController">
+   <children>
+      <Pane prefHeight="200.0" prefWidth="200.0" />
+      <Button mnemonicParsing="false" onAction="#createScene" text="Create Account" />
+      <Button mnemonicParsing="false" onAction="#loginScene" text="Login" />
+      <Pane prefHeight="200.0" prefWidth="200.0" />
+      <Button mnemonicParsing="false" onAction="#exit" text="Exit" />
+      <Pane prefHeight="200.0" prefWidth="200.0" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/Settings.fxml b/src/main/resources/fxml/Settings.fxml
index 7b8950fc2664c2e1e041ce2d05b7b46986f01d64..3f84b3167228690e174a053e4d5ba4128fc44e72 100644
--- a/src/main/resources/fxml/Settings.fxml
+++ b/src/main/resources/fxml/Settings.fxml
@@ -28,6 +28,7 @@
             </VBox>
          </children>
       </HBox>
+      <Button mnemonicParsing="false" onAction="#account" text="Account" />
       <Button mnemonicParsing="false" onAction="#creditScene" text="Credits" />
       <Button mnemonicParsing="false" onAction="#backButton" text="Back" />
    </children>
diff --git a/src/main/resources/fxml/Statistics.fxml b/src/main/resources/fxml/Statistics.fxml
index 6c98b4e5e5aa7e8efd880b6945b8c7091aa04d32..42b8646af9788053e25149e8a04a9d3d8f0bfb1f 100644
--- a/src/main/resources/fxml/Statistics.fxml
+++ b/src/main/resources/fxml/Statistics.fxml
@@ -7,11 +7,11 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Text?>
 
-<VBox fx:id="parent" alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" spacing="50.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.StatisticsController">
+<VBox fx:id="parent" alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.StatisticsController">
    <children>
-      <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="30.0" VBox.vgrow="ALWAYS">
+      <HBox alignment="CENTER" prefHeight="411.0" prefWidth="677.0" spacing="30.0" VBox.vgrow="ALWAYS">
          <children>
-            <VBox alignment="CENTER_RIGHT" prefHeight="200.0" prefWidth="100.0" spacing="10.0" HBox.hgrow="ALWAYS">
+            <VBox alignment="CENTER_RIGHT" spacing="10.0" HBox.hgrow="ALWAYS">
                <children>
                   <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Kills:" />
                   <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Deaths:" />
@@ -21,7 +21,7 @@
                   <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Ingame time:" />
                </children>
             </VBox>
-            <VBox alignment="CENTER_LEFT" prefHeight="200.0" prefWidth="100.0" spacing="10.0" HBox.hgrow="ALWAYS">
+            <VBox alignment="CENTER_LEFT" spacing="10.0" HBox.hgrow="ALWAYS">
                <children>
                   <Text fx:id="kills" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
                   <Text fx:id="deaths" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
@@ -38,11 +38,11 @@
                <children>
                   <PieChart fx:id="kd" minHeight="-Infinity" minWidth="-Infinity" VBox.vgrow="ALWAYS">
                      <VBox.margin>
-                        <Insets bottom="-200.0" />
+                        <Insets bottom="-200.0" top="-250.0" />
                      </VBox.margin></PieChart>
                   <PieChart fx:id="wl" minHeight="-Infinity" minWidth="-Infinity" VBox.vgrow="ALWAYS">
                      <VBox.margin>
-                        <Insets top="-40.0" />
+                        <Insets bottom="-250.0" top="-40.0" />
                      </VBox.margin></PieChart>
                </children>
             </VBox>
diff --git a/src/main/resources/player/appSettings.json b/src/main/resources/player/appSettings.json
index ec5bc62a909f2065d81be4cfd6c494b9e10715fb..f7d371619fa1db8dd4701e6607908135293b820c 100644
--- a/src/main/resources/player/appSettings.json
+++ b/src/main/resources/player/appSettings.json
@@ -1,4 +1,4 @@
 {
-  "sfxVolume": 50,
+  "sfxVolume": 100,
   "musicVolume": 0
 }
\ No newline at end of file
diff --git a/src/main/resources/player/playerStatsLocal.json b/src/main/resources/player/playerStatsLocal.json
index e51de779c74b6c93fe347b5bf263508c23fff2c9..4db3d0788fb3ff0fe8d593e5baed84279916821b 100644
--- a/src/main/resources/player/playerStatsLocal.json
+++ b/src/main/resources/player/playerStatsLocal.json
@@ -1,8 +1,8 @@
 {
-  "gamesLost": 5,
-  "gamesWon": 9,
-  "kills": 30,
-  "deaths": 20,
-  "blocksDestroyed": 200,
-  "gameTime": 3966480
+  "gamesLost": 0,
+  "gamesWon": 0,
+  "kills": 0,
+  "deaths": 0,
+  "blocksDestroyed": 0,
+  "gameTime": 0
 }
\ No newline at end of file
diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css
index e676c8daadf56536c73d3bf8dd515a7c5a7533cd..0389e5bbbcc594716ff89c2a3d73e0dfd7fc61a3 100644
--- a/src/main/resources/styles/style.css
+++ b/src/main/resources/styles/style.css
@@ -8,18 +8,39 @@
 }
 
 .root {
-    -fx-font-family: "Starship Shadow";
+    -fx-font-family: "Arthemis";
     -fx-text-fill: white;
     -fx-background-color: black;
+    -fx-font-size: 50 px;
+}
+
+#tips {
+    -fx-font-family: "Amatic SC Bold";
+    -fx-font-size: 40 px;
+}
+
+#loadingScreen {
+    -fx-background-color: radial-gradient(focus-distance 0% , center 50% 50% , radius 45% , #a31c31, #542b27);
+}
+
+.text-field {
+    -fx-background-color: transparent;
+    -fx-text-fill: black;
+    -fx-border-color: black;
+    -fx-border-width: 0 0 2 0;
+    -fx-prompt-text-fill: rgba(0, 0, 0, 0.5);
+    -fx-font-family: "Shadows Into Light";
 }
 
+
 #mainMenu{
     -fx-background-image: url("../textures/images/background.png");
     -fx-background-size: cover;
 }
 
 #gameTitle {
-    -fx-font-size: 100;
+    -fx-font-size: 100 px;
+    -fx-font-family: "Starship Shadow";
 }
 
 .button {
@@ -30,7 +51,7 @@
 
 #btnLeft {
     -fx-skin: none;
-    -fx-text-fill: white;
+    -fx-text-fill: #7a7a7a;
 }
 
 .accordion {
diff --git a/src/main/resources/textures/images/logo_transparent.png b/src/main/resources/textures/images/logo_transparent.png
new file mode 100644
index 0000000000000000000000000000000000000000..4aa46908f9c28d66b837bfc3d073aab080759127
Binary files /dev/null and b/src/main/resources/textures/images/logo_transparent.png differ
diff --git a/src/main/resources/textures/images/logo_transparent_alt.png b/src/main/resources/textures/images/logo_transparent_alt.png
new file mode 100644
index 0000000000000000000000000000000000000000..817ba0a2f3103c351277b8598614836c377ce058
Binary files /dev/null and b/src/main/resources/textures/images/logo_transparent_alt.png differ
diff --git a/src/main/resources/textures/images/throbber.gif b/src/main/resources/textures/images/throbber.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45caf1ef603429f181feebcc5505f4b01f512728
Binary files /dev/null and b/src/main/resources/textures/images/throbber.gif differ
diff --git a/src/main/resources/videos/rolling.mp4 b/src/main/resources/videos/rolling.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..07dd01a89cbc742e3a449aa8dae9c99b3f631e43
Binary files /dev/null and b/src/main/resources/videos/rolling.mp4 differ