some functions upgrade