updated func