revise function dupdate