add snap func