Help me improve or fix my script, date store

hello everyone, I created my save date and it does not save statistics well for me, is it possible to improve it? my script

local DS = game:GetService("DataStoreService"):GetDataStore("MyGoodDataStore")
game.Players.PlayerAdded:Connect(function(player)
	wait()
	local plr_key = "id_"..player.UserId
	local key = "id_armor_saves_"..player.UserId
	
	local saves = {
	-- LEADERSTAT SAVES
		player.leaderstats.Status,
		player.leaderstats.Killstreak,
		
		-- CLASS SAVE
		player.Class,
		
		-- FUSION SAVES
		player.BestFusion.FusionName,
		player.BestFusion.FusionMulti,
		
		-- STAT SAVES
		player.Reputation,
		player.Coins,
		player.TotalCoins,
		player.Strength,
		player.Agility,
		player.Psp,
		player.Endurance,
		player.TotalPower,
		
		-- MULTI SAVES
		player.Multi,
		player.eMulti,
		player.pMulti,
		player.aMulti,
		
		-- QUEST SAVES
		player.questNum,
		player.hasClickedQuest,
		player.QuestInfo.Stat,
		player.QuestInfo["Value"],
		
		-- SAFE ZONE SAVE
		player.Safe,
		
		-- POWERS SAVE
		player.Powers.hasAura,
		player.Powers.hasFly,
		player.Powers.hasEnergyPunch,
		player.Powers.hasInvisiblity,
		
		-- CODES SAVES
		player.RedeemedCodes
		
	}	
	
	-- SAVING 
	local GetSaved = DS:GetAsync(plr_key)
	if GetSaved then
		for i, v in pairs(saves) do
			v.Value = GetSaved[i]
		end
	else
		local NFS = {}
		for i, v in pairs(saves) do
			table.insert(NFS, i, v.Value)
		end
		DS:SetAsync(plr_key, NFS)
	end
end)

game.Players.PlayerRemoving:Connect(function(player)
	local saves = {
		-- LEADERSTAT SAVES
		player.leaderstats.Status.Value,
		player.leaderstats.Killstreak.Value,

		-- CLASS SAVE
		player.Class.Value,

		-- FUSION SAVES
		player.BestFusion.FusionName.Value,
		player.BestFusion.FusionMulti.Value,

		-- STAT SAVES
		player.Reputation.Value,
		player.Coins.Value,
		player.TotalCoins.Value,
		player.Strength.Value,
		player.Agility.Value,
		player.Psp.Value,
		player.Endurance.Value,
		player.TotalPower.Value,

		-- MULTI SAVES
		player.Multi.Value,
		player.eMulti.Value,
		player.pMulti.Value,
		player.aMulti.Value,

		-- QUEST SAVES
		player.questNum.Value,
		player.hasClickedQuest.Value,
		player.QuestInfo.Stat.Value,
		player.QuestInfo["Value"].Value,

		-- SAFE ZONE SAVE
		player.Safe.Value,

		-- POWERS SAVE
		player.Powers.hasAura.Value,
		player.Powers.hasFly.Value,
		player.Powers.hasEnergyPunch.Value,
		player.Powers.hasInvisiblity.Value,
		
		-- CODES SAVES
		player.RedeemedCodes.Value,
	}	
	
	DS:SetAsync("id_"..player.UserId, saves)
end)

What’s the error? This script seems fine aside from the fact you’re saving a table (use HTTPServices’s JSON functions).