begin snapshot implementation