update functional