add update functional