snap implemented