implemented snapshot class