unlock: add callback