diff --git a/.godot/editor/create_recent.Node b/.godot/editor/create_recent.Node
index d284b510afbda703ec4d1285e75af63fba230f7d..dab04a2dcd0382458aae92cb380e91648a93783e 100644
--- a/.godot/editor/create_recent.Node
+++ b/.godot/editor/create_recent.Node
@@ -1,12 +1,11 @@
+Button
+Control
 HBoxContainer
 Node
 Label
-Control
 CanvasLayer
-Button
 Camera2D
 Timer
 Rook
-Button
 ColorRect
 TextureRect
diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg
index 2b5723a5381050cc74769e30d82720dd6faf45b0..7a89050c856e343a7c819d74f4e6c760b6adbc36 100644
--- a/.godot/editor/editor_layout.cfg
+++ b/.godot/editor/editor_layout.cfg
@@ -36,8 +36,8 @@ selected_bottom_panel_item=0
 
 [ScriptEditor]
 
-open_scripts=["res://scripts/game.gd", "res://scripts/ui/game_ui.gd", "res://scripts/King.gd", "res://scripts/Mage.gd", "res://scripts/main/main.gd", "res://scripts/Pawn.gd", "res://scripts/run_data/run_data.gd", "res://scripts/managers/scene_manager.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/Shop.gd", "res://scenes/shop_item.gd", "res://scripts/managers/state_manager.gd"]
-selected_script="res://scripts/run_data/run_data.gd"
+open_scripts=["res://scripts/ui/display_piece_manager.gd", "res://scripts/game.gd", "res://scripts/ui/game_ui.gd", "res://scripts/King.gd", "res://scripts/Mage.gd", "res://scripts/main/main.gd", "res://scripts/Pawn.gd", "res://scripts/run_data/run_data.gd", "res://scripts/managers/scene_manager.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/Shop.gd", "res://scenes/shop_item.gd", "res://scripts/managers/state_manager.gd"]
+selected_script="res://scripts/ui/game_ui.gd"
 open_help=[]
 script_split_offset=70
 list_split_offset=0
diff --git a/.godot/editor/filesystem_update4 b/.godot/editor/filesystem_update4
index d15020a10c363a4558989dc6196b7a4315c4fe0a..4e4e19a502bb79a2bdf6f6715adbde8be5534e8f 100644
--- a/.godot/editor/filesystem_update4
+++ b/.godot/editor/filesystem_update4
@@ -15,3 +15,4 @@ res://scripts/game.gd
 res://scripts/screens/select_piece_screen.gd
 res://scripts/ui/game_ui.gd
 res://scripts/run_data/run_data.gd
+res://scripts/ui/display_piece_manager.gd
diff --git a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg
index 3c5f00d0ad4fdfe3ac9211c1871a753a292ad646..9394ea82647983c5dd7e53dd3525a3e97b879317 100644
--- a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg
+++ b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg
@@ -175,4 +175,4 @@ Anim={
 "zfar": 4000.01,
 "znear": 0.05
 }
-selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9280/@VSplitContainer@9102/@HSplitContainer@9104/@HSplitContainer@9106/@Control@9107/@SubViewportContainer@9108/@SubViewport@9109/UI/GoldDisplay")])
+selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9280/@VSplitContainer@9102/@HSplitContainer@9104/@HSplitContainer@9106/@Control@9107/@SubViewportContainer@9108/@SubViewport@9109/UI/DisplayPieceManager/Button")])
diff --git a/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg b/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg
index 451a6fb8f84bdedcfec579e0391e5f7385cc6278..203d2839954f3b4ce789500c80593908c1c58d2b 100644
--- a/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg
+++ b/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg
@@ -175,4 +175,4 @@ Anim={
 "zfar": 4000.01,
 "znear": 0.05
 }
-selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9280/@VSplitContainer@9102/@HSplitContainer@9104/@HSplitContainer@9106/@Control@9107/@SubViewportContainer@9108/@SubViewport@9109/UI/GoldDisplay")])
+selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9280/@VSplitContainer@9102/@HSplitContainer@9104/@HSplitContainer@9106/@Control@9107/@SubViewportContainer@9108/@SubViewport@9109/UI/DisplayPieceManager/Button")])
diff --git a/.godot/editor/project_metadata.cfg b/.godot/editor/project_metadata.cfg
index dcf5722034d20ff4a3dd739f70f02b7af74a8a07..82a7317312527011005c9142f3baab5c7f591446 100644
--- a/.godot/editor/project_metadata.cfg
+++ b/.godot/editor/project_metadata.cfg
@@ -6,7 +6,7 @@ executable_path="/Applications/Godot.app/Contents/MacOS/Godot"
 [recent_files]
 
 scenes=["res://main.tscn", "res://scenes/Managers/state_manager.tscn", "res://scenes/ui/ui.tscn", "res://scenes/Pawn.tscn", "res://scenes/screens/select_piece_screen.tscn", "res://scenes/Shop.tscn", "res://scenes/game.tscn", "res://scenes/King.tscn"]
-scripts=["res://scripts/managers/state_manager.gd", "res://scripts/ui/game_ui.gd", "res://scripts/Mage.gd", "res://scripts/Pawn.gd", "res://scripts/scene_manager.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/Shop.gd", "res://scripts/run_data/run_data.gd", "res://scripts/King.gd", "res://scripts/game.gd"]
+scripts=["res://scripts/ui/display_piece_manager.gd", "res://scripts/managers/state_manager.gd", "res://scripts/ui/game_ui.gd", "res://scripts/Mage.gd", "res://scripts/Pawn.gd", "res://scripts/scene_manager.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/Shop.gd", "res://scripts/run_data/run_data.gd", "res://scripts/King.gd"]
 
 [dialog_bounds]
 
diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg
index 4a657d0552fdd64c8e3b1d077a7d0fb07db92749..9382e5d229723751253617ecb2dc3750944fe750 100644
--- a/.godot/editor/script_editor_cache.cfg
+++ b/.godot/editor/script_editor_cache.cfg
@@ -45,16 +45,12 @@ state={
 state={
 "bookmarks": PackedInt32Array(),
 "breakpoints": PackedInt32Array(),
-"column": 35,
+"column": 22,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
-"row": 13,
-"scroll_position": 3.0,
-"selection": true,
-"selection_from_column": 35,
-"selection_from_line": 13,
-"selection_to_column": 53,
-"selection_to_line": 13,
+"row": 49,
+"scroll_position": 273.0,
+"selection": false,
 "syntax_highlighter": "GDScript"
 }
 
@@ -151,11 +147,11 @@ state={
 state={
 "bookmarks": PackedInt32Array(),
 "breakpoints": PackedInt32Array(),
-"column": 25,
+"column": 47,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
-"row": 23,
-"scroll_position": 16.0,
+"row": 6,
+"scroll_position": 1.0,
 "selection": false,
 "syntax_highlighter": "GDScript"
 }
@@ -165,10 +161,10 @@ state={
 state={
 "bookmarks": PackedInt32Array(),
 "breakpoints": PackedInt32Array(),
-"column": 21,
+"column": 0,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
-"row": 18,
+"row": 10,
 "scroll_position": 0.0,
 "selection": false,
 "syntax_highlighter": "GDScript"
@@ -187,3 +183,17 @@ state={
 "selection": false,
 "syntax_highlighter": "GDScript"
 }
+
+[res://scripts/ui/display_piece_manager.gd]
+
+state={
+"bookmarks": PackedInt32Array(),
+"breakpoints": PackedInt32Array(),
+"column": 58,
+"folded_lines": Array[int]([]),
+"h_scroll_position": 0,
+"row": 35,
+"scroll_position": 0.0,
+"selection": false,
+"syntax_highlighter": "GDScript"
+}
diff --git a/scenes/ui/ui.tscn b/scenes/ui/ui.tscn
index 24168329337bb3fa38efb6e135a03fb2ab342c99..460c196014fb96172ad5c0053d1f77228507ca41 100644
--- a/scenes/ui/ui.tscn
+++ b/scenes/ui/ui.tscn
@@ -1,15 +1,31 @@
-[gd_scene load_steps=2 format=3 uid="uid://c1vsk5wdtcfd3"]
+[gd_scene load_steps=3 format=3 uid="uid://c1vsk5wdtcfd3"]
 
 [ext_resource type="Script" path="res://scripts/ui/game_ui.gd" id="1_7jylg"]
+[ext_resource type="Script" path="res://scripts/ui/display_piece_manager.gd" id="2_m6jbx"]
 
 [node name="UI" type="CanvasLayer"]
 script = ExtResource("1_7jylg")
 
-[node name="PieceContainer" type="HBoxContainer" parent="."]
+[node name="DisplayPieceManager" type="Control" parent="."]
+layout_mode = 3
+anchors_preset = 0
 offset_left = 50.0
 offset_top = 600.0
 offset_right = 90.0
 offset_bottom = 640.0
+script = ExtResource("2_m6jbx")
+
+[node name="PieceContainer" type="HBoxContainer" parent="DisplayPieceManager"]
+layout_mode = 0
+offset_right = 40.0
+offset_bottom = 40.0
+
+[node name="Button" type="Button" parent="DisplayPieceManager"]
+layout_mode = 0
+offset_left = 75.0
+offset_right = 146.0
+offset_bottom = 64.0
+text = "Confirm"
 
 [node name="GoldDisplay" type="Label" parent="."]
 offset_left = 50.0
diff --git a/scripts/game.gd b/scripts/game.gd
index c42220987666d03942ebbec3daf9bcb22fb94d9c..0fdbd9e84118e221fd94b42ec043dbfc38090200 100644
--- a/scripts/game.gd
+++ b/scripts/game.gd
@@ -71,44 +71,44 @@ func _ready() -> void:
 	
 	
 	#hard-coded setup of pieces
-	board[0][7] = preload("res://scenes/Rook.tscn").instantiate()
-	board[0][7]._my_init(true, Vector2(0, 7))
-
-	board[1][6] = preload("res://scenes/Wizard.tscn").instantiate()
-	board[1][6]._my_init(true, Vector2(1, 6))
-	board[1][7] = preload("res://scenes/Bishop.tscn").instantiate()
-	board[1][7]._my_init(true, Vector2(1, 7))
-	board[2][7] = preload("res://scenes/King.tscn").instantiate()
-	board[2][7]._my_init(true, Vector2(2, 7))
-	board[3][6] = preload("res://scenes/Queen.tscn").instantiate()
-	board[3][6]._my_init(true, Vector2(3, 6))
-	board[4][2] = preload("res://scenes/Pawn.tscn").instantiate()
-	board[4][2]._my_init(true, Vector2(4, 2))
-	board[7][2] = preload("res://scenes/Pawn.tscn").instantiate()
-	board[7][2]._my_init(true, Vector2(7, 2))
-	board[5][7] = preload("res://scenes/Knight.tscn").instantiate()
-	board[5][7]._my_init(true, Vector2(5, 7))
-	board[6][7] = preload("res://scenes/Assassin.tscn").instantiate()
-	board[6][7]._my_init(true, Vector2(6, 7))
-	board[7][6] = preload("res://scenes/Mage.tscn").instantiate()
-	board[7][6]._my_init(true, Vector2(7, 6))
-	board[7][7] = preload("res://scenes/Rook.tscn").instantiate()
-	board[7][7]._my_init(true, Vector2(7, 7))
-
-	board[0][4] = preload("res://scenes/Rook.tscn").instantiate()
-	board[0][4]._my_init(false, Vector2(0, 4))
-	board[1][5] = preload("res://scenes/Bishop.tscn").instantiate()
-	board[1][5]._my_init(false, Vector2(1, 5))
-	board[3][2] = preload("res://scenes/Queen.tscn").instantiate()
-	board[3][2]._my_init(false, Vector2(3, 2))
-	board[4][4] = preload("res://scenes/Assassin.tscn").instantiate()
-	board[4][4]._my_init(false, Vector2(4, 4))
-	board[3][4] = preload("res://scenes/Pawn.tscn").instantiate()
-	board[3][4]._my_init(false, Vector2(3, 4))
-	board[4][3] = preload("res://scenes/Mage.tscn").instantiate()
-	board[4][3]._my_init(false, Vector2(4, 3))
-	board[7][5] = preload("res://scenes/Rook.tscn").instantiate()
-	board[7][5]._my_init(false, Vector2(7, 5))
+	#board[0][7] = preload("res://scenes/Rook.tscn").instantiate()
+	#board[0][7]._my_init(true, Vector2(0, 7))
+#
+	#board[1][6] = preload("res://scenes/Wizard.tscn").instantiate()
+	#board[1][6]._my_init(true, Vector2(1, 6))
+	#board[1][7] = preload("res://scenes/Bishop.tscn").instantiate()
+	#board[1][7]._my_init(true, Vector2(1, 7))
+	#board[2][7] = preload("res://scenes/King.tscn").instantiate()
+	#board[2][7]._my_init(true, Vector2(2, 7))
+	#board[3][6] = preload("res://scenes/Queen.tscn").instantiate()
+	#board[3][6]._my_init(true, Vector2(3, 6))
+	#board[4][2] = preload("res://scenes/Pawn.tscn").instantiate()
+	#board[4][2]._my_init(true, Vector2(4, 2))
+	#board[7][2] = preload("res://scenes/Pawn.tscn").instantiate()
+	#board[7][2]._my_init(true, Vector2(7, 2))
+	#board[5][7] = preload("res://scenes/Knight.tscn").instantiate()
+	#board[5][7]._my_init(true, Vector2(5, 7))
+	#board[6][7] = preload("res://scenes/Assassin.tscn").instantiate()
+	#board[6][7]._my_init(true, Vector2(6, 7))
+	#board[7][6] = preload("res://scenes/Mage.tscn").instantiate()
+	#board[7][6]._my_init(true, Vector2(7, 6))
+	#board[7][7] = preload("res://scenes/Rook.tscn").instantiate()
+	#board[7][7]._my_init(true, Vector2(7, 7))
+#
+	#board[0][4] = preload("res://scenes/Rook.tscn").instantiate()
+	#board[0][4]._my_init(false, Vector2(0, 4))
+	#board[1][5] = preload("res://scenes/Bishop.tscn").instantiate()
+	#board[1][5]._my_init(false, Vector2(1, 5))
+	#board[3][2] = preload("res://scenes/Queen.tscn").instantiate()
+	#board[3][2]._my_init(false, Vector2(3, 2))
+	#board[4][4] = preload("res://scenes/Assassin.tscn").instantiate()
+	#board[4][4]._my_init(false, Vector2(4, 4))
+	#board[3][4] = preload("res://scenes/Pawn.tscn").instantiate()
+	#board[3][4]._my_init(false, Vector2(3, 4))
+	#board[4][3] = preload("res://scenes/Mage.tscn").instantiate()
+	#board[4][3]._my_init(false, Vector2(4, 3))
+	#board[7][5] = preload("res://scenes/Rook.tscn").instantiate()
+	#board[7][5]._my_init(false, Vector2(7, 5))
 	
 	#potential 'holes', not quite working yet
 	#board[3][3] = '/'
diff --git a/scripts/ui/display_piece_manager.gd b/scripts/ui/display_piece_manager.gd
new file mode 100644
index 0000000000000000000000000000000000000000..98f088aba69eed376ddb9bf5c5c49d9984e41bf5
--- /dev/null
+++ b/scripts/ui/display_piece_manager.gd
@@ -0,0 +1,41 @@
+extends Control
+
+@onready var piece_container: HBoxContainer = $PieceContainer
+
+func refresh_pieces_display() -> void:
+	for child in piece_container.get_children():
+		child.queue_free()
+		
+	var available_pieces = RunData.get_pieces()
+	
+	for piece in available_pieces:
+		var piece_button = create_piece_button(piece)
+		piece_container.add_child(piece_button)
+
+# Dynamically creates buttons
+func create_piece_button(piece_name: String) -> TextureButton:
+	var button = TextureButton.new()
+	
+	var texture = load("res://Assets/Resized Chess Piece Assets/White_" + piece_name.to_lower() + ".png")
+	if texture:
+		button.texture_normal = texture
+	
+	# button properties 
+	button.custom_minimum_size = Vector2(64, 64)
+	button.stretch_mode = TextureButton.STRETCH_KEEP_ASPECT_CENTERED
+	button.tooltip_text = piece_name.capitalize()
+	
+	# Hover effects to indicate users
+	button.mouse_entered.connect(func(): button.modulate = Color(1.2, 1.2, 1.2))
+	button.mouse_exited.connect(func(): button.modulate = Color(1, 1, 1))
+	
+	button.pressed.connect(func(): _on_piece_button_pressed(piece_name))
+	
+	return button
+
+func _on_piece_button_pressed(piece_name: String) -> void:
+	for button in piece_container.get_children():
+		if button.tooltip_text.to_lower() == piece_name:
+			button.modulate = Color(0.8, 0.8, 1.2)
+		else:
+			button.modulate = Color(1, 1, 1)
diff --git a/scripts/ui/game_ui.gd b/scripts/ui/game_ui.gd
index 0302950e1e92c1e67b7ac27d0e86fb73c0f1d95b..ad6f799b38f37a7d2ad94cdb709b64da51c82641 100644
--- a/scripts/ui/game_ui.gd
+++ b/scripts/ui/game_ui.gd
@@ -3,55 +3,15 @@ class_name GameUI
 
 @onready var state_manager: Node = $"../StateManager"
 
+@onready var display_piece_manager: Control = $DisplayPieceManager
 @onready var gold_display: Label = $GoldDisplay
-@onready var piece_container: HBoxContainer = $PieceContainer
-
-signal piece_selected(piece_name: String)
 
 # Called when the node enters the scene tree for the first time.
 func _ready() -> void:
 	update_gold_display()
 	RunData.currency_changed.connect(update_gold_display)
-	refresh_pieces_display()
+	display_piece_manager.refresh_pieces_display()
 	
 func update_gold_display(new_currency: int = RunData.get_currency()) -> void:
 	gold_display.text = "Gold: %d" % new_currency
 	
-func refresh_pieces_display() -> void:
-	for child in piece_container.get_children():
-		child.queue_free()
-		
-	var available_pieces = RunData.get_pieces()
-	
-	for piece in available_pieces:
-		var piece_button = create_piece_button(piece)
-		piece_container.add_child(piece_button)
-
-# Dynamically creates buttons
-func create_piece_button(piece_name: String) -> TextureButton:
-	var button = TextureButton.new()
-	
-	var texture = load("res://Assets/Resized Chess Piece Assets/White_" + piece_name.to_lower() + ".png")
-	if texture:
-		button.texture_normal = texture
-	
-	# button properties 
-	button.custom_minimum_size = Vector2(64, 64)
-	button.stretch_mode = TextureButton.STRETCH_KEEP_ASPECT_CENTERED
-	button.tooltip_text = piece_name.capitalize()
-	
-	# Hover effects to indicate users
-	button.mouse_entered.connect(func(): button.modulate = Color(1.2, 1.2, 1.2))
-	button.mouse_exited.connect(func(): button.modulate = Color(1, 1, 1))
-	
-	button.pressed.connect(func(): _on_piece_button_pressed(piece_name))
-	
-	return button
-
-func _on_piece_button_pressed(piece_name: String) -> void:
-	piece_selected.emit(piece_name)
-	for button in piece_container.get_children():
-		if button.tooltip_text.to_lower() == piece_name:
-			button.modulate = Color(0.8, 0.8, 1.2)
-		else:
-			button.modulate = Color(1, 1, 1)