renamed update_func to update_callback