add callback prototype