diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java
new file mode 100644
index 0000000000000000000000000000000000000000..f27a734fdda4aedfbb78ecf8f2be7796b7ee4935
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java
@@ -0,0 +1,47 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.layout.BorderPane;
+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 CreditsController implements Initializable {
+    @FXML public BorderPane parent;
+    @FXML public MediaView mediaView;
+    private MediaPlayer mediaPlayer;
+    private final File file = new File("src/main/resources/textures/videos/credits.mp4");
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        parent.setStyle("-fx-background-color: black;");
+        createMediaPlayer();
+    }
+
+    private void createMediaPlayer() {
+        mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, parent);
+        mediaView.setMediaPlayer(mediaPlayer);
+
+        mediaPlayer.setOnEndOfMedia(this::videoEnd);
+
+        parent.setOnMouseClicked(mouseEvent -> videoEnd());
+    }
+
+    private void videoEnd() {
+        try {
+//            I don't know how to return to the options scene, so it just goes back to the main menu :(
+            mediaPlayer.dispose();
+            parent.getChildren().clear();
+            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/IntroController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java
index e8579e5598ce961c902570df8d18a767055a091d..4ea729c9560a352eeab8550fb597361ef34a6070 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java
@@ -60,15 +60,10 @@ public class IntroController implements Initializable {
         });
     }
 
-    //        TODO: maybe look into using SceneLoader class
     private void videoEnd() {
         try {
             mediaPlayer.dispose();
-            Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml")));
-            Stage stage = (Stage) introParent.getScene().getWindow();
-            Scene scene = new Scene(root);
-            scene.getStylesheets().add(Objects.requireNonNull(this.getClass().getResource("/styles/style.css")).toExternalForm());
-            stage.setScene(scene);
+            introParent.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/MainMenuController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java
index d742f93183a9488068fde465073c5a47eefcdebf..dc0cc7f4fa874689ba4d25ce335c86b0b3463d0b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java
@@ -14,7 +14,6 @@ public class MainMenuController {
     private final SceneLoader sceneLoader = new SceneLoader();
 
     private void switchScene(String name) {
-//        get(0) returns the first item from the getChildren() List
         parent.getChildren().clear();
         parent.getChildren().add(sceneLoader.loadScene(name));
     }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java
index 413e4ee7dc52c8a8ccaefa8632bb5078521c4a79..947e948024cc78c1950afd432893832f0ee1b883 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java
@@ -1,11 +1,14 @@
 package de.hdm_stuttgart.battlearena.Controller;
 
 import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
 import javafx.fxml.Initializable;
 import javafx.scene.control.Slider;
 import javafx.scene.layout.VBox;
 
+import java.io.IOException;
 import java.net.URL;
+import java.util.Objects;
 import java.util.ResourceBundle;
 
 public class OptionsController implements Initializable {
@@ -14,17 +17,15 @@ public class OptionsController implements Initializable {
     SceneLoader sceneLoader = new SceneLoader();
     public int volume;
     private boolean setVolume = false;
-    private void switchScene(String name) {
-        parent.getChildren().clear();
-        parent.getChildren().add(sceneLoader.loadScene(name));
-    }
 
-    public void creditScene() {
-        switchScene("Credits");
+    public void creditScene() throws IOException {
+        parent.getChildren().clear();
+        parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/credits.fxml"))));
     }
 
     public void mainMenuScene() {
-        switchScene("MainMenu");
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("MainMenu"));
     }
 
     @Override
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 29ff931d24602d9c611410d5e51eeb99ac4b7880..36394526c54f30d8ec087eef528385257ee9c5a0 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
@@ -41,6 +41,8 @@ public class Main extends Application {
         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.show();
         log.debug("Project started successfully!");
diff --git a/src/main/resources/fxml/Credits.fxml b/src/main/resources/fxml/Credits.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..d676f90ba0a604995e51dfa5c8ff51d3dd485aa7
--- /dev/null
+++ b/src/main/resources/fxml/Credits.fxml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.media.MediaView?>
+
+
+<BorderPane fx:id="parent" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.CreditsController">
+   <center>
+      <MediaView fx:id="mediaView" fitHeight="200.0" fitWidth="200.0" BorderPane.alignment="CENTER" />
+   </center>
+</BorderPane>
diff --git a/src/main/resources/textures/videos/credits.mp4 b/src/main/resources/textures/videos/credits.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..8f852f451f39b1d32bcbcff4950ef240c8f45a8d
Binary files /dev/null and b/src/main/resources/textures/videos/credits.mp4 differ