add non async callback