change the name of factory main function