diff --git a/overcooked_simulator/game_content/layouts/test1.layout b/overcooked_simulator/game_content/layouts/test1.layout
new file mode 100644
index 0000000000000000000000000000000000000000..8ccd0a1152692fd1c9a0a911b0bb677bab98cb95
--- /dev/null
+++ b/overcooked_simulator/game_content/layouts/test1.layout
@@ -0,0 +1 @@
+____A___P
\ No newline at end of file
diff --git a/overcooked_simulator/game_content/layouts/test2.layout b/overcooked_simulator/game_content/layouts/test2.layout
new file mode 100644
index 0000000000000000000000000000000000000000..8cfae98af3e7748e2df2dcdaae2ffffbe8c4a074
--- /dev/null
+++ b/overcooked_simulator/game_content/layouts/test2.layout
@@ -0,0 +1,9 @@
+_
+_
+_
+A
+_
+_
+_
+_
+P
\ No newline at end of file
diff --git a/overcooked_simulator/game_content/layouts/test3.layout b/overcooked_simulator/game_content/layouts/test3.layout
new file mode 100644
index 0000000000000000000000000000000000000000..8847c681b18500df23abe068dac76fb4dfbdd6d2
--- /dev/null
+++ b/overcooked_simulator/game_content/layouts/test3.layout
@@ -0,0 +1,4 @@
+___
+_A_
+___
+__P
\ No newline at end of file
diff --git a/overcooked_simulator/game_content/layouts/test4.layout b/overcooked_simulator/game_content/layouts/test4.layout
new file mode 100644
index 0000000000000000000000000000000000000000..09d7551fa64358eb61a97d4c562617dca82b9655
--- /dev/null
+++ b/overcooked_simulator/game_content/layouts/test4.layout
@@ -0,0 +1,3 @@
+____
+_A__
+___P
\ No newline at end of file
diff --git a/overcooked_simulator/game_content/layouts/basic.layout b/overcooked_simulator/game_content/layouts_backup/basic.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/basic.layout
rename to overcooked_simulator/game_content/layouts_backup/basic.layout
diff --git a/overcooked_simulator/game_content/layouts/empty.layout b/overcooked_simulator/game_content/layouts_backup/empty.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/empty.layout
rename to overcooked_simulator/game_content/layouts_backup/empty.layout
diff --git a/overcooked_simulator/game_content/layouts/godot_test_layout.layout b/overcooked_simulator/game_content/layouts_backup/godot_test_layout.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/godot_test_layout.layout
rename to overcooked_simulator/game_content/layouts_backup/godot_test_layout.layout
diff --git a/overcooked_simulator/game_content/layouts/large.layout b/overcooked_simulator/game_content/layouts_backup/large.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/large.layout
rename to overcooked_simulator/game_content/layouts_backup/large.layout
diff --git a/overcooked_simulator/game_content/layouts/large_t.layout b/overcooked_simulator/game_content/layouts_backup/large_t.layout
similarity index 97%
rename from overcooked_simulator/game_content/layouts/large_t.layout
rename to overcooked_simulator/game_content/layouts_backup/large_t.layout
index 304e6f7746f4e0c7510f69395b55c7f691de84f6..de56d63203bcd0740d8663c1a945025704afecf9 100644
--- a/overcooked_simulator/game_content/layouts/large_t.layout
+++ b/overcooked_simulator/game_content/layouts_backup/large_t.layout
@@ -4,7 +4,7 @@
 #____________________________________#
 #____________________________________#
 #____________________________________K
