DataStore issue

Hello, i was wondering if anyone knows why my script wont work for creating, saving, and loading a datastore

local ds = game:GetService("DataStoreService")

local playerData = ds:GetDataStore("playerData")

game.Players.PlayerAdded:Connect(function(plr)
	
	local leaderstats = Instance.new("Folder", plr)
	leaderstats.Name = "leaderstats"
	
	local money = Instance.new("IntValue", leaderstats)
	money.Name = "Money"
	
	local data
	
	local success, errormessage = pcall(function()
		data = playerData:GetAsync(plr.UserId.."-money")
	end)
	
	if success then
		money.Value = data
	else
		print("Error while loading data, this user might be new to the game.")
	end
end)

game.Players.PlayerRemoving:Connect(function(plr)
	
	local success, errormessage = pcall(function()
		playerData:SetAsync(plr.UserId.."-money", plr.leaderstats.Money.Value)
	end)
	
	if success then
		print((plr.Name).."'s Data has been saved.")
	else
		warn(errormessage)
	end
	
end)
local ds = game:GetService("DataStoreService")
local playerdata = ds:GetDataStore("PlayerData")

game.Players.PlayerAdded:Connect(function(player)

	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local money = Instance.new("IntValue")
	money.Name = "Money"
	money.Parent = leaderstats

	local dataCache

	local done , err = pcall(function()
		dataCache = playerdata:GetAsync(player.UserId.."-money")
	end)

	if dataCache ~= nil and done then
		money.Value = dataCache
	else
		print(player.Name .. "'s datapool has returned nil, set data table.")
		warn(err)
		playerdata:SetAsync(player.UserId .. "-money", player.leaderstats.Money.Value)
	end

end)


local SaveData = function(player)
	local success, errormessage = pcall(function()
		playerdata:UpdateAsync(player.UserId.."-money", function(OldValue)
			return player.leaderstats.Money.Value
		end)
	end)

	if success then
		print("Player's Data has been saved")
	else
		print("There was an error saving player's data")
		warn(errormessage)
	end
end

game.Players.PlayerRemoving:Connect(SaveData)
game:BindToClose(function()
	for _, player in pairs(game.Players:GetPlayers()) do
		SaveData(player)
	end
end)

Fixed up your script.