updated callback signature