add snap feature