main method
main method