added a callback hook