update callback fn