public boolean init(Object... args) {
		//Perform primary intialization code
		//add shutdown hooks (shutdown courtesies)
		Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
		    public void run() {
		    	System.out.println("Thanks for using the text processor...");
		    }
		}));
		
		//An interesting extension would to be creating a modular argument class
		//so that commands can be extensibly initialized based on commandline options, etc. 
		
		//If arguments are being checked confirm proper number of arguments
		if(INIT_ARGC != -1 && (args == null || args.length != INIT_ARGC)){
			System.out.println("Incorrect number of arguments!");	
			System.exit(1);
		}
		
		//This follows from the specifications given, the program need not terminate.
		for(KeyValuePair<String, Command> c : commands)
			c.Value.setEnabled(c.Value.init((Object[]) args));

		return true;
	}