update with core function