public static void main(String[] args) throws IOException {
		boolean quit = false;	// main loop bool
		
		System.out.println("Welcome to C. Yotov's RSA implementation!");
		// If there is a problem with the menu, use the commented code below
/*
		final long startTimeKey = System.currentTimeMillis();
		KeyGen.keyCreation(256);
		final long endTimeKey = System.currentTimeMillis();

		final long startTimeEncr = System.currentTimeMillis();

		Encryption encr = new Encryption("rsa_public_key.txt");
		String fn = "pic",
				fex = ".jpg";
		encr.encrypt(fn+fex, fn+"_fresh.encrypted");
		
		final long endTimeEncr = System.currentTimeMillis();


		final long startTimeDecr = System.currentTimeMillis();

		Decryption decr = new Decryption("rsa_private_key.txt");
		decr.decrypt(fn+"_fresh.encrypted", fn+"_fresh"+fex);

		final long endTimeDecr = System.currentTimeMillis();
		
		System.out.println("Total encryption time: " + (endTimeEncr - startTimeEncr) );
		System.out.println("Total decryption time: " + (endTimeDecr - startTimeDecr) );
		System.out.println("Total key creation time: " + (endTimeKey - startTimeKey) );
*/
		
		do {
		// MAIN MENU
			System.out.println("\n\n\n+==+ MAIN MENU +==+\n\n"+
								"-- 1 - Key Creation -- \n"+
								"-- 2 - Encryption -- \n"+
								"-- 3 - Decryption -- \n"+
								"-- 4 - End -- \n\n");
			layer_1 = user_input.next();	// request user input
			
			// go into the first layer of the menu
			switch(layer_1) {
			
			// KEY CREATION
				case "1":
					keyCreation();
					break;
			// ENCRYPTION
				case "2":
					encryption();
					break;
			// DECRYPTION
				case "3":
					decryption();
					break;
			// exit
				case "4":
					quit = true;
					System.out.println("End.");
					break;
				default: 
					System.out.println("Please choose a valid menu.");
			}
		} while (quit == false);
		
		
	}