added scoped callbacks