added snapshot callback support