private boolean init() {
		logger.trace("Init called.");
		// at first: update the options data if needed
		if (this.updateOptions) {
			this.updateOptions = false;

			if (!this.parseOptions(this.cliArgs)) {
				logger.error(Messages.getString("IdGenerator.ERROR_OPTIONS_UPDATE") + " " + Arrays.toString(this.cliArgs));
				return false;
			}
		}

		logger.trace("Processing CLI arguments...");

		/*
		 * FLAGS
		 */


		/*
		 * DATA
		 */


		/*
		 * FILTERS
		 */
		// blacklist filter
		if (this.options.hasOptionValue("B")) {
			logger.trace("Enable blacklist filter...");
			BlacklistFilter bl = new BlacklistFilter();

			if (this.options.hasOptionValue("Bf")) {
				Globals.BLACKLIST_FILE = this.options.getOptionValue("Bf");
				logger.trace("Using ALTERNATE blacklist file (" + Globals.BLACKLIST_FILE + ").");
			}
			else {
				logger.trace("Using DEFAULT blacklist file (" + Globals.BLACKLIST_FILE + ").");
			}

			// read blacklist from file
			File file = new File(Globals.BLACKLIST_FILE);
			while(bl.addToBlacklist(file.getLine())) {
				// just loop
			}
			file.close();

			this.filterChain.addFilter(bl);
		}

		// passwd filter
		if (this.options.hasOptionValue("P")) {
			logger.trace("Enable passwd filter...");
			PasswdFilter passwd = new PasswdFilter();

			if (this.options.hasOptionValue("Pf")) {
				Globals.PASSWD_FILE = this.options.getOptionValue("Pf");
				logger.trace("Using ALTERNATE passwd file (" + Globals.PASSWD_FILE + ").");
			}
			else {
				logger.trace("Using DEFAULT passwd file (" + Globals.PASSWD_FILE + ").");
			}

			passwd.setFile(Globals.PASSWD_FILE);

			this.filterChain.addFilter(passwd);
		}

		// shellcmd filter
		if (this.options.hasOptionValue("S")) {
			logger.trace("Enable shellcmd filter...");
			ShellCmdFilter shellCmd = new ShellCmdFilter();
			
			if (this.options.hasOptionValue("Sf")) {
				Globals.SHELLCMD = this.options.getOptionValue("Sf");
				logger.trace("Using shell command (" + Globals.SHELLCMD + ").");
			}
			else {
				logger.trace("Using DEFAULT shell command (" + Globals.SHELLCMD + ").");
			}
			
			shellCmd.setCmd(Globals.SHELLCMD);
			
			this.filterChain.addFilter(shellCmd);	
		}
		
		
		
		return true;
	}