private void handle_account_menu(final String input, final Client client) {
		debug("HANDLE ACCOUNT MENU");

		final Account account = caTable.get(client);

		if (account != null) {
			char ch = input.charAt(0);

			// valid: NEW, LINK, UNLINK, REORDER, DELETE (12-4-2015)
			switch (ch) {
			case 'N': // New Character
				setClientState(client, "account_menu_new");
				send("Account Action -> New Character (Not Implemented)", client);
				setClientState(client, "account_menu");
				break;
			case 'L': // Link Character
				setClientState(client, "account_menu_link");
				send("Account Action -> Link Character (Not Implemented)", client);
				setClientState(client, "account_menu");
				break;
			case 'U': // Unlink Characters
				setClientState(client, "account_menu_unlink");
				send("Account Action -> Unlink Character (Not Implemented)", client);
				setClientState(client, "account_menu");
				break;
			case 'R': // Reorder Characters
				setClientState(client, "account_menu_reorder");
				send("Account Action -> Reorder Characters (Not Implemented)", client);
				setClientState(client, "account_menu");
				break;
			case 'E': // Enter Description
				send("Account Action -> Enter Description (Not Implemented)", client);
				break;
			case 'D': // Delete Character
				setClientState(client, "account_menu_del");
				send("Account Action -> Delete Character (Not Implemented)", client);
				setClientState(client, "account_menu");
				break;
			case 'C': // Change Password
				send("Account Action -> Change Password (Not Implemented)", client);
				break;
			case 'Q': // Quit
				send("Goodbye.", client);
				setClientState(client, ""); // clear client state
				init_disconn(client, false); // disconnect client
				break;
			default: // Login the specified character
				int c = Utils.toInt(input, -1);

				if (c != -1) {
					if( handle_login(account, c, client) ) {
						setClientState(client, ""); // clear client state
					}
				}
				break;
			}
		}
		else {
			send("No such account!", client);
		}
	}