main method body