add snapshot feature