upgrade core function