add callback interfaces