diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644
index 8b137891791fe96927ad78e64b0aad7bded08bdc..0000000000000000000000000000000000000000
--- a/CHANGELOG
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..d259abe54736dbb6cefa66fcecb72b757a599991
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,20 @@
+# Changelog
+
+## [Unreleased]
+
+### Added
+- 
+
+### Fixed
+-
+
+### Changed 
+- 
+
+
+### Removed
+- 
+
+##[v.v.v] - dd.mm.yyyy
+
+### Added
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/ButtonTransition.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/ButtonTransition.java
new file mode 100644
index 0000000000000000000000000000000000000000..2af6c6d63c35c91301dfd68eab22027ced9fdcbc
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/ButtonTransition.java
@@ -0,0 +1,29 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.animation.ScaleTransition;
+import javafx.scene.control.Button;
+import javafx.scene.control.skin.ButtonSkin;
+import javafx.util.Duration;
+
+public class ButtonTransition extends ButtonSkin {
+    public ButtonTransition(Button button) {
+        super(button);
+//        set transition for mouse hovering over button
+        final ScaleTransition fadeIn = new ScaleTransition(Duration.millis(150));
+        fadeIn.setNode(button);
+        fadeIn.setToX(1.1);
+        fadeIn.setToY(1.1);
+        button.setOnMouseEntered(e -> 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.setScaleX(1.0);
+        button.setScaleY(1.0);
+    }
+}
+
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateMediaPlayer.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateMediaPlayer.java
new file mode 100644
index 0000000000000000000000000000000000000000..03fbd835e1a457c5f9ad0fdd649d747840a240fd
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateMediaPlayer.java
@@ -0,0 +1,23 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.scene.layout.BorderPane;
+import javafx.scene.media.Media;
+import javafx.scene.media.MediaPlayer;
+import javafx.scene.media.MediaView;
+
+import java.io.File;
+
+public class CreateMediaPlayer {
+    public MediaPlayer getMediaPlayer(MediaView mediaView, File file, BorderPane parent) {
+        Media media = new Media(file.toURI().toString());
+        MediaPlayer mediaPlayer = new MediaPlayer(media);
+
+//      resizing once the scenes has been loaded to get width and height property
+        mediaPlayer.setOnReady(() -> {
+            mediaView.fitWidthProperty().bind(parent.getScene().widthProperty());
+            mediaView.fitHeightProperty().bind(parent.getScene().heightProperty());
+        });
+        mediaPlayer.setAutoPlay(true);
+        return mediaPlayer;
+    }
+}
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..a6e47b9d714df5d509ec60ac27bd6ac89029fa5f
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java
@@ -0,0 +1,52 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Cursor;
+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/videos/credits.mp4");
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        parent.setStyle("-fx-background-color: black;");
+        parent.setCursor(Cursor.NONE);
+        createMediaPlayer();
+        MusicPlayerSingleton.getInstance().getMediaPlayer().dispose();
+    }
+
+    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
new file mode 100644
index 0000000000000000000000000000000000000000..7a77864cb6349989b9ee99f84e56f98932683146
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java
@@ -0,0 +1,75 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Cursor;
+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 IntroController implements Initializable {
+
+    @FXML
+    public MediaView mediaView;
+    @FXML
+    public BorderPane introParent;
+    private final String fileName = "src/main/resources/videos/";
+    //    nextVideo() will iterate through this array so the next video will be played TODO: change the videos to non memes lmao
+    private final String[] videos = {"sony.mp4", "gamecube.mp4", "gameboy.mp4", "monke.mp4"};
+    private File file = new File(fileName + videos[0]);
+    private int counter = 0;
+    private MediaPlayer mediaPlayer;
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        introParent.setStyle("-fx-background-color: black;");
+        introParent.setCursor(Cursor.NONE);
+        createMediaPlayer();
+    }
+
+    private void createMediaPlayer() {
+//        initializing this.mediaPlayer
+        mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, introParent);
+        mediaView.setMediaPlayer(mediaPlayer);
+
+        mediaPlayer.setOnEndOfMedia(() -> {
+            if (counter == videos.length - 1) {
+                videoEnd();
+            } else {
+                nextVideo();
+            }
+        });
+
+//        TODO: make any button pressed work
+        introParent.setOnMouseClicked((mouseEvent) -> {
+            if (counter == videos.length - 1) {
+                videoEnd();
+            } else {
+                nextVideo();
+            }
+        });
+    }
+
+    private void videoEnd() {
+        try {
+            mediaPlayer.dispose();
+            introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml"))));
+        } catch (IOException e) {
+            throw new RuntimeException();
+        }
+    }
+
+    private void nextVideo() {
+        mediaPlayer.dispose();
+        file = new File(fileName + videos[counter + 1]);
+        counter++;
+        createMediaPlayer();
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LocalCreateController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LocalCreateController.java
new file mode 100644
index 0000000000000000000000000000000000000000..12f6d654caa5d116dbb0d6be8fcf8b03d25747f8
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LocalCreateController.java
@@ -0,0 +1,23 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.layout.VBox;
+
+import java.io.IOException;
+import java.util.Objects;
+
+public class LocalCreateController {
+    @FXML public VBox parent;
+    private final SceneLoader sceneLoader = new SceneLoader();
+
+    public void playScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("Play"));
+    }
+
+    public void skinSelectionScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("SkinSelection"));
+    }
+}
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 4fa73f1d596e95461bfb44775fdb526efc4377f3..5a8c9dea297cc86f74b13911c31a9318d66f6178 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java
@@ -1,4 +1,38 @@
 package de.hdm_stuttgart.battlearena.Controller;
 
