diff --git a/interface/shop_ui.gd b/interface/shop_ui.gd
index 1a5bf66..bb948ac 100644
--- a/interface/shop_ui.gd
+++ b/interface/shop_ui.gd
@@ -1,2 +1,62 @@
 extends Panel
 class_name ShopUI
+
+## Emitted when the Score button is pressed.
+signal score_button_pressed
+
+## Emitted when the Delete button is pressed.
+signal delete_button_pressed 
+
+## Emitted when the Back button is presesd.
+signal back_button_pressed
+
+## Emitted when any purchase has started.
+signal purchase_begin(what: PurchasableItem)
+
+## Emitted when any purchase is cancelled.
+signal purchase_cancel(what: PurchasableItem)
+
+## Emitted when any purchase is completed.
+##
+## Emitted by complete_purchase().
+signal purchase_success(what: PurchasableItem)
+
+## Array of all PurchasableItems that this ShopUI should control.
+@onready var purchasable_items: Array[PurchasableItem] = find_children("*", "PurchasableItem") as Array[PurchasableItem]
+
+
+func _ready():
+	for item in purchasable_items:
+		item.purchase_begin.connect(_on_any_purchase_begin.bind(item))
+		item.purchase_cancel.connect(_on_any_purchase_cancel.bind(item))
+		item.purchase_success.connect(_on_any_purchase_success.bind(item))
+
+func _on_any_purchase_begin(what: PurchasableItem):
+	purchase_begin.emit(what)
+	for item in purchasable_items:
+		if item == what:
+			continue
+		item.can_buy = false
+
+func _on_any_purchase_cancel(what: PurchasableItem):
+	purchase_cancel.emit(what)
+	for item in purchasable_items:
+		if item == what:
+			continue
+		item.can_buy = true
+
+func _on_any_purchase_success(what: PurchasableItem):
+	purchase_success.emit(what)
+	for item in purchasable_items:
+		if item == what:
+			continue
+		item.can_buy = true
+
+func _on_score_button_pressed():
+	score_button_pressed.emit()
+	
+func _on_delete_button_pressed():
+	delete_button_pressed.emit()
+
+func _on_back_button_pressed():
+	back_button_pressed.emit()
diff --git a/interface/shop_ui.tscn b/interface/shop_ui.tscn
index 23f99ab..7d4078e 100644
--- a/interface/shop_ui.tscn
+++ b/interface/shop_ui.tscn
@@ -1,7 +1,8 @@
-[gd_scene load_steps=4 format=3 uid="uid://cklkdygv61bny"]
+[gd_scene load_steps=5 format=3 uid="uid://cklkdygv61bny"]
 
 [ext_resource type="Theme" uid="uid://ba5utvfhnxa5i" path="res://interface/interface_theme.tres" id="1_qdf0y"]
 [ext_resource type="PackedScene" uid="uid://dul1fpyh733t7" path="res://interface/purchasable_item.tscn" id="2_2dtc0"]
+[ext_resource type="Script" path="res://interface/shop_ui.gd" id="2_iyr7m"]
 [ext_resource type="PackedScene" uid="uid://wodgj6rp2ewm" path="res://interface/purchasable_item_padding.tscn" id="3_4feaj"]
 
 [node name="ShopUI" type="Panel"]
@@ -11,6 +12,7 @@ anchor_bottom = 1.0
 grow_horizontal = 2
 grow_vertical = 2
 theme = ExtResource("1_qdf0y")
+script = ExtResource("2_iyr7m")
 
 [node name="Rows" type="VBoxContainer" parent="."]
 layout_mode = 1
@@ -24,19 +26,29 @@ grow_vertical = 2
 custom_minimum_size = Vector2(0, 54)
 layout_mode = 2
 
-[node name="MoneyButton" type="Button" parent="Rows/UpperButtons"]
-custom_minimum_size = Vector2(54, 0)
+[node name="ScoreButton" type="Button" parent="Rows/UpperButtons"]
+custom_minimum_size = Vector2(72, 0)
 layout_mode = 2
 size_flags_horizontal = 0
 text = "$0"
 alignment = 0
 
-[node name="UpperButtonsSpacer" type="PanelContainer" parent="Rows/UpperButtons"]
+[node name="UpperButtonsSpacerLeft" type="PanelContainer" parent="Rows/UpperButtons"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="DeleteButton" type="Button" parent="Rows/UpperButtons"]
+custom_minimum_size = Vector2(72, 0)
+layout_mode = 2
+size_flags_horizontal = 4
+text = "Del"
+
+[node name="UpperButtonsSpacerRight" type="PanelContainer" parent="Rows/UpperButtons"]
 layout_mode = 2
 size_flags_horizontal = 3
 
 [node name="BackButton" type="Button" parent="Rows/UpperButtons"]
-custom_minimum_size = Vector2(54, 0)
+custom_minimum_size = Vector2(72, 0)
 layout_mode = 2
 size_flags_horizontal = 8
 text = "Back"
@@ -61,3 +73,14 @@ layout_mode = 2
 
 [node name="PurchasableItem2" parent="Rows/Scrollable/ScrollableItems" instance=ExtResource("2_2dtc0")]
 layout_mode = 2
+
+[node name="PurchasableItemPadding2" parent="Rows/Scrollable/ScrollableItems" instance=ExtResource("3_4feaj")]
+layout_mode = 2
+
+[node name="PurchasableItem3" parent="Rows/Scrollable/ScrollableItems" instance=ExtResource("2_2dtc0")]
+layout_mode = 2
+has_unlocked = false
+
+[connection signal="pressed" from="Rows/UpperButtons/ScoreButton" to="." method="_on_score_button_pressed"]
+[connection signal="pressed" from="Rows/UpperButtons/DeleteButton" to="." method="_on_delete_button_pressed"]
+[connection signal="pressed" from="Rows/UpperButtons/BackButton" to="." method="_on_back_button_pressed"]