add callback guard