added callback mecanism