* @param client
	 */
	private void cmd_go(final String arg, final Client client) {
		final Player player = getPlayer(client);
		final Room room = getRoom( player.getLocation() );

		String[] args = arg.split(" ");

		if (args.length == 1) {
			final List<String> cardinal_directions = Utils.mkList("north",
					"northeast", "northwest", "south", "southeast",
					"southwest", "east", "west");

			if ( cardinal_directions.contains(args[0].toLowerCase()) ) {
				debug("Go: Valid Direction!");

				// check for alternate room systems...
				final Direction d = Direction.getDirection(args[0]);
				final Exit exit = room.getExit(d);

				if (exit != null) {
					debug("Go: Valid Exit!");

					exitHandler(exit, client);
				}
				else {
					send("You can't go that way.", client);
				}
			}
			else {
				MUDObject m = getObject(arg, room);

				if (m != null) {
					move(player, m.getPosition());
				}
			}
		}
		else if (args.length == 2) {
			try {
				int x = Integer.parseInt(args[0]);
				int y = Integer.parseInt(args[1]);

				if (x < room.getDimension("x") && y < room.getDimension("y")) {
					move(player, new Point(x, y));
				}
			}
			catch (final NumberFormatException nfe) {
				// TODO is this debug message adequate?
				send("Invalid Point!", client);
				System.out.println("--- Stack Trace ---");
				nfe.printStackTrace();
			}
		}
		else if (args.length == 3) {
			try {
				int x = Integer.parseInt(args[0]);
				int y = Integer.parseInt(args[1]);
				int z = Integer.parseInt(args[2]);
				
				// Utils.range(x, 0, room.getDimension("x")); // ?

				if (x < room.getDimension("x") && y < room.getDimension("y") && z < room.getDimension("z")) {
					move(player, new Point(x, y, z));
				}
			}
			catch (final NumberFormatException nfe) {
				// TODO is this debug message adequate?
				send("Invalid Point!", client);
				System.out.println("--- Stack Trace ---");
				nfe.printStackTrace();
			}
		}
	}