It is supposed to make the gui fade in but it doesnt change any of the properties but it prints all of them fine?

local ui = script.Parent
local Panel = ui.Panel
local Open = ui.Open

local isOpen = false
local fading = false

local Props = {
	["Frame"] = "BackgroundTransparency",
	["TextButton"] = {
		"BackgroundTransparency",
		"TextTransparency"
	},
	["ImageLabel"] = "ImageTransparency",
	["TextLabel"] = {
		"BackgroundTransparency",
		"TextTransparency"
	}
}

function checkType(ins)
	if ins.ClassName == nil then
		return typeof(ins)
	elseif ins.ClassName ~= nil then
		print(ins.ClassName)
		return ins.ClassName
	end
end

function fadeIn()
	fading = true
	for _, ins in pairs(Panel:GetDescendants()) do
		local typ = checkType(ins)
		if Props[typ] then
			for i = 1, 0, -0.1 do
				wait(0.1)
				if checkType(Props[typ]) == "table" then
					for _, prop in pairs(Props[typ]) do
						print(prop)
						ins[prop] = ins[prop] + i
					end
				elseif typeof(checkType(Props[typ])) == "string" then
					print(Props[typ])
					if typeof(Props[typ]) == "table" then
						for i, prop in pairs(Props[typ]) do
							ins[prop[i]] = ins[prop[i]] + i
						end
					else
						ins[Props[typ]] = ins[Props[typ]] + i
					end
				end
			end
		end
	end
	fading = false
end

function fadeOut()
	fading = true
	for _, ins in pairs(Panel:GetDescendants()) do
		local typ = checkType(ins)
		if Props[typ] then
			for i = 0, 1, 0.1 do
				wait(0.1)
				if checkType(Props[typ]) == "Table" then
					for _, prop in pairs(Props[typ]) do
						ins[prop] = ins[prop] + i
					end
				elseif checkType(Props[typ]) == "String" then
					ins[Props[typ]] = ins[Props[typ]] + i
				end
			end
		end
	end
	fading = false
end

Open.MouseButton1Click:Connect(function()
	if not fading then
		if isOpen then
			fadeOut()
			isOpen = false
			return
		elseif isOpen == false then
			fadeIn()
			isOpen = true
		end
	end
end)