making callbacks richer