-W____________________________________I
+$____________________________________I
 #____________________________________#
 #____________________________________#
 #__A_____A___________________________D
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-1-far-apart.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/1-1-far-apart.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/1-1-far-apart.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/1-1-far-apart.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-2-pedestrians.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/1-2-pedestrians.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/1-2-pedestrians.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/1-2-pedestrians.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-3-moving-counters.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/1-3-moving-counters.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/1-3-moving-counters.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/1-3-moving-counters.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-4-bottleneck.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/1-4-bottleneck.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/1-4-bottleneck.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/1-4-bottleneck.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-5-circle.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/1-5-circle.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/1-5-circle.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/1-5-circle.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-6-raising-platforms.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/1-6-raising-platforms.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/1-6-raising-platforms.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/1-6-raising-platforms.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-1-moving-trucks.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/2-1-moving-trucks.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/2-1-moving-trucks.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/2-1-moving-trucks.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-2-rats.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/2-2-rats.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/2-2-rats.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/2-2-rats.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-3-separated-conveyors.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/2-3-separated-conveyors.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/2-3-separated-conveyors.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/2-3-separated-conveyors.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-4-separated-2.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/2-4-separated-2.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/2-4-separated-2.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/2-4-separated-2.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-1-ice.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/3-1-ice.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/3-1-ice.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/3-1-ice.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-2-separated-moving-counters.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/3-2-separated-moving-counters.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/3-2-separated-moving-counters.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/3-2-separated-moving-counters.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-3-moving-trucks-2.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/3-3-moving-trucks-2.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/3-3-moving-trucks-2.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/3-3-moving-trucks-2.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-4-ice-moving-platforms.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/3-4-ice-moving-platforms.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/3-4-ice-moving-platforms.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/3-4-ice-moving-platforms.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-1-moving-counters.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/4-1-moving-counters.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/4-1-moving-counters.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/4-1-moving-counters.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-2-dark.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/4-2-dark.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/4-2-dark.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/4-2-dark.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-3-moving-counters.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/4-3-moving-counters.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/4-3-moving-counters.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/4-3-moving-counters.layout
diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-4-moving-counters-separated.layout b/overcooked_simulator/game_content/layouts_backup/overcooked-1/4-4-moving-counters-separated.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/overcooked-1/4-4-moving-counters-separated.layout
rename to overcooked_simulator/game_content/layouts_backup/overcooked-1/4-4-moving-counters-separated.layout
diff --git a/overcooked_simulator/game_content/layouts/rot_test.layout b/overcooked_simulator/game_content/layouts_backup/rot_test.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/rot_test.layout
rename to overcooked_simulator/game_content/layouts_backup/rot_test.layout
diff --git a/overcooked_simulator/game_content/layouts/split.layout b/overcooked_simulator/game_content/layouts_backup/split.layout
similarity index 100%
rename from overcooked_simulator/game_content/layouts/split.layout
rename to overcooked_simulator/game_content/layouts_backup/split.layout
diff --git a/overcooked_simulator/gui_2d_vis/overcooked_gui.py b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
index a537861748079b3b6aaefc828b4b7942d41483ba..3d9562357e6f209e462d7a247111900ff7f10a4d 100644
--- a/overcooked_simulator/gui_2d_vis/overcooked_gui.py
+++ b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
@@ -1,13 +1,11 @@
 import argparse
 import dataclasses
-import glob
 import json
 import logging
 import random
 import sys
 import uuid
 from enum import Enum
-from pathlib import Path
 from subprocess import Popen
 
 import numpy as np
@@ -40,6 +38,7 @@ CONNECT_WITH_STUDY_SERVER = False
 class MenuStates(Enum):
     Start = "Start"
     Game = "Game"
+    GameTransition = "GameTransition"
     End = "End"
 
 
@@ -155,49 +154,10 @@ class PyGameGUI:
 
         self.sub_processes = []
 
