modify callback interface