apply callback