-    def get_window_sizes_from_state(self, state: dict):
-        self.kitchen_width = state["kitchen"]["width"]
-        self.kitchen_height = state["kitchen"]["height"]
-        self.kitchen_aspect_ratio = self.kitchen_height / self.kitchen_width
-        game_width = self.visualization_config["GameWindow"]["min_width"] - (
-            2 * self.screen_margin
+        self.layout_file_paths = sorted(
+            (ROOT_DIR / "game_content" / "layouts").rglob("*.layout")
         )
-        game_height = self.visualization_config["GameWindow"]["min_height"] - (
-            2 * self.screen_margin
-        )
-
-        if self.kitchen_width > game_width:
-            self.game_height = game_width * self.kitchen_aspect_ratio
-            self.grid_size = game_width / self.kitchen_width
-        else:
-            self.game_width = game_height / self.kitchen_aspect_ratio
-            self.grid_size = game_width / self.kitchen_width
-
-        self.window_width_windowed = self.min_width
-        self.window_height_windowed = self.min_height
-
-    def recalc_game_size(self):
-        log.debug("Resizing game screen")
-        max_width = self.window_width - (2 * self.screen_margin)
-        max_height = self.window_height - (2 * self.screen_margin)
-        if max_width < max_height:
-            self.game_width = max_width
-            self.game_height = max_width * self.kitchen_aspect_ratio
-            self.grid_size = int(self.game_height / self.kitchen_height)
-
-        else:
-            self.game_height = max_height
-            self.game_width = max_height / self.kitchen_aspect_ratio
-            self.grid_size = int(self.game_width / self.kitchen_width)
-
-        self.game_width = max(self.game_width, 100)
-        self.game_height = max(self.game_height, 100)
-        self.grid_size = max(self.grid_size, 1)
-
-        residual_x = self.game_width - (self.kitchen_width * self.grid_size)
-        residual_y = self.game_height - (self.kitchen_height * self.grid_size)
-        self.game_width -= residual_x
-        self.game_height -= residual_y
+        self.current_layout_idx = 0
 
     def setup_player_keys(self, n=1, disjunct=False):
         if n:
@@ -286,6 +246,43 @@ class PyGameGUI:
                 if event.type == pygame.KEYDOWN:
                     key_set.next_player()
 
+    def set_game_size(self):
+        max_width = self.window_width - (2 * self.screen_margin)
+        max_height = self.window_height - (2 * self.screen_margin)
+
+        self.kitchen_aspect_ratio = self.kitchen_height / self.kitchen_width
+        #
+        # if max_height > max_width:
+        #     self.game_height = max_width * self.kitchen_aspect_ratio
+        # else:
+        #     self.game_width = max_height / self.kitchen_aspect_ratio
+
+        if self.kitchen_width > self.kitchen_height:
+            self.game_width = max_width
+            self.game_height = self.game_width * self.kitchen_aspect_ratio
+
+            if self.game_height > max_height:
+                self.game_height = max_height
+                self.game_width = self.game_height / self.kitchen_aspect_ratio
+        else:
+            self.game_height = max_height
+            self.game_width = self.game_height / self.kitchen_aspect_ratio
+
+            if self.game_width > max_width:
+                self.game_width = max_width
+                self.game_height = self.game_width * self.kitchen_aspect_ratio
+
+        self.grid_size = int(self.game_width / self.kitchen_width)
+
+        self.game_width = max(self.game_width, 100)
+        self.game_height = max(self.game_height, 100)
+        self.grid_size = max(self.grid_size, 1)
+
+        residual_x = self.game_width - (self.kitchen_width * self.grid_size)
+        residual_y = self.game_height - (self.kitchen_height * self.grid_size)
+        self.game_width -= residual_x
+        self.game_height -= residual_y
+
     def init_ui_elements(self):
         self.manager = pygame_gui.UIManager((self.window_width, self.window_height))
         self.manager.get_theme().load_theme(ROOT_DIR / "gui_2d_vis" / "gui_theme.json")
@@ -298,7 +295,6 @@ class PyGameGUI:
             manager=self.manager,
             anchors={"center": "center"},
         )
-        self.start_button.can_hover()
 
         quit_rect = pygame.Rect(
             (
@@ -315,7 +311,6 @@ class PyGameGUI:
             object_id="#quit_button",
             anchors={"right": "right", "top": "top"},
         )
-        self.quit_button.can_hover()
 
         fullscreen_button_rect = pygame.Rect(
             (0, 0), (self.buttons_width * 0.7, self.buttons_height)
@@ -328,7 +323,6 @@ class PyGameGUI:
             object_id="#fullscreen_button",
             anchors={"right": "right", "top": "top"},
         )
-        self.fullscreen_button.can_hover()
 
         reset_button_rect = pygame.Rect((0, 0), (self.screen_margin * 0.75, 50))
         reset_button_rect.topright = (0, 2 * self.buttons_height)
@@ -339,7 +333,6 @@ class PyGameGUI:
             object_id="#reset_button",
             anchors={"right": "right", "top": "top"},
         )
