more snapshot implementation