diff --git a/include/dawn/ui/label.h b/include/dawn/ui/label.h
index cf2e5e79..428a41c7 100644
--- a/include/dawn/ui/label.h
+++ b/include/dawn/ui/label.h
@@ -13,7 +13,7 @@
 /** Representation of a Label UI Element */
 typedef struct {
   font_t *font;
-  float x, y, z;
+  float x, y;
   float fontSize;
   fonttextinfo_t info;
   primitive_t primitive;
diff --git a/include/dawn/ui/menu.h b/include/dawn/ui/menu.h
index 014c9d39..2e4ea3cd 100644
--- a/include/dawn/ui/menu.h
+++ b/include/dawn/ui/menu.h
@@ -24,7 +24,6 @@ typedef struct {
   int32_t y;
   int32_t width;
   int32_t height;
-  int32_t i;
 } menuitem_t;
 
 typedef struct {
diff --git a/include/dawn/ui/menulist.h b/include/dawn/ui/menulist.h
new file mode 100644
index 00000000..afb50523
--- /dev/null
+++ b/include/dawn/ui/menulist.h
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2021 Dominic Masters
+ * 
+ * This software is released under the MIT License.
+ * https://opensource.org/licenses/MIT
+ */
+
+#pragma once
+#include "../libs.h"
+#include "label.h"
+#include "menu.h"
+
+/** Maximum number of items that the list supports */
+#define MENULIST_ITEMS_MAX 32
+
+/** Representation of a menu list, a menu with multiple menu items. */
+typedef struct {
+  float x, y;
+  char *items[MENULIST_ITEMS_MAX];
+  label_t labels[MENULIST_ITEMS_MAX];
+  menu_t menu;
+  uint8_t count;
+  uint8_t selected;
+} menulist_t;
\ No newline at end of file
diff --git a/src/ui/label.c b/src/ui/label.c
index b3de75e5..0587422f 100644
--- a/src/ui/label.c
+++ b/src/ui/label.c
@@ -10,7 +10,6 @@
 void labelInit(label_t *label) {
   label->x = 0;
   label->y = 0;
-  label->z = 0;
   label->fontSize = FONT_SIZE_DEFAULT;
   label->font = NULL;
   label->primitive.verticeCount = 0;
@@ -29,7 +28,7 @@ void labelSetText(label_t *label, font_t *font, char *text) {
 
 void labelRender(label_t *label, shader_t *shader) {
   if(label->primitive.verticeCount == 0) return;
-  shaderUsePosition(shader, label->x, label->y, label->z, 0, 0, 0);
+  shaderUsePosition(shader, label->x,label->y,0, 0,0,0);
   shaderUseTexture(shader, &label->font->texture);
   primitiveDraw(&label->primitive, 0, -1);
 }
diff --git a/src/ui/menu.c b/src/ui/menu.c
index 09de8eac..8911cf5e 100644
--- a/src/ui/menu.c
+++ b/src/ui/menu.c
@@ -14,14 +14,12 @@ void menuInit(menu_t *menu) {
   menu->selected = 0;
   menu->cursorX = 0;
   menu->cursorY = 0;
-
-  for(i = 0; i < MENU_ITEMS_MAX; i++) menu->items[i].i = -1;
 }
 
 void menuUpdate(menu_t *menu, engine_t *engine) {
   menuitem_t *current;
   menuitem_t *item;
-  int32_t x, y, i;
+  int32_t x, y, i, j;
 
   current = menu->items + menu->selected;
 
@@ -58,31 +56,29 @@ void menuUpdate(menu_t *menu, engine_t *engine) {
     }
     
     // Get the item selected
-    int32_t targetIndex = -1;
+    j = -1;
     for(i = 0; i < menu->itemCount; i++) {
       if(i == menu->selected) continue;
       item = menu->items + i;
 
       if(
-        item->i == -1 ||
         item->x > menu->cursorX || (item->x+item->width-1) < menu->cursorX ||
         item->y > menu->cursorY || (item->y+item->height-1) < menu->cursorY
       ) continue;
 
-      targetIndex = i;
+      j = i;
       break;
     }
 
     // Was a target found?
-    if(targetIndex == -1) return;
-    menu->selected = targetIndex;
+    if(j == -1) return;
+    menu->selected = j;
   }
 }
 
 menuitem_t * menuAdd(menu_t *menu) {
   menuitem_t *item = menu->items + menu->itemCount;
 
-  item->i = menu->itemCount;
   item->x = 0;
   item->y = 0;
   item->width = 1;
diff --git a/src/ui/menulist.c b/src/ui/menulist.c
new file mode 100644
index 00000000..b832cae0
--- /dev/null
+++ b/src/ui/menulist.c
@@ -0,0 +1,12 @@
+/**
+ * Copyright (c) 2021 Dominic Masters
+ * 
+ * This software is released under the MIT License.
+ * https://opensource.org/licenses/MIT
+ */
+
+#include "menulist.h"
+
+void menuListInit(menulist_t *list) {
+  
+}
\ No newline at end of file
diff --git a/src/ui/menulist.h b/src/ui/menulist.h
new file mode 100644
index 00000000..ad42bb5d
--- /dev/null
+++ b/src/ui/menulist.h
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) 2021 Dominic Masters
+ * 
+ * This software is released under the MIT License.
+ * https://opensource.org/licenses/MIT
+ */
+
+#pragma once
+#include <dawn/dawn.h>