I've been working on a Leaderboard with 3 values that uses datasave, but for some reason it doesn't appear to work properly. I don't get an error in the command bar, or anything. Here's the script:

local DataStore2 = require(1936396537)

DataStore2.Combine("MasterKey","Level", "XP", "Gems")

local defaultLevel = 1
local defaultXP = 0
local defaultGems = 0

local XpToLevelUp = function(level)
	return 100 + level * 5
end

game.Players.PlayerAdded:Connect(function(player)
	
	local leaderstats = Instance.new("Folder", player); leaderstats.Name = "leaderstats"
	
	local levelValue = Instance.new("IntValue", leaderstats); levelValue.Name = "Level"
	local xpValue = Instance.new("IntValue", leaderstats); xpValue.Name = "XP"
	local gemValue = Instance.new("IntValue", leaderstats); gemValue.Name = "Gems"
	
	local levelStore = DataStore2("Level", player)
	local xpStore = DataStore2("XP", player)
	local gemStore = DataStore2("Gems", player)
	
	local function updateLevel(Level)
		player.leaderstats.Level.Value = Level
	end
	
	local function updategem(Gems)
		player.leaderstats.Gems.Value = Gems
	end
	
	local function updatexp(XP)
		if XP >= XpToLevelUp(levelStore:Get(defaultLevel)) then
			xpStore:Increment(XpToLevelUp(levelStore:Get(defaultLevel)) * -1)
			levelStore:Increment(1)
		else
			player.leaderstats.XP.Value = XP
		end
	end
	
	updateLevel(levelStore:Get(defaultLevel))
	updatexp(xpStore:Get(defaultXP))
	updategem(gemStore:Get(defaultGems))
	
	levelStore:OnUpdate(updateLevel)
	xpStore:OnUpdate(updatexp)
	gemStore:OnUpdate(updategem)
end)

Please help me figure this out!