Data script doesn't load tools

Hello, my data script isn’t loading in tools. I believe it’s saving them, though.

local DSS = game:GetService("DataStoreService")
local DS = DSS:GetDataStore("Data")

local function GenerateUID(player)
	return "UID_"..player.UserId
end

function onPlayerAdded(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player
	
	local tokens = Instance.new("IntValue")
	tokens.Name = "Tokens"
	tokens.Parent = leaderstats
	
	local folder = Instance.new("Folder")
	folder.Name = "Tools"
	folder.Parent = player
	
	local data
	local key = GenerateUID(player)
	
	local success, err = pcall(function()
		data = DS:GetAsync(key)
	end)
	if success then
		tokens.Value = data.Tokens
		print("Successfully got data")
		print(data.Tools)
		for i,v in pairs(data.Tools) do
			print(v)
			if game.ReplicatedStorage.Tools:FindFirstChild(v) then
				local clone = game.ReplicatedStorage.Tools:FindFirstChild(v):Clone()
				print(clone)
				clone.Parent = player.Backpack
				clone.Parent = player.StarterGear
				clone.Parent = player.Tools
			end
		end
	else
		player:Kick("\nDataHandler\n\nCouldn't fetch data!")
	end
end

function onPlayerRemoving(player)
	local data = {
		Tokens = player.leaderstats.Tokens.Value,
		Tools = {}
	}
	
	for _,v in pairs(player.Tools:GetChildren()) do
		table.insert(data.Tools, v.Name)
		print(v)
	end
	local key = GenerateUID(player)

	local success, err = pcall(function()
		DS:SetAsync(key, data)
	end)
	if success then
		print("Successfully saved data")
	else
		warn("Error while saving data: "..err)
	end
end

game.Players.PlayerAdded:Connect(onPlayerAdded)
game.Players.PlayerRemoving:Connect(onPlayerRemoving)

I have a question. Why do you parent the tool first to the backpack, then starter gear and finally the tools folder? this just parents the tool to the backpack, then moves the tool to the starter gear and finally to the tools folder where the player can’t use it

Huh, I didn’t realize that. Then how could I clone them 3 times then parent them?

You could do it like this to not waste any extra lines.

game.ReplicatedStorage.Tools:FindFirstChild(v):Clone().Parent = player.Backpack
game.ReplicatedStorage.Tools:FindFirstChild(v):Clone().Parent = player.StargerGear
game.ReplicatedStorage.Tools:FindFirstChild(v):Clone().Parent = player.Tools

well you can clone the tool 3 times for each place or you could change your code to instead of getting the tools from a folder inside the player, simply get the tools from either the backpack or the starter gear for simplicity.
cloning the tool could be as easy as
local tool = replicatedstorage.Tools.FindFirstChild(v)
tool:Clone().Parent = player.Backpack and so on for the others