-        self.reset_button.can_hover()
 
         self.finished_button = pygame_gui.elements.UIButton(
             relative_rect=pygame.Rect(
@@ -352,7 +345,6 @@ class PyGameGUI:
             text="Finish round",
             manager=self.manager,
         )
-        self.finished_button.can_hover()
 
         self.back_button = pygame_gui.elements.UIButton(
             relative_rect=pygame.Rect(
@@ -365,42 +357,17 @@ class PyGameGUI:
             text="Back to menu",
             manager=self.manager,
         )
-        self.back_button.can_hover()
 
         self.score_label = pygame_gui.elements.UILabel(
             text=f"Score: _",
             relative_rect=pygame.Rect(
-                (
-                    (0),
-                    self.window_height - self.screen_margin,
-                ),
+                (0, self.window_height - self.screen_margin),
                 (self.screen_margin * 2, self.screen_margin),
             ),
             manager=self.manager,
             object_id="#score_label",
         )
 
-        self.layout_file_paths = {
-            str(p.name): p
-            for p in [Path(f) for f in sorted((ROOT_DIR / "game_content" / "layouts").rglob("*.layout"))]
-        }
-
-        assert len(self.layout_file_paths) != 0, "No layout files."
-        dropdown_width, dropdown_height = 200, 40
-        self.layout_selection = pygame_gui.elements.UIDropDownMenu(
-            relative_rect=pygame.Rect(
-                (
-                    0,
-                    0,
-                ),
-                (dropdown_width, dropdown_height),
-            ),
-            manager=self.manager,
-            options_list=list(self.layout_file_paths.keys()),
-            starting_option="basic.layout"
-            if "basic.layout" in self.layout_file_paths
-            else random.choice(list(self.layout_file_paths.keys())),
-        )
         self.timer_label = pygame_gui.elements.UILabel(
             text="GAMETIME",
             relative_rect=pygame.Rect(
@@ -461,34 +428,28 @@ class PyGameGUI:
             anchors={"centerx": "centerx", "centery": "centery"},
             object_id="#split_players_button",
         )
-        if self.multiple_keysets:
-            self.split_players_button.show()
-        else:
-            self.split_players_button.hide()
 
-        xbox_controller_button_rect = pygame.Rect((0, 0), (190, 50))
-        xbox_controller_button_rect.right = 0
-        self.xbox_controller_button = pygame_gui.elements.UIButton(
-            relative_rect=xbox_controller_button_rect,
+        next_game_button_rect = pygame.Rect((0, 0), (190, 50))
+        next_game_button_rect.centerx = self.buttons_width // 2 + 100
+        self.next_game_button = pygame_gui.elements.UIButton(
+            relative_rect=next_game_button_rect,
             manager=self.manager,
-            container=self.player_selection_container,
-            text="Controller?",
-            anchors={"right": "right", "centery": "centery"},
-            object_id="#controller_button",
+            text="Next game",
+            anchors={"centerx": "centerx", "centery": "centery"},
+            object_id="#split_players_button",
         )
 
-        ########
-        #
-        # panel = pygame_gui.elements.UIPanel(
-        #     pygame.Rect((50, 50), (700, 500)),
-        #     manager=manager,
-        #     anchors={
-        #         "left": "left",
-        #         "right": "right",
-        #         "top": "top",
-        #         "bottom": "bottom",
-        #     },
-        # )
+        retry_button_rect = pygame.Rect((0, 0), (190, 50))
+        retry_button_rect.centerx = self.buttons_width // 2 - 100
+        self.retry_button = pygame_gui.elements.UIButton(
+            relative_rect=retry_button_rect,
+            manager=self.manager,
+            text="Retry last game",
+            anchors={"centerx": "centerx", "centery": "centery"},
+            object_id="#split_players_button",
+        )
+
+        ###################
 
         players_container_rect = pygame.Rect(
             (0, 0),
@@ -552,7 +513,6 @@ class PyGameGUI:
             container=self.player_number_container,
             anchors={"right": "right", "centery": "centery"},
         )
-        self.add_human_player_button.can_hover()
 
         remove_player_button_rect = pygame.Rect((0, 0), (size, size))
         remove_player_button_rect.left = 0
@@ -564,7 +524,6 @@ class PyGameGUI:
             container=self.player_number_container,
             anchors={"left": "left", "centery": "centery"},
         )
-        self.remove_human_button.can_hover()
 
         add_bot_button_rect = pygame.Rect((0, 0), (size, size))
         add_bot_button_rect.right = 0
@@ -576,7 +535,6 @@ class PyGameGUI:
             container=self.bot_number_container,
             anchors={"right": "right", "centery": "centery"},
         )
-        self.add_bot_button.can_hover()
 
         remove_bot_button_rect = pygame.Rect((0, 0), (size, size))
         remove_bot_button_rect.left = 0
@@ -588,7 +546,6 @@ class PyGameGUI:
             container=self.bot_number_container,
             anchors={"left": "left", "centery": "centery"},
         )
-        self.remove_bot_button.can_hover()
 
     def draw(self, state):
         """Main visualization function.
@@ -671,7 +628,7 @@ class PyGameGUI:
                 self.window_height,
             ),
             flags=flags,
-            display=0,
+            # display=0,
         )
 
     def reset_window_size(self):
@@ -689,12 +646,15 @@ class PyGameGUI:
                 self.reset_button.hide()
                 self.score_label.hide()
                 self.finished_button.hide()
-                self.layout_selection.show()
                 self.timer_label.hide()
                 self.orders_label.hide()
                 self.conclusion_label.hide()
 
                 self.player_selection_container.show()
+
+                self.next_game_button.hide()
+                self.retry_button.hide()
+
             case MenuStates.Game:
                 self.start_button.hide()
                 self.back_button.hide()
@@ -702,26 +662,45 @@ class PyGameGUI:
                 self.reset_button.show()
                 self.score_label.show()
                 self.finished_button.show()
-                self.layout_selection.hide()
                 self.timer_label.show()
                 self.orders_label.show()
                 self.conclusion_label.hide()
 
                 self.player_selection_container.hide()
 
+                self.next_game_button.hide()
+                self.retry_button.hide()
+
+            case MenuStates.GameTransition:
+                self.start_button.hide()
+                self.back_button.hide()
+                self.score_label.hide()
+                self.reset_button.hide()
+                self.finished_button.hide()
+                self.timer_label.hide()
+                self.orders_label.hide()
+                self.conclusion_label.hide()
+
+                self.player_selection_container.hide()
+
+                self.next_game_button.show()
+                self.retry_button.show()
+
             case MenuStates.End:
                 self.start_button.hide()
                 self.back_button.show()
                 self.score_label.hide()
                 self.reset_button.hide()
                 self.finished_button.hide()
-                self.layout_selection.hide()
                 self.timer_label.hide()
                 self.orders_label.hide()
                 self.conclusion_label.show()
 
                 self.player_selection_container.hide()
 
+                self.next_game_button.hide()
+                self.retry_button.hide()
+
     def update_score_label(self, state):
         score = state["score"]
         self.score_label.set_text(f"Score {score}")
@@ -747,7 +726,7 @@ class PyGameGUI:
             environment_config_path = (
                 ROOT_DIR / "game_content" / "environment_config.yaml"
             )
-            layout_path = self.layout_file_paths[self.layout_selection.selected_option]
+            layout_path = self.layout_file_paths[self.current_layout_idx]
             item_info_path = ROOT_DIR / "game_content" / "item_info.yaml"
             with open(item_info_path, "r") as file:
                 item_info = file.read()
@@ -859,7 +838,8 @@ class PyGameGUI:
             )
             state = json.loads(websocket.recv())
 
-        self.get_window_sizes_from_state(state)
+        self.kitchen_width = state["kitchen"]["width"]
+        self.kitchen_height = state["kitchen"]["height"]
 
     def start_button_press(self):
         self.menu_state = MenuStates.Game
@@ -880,7 +860,7 @@ class PyGameGUI:
 
         self.setup_environment()
 
-        self.recalc_game_size()
+        self.set_game_size()
         self.set_window_size()
         self.init_ui_elements()
         log.debug("Pressed start button")
@@ -923,7 +903,7 @@ class PyGameGUI:
                     "reason": "finish button pressed",
                 },
             )
-        self.menu_state = MenuStates.End
+        self.menu_state = MenuStates.GameTransition
         self.reset_window_size()
         log.debug("Pressed finished button")
 
@@ -1044,14 +1024,14 @@ class PyGameGUI:
                     if event.type == pygame.QUIT:
                         self.running = False
 
-                    # elif event.type == pygame.VIDEORESIZE:
-                    #     # scrsize = event.size
-                    #     self.window_width_windowed = event.w
-                    #     self.window_height_windowed = event.h
-                    #     self.recalc_game_size()
-                    #     self.set_window_size()
-                    #     self.init_ui_elements()
-                    #     self.manage_button_visibility()
+                    elif event.type == pygame.VIDEORESIZE:
+                        # scrsize = event.size
+                        self.window_width_windowed = event.w
+                        self.window_height_windowed = event.h
+                        self.set_game_size()
+                        self.set_window_size()
+                        self.init_ui_elements()
+                        self.manage_button_visibility()
 
                     if event.type == pygame_gui.UI_BUTTON_PRESSED:
                         match event.ui_element:
@@ -1102,8 +1082,21 @@ class PyGameGUI:
                                 else:
                                     self.player_minimum = 1
 
-                            case self.xbox_controller_button:
-                                print("xbox_controller_button pressed.")
+                            case self.retry_button:
+                                self.start_button_press()
+
+                            case self.next_game_button:
+                                self.current_layout_idx += 1
+                                if self.current_layout_idx == len(
+                                    self.layout_file_paths
+                                ):
+                                    self.current_layout_idx = 0
+                                    self.start_button_press()
+                                else:
+                                    log.debug(
+                                        f"LEVEL: {self.layout_file_paths[self.current_layout_idx]}"
+                                    )
+                                    self.start_button_press()
 
                             case self.fullscreen_button:
                                 self.fullscreen = not self.fullscreen
@@ -1113,7 +1106,7 @@ class PyGameGUI:
                                 else:
                                     self.window_width = self.window_width_windowed
                                     self.window_height = self.window_height_windowed
-                                self.recalc_game_size()
+                                self.set_game_size()
                                 self.set_window_size()
                                 self.init_ui_elements()