+import javafx.fxml.FXML;
+import javafx.scene.control.Button;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
 public class MainMenuController {
+    @FXML
+    public VBox parent;
+    @FXML
+    public Button exitButton;
+    private final SceneLoader sceneLoader = new SceneLoader();
+
+    private void switchScene(String name) {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene(name));
+    }
+    public void playScene() {
+        switchScene("Play");
+    }
+
+    public void statisticsScene() {
+        switchScene("Statistics");
+    }
+
+    public void optionsScene() {
+        switchScene("Options");
+    }
+
+    public void exit() {
+        Stage stage = (Stage) exitButton.getScene().getWindow();
+        stage.close();
+    }
+
+
+//    TODO: create skin selection scene
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6f980d5271853b580f31e74f3b3cac3ea1a9758d
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java
@@ -0,0 +1,68 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.geometry.Rectangle2D;
+import javafx.scene.control.Button;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.BorderPane;
+import javafx.scene.media.Media;
+import javafx.scene.media.MediaPlayer;
+import javafx.scene.media.MediaView;
+import javafx.stage.Screen;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class MenuBorderPaneController implements Initializable {
+    //    TODO: change FXML variables to private. Don't know why it's not working when they're private
+    @FXML
+    public BorderPane parent;
+    @FXML
+    public Button btnRight;
+    @FXML
+    public ImageView imgLeft, imgRight;
+    private int counter = 1;
+    private final SceneLoader sceneLoader = new SceneLoader();
+    MediaPlayer musicPlayer;
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        parent.setCenter(sceneLoader.loadScene("MainMenu"));
+//        set size for rusty gear image depending on screen resolution
+        Rectangle2D screen = Screen.getPrimary().getVisualBounds();
+        final double imageWidth = screen.getWidth() / 6;
+        imgRight.setFitWidth(imageWidth);
+        imgRight.setPreserveRatio(true);
+        imgLeft.setFitWidth(imageWidth);
+        imgLeft.setPreserveRatio(true);
+        backgroundMusic("cocBackgroundMusicTest.mp3");
+    }
+
+    public void easterEgg() {
+        btnRight.setOnMouseClicked(mouseEvent -> counter++);
+        switch (counter) {
+            case 5:
+                musicPlayer.dispose();
+                backgroundMusic("spongeBob.mp3");
+                break;
+            case 12:
+                musicPlayer.dispose();
+                backgroundMusic("stadiumRave.mp3");
+                break;
+            case 20:
+                musicPlayer.dispose();
+                backgroundMusic("wii.mp3");
+                break;
+        }
+    }
+
+    private void backgroundMusic(String file) {
+        Media media = new Media(new File("src/main/resources/sound/music/" + file).toURI().toString());
+        musicPlayer = new MediaPlayer(media);
+        musicPlayer.setCycleCount(MediaPlayer.INDEFINITE);
+        musicPlayer.play();
+        MusicPlayerSingleton.getInstance().setMediaPlayer(musicPlayer);
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerController.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0398758ef90f8af93860a24e7706c04f3293035
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerController.java
@@ -0,0 +1,24 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.scene.layout.VBox;
+
+public class MultiplayerController {
+    @FXML public VBox parent;
+    private final SceneLoader sceneLoader = new SceneLoader();
+
+    public void multiplayerCreateScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("MultiplayerCreate"));
+    }
+
+    public void multiplayerJoinScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("MultiplayerJoin"));
+    }
+
+    public void playScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("Play"));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerCreateController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerCreateController.java
new file mode 100644
index 0000000000000000000000000000000000000000..3791d1b65442c4156ceed67abdabcd15d0459d64
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerCreateController.java
@@ -0,0 +1,14 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.scene.layout.VBox;
+
+public class MultiplayerCreateController {
+    @FXML public VBox parent;
+    private final SceneLoader sceneLoader = new SceneLoader();
+
+    public void multiplayerScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("Multiplayer"));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerJoinController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerJoinController.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6acf0f92a50714ee0e1a152a24ea0b6999ada31
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerJoinController.java
@@ -0,0 +1,14 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.scene.layout.VBox;
+
+public class MultiplayerJoinController {
+    @FXML public VBox parent;
+    private final SceneLoader sceneLoader = new SceneLoader();
+
+    public void multiplayerScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("Multiplayer"));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MusicPlayerSingleton.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MusicPlayerSingleton.java
new file mode 100644
index 0000000000000000000000000000000000000000..5653a7c8cbca3e0278568d08fcda7dc7e1712c17
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MusicPlayerSingleton.java
@@ -0,0 +1,23 @@
+package de.hdm_stuttgart.battlearena.Controller;
+import javafx.scene.media.MediaPlayer;
+
+public class MusicPlayerSingleton {
+//    creating a singleton, so it can be stopped from other controller classes
+    private static final MusicPlayerSingleton instance = new MusicPlayerSingleton();
+    private MediaPlayer mediaPlayer;
+
+    private MusicPlayerSingleton() {}
+
+    public static MusicPlayerSingleton getInstance() {
+        return instance;
+    }
+
+    public MediaPlayer getMediaPlayer() {
+        return mediaPlayer;
+    }
+
+    public void setMediaPlayer(MediaPlayer mediaPlayer) {
+        this.mediaPlayer = mediaPlayer;
+    }
+}
+
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6cba2a46980f3f81abb00e59b69bb6b4666104f4
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java
@@ -0,0 +1,45 @@
+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 {
+    @FXML public VBox parent;
+    @FXML public Slider volumeSlider;
+    SceneLoader sceneLoader = new SceneLoader();
+    public double volume;
+    MusicPlayerSingleton musicPlayer = MusicPlayerSingleton.getInstance();
+
+    public void creditScene() throws IOException {
+        parent.getChildren().clear();
+        parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/credits.fxml"))));
+    }
+
+    public void mainMenuScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("MainMenu"));
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        setVolume();
+    }
+
+    private void setVolume() {
+//        need a runtime database to save volume
+     volumeSlider.valueProperty().addListener((observableValue, oldValue, newValue) -> {
+         musicPlayer.getMediaPlayer().setVolume(volume);
+         volume = newValue.doubleValue() / 100;
+         musicPlayer.getMediaPlayer().setVolume(volume);
+         System.out.println(volume);
+     });
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayController.java
new file mode 100644
index 0000000000000000000000000000000000000000..0b094a0e03c9fcf123fca334bd59b96f09bd719c
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayController.java
@@ -0,0 +1,24 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.scene.layout.VBox;
+
+public class PlayController {
+    @FXML public VBox parent;
+    private final SceneLoader sceneLoader = new SceneLoader();
+
+    public void mainMenuScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("MainMenu"));
+    }
+
+    public void localScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("LocalCreate"));
+    }
+
+    public void multiplayerScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("Multiplayer"));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java
new file mode 100644
index 0000000000000000000000000000000000000000..531d6229fdfc5b15342a14f662977cecff1d4f2e
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java
@@ -0,0 +1,44 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ToggleButton;
+import javafx.scene.control.ToggleGroup;
+import javafx.scene.layout.VBox;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Objects;
+import java.util.ResourceBundle;
+
+public class SkinSelectionController implements Initializable {
+    @FXML public VBox parent;
+    @FXML public ToggleGroup selectionButton;
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        selectionButton.selectedToggleProperty().addListener((observableValue, oldToggle, newToggle) -> {
+            if (selectionButton.getSelectedToggle() != null) {
+                ToggleButton selected = (ToggleButton) selectionButton.getSelectedToggle();
+                String value = selected.getText();
+                System.out.println(value);
+            }
+        });
+
+    }
+
+    public void gameScene() {
+        try {
+            MusicPlayerSingleton.getInstance().getMediaPlayer().dispose();
+            parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameScene.fxml"))));
+        } catch (IOException e) {
+            throw new RuntimeException();
+        }
+    }
+
+    public void back() {
+        parent.getChildren().clear();
+        parent.getChildren().add(new SceneLoader().loadScene("LocalCreate"));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/StatisticsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/StatisticsController.java
new file mode 100644
index 0000000000000000000000000000000000000000..f591bfa15ef9a643f91fe59dc3c8c3482b085e8a
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/StatisticsController.java
@@ -0,0 +1,63 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.beans.binding.Bindings;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.chart.PieChart;
+import javafx.scene.layout.VBox;
+import javafx.scene.text.Text;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class StatisticsController implements Initializable {
+
+    @FXML public Text blocks, deaths, gameTime, gamesLost, gamesWon, kills;
+    @FXML public VBox parent;
+    @FXML public PieChart kd, wl;
+    SceneLoader sceneLoader = new SceneLoader();
+
+    public void mainMenuScene() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("MainMenu"));
+    }
+
+    public void initialize(URL url, ResourceBundle resourceBundle){
+        iniPieChartkd();
+        iniPieChartwl();
+    }
+
+    public void iniPieChartkd() {
+        ObservableList<PieChart.Data> pieChartData =
+                FXCollections.observableArrayList(
+                        new PieChart.Data("Kills",20),
+                        new PieChart.Data("Deaths",12));
+
+                        pieChartData.forEach(data ->
+                                data.nameProperty().bind(
+                                        Bindings.concat(
+                                                data.getName(),": ", data.pieValueProperty()
+                                        )
+                                )
+                        );
+                        kd.getData().addAll(pieChartData);
+    }
+    public void iniPieChartwl() {
+        ObservableList<PieChart.Data> pieChartData =
+                FXCollections.observableArrayList(
+                        new PieChart.Data("Wins",3),
+                        new PieChart.Data("Losses",5));
+
+        pieChartData.forEach(data ->
+                data.nameProperty().bind(
+                        Bindings.concat(
+                                data.getName(),": ", data.pieValueProperty()
+                        )
+                )
+        );
+        wl.getData().addAll(pieChartData);
+    }
+}
+
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/ToggleButtonTransition.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/ToggleButtonTransition.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ee839dddf70e1a34ac776b9343e068234b391ab
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/ToggleButtonTransition.java
@@ -0,0 +1,49 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import javafx.animation.FadeTransition;
+import javafx.scene.control.ToggleButton;
+import javafx.scene.control.skin.ToggleButtonSkin;
+import javafx.util.Duration;
+
+public class ToggleButtonTransition extends ToggleButtonSkin {
+    private final FadeTransition fadeIn;
+    private final FadeTransition fadeOut;
+
+    public ToggleButtonTransition(ToggleButton toggleButton) {
+        super(toggleButton);
+
+        fadeIn = new FadeTransition(Duration.millis(150));
+        fadeIn.setNode(toggleButton);
+        fadeIn.setToValue(1);
+
+        fadeOut = new FadeTransition(Duration.millis(150));
+        fadeOut.setNode(toggleButton);
+        fadeOut.setToValue(0.5);
+
+        toggleButton.setOnMouseEntered(e -> fadeIn.playFromStart());
+        toggleButton.setOnMouseExited(e -> {
+            if (!toggleButton.isSelected()) {
+                fadeOut.playFromStart();
+            }
+        });
+
+        toggleButton.selectedProperty().addListener((observable, oldValue, newValue) -> {
+            if (newValue) {
+                fadeIn.playFromStart();
+                fadeOut.setToValue(0.5); // Set fadeOut back to the default value
+            } else {
+                fadeOut.playFromStart();
+                toggleButton.setOpacity(0.5);
+            }
+        });
+
+        // Set the initial opacity based on the initial selected state
+        toggleButton.setOpacity(toggleButton.isSelected() ? 1.0 : 0.5);
+
+    }
+}
+
+
+
+
+
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 db7be08c430fdc16415e617929e3488bc5c148f0..d222017ae825e1a18482ab3913991df51d2df7bf 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
@@ -3,10 +3,14 @@ package de.hdm_stuttgart.battlearena.Main;
 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.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;
 
