public static void main(String[] args) throws IOException{
		if ((args.length < 2) || (args.length < 4 && !args[0].equals("-chisquareALL"))) {
			System.out.println("Wrong arguments: -chisquare modelFileName featureA featureB");
			System.out.println("                 -chisquareALL modelFileName");
		} else {
			Map<String, Double> results = new HashMap<String, Double>();
			Corpus dummyCorpus = new Corpus();
			Model model = new Model(dummyCorpus.getFeatureExtractor());
			System.out.println("read model from file " + args[1] + "...");
			model.readModelFromFile(args[1]);
			if (args[0].equals("-chisquare")) {
				System.out.println("start calculation... " + args[2] + " x " + args[3]);
				double p = calculateChiSquare(model, args[2], args[3], Const.splitChar);
				System.out.println("p-value: " + p);
			} else if (args[0].equals("-chisquareALL")) {
				for (Map.Entry<String, MultiSet<String>> feature : model.getFeatureValueFrequency().entrySet()) {
					if (!feature.getKey().contains(Const.roleTypeIdentifier) && !feature.getKey().equals("all")) {
						System.out.print("start calculation... " + Const.roleTypeIdentifier+ " x " + feature.getKey());
						double p = calculateChiSquare(model, Const.roleTypeIdentifier, feature.getKey(), Const.splitChar);
						results.put(feature.getKey(), p);
						System.out.println("\tp-value: " + p);
					}
				}
				results = Helper.sortByValue(results);
				System.out.println("sorted:");
				for(Map.Entry<String, Double> entry : results.entrySet()) {
					System.out.println(entry.getValue()+"\t"+entry.getKey());
				}
			} else {
				System.out.println(args[0] + ": kind of test unknown");
			}
		}
	}