update 2.0 function verson