use main function for entry-point