Hio, I got this code for a working memory/matching pairs game. Is there a way to make the script more clean so it's easier to add more tiles?

local tileFolder = script.Parent:WaitForChild("Tiles")
local playBoard = script.Parent:WaitForChild("Board")
local imageList = {
1734698534,
1668590180,
1748068112,
2195005382,
 
1465638492,
1465638243,
1273842056,
2506267802,

3984473813,
4879077545,
1266972204,
1173305686,
}
local TOTAL_TILES = 6
local currentTiles = {tileFolder.Tile1, tileFolder.Tile2, tileFolder.Tile3, tileFolder.Tile4, tileFolder.Tile5, tileFolder.Tile6}

for i = #currentTiles, 2, -1 do
	local j = math.random(#currentTiles)
	currentTiles[i], currentTiles[j] = currentTiles[j], currentTiles[i]
end

local pickedID_1 = math.random(1,#imageList) 
local ID1 = "http://www.roblox.com/asset/?id="..imageList[pickedID_1]
table.remove(imageList, pickedID_1)

local pickedID_2 = math.random(1,#imageList) 
local ID2 = "http://www.roblox.com/asset/?id="..imageList[pickedID_2]
table.remove(imageList, pickedID_2)

local pickedID_3 = math.random(1,#imageList) 
local ID3 = "http://www.roblox.com/asset/?id="..imageList[pickedID_3]
table.remove(imageList, pickedID_3)

currentTiles[1].Image.Texture = ID1
currentTiles[2].Image.Texture = ID1
currentTiles[3].Image.Texture = ID2
currentTiles[4].Image.Texture = ID2
currentTiles[5].Image.Texture = ID3
currentTiles[6].Image.Texture = ID3

local WINNER = false
local firsttileFlipped = false
local tile_1_Flipped
local secondtileFlipped = false
local tile_2_Flipped

for _,tile in pairs(tileFolder:GetChildren()) do
	tile.ClickDetector.MouseClick:Connect(function()
		if not tile.Correct.Value == true then
			if not firsttileFlipped then
				tile_1_Flipped = tile -- Object?
				firsttileFlipped = not firsttileFlipped -- First tile flipped
				print(tile.Name.." has been flipped!")
				tile.CFrame = tile.CFrame * CFrame.Angles(0, 0, math.rad(180))
				playBoard["Flip"]:Play()	
			elseif firsttileFlipped and not secondtileFlipped then
				tile_2_Flipped = tile
				if tile_1_Flipped.Name == tile_2_Flipped.Name then
					print("Tile already flipped!")
				else
					secondtileFlipped = not secondtileFlipped -- Second tile flipped
					print(tile.Name.." has been flipped!")
					tile.CFrame = tile.CFrame * CFrame.Angles(0, 0, math.rad(180))
					playBoard["Flip"]:Play()
					if tile_1_Flipped.Image.Texture == tile_2_Flipped.Image.Texture	then
						print("Pair found!")
						tile_1_Flipped.Correct.Value = true
						tile_2_Flipped.Correct.Value = true		
					else
						print("Wrong pair!")
						wait(1)
						tile_1_Flipped.CFrame = tile_1_Flipped.CFrame * CFrame.Angles(0, 0, math.rad(180))
						tile_2_Flipped.CFrame = tile_2_Flipped.CFrame * CFrame.Angles(0, 0, math.rad(180))					
					end
					wait(.5)
					tile_1_Flipped = nil
					tile_2_Flipped = nil
					firsttileFlipped = false
					secondtileFlipped = false	
				end	
			end
		else
			print("Tile already found!")
		end
	end)
end

while wait(1) do
	if not WINNER then
		local AMOUNT = 0
		for _,tile in pairs(tileFolder:GetChildren()) do
			if tile.Correct.Value == true then
				AMOUNT = AMOUNT + 1
			end
		end
		if AMOUNT == TOTAL_TILES then
			WINNER = true
			print("Congratulations, you solved the memory game!")
			playBoard.BrickColor = BrickColor.new("Gold")
		else
			print(AMOUNT)
		end
	end
end