public int run(String[] args) throws Exception {

		// Parameter checking
		if (args.length < 2) {
			// Not enough parameters
			System.out.println("Error - Not enough parameters");
			System.exit(0);
		} else if (args.length > 2) {
			// Too many parameters
			System.out.println("Error - Too many parameters");
			System.exit(0);
		}
		
		// Creating a JobConf object and assigning a job name for identification purposes
		JobConf conf = new JobConf(getConf(), WordCountImproved.class);
		conf.setJobName("WordCountImproved");

		// Setting configuration object with the Data Type of output Key and Value
		conf.setOutputKeyClass(Text.class);
		conf.setOutputValueClass(IntWritable.class);

		// Providing the Mapper and Reducer class names
		conf.setMapperClass(WordCountImprovedMapper.class);
		conf.setReducerClass(WordCountImprovedReducer.class);

		// The HDFS input and output directory to be fetched from the command line
		FileInputFormat.addInputPath(conf, new Path(args[0]));
		FileOutputFormat.setOutputPath(conf, new Path(args[1]));

		JobClient.runJob(conf);
		return 0;
	}