and main method