private void loadSettings() {
		try {
			settings.read();
		} catch (final FileNotFoundException e) {
			// this is okay
		} catch (final IOException e) {
			e.printStackTrace();
		} catch (final NullPointerException e) {
			e.printStackTrace();
			System.err.println("Error reading run control file!");
		}
		// assuming it didn't fail, set state from settings.
		// DO NOT SET MODULE ENABLING; we don't know if all the modules have
		// yet been added.
		if (settings.successfullyLoaded()) {
			for (final String op : settings.getOperators()) {
				ops.add(op.toUpperCase());
			}
			owner = settings.getModuleSetting(SmartBot.CORE_MODULE_NAME,
					"owner").toUpperCase();
			ops.add(owner.toUpperCase());
			moduleClassPath = settings.getModuleSetting(
					SmartBot.CORE_MODULE_NAME, "modulePath");
			if (moduleClassPath == null) {}
			server = settings.getModuleSetting(CORE_MODULE_NAME, "server");
			setFinger(settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "finger"));
			setLogin(settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "login"));
			setNickServPass(settings.getModuleSettingChar(SmartBot.CORE_MODULE_NAME, "nickserv_pass"));
			setBotNick(settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "nick"));
			setChannel('#' + settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "channel"));
			setPrependChar(settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "prepend_char").charAt(0));
			setUsePrepend(settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "use_prepend_char").equalsIgnoreCase("true"));
			try {
				setMessageDelay(Integer.parseInt(settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "message_delay")));
			} catch (NumberFormatException e) {
				// do nothing
				System.err.println("Warning: config value for message_delay is malformed. Defaulting to 1000");
			}
			try {
				setTimeBetweenReconnects(Integer.parseInt(settings.getModuleSetting(SmartBot.CORE_MODULE_NAME, "time_between_reconnects")));
			} catch (NumberFormatException e) {
				System.err.println("Warning: config value for time_between_reconnects is malformed. Defaulting to 15");
				setTimeBetweenReconnects(15);
			}
			try {
				setReconnectionLimit(Integer.parseInt(settings.getModuleSetting(CORE_MODULE_NAME, "reconnection_limit")));
			} catch (NumberFormatException e) {
				System.err.println("Warning: config value for reconnection_limit is malformed. Defaulting to 3");
				setReconnectionLimit(3);
			}
		}
	}