* @param arg
	 * @param client
	 */
	private void cmd_open(final String arg, final Client client) {
		final String[] args = arg.split("=");

		String name = args[0];
		int source = 0, destination = 0;

		Room room;

		try {
			// get the source room
			room = getRoom( getPlayer(client).getLocation() );

			source = room.getDBRef();

			if (args.length == 2) { // simple form - name=destination
				// destination defaults to an invalid room dbref
				if (args[1].equals("")) {
					destination = -1;
				}
				else {
					destination = Integer.parseInt(args[1]);
				}
			}
			else {
				send("open : " + gameError("@open", ErrorCodes.INVALID_SYNTAX), client);
				return;
			}
		}
		catch (final NumberFormatException nfe) {
			// TODO is this debug message adequate?
			send("@open : destination dbref invalid (number format)\nExit creation failed", client);
			// System.out.println("--- Stack Trace ---");
			// nfe.printStackTrace();
			return;
		}
		catch (final NullPointerException npe) {
			// TODO is this debug message adequate?
			send("@open : source Room invalid (null pointer)\nExit creation failed", client);
			System.out.println("--- Stack Trace ---");
			npe.printStackTrace();
			return;
		}

		if (!validExitName(name)) {
			send("@open : Invalid exit name (contained disallowed characters)\nExit creation failed", client);
			return;
		}

		// create the exit
		Exit exit = new Exit(name, source, destination);

		objectDB.addAsNew(exit);
		objectDB.addExit(exit);

		// add the exit to the source room
		room.addExit(exit);

		// tell us that we succeeded in creating the exit
		send("You open an exit called " + exit.getName() + "(#" + exit.getDBRef() + ")" + " from #" + exit.getLocation() + " to #" + exit.getDestination() + ".", client);
	}