Any potential improvements?

Managed to condense 4 separate scripts into this one to manage my GUIs. Looked over it several times. Could anything be improved for readability/length/efficiency?
(This is a moduleScript in starterPlayerScripts, I use a module loader)

local ButtonHandler = {}

-- Script Variables --
local plr = game:GetService("Players").LocalPlayer
local modules = game:GetService("ReplicatedStorage").Modules
local camModule = require(modules.CameraModule)
local guiModule = require(modules.GuiModule)
local soundModule = require(modules.SoundModule)
local previewModule = require(modules.PreviewModule)
local connections = {}

-- Buttons --
local mainMenu = plr.PlayerGui.Main
local play = mainMenu.Play.Play
local tutorial = mainMenu.Tutorial.Tutorial
local settings = mainMenu.Settings.Settings

local operatorMenu = plr.PlayerGui.Operator
local pageLayout = operatorMenu.List.Content.UIPageLayout
local back = operatorMenu.Back.Back
local pageForward = operatorMenu.List.Title.NextPage
local pageBack = operatorMenu.List.Title.PreviousPage

local buttons = {play,tutorial,settings,back,pageForward,pageBack}

-- Functions --
local function checkDebounce(button)
	-- Check Player's Debounce --
	if button:GetAttribute("debounce") == false then
		task.wait(0.001)
		button:SetAttribute("debounce",true)
		return true
	else
		return false
	end
end

local function transitionTo(camera,gui)
	-- Transition Player Into Gui/Camera --
	guiModule:transitionIn(1)
	camModule:setCam(Enum.CameraType.Scriptable, workspace.MenuArea[camera])
	guiModule:setGui(gui)
	guiModule:transitionOut(1)
end

local function pageChange(direction)
	-- Change Page Forward Or Backward --
	if direction == "Forward" then
		pageLayout:Next()
	elseif direction == "Backward" then
		pageLayout:Previous()
	else
		warn(script.Name.. ": Invalid Page Direction!? Try again.")
	end

	task.wait(.25)
	print(script.Name.. ": " ..plr.Name.. " Paged " ..direction)
end

local function buttonClicked(button)
	-- Switch Case Depending On Button Pressed To Call Functions --
	local buttons = {
		["Play"] = function()
			transitionTo("OperatorCamera","Operator")
		end,

		["Tutorial"] = function()
			warn("Tutorial T.B.D")
		end,

		["Settings"] = function()
			warn("Settings T.B.D")
		end,

		["Back"] = function()
			transitionTo("MainCamera","Main")
		end,

		["NextPage"] = function()
			pageChange("Forward")
			task.wait(.25)
		end,

		["PreviousPage"] = function()
			pageChange("Backward")
			task.wait(.25)
		end,

		["default"] = function()
			warn(script.Name.. ": Clicked button not found!?")
		end,
	}

	if buttons[button.Name] then
		buttons[button.Name]()
	else 
		buttons["default"]()
	end

end

function ButtonHandler:Init()
	-- Manage Most Menu Buttons --
	for _, button in buttons do
		button.MouseButton1Click:Connect(function()

			if not checkDebounce(button) then return end
			soundModule:playSound("Button")
			warn(script.Name.. ": " ..button.Name.. " Pressed By " ..plr.Name)
			buttonClicked(button)
			print(script.Name.. ": " ..plr.Name.. " " ..button.Name.. " Button Ran")
			button:SetAttribute("debounce",false)

		end)
	end

	-- Manage View / Spawn Buttons --
	pageLayout.CurrentPage.Changed:Connect(function()
		for _, connection in connections do
			connection:Disconnect()
		end

		for _,item in pageLayout.CurrentPage:GetDescendants() do
			-- Type Checks --
			if item.ClassName ~= "TextButton" then continue end
			if item:GetAttribute("Type") == nil then continue end

			local connection = item.MouseButton1Click:Connect(function()
				-- When View Button Pressed --
				if item:GetAttribute("Type") == "View" then
					warn(script.Name.. ": Operator " ..item.Name.. " View Button Pressed By " ..plr.Name)
					previewModule:viewOperator(item)

					-- When Spawn Button Pressed --
				elseif item:GetAttribute("Type") == "Spawn" then
					warn("Spawning T.B.D")

				else
					warn(script.Name.. ": Button type not found!?")
				end
			end)
			table.insert(connections, connection)
		end
	end)

	-- Manage Perk Buttons --
	plr.PlayerGui.Operator.PerkList.Content.Frame.ChildAdded:Connect(function(button)
		button.MouseButton1Click:Connect(function()
			previewModule:viewPerk(button.Name)
		end)
	end)
end

return ButtonHandler