final public boolean imc_startup( boolean force,
									  String loginName,
									  String host,
									  String email,
									  String web,
									  String hub,
									  int port,
									  String passclient,
									  String passsrvr,
									  List<CMChannel> imc2Channels)
	{
	   if( imc_active != IA_NONE )
	   {
		  tracef(0,  "imc_startup: called with imc_active = "+imc_active );
		  return false;
	   }
	   imc_now = new Date().getTime()/1000; 				 /* start our clock */
	   imc_boot = new Date();

	   imc_sequencenumber = imc_now;

		for(final CMChannel chan : imc2Channels)
		{
			chan_mask.put(chan.name(),chan.mask());
			chan_conf.put(chan.name(),chan.imc2Name());
		}

		imc_name=loginName;
		imc_log_on=1; // logging?
		this_imcmud.autoconnect=true;
		imc_siteinfo.name=CMProps.getVar(CMProps.Str.MUDNAME);
		imc_siteinfo.host=host;
		imc_siteinfo.port=CMath.s_int(CMParms.parse(CMProps.getVar(CMProps.Str.MUDPORTS)).elementAt(0));
		imc_siteinfo.email=email;
		imc_siteinfo.base="CoffeeMud v"+CMProps.getVar(CMProps.Str.MUDVER);
		imc_siteinfo.details="Custom Java-based Mud";
		imc_siteinfo.www=web;
		this_imcmud.hubname=hub;
		this_imcmud.host=hub;
		this_imcmud.port=port;
		this_imcmud.clientpw=passclient;
		this_imcmud.serverpw=passsrvr;
		if( !this_imcmud.autoconnect && !force )
		{
			tracef(8,  "IMC2 data loaded. Autoconnect not set. "+
						 "IMC will need to be connected manually." );
			return false;
		}

		imc_active = !imc_name.equals("") ? IA_CONFIG2 : IA_CONFIG1;

		if( imc_active == IA_CONFIG2 && ( this_imcmud.autoconnect || force ) )
		{
			if( imc_startup_network() )
			{
				ev_imc_firstrefresh();
				return true;
			}
			imc_active = IA_NONE;
		}
		return false;
	}