added callback signature