add function update