main method
 main method