some changes, add snapshot