* @param client the connecting client
	 * @param newCharacter is this a new character
	 */
	public void init_conn(final Player player, final Client client, final boolean newCharacter) {
		if (player == null) {
			debug("ERROR!!!: Player Object is NULL!");
			return;
		}

		if (use_cnames) {
			// generate generic name for unknown players based on their class
			// and the number of players with the same class presently on
			// logged on of a given class
			System.out.println("Generating generic name for player...");

			// TODO deal with number of players online of stuff
			// TODO resolve where I get the numbers from

			// int temp = numPlayersOnlinePerClass.get( player.getPClass() );
			int temp = objectDB.getNumPlayers(player.getPClass());

			// TODO handle NPC control scenario that causes this to not produce
			// the desired result
			player.setCName(player.getPClass().toString() + temp);

			objectDB.addName(player, player.getCName());
			cNames.put(player.getCName(), player);

			numPlayersOnlinePerClass.put(player.getPClass(), ++temp);

			System.out.println("Generated Name: " + player.getName());

			System.out.println("Done");

			debug("Number of players that share this player's class: " + objectDB.getNumPlayers(player.getPClass()));
		}

		// NOTE: I should probably add a mapping here somewhere that ties the
		// player to their account, if they have one

		if (newCharacter) { // if new, do some setup
			// send a welcome mail to them

			final int id = player.getMailBox().numMessages() + 1;
			final String msg = "Welcome to " + getName();
			final String dateString = getDate().toString();

			final Mail mail = new Mail(id, "System", player.getName(),"Welcome", msg, dateString, Mail.UNREAD);

			sendMail(mail, player);

			// TODO need an item creation factory and some method in GameModule
			// that handles starting equipment, perhaps this should be part of
			// character generation?
		}

		// get the time
		final Time time = getTime();
		final Date date = getDate();

		// account login state
		final Account account = acctMgr.getAccount(player);

		if (account != null) {
			debug("ACCOUNT EXISTS!");
			
			account.setClient(client);
			account.setPlayer(player);
			account.setOnline(true);
		}

		/* */
		sclients.put(client, player);

		player.setClient(client);    // need this set so I can ask for it in various other places

		logConnect(player, time);

		// open a new session
		Session session = new Session(client, player);
		session.connect = new Tuple<Date, Time>(date, time);
		session.connected = true;

		sessionMap.put(player, session);

		debug("New session started!");

		// tell the player that their connection was successful
		debug("\nConnected!\n");
		send(colors("Connected!", "yellow"), client);
		//send(colors("Connected to " + serverName + " as " + player.getName(), "yellow"), client);

		/* load the player's mailbox */
		loadMail(player);

		// indicate to the player how much mail/unread mail they have
		client.writeln("Checking for unread messages...");

		int messages = player.getMailBox().numUnreadMessages();

		if (messages == 0) client.writeln("You have no unread messages.");
		else               client.writeln("You have " + String.valueOf(messages) + " unread messages.");

		// list the items in the player's inventory (located "in" the player)
		for (final Item item : player.getInventory()) {
			debug("Item -> " + item.getName() + " (#" + item.getDBRef() + ") @" + item.getLocation());
		}

		debug("");

		// TODO clean up the below, where we add players to channels, also we
		// should readd them to any channels they joined before

		/* ChatChannel Setup */
		try {
			chan.add(player, OOC_CHANNEL);
		}
		catch(final NoSuchChannelException nsce) {
			debug("INIT_CONN: No such chat channel.");
		}
		
		// TODO decide how to handle channels where I want people auto-added
		// add player to the STAFF ChatChannel (testing), if they are staff{
		try {
			chan.add(player, STAFF_CHANNEL);
		}
		catch(final NoSuchChannelException nsce) {
			debug("INIT_CONN: No such chat channel.");
		}