upate: require refere instead of use