introduce main function