@@ -15,6 +19,7 @@ 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();
 
@@ -24,7 +29,10 @@ public class Main extends Application {
 
     @Override
     public void start(Stage stage) throws Exception {
-        Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameScene.fxml")));
+//        loading font in start() because CSS can't handle whitespace in folder names
+        Font.loadFont(getClass().getResourceAsStream("/fonts/StarshipShadow.ttf"), 20);
+
+        Parent root =  FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/Intro.fxml")));
 
         Scene scene = new Scene(root);
 
@@ -33,6 +41,14 @@ public class Main extends Application {
 
         stage.setTitle("BattleArena");
         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.show();
         log.debug("Project started successfully!");
diff --git a/src/main/resources/fonts/StarshipInline.ttf b/src/main/resources/fonts/StarshipInline.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..b738337f8929807e42f3eab6ca17b629b9dd9346
Binary files /dev/null and b/src/main/resources/fonts/StarshipInline.ttf differ
diff --git a/src/main/resources/fonts/StarshipInlineGrunge.ttf b/src/main/resources/fonts/StarshipInlineGrunge.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..717585cf29071695d9a23cc8c28cacea0108c8d0
Binary files /dev/null and b/src/main/resources/fonts/StarshipInlineGrunge.ttf differ
diff --git a/src/main/resources/fonts/StarshipShadow.ttf b/src/main/resources/fonts/StarshipShadow.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..87b1a315517048dea5ef414f248a124a9d36c0fb
Binary files /dev/null and b/src/main/resources/fonts/StarshipShadow.ttf differ
diff --git a/src/main/resources/fonts/StarshipShadowInline.ttf b/src/main/resources/fonts/StarshipShadowInline.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e31a30c5608773cb0ca00947d946cf767df4df1c
Binary files /dev/null and b/src/main/resources/fonts/StarshipShadowInline.ttf differ
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/fxml/Intro.fxml b/src/main/resources/fxml/Intro.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..fb0cfbc611000de77a25e8fd74afdaeb358e7c82
--- /dev/null
+++ b/src/main/resources/fxml/Intro.fxml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.media.MediaView?>
+
+<BorderPane fx:id="introParent" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.IntroController">
+   <center>
+      <MediaView fx:id="mediaView" fitHeight="200.0" fitWidth="200.0" BorderPane.alignment="CENTER" />
+   </center>
+</BorderPane>
diff --git a/src/main/resources/fxml/LocalCreate.fxml b/src/main/resources/fxml/LocalCreate.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..46cca9f8e1e83c60b4a7c8cbc9753d9083bee1a0
--- /dev/null
+++ b/src/main/resources/fxml/LocalCreate.fxml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Accordion?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.RadioButton?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.control.ToggleGroup?>
+<?import javafx.scene.layout.AnchorPane?>
+<?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.LocalCreateController">
+   <children>
+      <HBox alignment="TOP_CENTER" spacing="20.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Rounds:" />
+            <Accordion>
+              <panes>
+                <TitledPane animated="false" text="untitled 1">
+                  <content>
+                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
+                  </content>
+                </TitledPane>
+              </panes>
+            </Accordion>
+         </children>
+         <VBox.margin>
+            <Insets />
+         </VBox.margin>
+      </HBox>
+      <HBox alignment="TOP_CENTER" maxWidth="-Infinity" minWidth="-Infinity" prefHeight="25.0" prefWidth="213.0" spacing="20.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Time:" />
+            <Accordion>
+              <panes>
+                <TitledPane animated="false" text="untitled 1">
+                  <content>
+                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
+                  </content>
+                </TitledPane>
+              </panes>
+            </Accordion>
+         </children>
+      </HBox>
+      <HBox alignment="TOP_CENTER" spacing="10.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="PLayers:" />
+            <RadioButton mnemonicParsing="false" selected="true" text="2">
+               <toggleGroup>
+                  <ToggleGroup fx:id="group31" />
+               </toggleGroup>
+            </RadioButton>
+            <RadioButton mnemonicParsing="false" text="3" toggleGroup="$group31" />
+            <RadioButton mnemonicParsing="false" text="4" toggleGroup="$group31" />
+         </children>
+      </HBox>
+      <HBox alignment="TOP_CENTER" spacing="10.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" />
+            <RadioButton mnemonicParsing="false" text="Yes">
+               <toggleGroup>
+                  <ToggleGroup fx:id="group1" />
+               </toggleGroup>
+            </RadioButton>
+            <RadioButton mnemonicParsing="false" selected="true" text="No" toggleGroup="$group1" />
+         </children>
+      </HBox>
+      <HBox alignment="TOP_CENTER" spacing="10.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" />
+            <RadioButton mnemonicParsing="false" text="Yes">
+               <toggleGroup>
+                  <ToggleGroup fx:id="group2" />
+               </toggleGroup>
+            </RadioButton>
+            <RadioButton mnemonicParsing="false" selected="true" text="No" toggleGroup="$group2" />
+         </children>
+      </HBox>
+      <HBox alignment="TOP_CENTER" spacing="10.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" />
+            <RadioButton mnemonicParsing="false" text="Yes">
+               <toggleGroup>
+                  <ToggleGroup fx:id="group3" />
+               </toggleGroup>
+            </RadioButton>
+            <RadioButton mnemonicParsing="false" selected="true" text="No" toggleGroup="$group3" />
+         </children>
+      </HBox>
+      <Button mnemonicParsing="false" onAction="#skinSelectionScene" text="Start" />
+      <Button mnemonicParsing="false" onAction="#playScene" text="Back">
+         <VBox.margin>
+            <Insets bottom="50.0" />
+         </VBox.margin>
+      </Button>
+      <Pane VBox.vgrow="ALWAYS" />
+      <Pane VBox.vgrow="ALWAYS" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/MainMenu.fxml b/src/main/resources/fxml/MainMenu.fxml
index 593ebfedde7527d354af67c063ffcfc078a2472e..385eeb92c0ed4cce0d84e17363a2007d4a6c648b 100644
--- a/src/main/resources/fxml/MainMenu.fxml
+++ b/src/main/resources/fxml/MainMenu.fxml
@@ -1,23 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<?import javafx.geometry.Insets?>
 <?import javafx.scene.control.Button?>
-<?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.Pane?>
 <?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Text?>
 
-
-<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MainMenuController">
-   <children>
-      <BorderPane prefHeight="400.0" prefWidth="600.0">
-         <center>
-            <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="30.0" BorderPane.alignment="CENTER">
-               <children>
-                  <Button mnemonicParsing="false" text="Button" />
-                  <Button mnemonicParsing="false" text="Button" />
-                  <Button mnemonicParsing="false" text="Button" />
-               </children>
-            </VBox>
-         </center>
-      </BorderPane>
-   </children>
-</AnchorPane>
+<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.MainMenuController">
+    <children>
+        <Pane VBox.vgrow="ALWAYS" />
+        <Text id="gameTitle" strokeType="OUTSIDE" strokeWidth="0.0" text="Battlearena" />
+        <Button mnemonicParsing="false" onAction="#playScene" text="Play" VBox.vgrow="ALWAYS">
+            <VBox.margin>
+                <Insets top="20.0" />
+            </VBox.margin>
+        </Button>
+        <Button mnemonicParsing="false" text="Map Creator" VBox.vgrow="ALWAYS" />
+        <Button mnemonicParsing="false" onAction="#statisticsScene" text="Statistics" VBox.vgrow="ALWAYS" />
+      <Button mnemonicParsing="false" onAction="#optionsScene" text="Options" />
+        <Button fx:id="exitButton" alignment="CENTER" mnemonicParsing="false" onAction="#exit" text="Exit" />
+        <Pane VBox.vgrow="ALWAYS" />
+        <Pane layoutX="10.0" layoutY="395.0" VBox.vgrow="ALWAYS" />
+    </children>
+</VBox>
diff --git a/src/main/resources/fxml/MenuBorderPane.fxml b/src/main/resources/fxml/MenuBorderPane.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..3d57e01ff6b3502f741c6c780cf56e6c04bf6419
--- /dev/null
+++ b/src/main/resources/fxml/MenuBorderPane.fxml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+
+<BorderPane id="mainMenu" fx:id="parent" 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.MenuBorderPaneController">
+    <right>
+        <Button fx:id="btnRight" mnemonicParsing="false" onAction="#easterEgg" prefWidth="111.0" BorderPane.alignment="BOTTOM_CENTER">
+            <graphic>
+                <ImageView fx:id="imgRight" fitHeight="845.0" fitWidth="799.0" pickOnBounds="true" preserveRatio="true">
+                    <image>
+                        <Image url="@../textures/images/gear_with_shadow.png" />
+                    </image>
+                </ImageView>
+            </graphic>
+        </Button>
+    </right>
+    <left>
+        <Button mnemonicParsing="false" BorderPane.alignment="BOTTOM_CENTER">
+            <graphic>
+                <ImageView fx:id="imgLeft" fitHeight="904.0" fitWidth="856.0" pickOnBounds="true" preserveRatio="true">
+                    <image>
+                        <Image url="@../textures/images/dont_delete_or_ui_will_break.png" />
+                    </image>
+                </ImageView>
+            </graphic>
+        </Button>
+    </left>
+</BorderPane>
diff --git a/src/main/resources/fxml/Multiplayer.fxml b/src/main/resources/fxml/Multiplayer.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..690769c28f168b253fbfe41f6e5e559e0decc270
--- /dev/null
+++ b/src/main/resources/fxml/Multiplayer.fxml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.layout.Pane?>
+<?import javafx.scene.layout.VBox?>
+
+
+<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.MultiplayerController">
+   <children>
+      <Pane maxHeight="1.7976931348623157E308" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
+      <Button mnemonicParsing="false" onAction="#multiplayerCreateScene" text="Create" VBox.vgrow="ALWAYS">
+         <VBox.margin>
+            <Insets top="20.0" />
+         </VBox.margin>
+      </Button>
+      <Button mnemonicParsing="false" onAction="#multiplayerJoinScene" text="Join" VBox.vgrow="ALWAYS">
+         <VBox.margin>
+            <Insets bottom="50.0" />
+         </VBox.margin>
+      </Button>
+      <Button alignment="CENTER" mnemonicParsing="false" onAction="#playScene" text="Back">
+         <VBox.margin>
+            <Insets />
+         </VBox.margin>
+      </Button>
+      <Pane VBox.vgrow="ALWAYS" />
+      <Pane VBox.vgrow="ALWAYS" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/MultiplayerCreate.fxml b/src/main/resources/fxml/MultiplayerCreate.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..b0909c0079e798d74543c95dfcb6c6f19d6cf72e
--- /dev/null
+++ b/src/main/resources/fxml/MultiplayerCreate.fxml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.RadioButton?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?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.MultiplayerCreateController">
+   <children>
+      <Pane VBox.vgrow="ALWAYS" />
+      <HBox alignment="TOP_CENTER" spacing="20.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" />
+            <TextField />
+         </children>
+         <VBox.margin>
+            <Insets top="50.0" />
+         </VBox.margin>
+      </HBox>
+      <HBox alignment="TOP_CENTER" maxWidth="-Infinity" minWidth="-Infinity" prefHeight="25.0" prefWidth="213.0" spacing="20.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" />
+            <TextField />
+         </children>
+      </HBox>
+      <HBox alignment="TOP_CENTER" spacing="10.0">
+         <children>
+            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" />
+            <RadioButton mnemonicParsing="false" text="Yes" />
+            <RadioButton mnemonicParsing="false" text="No" />
+         </children>
+      </HBox>
+      <AnchorPane minHeight="-Infinity" prefHeight="39.0" prefWidth="600.0">
+         <children>
+            <VBox alignment="TOP_CENTER" layoutX="250.0" prefHeight="200.0" prefWidth="100.0" AnchorPane.leftAnchor="250.0" AnchorPane.rightAnchor="250.0">
+               <children>
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
+               </children>
+            </VBox>
+         </children>
+         <VBox.margin>
+            <Insets top="20.0" />
+         </VBox.margin>
+      </AnchorPane>
+      <Button mnemonicParsing="false" text="Start" />
+      <Button mnemonicParsing="false" onAction="#multiplayerScene" text="Back" />
+      <Pane VBox.vgrow="ALWAYS" />
+      <Pane VBox.vgrow="ALWAYS" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/MultiplayerJoin.fxml b/src/main/resources/fxml/MultiplayerJoin.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..e8a48e621d53819dee9b9bf53b9440b4bbd1bb9a
--- /dev/null
+++ b/src/main/resources/fxml/MultiplayerJoin.fxml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?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="50.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MultiplayerJoinController">
+   <children>
+      <Pane maxHeight="1.7976931348623157E308" prefHeight="200.0" prefWidth="200.0" />
+      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="IP Adress:" />
+      <TextField maxWidth="-Infinity" />
+      <Button mnemonicParsing="false" text="Connect" VBox.vgrow="ALWAYS" />
+      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="[Error Message]" />
+      <Pane maxHeight="1.7976931348623157E308" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
+      <Button alignment="CENTER" mnemonicParsing="false" onAction="#multiplayerScene" text="Back" />
+      <Pane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="20.0" VBox.vgrow="ALWAYS" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/Options.fxml b/src/main/resources/fxml/Options.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..79f14cd61fc942bff138bc3a22443bdf8f9ef2a0
--- /dev/null
+++ b/src/main/resources/fxml/Options.fxml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Slider?>
+<?import javafx.scene.layout.HBox?>
+<?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.OptionsController">
+   <children>
+      <HBox alignment="CENTER">
+         <children>
+            <VBox alignment="TOP_CENTER" spacing="10.0">
+               <children>
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Volume:" />
+                  <Slider fx:id="volumeSlider" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" VBox.vgrow="NEVER" />
+               </children>
+            </VBox>
+         </children>
+      </HBox>
+      <Button mnemonicParsing="false" onAction="#creditScene" text="Credits" />
+      <Button mnemonicParsing="false" onAction="#mainMenuScene" text="Back" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/Play.fxml b/src/main/resources/fxml/Play.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..1cdd69e375cc8a700854d3e66b5caa1a8b9d6ad7
--- /dev/null
+++ b/src/main/resources/fxml/Play.fxml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.layout.Pane?>
+<?import javafx.scene.layout.VBox?>
+
+
+<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.PlayController">
+   <children>
+      <Pane VBox.vgrow="ALWAYS" />
+      <Button mnemonicParsing="false" onAction="#localScene" text="Local" />
+      <Button mnemonicParsing="false" onAction="#multiplayerScene" text="Multiplayer" />
+      <Button alignment="CENTER" mnemonicParsing="false" onAction="#mainMenuScene" text="Back" />
+      <Pane VBox.vgrow="ALWAYS" />
+      <Pane VBox.vgrow="ALWAYS" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/SkinSelection.fxml b/src/main/resources/fxml/SkinSelection.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..97773771860f208bdfa49f51c5219c0e89e16ef3
--- /dev/null
+++ b/src/main/resources/fxml/SkinSelection.fxml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ToggleButton?>
+<?import javafx.scene.control.ToggleGroup?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<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.SkinSelectionController">
+   <children>
+      <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="40.0">
+         <children>
+            <ToggleButton contentDisplay="TOP" mnemonicParsing="false" text="Elias">
+               <graphic>
+                  <ImageView fitHeight="700.0" fitWidth="700.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../textures/images/elias.png" />
+                     </image>
+                  </ImageView>
+               </graphic>
+               <toggleGroup>
+                  <ToggleGroup fx:id="selectionButton" />
+               </toggleGroup>
+            </ToggleButton>
+            <ToggleButton contentDisplay="TOP" mnemonicParsing="false" text="Erzan" toggleGroup="$selectionButton">
+               <graphic>
+                  <ImageView fitHeight="700.0" fitWidth="700.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../textures/images/erzan.png" />
+                     </image>
+                  </ImageView>
+               </graphic>
+            </ToggleButton>
+            <ToggleButton contentDisplay="TOP" mnemonicParsing="false" text="Martin" toggleGroup="$selectionButton">
+               <graphic>
+                  <ImageView fitHeight="700.0" fitWidth="700.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../textures/images/martin.png" />
+                     </image>
+                  </ImageView>
+               </graphic>
+            </ToggleButton>
+         </children>
+      </HBox>
+      <Button mnemonicParsing="false" onAction="#gameScene" text="Start" />
+      <Button mnemonicParsing="false" onAction="#back" text="Back" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/Statistics.fxml b/src/main/resources/fxml/Statistics.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..cb429d7b51d3d377a00e0495feee430c61cd7998
--- /dev/null
+++ b/src/main/resources/fxml/Statistics.fxml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.chart.PieChart?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.layout.HBox?>
+<?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">
+   <children>
+      <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="30.0">
+         <children>
+            <VBox alignment="CENTER_RIGHT" prefHeight="200.0" prefWidth="100.0" spacing="10.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Kills:" />
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Deaths:" />
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Blocks Destroyed:" />
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Games won:" />
+                  <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Games lost:" />
+                  <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">
+               <children>
+                  <Text fx:id="kills" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
+                  <Text fx:id="deaths" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
+                  <Text fx:id="blocks" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
+                  <Text fx:id="gamesWon" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
+                  <Text fx:id="gamesLost" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
+                  <Text fx:id="gameTime" strokeType="OUTSIDE" strokeWidth="0.0" text="Text" />
+               </children>
+               <HBox.margin>
+                  <Insets />
+               </HBox.margin>
+            </VBox>
+            <VBox prefHeight="200.0" prefWidth="100.0">
+               <children>
+                  <PieChart fx:id="kd" />
+                  <PieChart fx:id="wl" />
+               </children>
+            </VBox>
+         </children>
+      </HBox>
+      <Button mnemonicParsing="false" onAction="#mainMenuScene" text="Back" />
+   </children>
+</VBox>
diff --git a/src/main/resources/sound/music/cocBackgroundMusicTest.mp3 b/src/main/resources/sound/music/cocBackgroundMusicTest.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..e916ecb6c0b6487e9bcb8ca6c3d54f6259eac9dc
Binary files /dev/null and b/src/main/resources/sound/music/cocBackgroundMusicTest.mp3 differ
diff --git a/src/main/resources/sound/music/spongeBob.mp3 b/src/main/resources/sound/music/spongeBob.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..cd919cc16ea0c103c0cc1c095f4a19ce5c88960c
Binary files /dev/null and b/src/main/resources/sound/music/spongeBob.mp3 differ
diff --git a/src/main/resources/sound/music/stadiumRave.mp3 b/src/main/resources/sound/music/stadiumRave.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..990274fd88b95bfc5fe584184f838cbc54c2dbdc
Binary files /dev/null and b/src/main/resources/sound/music/stadiumRave.mp3 differ
diff --git a/src/main/resources/sound/music/wii.mp3 b/src/main/resources/sound/music/wii.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..8b471420a2a4fbb8ff28b6ff2f8cfee463670097
Binary files /dev/null and b/src/main/resources/sound/music/wii.mp3 differ
diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..bb2a6b5c6f0ed83f68a407a24e34124a8caec3fe
--- /dev/null
+++ b/src/main/resources/styles/style.css
@@ -0,0 +1,65 @@
+* {
+    -fx-dark-brown: #3c2014;
+    -fx-brown: #956233;
+}
+
+.root {
+    -fx-font-family: "Starship Shadow";
+    -fx-text-fill: -fx-brown;
+    -fx-font-size: 50;
+    -fx-background-color: black;
+}
+
+#mainMenu{
+    -fx-background-image: url("../textures/images/background.png");
+    -fx-background-size: cover;
+}
+
+#gameTitle {
+    -fx-font-size: 100;
+}
+
+.button {
+    -fx-text-fill: -fx-brown;
+    -fx-background-color: none;
+    -fx-skin: "de.hdm_stuttgart.battlearena.Controller.ButtonTransition";
+}
+
+.accordion {
+    -fx-font-size: 30;
+}
+
+/* https://dx.dragan.ba/javafx-radiobutton-custom-css/ */
+.radio-button .radio {
+    -fx-border-width: 1px;
+    -fx-border-color: -fx-dark-brown;
+    -fx-background-color: none;
+    -fx-background-image: null;
+    -fx-border-radius: 15px;
+    -fx-padding: 3px;
+}
+
+.radio-button .dot {
+    -fx-padding: 8px;
+}
+
+.radio-button:selected .dot {
+    -fx-background-color: -fx-dark-brown;
+    -fx-background-insets: 0;
+}
+
+.slider .track {
+     -fx-background-color: rgba(0, 0, 0, 0.5);
+    -fx-pref-height: 0.2em;
+ }
+
+.slider .thumb {
+    -fx-pref-height: 0.6em;
+    -fx-pref-width: 0.4em;
+    -fx-background-color: -fx-brown;
+}
+
+.toggle-button {
+    -fx-skin: "de.hdm_stuttgart.battlearena.Controller.ToggleButtonTransition";
+    -fx-background-color: none;
+}
diff --git a/src/main/resources/textures/images/background.png b/src/main/resources/textures/images/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..67ec5faee876e21cc496b5a4a265deed0a14a7cf
Binary files /dev/null and b/src/main/resources/textures/images/background.png differ
diff --git a/src/main/resources/textures/images/dont_delete_or_ui_will_break.png b/src/main/resources/textures/images/dont_delete_or_ui_will_break.png
new file mode 100644
index 0000000000000000000000000000000000000000..271b72c9c2ea827a6a7b74b5612f4eba34b9253d
Binary files /dev/null and b/src/main/resources/textures/images/dont_delete_or_ui_will_break.png differ
diff --git a/src/main/resources/textures/images/elias.png b/src/main/resources/textures/images/elias.png
new file mode 100644
index 0000000000000000000000000000000000000000..92a45fea76f21bc5eadeef287d5126c8a1278ef7
Binary files /dev/null and b/src/main/resources/textures/images/elias.png differ
diff --git a/src/main/resources/textures/images/erzan.png b/src/main/resources/textures/images/erzan.png
new file mode 100644
index 0000000000000000000000000000000000000000..2101d8665fa6cfe21d1eb1d94a4da796034f71c9
Binary files /dev/null and b/src/main/resources/textures/images/erzan.png differ
diff --git a/src/main/resources/textures/images/gear_with_shadow.png b/src/main/resources/textures/images/gear_with_shadow.png
new file mode 100644
index 0000000000000000000000000000000000000000..7dad227dd915ca1907589a15b55cecd734d03cb9
Binary files /dev/null and b/src/main/resources/textures/images/gear_with_shadow.png differ
diff --git a/src/main/resources/textures/images/martin.png b/src/main/resources/textures/images/martin.png
new file mode 100644
index 0000000000000000000000000000000000000000..fdaa4de0ea064ae8da30cc1a1e97799db9cb20aa
Binary files /dev/null and b/src/main/resources/textures/images/martin.png differ
diff --git a/src/main/resources/textures/images/rusty_metal.png b/src/main/resources/textures/images/rusty_metal.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b2ff5687299d78376613202e79447537f36ec9e
Binary files /dev/null and b/src/main/resources/textures/images/rusty_metal.png differ
diff --git a/src/main/resources/textures/images/vintage_paper_with_drawings.png b/src/main/resources/textures/images/vintage_paper_with_drawings.png
new file mode 100644
index 0000000000000000000000000000000000000000..862a0ac453b013ad66807f109c987c1c85dbaae9
Binary files /dev/null and b/src/main/resources/textures/images/vintage_paper_with_drawings.png differ
diff --git a/src/main/resources/videos/allMyFellas.mp4 b/src/main/resources/videos/allMyFellas.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..4234d4da1c07a7e775bced2e4e44c2329c8be972
Binary files /dev/null and b/src/main/resources/videos/allMyFellas.mp4 differ
diff --git a/src/main/resources/videos/bobama.mp4 b/src/main/resources/videos/bobama.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..2052b4d842a398ac1788025ed579c5054fdad680
Binary files /dev/null and b/src/main/resources/videos/bobama.mp4 differ
diff --git a/src/main/resources/videos/credits.mp4 b/src/main/resources/videos/credits.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..310acc2c75039d7bdad7f3d642e2d0e828573811
Binary files /dev/null and b/src/main/resources/videos/credits.mp4 differ
diff --git a/src/main/resources/videos/gameboy.mp4 b/src/main/resources/videos/gameboy.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..91a1eaa78366adbb3686a07594417fd9c8832126
Binary files /dev/null and b/src/main/resources/videos/gameboy.mp4 differ
diff --git a/src/main/resources/videos/gamecube.mp4 b/src/main/resources/videos/gamecube.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..135416e7b63fc25ed1e3e2b744c6d14a78692b99
Binary files /dev/null and b/src/main/resources/videos/gamecube.mp4 differ
diff --git a/src/main/resources/videos/lifeCouldBeMonke.mp4 b/src/main/resources/videos/lifeCouldBeMonke.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..67a0106470b6e00d968f9930b5081d517545b3e4
Binary files /dev/null and b/src/main/resources/videos/lifeCouldBeMonke.mp4 differ
diff --git a/src/main/resources/videos/monke.mp4 b/src/main/resources/videos/monke.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..c6d5f3c2e7f390276d22b26e46f462bb1e281d98
Binary files /dev/null and b/src/main/resources/videos/monke.mp4 differ
diff --git a/src/main/resources/videos/pepe.mp4 b/src/main/resources/videos/pepe.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..51a5f0763924b4c623ac2b198d50b272b4758b15
Binary files /dev/null and b/src/main/resources/videos/pepe.mp4 differ
diff --git a/src/main/resources/videos/russianKid.mp4 b/src/main/resources/videos/russianKid.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..08a7fe2015e28dc08e1ca6fbe907e46f691cec21
Binary files /dev/null and b/src/main/resources/videos/russianKid.mp4 differ
diff --git a/src/main/resources/videos/sony.mp4 b/src/main/resources/videos/sony.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..9d96aebfc39a033d379d613070c97e6122f8a175
Binary files /dev/null and b/src/main/resources/videos/sony.mp4 differ