implemented snapshot strategy