update && redirect function