Data Not Saving

I have a script that is supposed to save a player’s stone, log, and other resource values. What is strange is my DataStore script for each value is the exact same except for obvious changes like the name, but the wood value is not saving. Can you see anything I have done wrong?

local currencyName = "Pounds"
local DataStore = game:GetService("DataStoreService"):GetDataStore("PoundDataStore")
local CurrencyName = "Rank"
local dataStore = game:GetService("DataStoreService"):GetDataStore("RankDataStore")
local Currencyname = "Denarii"
local Datastore = game:GetService("DataStoreService"):GetDataStore("DenariiDataStore")
local logname = "Wood"
local logstore = game:GetService("DataStoreService"):GetDataStore("LogDataStore")
local stonename = "Stone"
local stonestore = game:GetService("DataStoreService"):GetDataStore("StoneDataStore")
local coalname = "Coal"
local coalstore = game:GetService("DataStoreService"):GetDataStore("CoalDataStore")
local ProgressDataStore = game:GetService("DataStoreService"):GetDataStore("ProgressDataStore")
game.Players.PlayerAdded:Connect(function(player)
	--input folder into player
	local folder = Instance.new("Folder")
	folder.Name = "leaderstats"
	folder.Parent = player
	
	local folder2 = Instance.new("Folder")
	folder2.Name = "materialstorefolder"
	folder2.Parent = player
	
	local folder3 = Instance.new("Folder")
	folder3.Name = "backpack"
	folder3.Parent = player
	local progressfolder = Instance.new("Folder")
	progressfolder.Parent = player
	progressfolder.Name = "Progress"
	
	local logCurrency = Instance.new("IntValue")
	local coalCurrency = Instance.new("IntValue")
	local stoneCurrency = Instance.new("IntValue")
	local Currency = Instance.new("StringValue")
	local currency = Instance.new("IntValue")
	local CURRENCY = Instance.new("IntValue")
	
	logCurrency.Name = logname
	logCurrency.Parent = folder2
	coalCurrency.Name = coalname
	coalCurrency.Parent = folder2
	stoneCurrency.Name = stonename
	stoneCurrency.Parent = folder2
	currency.Name = currencyName
	currency.Parent = folder
	Currency.Name = CurrencyName
	Currency.Parent = folder
	CURRENCY.Name = Currencyname
	CURRENCY.Parent = folder
	
	local logid = logname.."-"..player.UserId
	local savedlogdata = nil
	local coalid = coalname.."-"..player.UserId
	local savedcoaldata = nil
	local stoneid = stonename.."-"..player.UserId
	local savedstonedata = nil
	local ID = currencyName.."-"..player.UserId
	local savedData = nil
	local Id = CurrencyName.."-"..player.UserId
	local SavedData = nil
	local iD = Currencyname.."-"..player.UserId
	local Saveddata = nil
	
	pcall(function()
		savedlogdata = DataStore:GetAsync(logid)
		savedcoaldata = DataStore:GetAsync(coalid)
		savedstonedata = DataStore:GetAsync(stoneid)
		savedData = DataStore:GetAsync(ID)
		SavedData = dataStore:GetAsync(Id)
		Saveddata = Datastore:GetAsync(iD)
	end)
	
	if savedlogdata ~= nil then
		logCurrency.Value = savedlogdata
	else 
		logCurrency.Value = 100
	end
	if savedstonedata ~= nil then
		stoneCurrency.Value = savedstonedata
	else
		stoneCurrency.Value = 100
	end
	if savedcoaldata ~= nil then 
		coalCurrency.Value = savedcoaldata
	else 
		coalCurrency.Value = 10
	end
	if savedData ~= nil then 
		currency.Value = savedData
	else
		currency.Value = 10
	end
	
	if SavedData ~= nil then 
		Currency.Value = SavedData
	else
		Currency.Value = "Serf"
	end
	if Saveddata ~= nil then
		CURRENCY.Value = Saveddata
	else
		CURRENCY.Value = 0
	end
end)

game.Players.PlayerRemoving:Connect(function(player)
	local COALID = coalname.."-"..player.UserId
	DataStore:SetAsync(COALID,player.materialstorefolder[coalname].Value)
	local STONEID = stonename.."-"..player.UserId
	DataStore:SetAsync(STONEID,player.materialstorefolder[stonename].Value)
	local LOGID = logname.."-"..player.UserId
	DataStore:SetAsync(LOGID,player.materialstorefolder[logname].Value)
	local ID = currencyName.."-"..player.UserId
	DataStore:SetAsync(ID,player.leaderstats[currencyName].Value)
	local Id = CurrencyName.."-"..player.UserId
	dataStore:SetAsync(Id,player.leaderstats[CurrencyName].Value)
	local iD = Currencyname.."-"..player.UserId
	Datastore:SetAsync(iD,player.leaderstats[Currencyname].Value)
end)

game:BindToClose(function()
	for i,player in pairs(game.Players:GetPlayers()) do
		if player then 
			player:Kick("This game is shutting down and saving your data")
		end
		wait(5)
	end
end)

Too many DataStores, tabularize the data and save/load it that way instead, i.e;

--SAVING
local stat1 = player.Stat1
local stat2 = player.Stat2
local data = {stat1.Value, stat2.Value}
dataStore:SetAsync(player.UserId, data)

--LOADING
local stat1 = player.Stat1
local stat2 = player.Stat2
local data = dataStore:GetAsync(player.UserId)
stat1.Value = data[1] or 0
stat2.Value = data[2] or 0

Ohhh that makes sense thank you so much