fix bug: callback