main function description