diff --git a/src/client/main.c b/src/client/main.c
index 07fb0b4b5d343f0dfec7591b25c7d854af766e78..95fd74ea6b8c90986d49e487cad592ac174c7534 100644
--- a/src/client/main.c
+++ b/src/client/main.c
@@ -182,11 +182,7 @@ int main(int argc, char *argv[])
 			case 'n':	// Dry Run / read-only
 				gbDryRun = 1;
 				break;
-			case '0':	case '1':
-			case '2':	case '3':
-			case '4':	case '5':
-			case '6':	case '7':
-			case '8':	case '9':
+			default:
 				if( text_argc + 1 ==  MAX_TXT_ARGS )
 				{
 					fprintf(stderr, "ERROR: Too many arguments\n");
@@ -217,7 +213,7 @@ int main(int argc, char *argv[])
 		// Connect to server
 		sock = OpenConnection(gsDispenseServer, giDispensePort);
 		if( sock < 0 )	return -1;
-			// List accounts?
+		// List accounts?
 		if( text_argc == 1 ) {
 			ret = Dispense_EnumUsers(sock);
 			close(sock);
@@ -641,7 +637,7 @@ int ShowNCursesUI(void)
 	
 	// Enter curses mode
 	initscr();
-	raw(); noecho();
+	cbreak(); noecho();
 	
 	// Get max index
 	maxItemIndex = ShowItemAt(0, 0, 0, -1, 0);
diff --git a/src/server/dispense.c b/src/server/dispense.c
index 3fb565248567d106570f652f746a1c894944cc12..215e580cae16962242102945832fd5cc0b77c9bb 100644
--- a/src/server/dispense.c
+++ b/src/server/dispense.c
@@ -105,6 +105,39 @@ int DispenseGive(int ActualUser, int SrcUser, int DestUser, int Ammount, const c
 	return 0;
 }
 
+/**
+ * \brief Move money from one user to another (Admin Only)
+ */
+int DispenseTransfer(int ActualUser, int SrcUser, int DestUser, int Ammount, const char *ReasonGiven)
+{
+	 int	ret;
+	char	*actualUsername;
+	char	*srcName, *dstName;
+
+	// Make sure the user is an admin
+	if( !(Bank_GetFlags(ActualUser) & USER_FLAG_ADMIN) )
+		return 1;
+	
+	ret = _Transfer( SrcUser, DestUser, Ammount, ReasonGiven );
+	if(ret)	return 2;	// No Balance
+	
+	
+	actualUsername = Bank_GetAcctName(ActualUser);
+	srcName = Bank_GetAcctName(SrcUser);
+	dstName = Bank_GetAcctName(DestUser);
+	
+	Log_Info("move %i to %s from %s by %s [balances %i, %i] - %s",
+		Ammount, dstName, srcName, actualUsername,
+		Bank_GetBalance(SrcUser), Bank_GetBalance(DestUser),
+		ReasonGiven
+		);
+	
+	free(srcName);
+	free(dstName);
+	free(actualUsername);
+	
+	return 0;
+}
 /**
  * \brief Add money to an account
  */
diff --git a/src/server/handler_coke.c b/src/server/handler_coke.c
index 12e24315b98c442ea0d441dc9f355ebc7d1d6c33..867ac6a13e4e7daf7fa7f745c3fda30ffc7bd429 100644
--- a/src/server/handler_coke.c
+++ b/src/server/handler_coke.c
@@ -21,7 +21,7 @@
 #include <pthread.h>
 
 #define READ_TIMEOUT	2	// 2 seconds for ReadChar
-#define TRACE_COKE	1
+#define TRACE_COKE	0
 
 #if TRACE_COKE
 # define TRACE(v...) do{printf("%s: ",__func__);printf(v);}while(0)
diff --git a/src/server/server.c b/src/server/server.c
index dbcc94b7a4e3cb4303acd9640af65f75b8ed9d6c..aa9f0083b890ea8c8a020ec88b2e2fa8526688f0 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -310,6 +310,7 @@ void Server_ParseClientCommand(tClient *Client, char *CommandString)
 	
 	if( Server_int_ParseArgs(1, CommandString, &command, &args, NULL) )
 	{
+		if( command == NULL )	return ;
 //		printf("command=%s, args=%s\n", command, args);
 		// Is this an error? (just ignore for now)
 		//args = "";