diff --git a/src/client/common.h b/src/client/common.h
index 2ac604fb4d355fc2c3db963cbb39f0c417d290c6..0de25c143b9d42be7e3b5eca378ac758e0c9b81b 100644
--- a/src/client/common.h
+++ b/src/client/common.h
@@ -17,17 +17,19 @@
 typedef struct sItem {
 	char	*Type;
 	 int	ID;
-	 int	Status;	// 0: Availiable, 1: Sold out, -1: Error
+	 int	Status;	// 0: Available, 1: Sold out, -1: Error
 	char	*Desc;
 	 int	Price;
 }	tItem;
 
+#define ITEM_STATUS_AVAILABLE 0
+#define ITEM_STATUS_SOLDOUT 1
+#define ITEM_STATUS_ERROR -1
+
 enum eUI_Modes
 {
 	UI_MODE_BASIC,	// Non-NCurses
 	UI_MODE_STANDARD,
-	UI_MODE_DRINKSONLY,
-	UI_MODE_ALL,
 	NUM_UI_MODES
 };
 
diff --git a/src/client/main.c b/src/client/main.c
index bd9bbc745dd757f3fad6b1141cd5b34c349630d2..dac6c952d8a0bc3a01048adf126765a5b0b08a3e 100644
--- a/src/client/main.c
+++ b/src/client/main.c
@@ -149,8 +149,6 @@ void ShowUsage(void)
 			"        Show help text\n"
 			"    -G\n"
 			"        Use simple textual interface (instead of ncurses)\n"
-			"    -D\n"
-			"        Drinks only in user interface\n"
 			"    -n\n"
 			"        Dry run - Do not actually do dispenses\n"
 			"    -m <min balance>\n"
@@ -191,8 +189,8 @@ int subcommand_finger(void)
 		const char *status;
 		switch(gaItems[i].Status)
 		{
-		case 0:	status = "Avail";	break;
-		case 1:	status = "Sold ";	break;
+		case ITEM_STATUS_AVAILABLE:	status = "Avail";	break;
+		case ITEM_STATUS_SOLDOUT:	status = "Sold ";	break;
 		default:
 			status = "Error";
 			break;
@@ -969,9 +967,6 @@ int ParseArguments(int argc, char *argv[])
 			case 'G':	// Don't use GUI
 				giUIMode = UI_MODE_BASIC;
 				break;
-			case 'D':	// Drinks only
-				giUIMode = UI_MODE_DRINKSONLY;
-				break;
 			case 'n':	// Dry Run / read-only
 				gbDryRun = 1;
 				break;
@@ -996,9 +991,6 @@ int ParseArguments(int argc, char *argv[])
 			else if( strcmp(arg, "--dry-run") == 0 ) {
 				gbDryRun = 1;
 			}
-			else if( strcmp(arg, "--drinks-only") == 0 ) {
-				giUIMode = UI_MODE_DRINKSONLY;
-			}
 			else if( strcmp(arg, "--can-select-all") == 0 ) {
 				gbDisallowSelectWithoutBalance = 0;
 			}
diff --git a/src/client/menu.c b/src/client/menu.c
index 1eaf10017681a47c9b27f51ae1dd47a7b40c856d..9f7c419c18e060ce98528d2f1002c9ad7df0475f 100644
--- a/src/client/menu.c
+++ b/src/client/menu.c
@@ -15,7 +15,6 @@
 #include "common.h"
 
 // === CONSTANTS ===
-#define COLOURPAIR_DEFAULT	0
 #define COLOURPAIR_CANTBUY	1
 #define COLOURPAIR_SELECTED	2
 
@@ -100,8 +99,10 @@ int ShowNCursesUI(void)
 	initscr();
 	start_color();
 	use_default_colors();
-	init_pair(COLOURPAIR_DEFAULT,  -1,  -1);	// Not avaliable
-	init_pair(COLOURPAIR_CANTBUY,  COLOR_BLACK,  -1);	// Not avaliable
+	init_pair(COLOURPAIR_CANTBUY,  8,  -1);	// Not available; colour 8 is "bright black" ie grey
+						// Previously this was COLOR_BLACK + the bold attribute, but
+						// that is not rendered the same way by all terminals
+						// ncurses does not have names for bright colours
 	init_pair(COLOURPAIR_SELECTED, COLOR_GREEN,  -1);	// Selected
 	cbreak(); noecho();
 	
@@ -272,7 +273,7 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted)
 {
 	char	*name = NULL;
 	 int	price = 0;
-	 int	status = -1;
+	 int	status = ITEM_STATUS_ERROR;
 	
 	switch(giUIMode)
 	{
@@ -315,8 +316,6 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted)
 		status = gaItems[Index].Status;
 		break;
 	case UI_MODE_BASIC:
-	case UI_MODE_DRINKSONLY:
-	case UI_MODE_ALL:
 	default:
 		return -1;
 	}
@@ -333,13 +332,12 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted)
 			// Show hilight and status
 			switch( status )
 			{
-			case 0:
+			case ITEM_STATUS_AVAILABLE:
 				if( bHilighted ) {
 					color_set( COLOURPAIR_SELECTED, NULL );
 					printw("->  ");
 				}
 				else if( price > giUserBalance ) {
-					attrset(A_BOLD);
 					color_set( COLOURPAIR_CANTBUY, NULL );
 					printw("    ");
 				}
@@ -348,14 +346,13 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted)
 					printw("    ");
 				}
 				break;
-			case 1:
-				attrset(A_BOLD);
+			case ITEM_STATUS_SOLDOUT:
 				color_set( COLOURPAIR_CANTBUY, NULL );
 				printw("SLD ");
 				break;
 			
 			default:
-			case -1:
+			case ITEM_STATUS_ERROR:
 				color_set( COLOURPAIR_CANTBUY, NULL );
 				printw("ERR ");
 				break;
@@ -373,9 +370,9 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted)
 		}
 	}
 	
-	// If the item isn't availiable for sale, return -1 (so it's skipped)
-	if( status > 0 || (price > giUserBalance && gbDisallowSelectWithoutBalance) )
-		Index = -2;
+	// If the item isn't available for sale, return -1 (so it's skipped)
+	if( status == ITEM_STATUS_SOLDOUT || (price > giUserBalance && gbDisallowSelectWithoutBalance) )
+		Index = -1;
 	
 	return Index;
 }
diff --git a/src/client/protocol.c b/src/client/protocol.c
index 079a4ff0d03814a3e285bdd246ebd73123d8c7f6..6332f2f066eed527db47a7f0a6624e02a38de797 100644
--- a/src/client/protocol.c
+++ b/src/client/protocol.c
@@ -393,11 +393,11 @@ int ReadItemInfo(int Socket, tItem *Dest)
 	Dest->ID = atoi( buf + matches[4].rm_so );
 	
 	if( strcmp(statusStr, "avail") == 0 )
-		Dest->Status = 0;
+		Dest->Status = ITEM_STATUS_AVAILABLE;
 	else if( strcmp(statusStr, "sold") == 0 )
-		Dest->Status = 1;
+		Dest->Status = ITEM_STATUS_SOLDOUT;
 	else if( strcmp(statusStr, "error") == 0 )
-		Dest->Status = -1;
+		Dest->Status = ITEM_STATUS_ERROR;
 	else {
 		fprintf(stderr, "Unknown response from dispense server (status '%s')\n",
 			statusStr);