Index: main/menu2.c
===================================================================
--- main/menu2.c	(revision main,1)
+++ main/menu2.c	(revision main,1)
@@ -0,0 +1,85 @@
+#include <menu.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+
+typedef int menu2_h;
+
+#define _MAX_ITEMS 16
+
+struct menu2_t {
+	char *item_names[_MAX_ITEMS];
+	char *item_descriptions[_MAX_ITEMS];
+	int item_count;
+};
+
+static const int _MAX_MENUS = 16;
+
+
+
+static struct menu2_t *_menus[16];
+
+
+
+static int menu2_init(int i)
+{
+	_menus[i] = calloc(1, sizeof(struct menu2_t));
+	if(!_menus[i]) return 0;
+	return i + 1;
+}
+
+menu2_h menu2_create(void)
+{
+	int i;
+
+	for(i = 0; i < _MAX_MENUS; i++)
+		if(!_menus[i]) return menu2_init(i);
+
+	return 0;
+}
+
+int menu2_add_item(menu2_h menu, const char *name, const char *description)
+{
+	struct menu2_t *m = _menus[menu - 1];
+	if(!m) return 0;
+
+	if(m->item_count == _MAX_ITEMS) return 0;
+
+	m->item_names[m->item_count] = strdup(name);
+	m->item_descriptions[m->item_count] =
+		strdup(description ? description : name);
+	
+	++m->item_count;
+
+	return 1;
+}
+
+int menu2_destroy(menu2_h menu)
+{
+	struct menu2_t *m = _menus[menu - 1];
+	int i;
+
+	if(!m) return 0;
+
+	for(i = 0; i < m->item_count; i++) {
+		free(m->item_names[i]);
+		free(m->item_descriptions[i]);
+	}
+
+	free(m);
+	_menus[menu - 1] = NULL;
+
+	return 1;
+}
+
+int menu2_post(menu2_h menu)
+{
+	struct menu2_t *m = _menus[menu - 1];
+
+	if(!m) return 0;
+
+	blah
+}
+
+menu2_drive(int, int);
