Quantcast

5.1.1

Steven Jackson [10-23-14 - 20:32]
5.1.1
Filename
Interface/AddOns/SVUI/packages/_load.xml
Interface/AddOns/SVUI/packages/bag/SVBag.lua
Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
Interface/AddOns/SVUI/packages/chat/SVChat.lua
Interface/AddOns/SVUI/packages/dock/SVDock.lua
Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
Interface/AddOns/SVUI/packages/stats/SVStats.lua
Interface/AddOns/SVUI/packages/tip/SVTip.lua
Interface/AddOns/SVUI/scripts/misc.lua
Interface/AddOns/SVUI/scripts/questwatch.lua
Interface/AddOns/SVUI/scripts/raid.lua
Interface/AddOns/SVUI/setup/installer.lua
Interface/AddOns/SVUI/system/_load.xml
Interface/AddOns/SVUI/system/configs.lua
Interface/AddOns/SVUI/system/core.lua
Interface/AddOns/SVUI/system/docks.lua
Interface/AddOns/SVUI/system/framework.lua
Interface/AddOns/SVUI/system/screen.lua
Interface/AddOns/SVUI/system/templates.lua
Interface/AddOns/SVUI/xml/_load.xml
Interface/AddOns/SVUI/xml/framework.xml
Interface/AddOns/SVUI/xml/widgets.xml
Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua
Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua
Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua
Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
diff --git a/Interface/AddOns/SVUI/packages/_load.xml b/Interface/AddOns/SVUI/packages/_load.xml
index a325aac..a340cac 100644
--- a/Interface/AddOns/SVUI/packages/_load.xml
+++ b/Interface/AddOns/SVUI/packages/_load.xml
@@ -1,6 +1,5 @@
 <Ui xmlns="http://www.blizzard.com/wow/ui/">
 	<Include file="stats\SVStats.xml"/>
-    <Script file="dock\SVDock.lua"/>
     <Include file="aura\SVAura.xml"/>
     <Script file="map\SVMap.lua"/>
     <Include file="plates\SVPlate.xml"/>
diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
index a4c8e6f..6679454 100644
--- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua
+++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
@@ -431,7 +431,7 @@ local ContainerFrame_UpdateLayout = function(self)
 	end

 	if(SV.db.SVBag.alignToChat) then
-		containerWidth = (isBank and SV.db.SVDock.dockLeftWidth or SV.db.SVDock.dockRightWidth)
+		containerWidth = (isBank and SV.db.Dock.dockLeftWidth or SV.db.Dock.dockRightWidth)
 		local avg = 0.08;
 		if(precount > 287) then
 			avg = 0.12
@@ -827,11 +827,11 @@ function MOD:ModifyBags()
 	if(docked) then
 		if self.BagFrame then
 			self.BagFrame:ClearAllPoints()
-			self.BagFrame:Point("BOTTOMRIGHT", RightSuperDock, "BOTTOMRIGHT", 0, 0)
+			self.BagFrame:Point("BOTTOMRIGHT", SV.Dock.Right, "BOTTOMRIGHT", 0, 0)
 		end
 		if self.BankFrame then
 			self.BankFrame:ClearAllPoints()
-			self.BankFrame:Point("BOTTOMLEFT", LeftSuperDock, "BOTTOMLEFT", 0, 0)
+			self.BankFrame:Point("BOTTOMLEFT", SV.Dock.Left, "BOTTOMLEFT", 0, 0)
 		end
 	else
 		if self.BagFrame then
@@ -873,7 +873,7 @@ do
 		if MOD.BagBarLoaded then return end

 		local bar = CreateFrame("Frame", "SVUI_BagBar", SV.Screen)
-		bar:SetPoint("TOPRIGHT", RightSuperDock, "TOPLEFT", -4, 0)
+		bar:SetPoint("TOPRIGHT", SV.Dock.Right, "TOPLEFT", -4, 0)
 		bar.buttons = {}
 		bar:EnableMouse(true)
 		bar:SetScript("OnEnter", Bags_OnEnter)
diff --git a/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua b/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
index cf4e249..db5bf53 100644
--- a/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
+++ b/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
@@ -290,10 +290,10 @@ function MOD:BreakStuffLoader()

 	if not allowed then return end

-	BreakStuffButton:SetParent(RightSuperDockUtilityBar)
-	local size = RightSuperDockUtilityBar.currentSize
+	BreakStuffButton:SetParent(SV.Dock.Right.UtilityBar)
+	local size = SV.Dock.Right.UtilityBar:GetHeight()
 	BreakStuffButton:Size(size, size)
-	BreakStuffButton:Point("RIGHT", RightSuperDockUtilityBar, "LEFT", -6, 0)
+	BreakStuffButton:Point("RIGHT", SV.Dock.Right.UtilityBar, "LEFT", -6, 0)
 	BreakStuffButton:Show();
 	BreakStuffButton:SetFramedButtonTemplate()
 	BreakStuffButton.icon=BreakStuffButton:CreateTexture(nil,"OVERLAY")
diff --git a/Interface/AddOns/SVUI/packages/chat/SVChat.lua b/Interface/AddOns/SVUI/packages/chat/SVChat.lua
index 0a1b2a7..66eeb26 100644
--- a/Interface/AddOns/SVUI/packages/chat/SVChat.lua
+++ b/Interface/AddOns/SVUI/packages/chat/SVChat.lua
@@ -141,7 +141,6 @@ local CHAT_FLAG_GM = "[GM] ";
 LOCAL FUNCTIONS
 ##########################################################
 ]]--
-local tabholder = CreateFrame("Frame", "SVUI_ChatTabHolder", UIParent)
 local ScrollIndicator = CreateFrame("Frame", nil)

 do
@@ -435,23 +434,23 @@ do

 	local EditBox_OnEditFocusGained = function(self)
 		self:Show()
-		if not LeftSuperDock:IsShown()then
-			LeftSuperDock.editboxforced = true;
-			LeftSuperDockToggleButton:GetScript("OnEnter")(LeftSuperDockToggleButton)
+		if not SV.Dock.Left:IsShown()then
+			SV.Dock.Left.editboxforced = true;
+			SV.Dock.Left.Button:GetScript("OnEnter")(SV.Dock.Left.Button)
 		end

-		LeftSuperDockAlert:Activate(self)
+		SV.Dock.Left.Alert:Activate(self)
 	end

 	local EditBox_OnEditFocusLost = function(self)
-		if LeftSuperDock.editboxforced then
-			LeftSuperDock.editboxforced = nil;
-			if LeftSuperDock:IsShown()then
-				LeftSuperDockToggleButton:GetScript("OnLeave")(LeftSuperDockToggleButton)
+		if SV.Dock.Left.editboxforced then
+			SV.Dock.Left.editboxforced = nil;
+			if SV.Dock.Left:IsShown()then
+				SV.Dock.Left.Button:GetScript("OnLeave")(SV.Dock.Left.Button)
 			end
 		end
 		self:Hide()
-		LeftSuperDockAlert:Deactivate()
+		SV.Dock.Left.Alert:Deactivate()
 	end

 	local EditBox_OnTextChanged = function(self)
@@ -499,13 +498,13 @@ do
 		local lastTab = TabsList[1];
 		if(lastTab) then
 			lastTab:ClearAllPoints()
-			lastTab:Point("LEFT", tabholder, "LEFT", 3, 0);
+			lastTab:Point("LEFT", SV.Dock.Left.ToolBar, "LEFT", 3, 0);
 		end
 		for chatID,frame in pairs(TabsList) do
 			if(frame and chatID ~= 1 and frame.isDocked) then
 				frame:ClearAllPoints()
 				if(not lastTab) then
-					frame:Point("LEFT", tabholder, "LEFT", 3, 0);
+					frame:Point("LEFT", SV.Dock.Left.ToolBar, "LEFT", 3, 0);
 				else
 					frame:Point("LEFT", lastTab, "RIGHT", 6, 0);
 				end
@@ -537,17 +536,17 @@ do
 		TabSafety[name] = true;
 		TabsList[chatID] = frame
 	    frame.chatID = chatID;
-	    frame:SetParent(tabholder)
+	    frame:SetParent(SV.Dock.Left.ToolBar)
 	    _repositionDockedTabs()
 	end

 	local function _customTab(tab, chatID, enabled)
 		if(tab.IsStyled) then return end
 		local tabName = tab:GetName();
-		local tabSize = tabholder.currentSize or 22;
+		local tabSize = SV.Dock.Left.ToolBar:GetHeight();
 		local tabText = tab.text:GetText() or "Chat "..chatID;

-		local holder = CreateFrame("Frame", ("SVUI_ChatTab%s"):format(chatID), tabholder)
+		local holder = CreateFrame("Frame", ("SVUI_ChatTab%s"):format(chatID), SV.Dock.Left.ToolBar)
 		holder:SetWidth(tabSize * 1.75)
 		holder:SetHeight(tabSize)
 		tab.chatID = chatID;
@@ -655,7 +654,7 @@ do
 			_G[editBoxName.."FocusRight"]:Die()
 			editBox:SetFixedPanelTemplate("Button", true)
 			editBox:SetAltArrowKeyMode(false)
-			editBox:SetAllPoints(LeftSuperDockAlert)
+			editBox:SetAllPoints(SV.Dock.Left.Alert)
 			editBox:HookScript("OnEditFocusGained", EditBox_OnEditFocusGained)
 			editBox:HookScript("OnEditFocusLost", EditBox_OnEditFocusLost)
 			editBox:HookScript("OnTextChanged", EditBox_OnTextChanged)
@@ -664,7 +663,7 @@ do
 			chat:SetFading(CHAT_FADING)
 			chat:SetScript("OnHyperlinkClick", SVUI_OnHyperlinkShow)

-			local alertSize = (tabholder.currentSize or 22) * 2;
+			local alertSize = (SV.Dock.Left.ToolBar:GetHeight()) * 2;
 			local alert = CreateFrame("Frame", nil, tab)
 			alert:SetSize(alertSize, alertSize)
 			alert:SetFrameStrata("DIALOG")
@@ -731,14 +730,14 @@ do
 					chat:ClearAllPoints()
 					chat:Width(CHAT_WIDTH)
 					chat:Height(CHAT_HEIGHT)
-					chat:Point("BOTTOMRIGHT",LeftSuperDockFrameHolder,"BOTTOMRIGHT",-4,10)
+					chat:Point("BOTTOMRIGHT",SV.Dock.Left.Window,"BOTTOMRIGHT",-4,10)
 					FCF_SavePositionAndDimensions(chat)
 				end
-				chat:SetParent(LeftSuperDockFrameHolder)
+				chat:SetParent(SV.Dock.Left.Window)
 				if(not TAB_SKINS) then
 					tab.owner = chat;
 					tab.isDocked = chat.isDocked;
-					tab:SetParent(tabholder)
+					tab:SetParent(SV.Dock.Left.ToolBar)
 					_modifyTab(tab, false)
 				else
 					tab.owner = chat;
@@ -824,7 +823,7 @@ do
 	end

 	local _hook_GDMFrameSetPoint = function(self)
-		self:SetAllPoints(tabholder)
+		self:SetAllPoints(SV.Dock.Left.ToolBar)
 	end

 	local _hook_GDMScrollSetPoint = function(self, point, anchor, attachTo, x, y)
@@ -938,8 +937,8 @@ do
 end

 function MOD:UpdateLocals()
-	CHAT_WIDTH = (SV.db.SVDock.dockLeftWidth or 350) - 10;
-	CHAT_HEIGHT = (SV.db.SVDock.dockLeftHeight or 180) - 15;
+	CHAT_WIDTH = (SV.db.Dock.dockLeftWidth or 350) - 10;
+	CHAT_HEIGHT = (SV.db.Dock.dockLeftHeight or 180) - 15;
 	CHAT_THROTTLE = SV.db.SVChat.throttleInterval;
 	CHAT_ALLOW_URL = SV.db.SVChat.url;
 	CHAT_HOVER_URL = SV.db.SVChat.hyperlinkHover;
@@ -969,9 +968,9 @@ end
 function MOD:Load()
 	if(not SV.db.SVChat.enable) then return end

-	ScrollIndicator:SetParent(LeftSuperDockFrameHolder)
+	ScrollIndicator:SetParent(SV.Dock.Left.Window)
 	ScrollIndicator:SetSize(20,20)
-	ScrollIndicator:SetPoint("BOTTOMRIGHT", LeftSuperDockFrameHolder, "BOTTOMRIGHT", 6, 0)
+	ScrollIndicator:SetPoint("BOTTOMRIGHT", SV.Dock.Left.Window, "BOTTOMRIGHT", 6, 0)
 	ScrollIndicator:SetFrameStrata("HIGH")
 	ScrollIndicator.icon = ScrollIndicator:CreateTexture(nil, "OVERLAY")
 	ScrollIndicator.icon:SetAllPoints()
@@ -989,20 +988,10 @@ function MOD:Load()
 	self:UpdateLocals()
 	self:RefreshChatFrames(true)

-	local buttonsize = LeftSuperDockToolBar.currentSize or 22
-    local barWidth = LeftSuperDock:GetWidth() - buttonsize
-    local spacing = LeftSuperDock.currentSpacing or 4
-
-    tabholder:SetFrameStrata("BACKGROUND")
-    tabholder:Size(barWidth, buttonsize)
-    tabholder:Point("LEFT", LeftSuperDockToolBar, "RIGHT", spacing, 0)
-    tabholder:SetFrameLevel(tabholder:GetFrameLevel() + 2)
-    tabholder.currentSize = buttonsize;
-
 	_G.GeneralDockManagerOverflowButton:ClearAllPoints()
-	_G.GeneralDockManagerOverflowButton:SetPoint('BOTTOMRIGHT', tabholder, 'BOTTOMRIGHT', -2, 2)
+	_G.GeneralDockManagerOverflowButton:SetPoint('BOTTOMRIGHT', SV.Dock.Left.ToolBar, 'BOTTOMRIGHT', -2, 2)
 	_G.GeneralDockManagerOverflowButtonList:SetFixedPanelTemplate('Transparent')
-	_G.GeneralDockManager:SetAllPoints(tabholder)
+	_G.GeneralDockManager:SetAllPoints(SV.Dock.Left.ToolBar)

 	SetAllChatHooks()
 	FriendsMicroButton:Die()
diff --git a/Interface/AddOns/SVUI/packages/dock/SVDock.lua b/Interface/AddOns/SVUI/packages/dock/SVDock.lua
deleted file mode 100644
index fa403ac..0000000
--- a/Interface/AddOns/SVUI/packages/dock/SVDock.lua
+++ /dev/null
@@ -1,1092 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-	__\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-	 ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-		______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-		 _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-			__/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-			 _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-				___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack        = _G.unpack;
-local select        = _G.select;
-local assert        = _G.assert;
-local type          = _G.type;
-local error         = _G.error;
-local pcall         = _G.pcall;
-local print         = _G.print;
-local ipairs        = _G.ipairs;
-local pairs         = _G.pairs;
-local tostring      = _G.tostring;
-local tonumber      = _G.tonumber;
-
---STRING
-local string        = _G.string;
-local upper         = string.upper;
-local format        = string.format;
-local find          = string.find;
-local match         = string.match;
-local gsub          = string.gsub;
---TABLE
-local table 		= _G.table;
-local tinsert       = _G.tinsert;
-local tremove       = _G.tremove;
-local twipe 		= _G.wipe;
---MATH
-local math      	= _G.math;
-local min 			= math.min;
-local floor         = math.floor
-local ceil          = math.ceil
---BLIZZARD API
-local GameTooltip          	= _G.GameTooltip;
-local InCombatLockdown     	= _G.InCombatLockdown;
-local CreateFrame          	= _G.CreateFrame;
-local GetTime         		= _G.GetTime;
-local GetItemCooldown       = _G.GetItemCooldown;
-local GetItemCount         	= _G.GetItemCount;
-local GetItemInfo          	= _G.GetItemInfo;
-local GetSpellInfo         	= _G.GetSpellInfo;
-local IsSpellKnown         	= _G.IsSpellKnown;
-local GetProfessions       	= _G.GetProfessions;
-local GetProfessionInfo    	= _G.GetProfessionInfo;
-local hooksecurefunc     	= _G.hooksecurefunc;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = select(2, ...)
-local L = SV.L
-
-local MOD = SV:NewPackage("SVDock", L["Docks"]);
-
-MOD.Docklets = {
-	DEFAULT = "",
-	FRAMES = {},
-	TOOLS = {},
-	SAFETY = {}
-}
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local AddOnButton = CreateFrame("Button", "SVUI_AddonDocklet", UIParent);
-local SVUI_AddonDock1 = CreateFrame('Frame', 'SVUI_AddonDock1', UIParent);
-local SVUI_AddonDock2 = CreateFrame('Frame', 'SVUI_AddonDock2', UIParent);
-local DockletMenu = CreateFrame("Frame", "SVUI_DockletMenu", UIParent);
-local leftdock = CreateFrame("Frame", "LeftSuperDock", UIParent)
-local leftbutton = CreateFrame("Button", "LeftSuperDockToggleButton", UIParent)
-local toolbarLeft = CreateFrame("Frame", "LeftSuperDockToolBar", UIParent)
-local rightdock = CreateFrame("Frame", "RightSuperDock", UIParent)
-local rightbutton = CreateFrame("Button", "RightSuperDockToggleButton", UIParent)
-local toolbarRight = CreateFrame("Frame", "RightSuperDockToolBar", UIParent)
-local macrobar = CreateFrame("Frame", "RightSuperDockUtilityBar", UIParent)
-local leftwindow = CreateFrame("Frame", "LeftSuperDockFrameHolder", leftdock)
-local rightwindow = CreateFrame("Frame", "RightSuperDockFrameHolder", rightdock)
-local topdock = CreateFrame("Frame", "TopSuperDock", UIParent)
-local toolbarTop = CreateFrame("Frame", "TopSuperDockToolBar", UIParent)
-toolbarTop.openWidth = 34
-
-SVUI_AddonDock1.FrameName = "None";
-SVUI_AddonDock2.FrameName = "None";
-
-local ICONFILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-BAG-MICRO]];
-local TOOL_DATA = {
-	[171] 	= {0,0.25,0,0.25}, 				-- PRO-ALCHEMY
-    [794] 	= {0.25,0.5,0,0.25,80451}, 		-- PRO-ARCHAELOGY
-    [164] 	= {0.5,0.75,0,0.25}, 			-- PRO-BLACKSMITH
-    [185] 	= {0.75,1,0,0.25,818,67097}, 	-- PRO-COOKING
-    [333] 	= {0,0.25,0.25,0.5,13262}, 		-- PRO-ENCHANTING
-    [202] 	= {0.25,0.5,0.25,0.5}, 			-- PRO-ENGINEERING
-    [129] 	= {0.5,0.75,0.25,0.5}, 			-- PRO-FIRSTAID
-    [773] 	= {0,0.25,0.5,0.75,51005}, 		-- PRO-INSCRIPTION
-    [755] 	= {0.25,0.5,0.5,0.75,31252},	-- PRO-JEWELCRAFTING
-    [165] 	= {0.5,0.75,0.5,0.75}, 			-- PRO-LEATHERWORKING
-    [186] 	= {0.75,1,0.5,0.75}, 			-- PRO-MINING
-    [197] 	= {0.25,0.5,0.75,1}, 			-- PRO-TAILORING
-}
-local HEARTH_SPELLS = {556,50977,18960,126892}
---[[
-##########################################################
-PRE VARS/FUNCTIONS
-##########################################################
-]]--
-local DD_OnClick = function(self)
-	-- DO STUFF
-	self:GetParent():Hide()
-end
-
-local DD_OnEnter = function(self)
-	self.hoverTex:Show()
-end
-
-local DD_OnLeave = function(self)
-	self.hoverTex:Hide()
-end
-
-local function SetFilterMenu(self)
-	DockletMenu:ClearAllPoints()
-	DockletMenu:SetPoint("TOPLEFT", self, "BOTTOMLEFT", 0, -8)
-	ToggleFrame(DockletMenu)
-end
-
-local function CycleDocklets()
-	local list = MOD.Docklets.FRAMES
-	for i=1, #list do
-		local f = list[i]
-		if(not InCombatLockdown() or (InCombatLockdown() and (f.IsProtected and not f:IsProtected()))) then
-			local b = _G[f.ToggleName]
-			b:Deactivate()
-			if f.Hide then
-				f:Hide()
-			end
-		end
-	end
-end
-
-local function GetDefaultWindow()
-	local window = MOD.Docklets.DEFAULT
-	if window and _G[window] then
-		RightSuperDockFrameHolder.FrameName = window
-		RightSuperDockFrameHolder:Show()
-	end
-end
-
-local AlertActivate = function(self, child)
-	local size = SV.db.SVDock.buttonSize or 22;
-	self:Height(size)
-	child:ClearAllPoints()
-	child:SetAllPoints(self)
-end
-
-local AlertDeactivate = function(self)
-	self:Height(1)
-end
-
-local leftalert = CreateFrame("Frame", "LeftSuperDockAlert", UIParent)
-leftalert.Activate = AlertActivate
-leftalert.Deactivate = AlertDeactivate
-
-local rightalert = CreateFrame("Frame", "RightSuperDockAlert", UIParent)
-rightalert.Activate = AlertActivate
-rightalert.Deactivate = AlertDeactivate
-
-local rightDockSizeHook = function(self,width,height)
-	RightSuperDockFrameHolder:Width(width)
-	RightSuperDockFrameHolder:Height(height)
-	RightSuperDockFrameHolder:SetPoint("BOTTOMLEFT", RightSuperDockAlert, "TOPLEFT", 0, 0)
-end
-
-local ToggleDocks = function(self)
-	GameTooltip:Hide()
-	if SV.cache.Docks.SuperDockFaded then
-		SV.cache.Docks.SuperDockFaded = nil;
-		SV:SecureFadeIn(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 1)
-		SV:SecureFadeIn(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 1)
-	else
-		SV.cache.Docks.SuperDockFaded = true;
-		SV:SecureFadeOut(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 0, true)
-		SV:SecureFadeOut(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 0, true)
-	end
-end
-
-local Docklet_OnShow = function(self)
-	if(_G[RightSuperDockFrameHolder.FrameName]) then
-		if(InCombatLockdown() and (_G[RightSuperDockFrameHolder.FrameName].IsProtected and _G[RightSuperDockFrameHolder.FrameName]:IsProtected())) then return end
-		_G[RightSuperDockFrameHolder.FrameName]:Show()
-	end
-	if _G[RightSuperDockFrameHolder.SecondName] then
-		if(InCombatLockdown() and (_G[RightSuperDockFrameHolder.SecondName].IsProtected and _G[RightSuperDockFrameHolder.SecondName]:IsProtected())) then return end
-		_G[RightSuperDockFrameHolder.SecondName]:Show()
-	end
-end
-
-local DockletButton_SaveColors = function(self, bg, ig, locked)
-    if(locked and (locked ~= nil) and self:GetAttribute("colorLocked")) then return end
-    self:SetAttribute("bgGradient", bg)
-    self:SetAttribute("iconGradient", ig)
-    self:SetAttribute("colorLocked", locked)
-
-    self:SetPanelColor(bg)
-    self.Icon:SetGradient(unpack(SV.Media.gradient[ig]))
-end
-
-local DockButtonActivate = function(self)
-	self.IsOpen = true;
-	self:SaveColors("green", "green")
-end
-
-local DockButtonDeactivate = function(self)
-	self.IsOpen = false;
-	self:SaveColors("default", "icon")
-end
-
-local DockletButton_OnEnter = function(self, ...)
-	if SV.cache.Docks.SuperDockFaded then
-		LeftSuperDock:Show()
-		SV:SecureFadeIn(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 1)
-		RightSuperDock:Show()
-		SV:SecureFadeIn(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 1)
-	end
-
-	self:SetPanelColor("highlight")
-	self.Icon:SetGradient(unpack(SV.Media.gradient.bizzaro))
-
-	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-	GameTooltip:ClearLines()
-	if(self.CustomTooltip) then
-		self:CustomTooltip()
-	else
-		GameTooltip:AddLine(self.TText, 1, 1, 1)
-	end
-	GameTooltip:Show()
-end
-
-local DockletButton_OnLeave = function(self, ...)
-	if SV.cache.Docks.SuperDockFaded then
-		SV:SecureFadeOut(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 0, true)
-		SV:SecureFadeOut(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 0, true)
-	end
-
-	local bg = self:GetAttribute("bgGradient")
-    local ig = self:GetAttribute("iconGradient")
-
-	self:SetPanelColor(bg)
-	self.Icon:SetGradient(unpack(SV.Media.gradient[ig]))
-
-	GameTooltip:Hide()
-end
-
-local DockletButton_OnClick = function(self, button)
-	if InCombatLockdown() then return end
-	if button == "RightButton" then
-		SetFilterMenu(self);
-	else
-		local linkedFrame = self.FrameName
-		if linkedFrame and _G[linkedFrame] then
-			RightSuperDockFrameHolder.FrameName = linkedFrame
-			if not _G[linkedFrame]:IsShown() then
-				CycleDocklets()
-			end
-			if not RightSuperDockFrameHolder:IsShown()then
-				RightSuperDockFrameHolder:Show()
-			end
-			_G[linkedFrame]:Show()
-			self:Activate()
-		else
-			self:Deactivate()
-			GetDefaultWindow()
-		end
-	end
-end
-
-local DockletFrame_OnShow = function(self)
-	local frameName = self.FrameName;
-	if (frameName and _G[frameName]) then
-		_G[frameName]:Show()
-	end
-end
-
-local AddonDockletToggle = function(self)
-	if SVUI_AddonDock1.FrameName and _G[SVUI_AddonDock1.FrameName] then
-		if not _G[SVUI_AddonDock1.FrameName]:IsShown() then
-			CycleDocklets()
-			if not InCombatLockdown() and not SVUI_AddonDock1:IsShown()then
-				SVUI_AddonDock1:Show()
-			end
-			_G[SVUI_AddonDock1.FrameName]:Show()
-			self:Activate()
-		elseif not SVUI_AddonDock1:IsShown()then
-			if not InCombatLockdown() then SVUI_AddonDock1:Show() end
-			_G[SVUI_AddonDock1.FrameName]:Show()
-			self:Activate()
-		end
-	else
-		SVUI_AddonDock1.FrameName = "None"
-		if InCombatLockdown()then return end
-		if SVUI_AddonDock1:IsShown()then
-			SVUI_AddonDock1:Hide()
-		else
-			SVUI_AddonDock1:Show()
-		end
-		self:Deactivate()
-	end
-	if SV.db.SVDock.docklets.enableExtra and SVUI_AddonDock2.FrameName and _G[SVUI_AddonDock2.FrameName] then
-		if not _G[SVUI_AddonDock2.FrameName]:IsShown() then
-			if not InCombatLockdown() and not SVUI_AddonDock2:IsShown()then
-				SVUI_AddonDock2:Show()
-				SVUI_AddonDock1:Show()
-			end
-			_G[SVUI_AddonDock2.FrameName]:Show()
-			self:Activate()
-		elseif not SVUI_AddonDock2:IsShown() then
-			if not InCombatLockdown() then
-				SVUI_AddonDock2:Show()
-				SVUI_AddonDock1:Show()
-			end
-			_G[SVUI_AddonDock2.FrameName]:Show()
-			self:Activate()
-		else
-			if not InCombatLockdown() then
-				SVUI_AddonDock2:Hide()
-				SVUI_AddonDock1:Hide()
-			end
-			self:Deactivate()
-		end
-	else
-		SVUI_AddonDock2.FrameName = "None"
-	end
-end
-
-local function SetSuperDockStyle(dock)
-	if dock.backdrop then return end
-	local backdrop = CreateFrame("Frame", nil, dock)
-	backdrop:SetAllPoints(dock)
-	backdrop:SetFrameStrata("BACKGROUND")
-	backdrop.bg = backdrop:CreateTexture(nil, "BORDER")
-	backdrop.bg:FillInner(backdrop)
-	backdrop.bg:SetTexture(1, 1, 1, 1)
-	backdrop.bg:SetGradientAlpha("VERTICAL", 0, 0, 0, 0.8, 0, 0, 0, 0)
-	backdrop.left = backdrop:CreateTexture(nil, "OVERLAY")
-	backdrop.left:SetTexture(1, 1, 1, 1)
-	backdrop.left:Point("TOPLEFT", 1, -1)
-	backdrop.left:Point("BOTTOMLEFT", -1, 1)
-	backdrop.left:Width(4)
-	backdrop.left:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0)
-	backdrop.right = backdrop:CreateTexture(nil, "OVERLAY")
-	backdrop.right:SetTexture(1, 1, 1, 1)
-	backdrop.right:Point("TOPRIGHT", -1, -1)
-	backdrop.right:Point("BOTTOMRIGHT", -1, 1)
-	backdrop.right:Width(4)
-	backdrop.right:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0)
-	backdrop.bottom = backdrop:CreateTexture(nil, "OVERLAY")
-	backdrop.bottom:SetTexture(0, 0, 0, 1)
-	backdrop.bottom:Point("BOTTOMLEFT", 1, 1)
-	backdrop.bottom:Point("BOTTOMRIGHT", -1, 1)
-	backdrop.bottom:Height(4)
-	backdrop.top = backdrop:CreateTexture(nil, "OVERLAY")
-	backdrop.top:SetTexture(0,0,0,0)
-	backdrop.top:Point("TOPLEFT", 1, -1)
-	backdrop.top:Point("TOPRIGHT", -1, 1)
-	backdrop.top:SetAlpha(0)
-	backdrop.top:Height(1)
-	return backdrop
-end
-
-MOD.CycleDocklets = CycleDocklets
---[[
-##########################################################
-CORE FUNCTIONS
-##########################################################
-]]--
-_G.HideSuperDocks = function()
-	ToggleDocks(LeftDockToggleButton)
-end
---[[
-##########################################################
-DOCKLET HELPERS
-##########################################################
-]]--
-local function RemoveTool(button)
-	if not button or not button.listIndex then return end
-	local name = button:GetName();
-	if not MOD.Docklets.SAFETY[name] then return end
-	MOD.Docklets.SAFETY[name] = false;
-	local i = button.listIndex;
-	tremove(MOD.Docklets.TOOLS, i)
-	local width;
-	local height = RightSuperDockToolBar.currentSize;
-	local stored = MOD.Docklets.TOOLS
-	local PREV_TOOL = stored[#stored]
-	local xOffset = (#stored - 1) * (height + 6) + 6
-	PREV_TOOL:SetPoint("RIGHT", RightSuperDockToolBar, "RIGHT", (xOffset * -1), 0);
-	width = #stored * (height + 6)
-	RightSuperDockToolBar:Size(width, height)
-	button:Hide()
-end
-
-local function AddTool(button)
-	local name = button:GetName();
-	if MOD.Docklets.SAFETY[name] then return end
-	MOD.Docklets.SAFETY[name] = true;
-	local width;
-	local height = RightSuperDockToolBar.currentSize or 22;
-	local xOffset = #MOD.Docklets.TOOLS * (height + 6) + 6
-	button:SetPoint("RIGHT", RightSuperDockToolBar, "RIGHT", (xOffset * -1), 0);
-	tinsert(MOD.Docklets.TOOLS, button)
- 	button.listIndex = #MOD.Docklets.TOOLS;
-	width = #MOD.Docklets.TOOLS * (height + 6)
-	RightSuperDockToolBar:Size(width, height)
-	button:Show()
-end
-
-local function ActivateDockletButton(button, clickFunction, tipFunction, isdefault)
-	button.SaveColors = DockletButton_SaveColors
-	button.Activate = DockButtonActivate
-	button.Deactivate = DockButtonDeactivate
-
-	if(tipFunction and type(tipFunction) == "function") then
-		button.CustomTooltip = tipFunction
-	end
-
-	if(isdefault) then
-		MOD.Docklets.DEFAULT = button:GetAttribute("ownerFrame")
-		button:SaveColors("green", "green")
-	else
-		button:SaveColors("default", "icon")
-	end
-
-	button:SetScript("OnEnter", DockletButton_OnEnter)
-	button:SetScript("OnLeave", DockletButton_OnLeave)
-
-	if(clickFunction and type(clickFunction) == "function") then
-		button:SetScript("OnClick", clickFunction)
-	end
-end
-
-local function CreateBasicToolButton(name, texture, onclick, frameName, isdefault)
-	local fName = frameName or name;
-	local dockIcon = texture or [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]];
-	local clickFunction = (type(onclick)=="function") and onclick or DockletButton_OnClick;
-	local size = RightSuperDockToolBar.currentSize;
-	local button = _G[fName .. "_ToolBarButton"] or CreateFrame("Button", ("%s_ToolBarButton"):format(fName), RightSuperDockToolBar, "SVUI_DockletButtonTemplate")
-
-	AddTool(button)
-
-	button:Size(size,size)
-	button:SetFramedButtonTemplate()
-	button.Icon:SetTexture(dockIcon)
-	button:SetAttribute("tipText", "Open " .. name)
-    button:SetAttribute("ownerFrame", fName)
-
-	ActivateDockletButton(button, clickFunction, nil, isdefault)
-
-	_G[fName].ToggleName = fName.."_ToolBarButton";
-
-	return button
-end
---[[
-##########################################################
-DOCKS
-##########################################################
-]]--
-function MOD:CreateDockPanels()
-	local leftWidth = SV.db.SVDock.dockLeftWidth or 350;
-	local leftHeight = SV.db.SVDock.dockLeftHeight or 180;
-	local rightWidth = SV.db.SVDock.dockRightWidth or 350;
-	local rightHeight = SV.db.SVDock.dockRightHeight or 180;
-	local buttonsize = SV.db.SVDock.buttonSize or 22;
-	local spacing = SV.db.SVDock.buttonSpacing or 4;
-	local texture = [[Interface\AddOns\SVUI\assets\artwork\Template\BUTTON]];
-
-	-- [[ TOP AND BOTTOM BORDERS ]] --
-
-	local TopBorder = CreateFrame("Frame", "SVUITopBorder", SV.Screen)
-	TopBorder:Point("TOPLEFT", SV.Screen, "TOPLEFT", -1, 1)
-	TopBorder:Point("TOPRIGHT", SV.Screen, "TOPRIGHT", 1, 1)
-	TopBorder:Height(14)
-	TopBorder:SetBackdrop({
-		bgFile = texture,
-		edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-		tile = false,
-		tileSize = 0,
-		edgeSize = 1,
-		insets = {left = 0, right = 0, top = 0, bottom = 0}
-	})
-	TopBorder:SetBackdropColor(unpack(SV.Media.color.special))
-	TopBorder:SetBackdropBorderColor(0,0,0,1)
-	TopBorder:SetFrameLevel(0)
-	TopBorder:SetFrameStrata('BACKGROUND')
-	self.TopBorder = TopBorder;
-	self.TopBorder:SetScript("OnShow", function(this)
-		this:SetFrameLevel(0)
-		this:SetFrameStrata('BACKGROUND')
-	end)
-	self:TopBorderVisibility()
-
-	local BottomBorder = CreateFrame("Frame", "SVUIBottomBorder", SV.Screen)
-	BottomBorder:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", -1, -1)
-	BottomBorder:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", 1, -1)
-	BottomBorder:Height(14)
-	BottomBorder:SetBackdrop({
-		bgFile = texture,
-		edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-		tile = false,
-		tileSize = 0,
-		edgeSize = 1,
-		insets = {left = 0, right = 0, top = 0, bottom = 0}
-	})
-	BottomBorder:SetBackdropColor(unpack(SV.Media.color.special))
-	BottomBorder:SetBackdropBorderColor(0,0,0,1)
-	BottomBorder:SetFrameLevel(0)
-	BottomBorder:SetFrameStrata('BACKGROUND')
-	self.BottomBorder = BottomBorder;
-	self.BottomBorder:SetScript("OnShow", function(this)
-		this:SetFrameLevel(0)
-		this:SetFrameStrata('BACKGROUND')
-	end)
-	self:BottomBorderVisibility()
-
-	-- [[ BOTTOM LEFT DOCK ]] --
-
-    leftdock:SetFrameStrata("BACKGROUND")
-    leftdock:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", 1, buttonsize + 10)
-    leftdock:Size(leftWidth, leftHeight)
-    leftdock.currentSpacing = spacing
-    SV.Mentalo:Add(leftdock, L["Left Dock"])
-
-    	-- [[ CORNER BUTTON ]] --
-
-	    leftbutton:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", 1, 2)
-	    leftbutton:Size(buttonsize, buttonsize)
-	    leftbutton:SetFramedButtonTemplate()
-	    leftbutton.Icon = leftbutton:CreateTexture(nil, "OVERLAY", nil, 0)
-	    leftbutton.Icon:FillInner(leftbutton,2,2)
-	    leftbutton.Icon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Icons\\SVUI-EMBLEM")
-	    leftbutton.TText = L["Toggle Docks"]
-	    leftbutton:RegisterForClicks("AnyUp")
-	    ActivateDockletButton(leftbutton, ToggleDocks)
-
-    	-- [[ TOOLBARS AND OTHER NONSENSE ]] --
-
-	    toolbarLeft:Point("LEFT", leftbutton, "RIGHT", spacing, 0)
-	    toolbarLeft:Width(1)
-	    toolbarLeft:Height(buttonsize)
-	    toolbarLeft.currentSize = buttonsize;
-
-		leftalert:SetParent(leftdock)
-		leftalert:SetFrameStrata("BACKGROUND")
-		leftalert:Size(leftWidth, 1)
-		leftalert:Point("BOTTOMRIGHT", leftdock, "BOTTOMRIGHT",0, 0)
-		leftalert:SetFrameLevel(leftalert:GetFrameLevel() + 2)
-		leftalert.Activate = AlertActivate
-		leftalert.Deactivate = AlertDeactivate
-
-		leftwindow:SetFrameStrata("BACKGROUND")
-		leftwindow:Point("BOTTOMRIGHT", leftalert, "TOPRIGHT", 0, 0)
-		leftwindow:Size(leftWidth, leftHeight)
-		leftdock.backdrop = SetSuperDockStyle(leftwindow)
-
-	-- [[ BOTTOM RIGHT DOCK ]] --
-
-	rightdock:SetFrameStrata("BACKGROUND")
-	rightdock:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -1, buttonsize + 10)
-	rightdock:Size(rightWidth, rightHeight)
-	SV.Mentalo:Add(rightdock, L["Right Dock"])
-
-		-- [[ CORNER BUTTON ]] --
-
-		rightbutton:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -1, 2)
-		rightbutton:Size(buttonsize, buttonsize)
-		rightbutton:SetFramedButtonTemplate()
-		rightbutton.Icon = rightbutton:CreateTexture(nil, "OVERLAY")
-		rightbutton.Icon:FillInner(rightbutton,2,2)
-		rightbutton.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-HENCHMAN]])
-		rightbutton.TText = "Call Henchman!"
-		rightbutton:RegisterForClicks("AnyUp")
-		ActivateDockletButton(rightbutton, SV.ToggleHenchman)
-
-		-- [[ TOOLBARS AND OTHER NONSENSE ]] --
-
-		toolbarRight:Point("RIGHT", rightbutton, "LEFT", -spacing, 0)
-		toolbarRight:Size(1, buttonsize)
-		toolbarRight.currentSize = buttonsize;
-
-		macrobar:Point("RIGHT", toolbarRight, "LEFT", -spacing, 0)
-		macrobar:Size(1, buttonsize)
-		macrobar.currentSize = buttonsize;
-
-		rightalert:SetParent(rightdock)
-		rightalert:SetFrameStrata("BACKGROUND")
-		rightalert:Size(rightWidth, 1)
-		rightalert:Point("BOTTOMLEFT", rightdock, "BOTTOMLEFT", 0, 0)
-		rightalert:SetFrameLevel(rightalert:GetFrameLevel() + 2)
-		rightalert.Activate = AlertActivate
-		rightalert.Deactivate = AlertDeactivate
-
-		rightwindow:SetFrameStrata("BACKGROUND")
-		rightwindow:Point("BOTTOMLEFT", rightalert, "TOPLEFT", 0, 0)
-		rightwindow:Size(rightWidth, rightHeight)
-		rightdock.backdrop = SetSuperDockStyle(rightwindow)
-
-	if SV.cache.Docks.SuperDockFaded then LeftSuperDock:Hide() RightSuperDock:Hide() end
-
-	-- [[ TOP LEFT DOCK ]] --
-
-	topdock:SetFrameStrata("BACKGROUND")
-	topdock:Point("TOPLEFT", SV.Screen, "TOPLEFT", 1, -(buttonsize + 10))
-	topdock:Size(leftWidth, leftHeight)
-	SV.Mentalo:Add(topdock, L["Top Dock"])
-
-	toolbarTop:Point("TOPLEFT", SV.Screen, "TOPLEFT", 1, -2)
-	toolbarTop:Size(1, buttonsize)
-	toolbarTop.openWidth = buttonsize + 12;
-
-	--RIGHT CLICK MENU
-
-	DockletMenu:SetParent(SV.Screen)
-	DockletMenu:SetPanelTemplate("Default")
-	DockletMenu.buttons = {}
-	DockletMenu:SetFrameStrata("DIALOG")
-	DockletMenu:SetClampedToScreen(true)
-
-	for i = 1, 4 do
-		DockletMenu.buttons[i] = CreateFrame("Button", nil, DockletMenu)
-
-		DockletMenu.buttons[i].hoverTex = DockletMenu.buttons[i]:CreateTexture(nil, 'OVERLAY')
-		DockletMenu.buttons[i].hoverTex:SetAllPoints()
-		DockletMenu.buttons[i].hoverTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
-		DockletMenu.buttons[i].hoverTex:SetBlendMode("ADD")
-		DockletMenu.buttons[i].hoverTex:Hide()
-
-		DockletMenu.buttons[i].activeTex = DockletMenu.buttons[i]:CreateTexture(nil, 'OVERLAY')
-		DockletMenu.buttons[i].activeTex:SetAllPoints()
-		DockletMenu.buttons[i].activeTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
-		DockletMenu.buttons[i].activeTex:SetVertexColor(0,0.7,0)
-		DockletMenu.buttons[i].activeTex:SetBlendMode("ADD")
-		DockletMenu.buttons[i].activeTex:Hide()
-
-		DockletMenu.buttons[i].text = DockletMenu.buttons[i]:CreateFontString(nil, 'BORDER')
-		DockletMenu.buttons[i].text:SetAllPoints()
-		DockletMenu.buttons[i].text:SetFont(SV.Media.font.roboto,12,"OUTLINE")
-		DockletMenu.buttons[i].text:SetJustifyH("LEFT")
-		DockletMenu.buttons[i].text:SetText(("Option %d"):format(i))
-
-		DockletMenu.buttons[i]:SetHeight(16)
-		DockletMenu.buttons[i]:SetWidth(115)
-
-		DockletMenu.buttons[i]:SetScript("OnEnter", DD_OnEnter)
-		DockletMenu.buttons[i]:SetScript("OnLeave", DD_OnLeave)
-		DockletMenu.buttons[i]:SetScript("OnClick", DD_OnClick)
-
-		if i == 1 then
-			DockletMenu.buttons[i]:SetPoint("TOPLEFT", DockletMenu, "TOPLEFT", 10, -10)
-		else
-			DockletMenu.buttons[i]:SetPoint("TOPLEFT", DockletMenu.buttons[i - 1], "BOTTOMLEFT", 0, 0)
-		end
-
-		DockletMenu.buttons[i]:Show()
-	end
-
-	DockletMenu:SetSize(135, 94)
-	DockletMenu:Hide()
-	SV:AddToDisplayAudit(DockletMenu)
-end
-
-local function BorderColorUpdates()
-	SVUITopBorder:SetBackdropColor(unpack(SV.Media.color.special))
-	SVUITopBorder:SetBackdropBorderColor(0,0,0,1)
-	SVUIBottomBorder:SetBackdropColor(unpack(SV.Media.color.special))
-	SVUIBottomBorder:SetBackdropBorderColor(0,0,0,1)
-end
-
-SV:NewCallback(BorderColorUpdates)
-
-do
-	local LastAddedMacro;
-	local MacroCount = 0;
-
-	local function GetMacroCooldown(itemID)
-		local start,duration = GetItemCooldown(itemID)
-		local expires = duration - (GetTime() - start)
-		if expires > 0.05 then
-			local timeLeft = 0;
-			local calc = 0;
-			if expires < 4 then
-				return format("|cffff0000%.1f|r", expires)
-			elseif expires < 60 then
-				return format("|cffffff00%d|r", floor(expires))
-			elseif expires < 3600 then
-				timeLeft = ceil(expires / 60);
-				calc = floor((expires / 60) + .5);
-				return format("|cffff9900%dm|r", timeLeft)
-			elseif expires < 86400 then
-				timeLeft = ceil(expires / 3600);
-				calc = floor((expires / 3600) + .5);
-				return format("|cff66ffff%dh|r", timeLeft)
-			else
-				timeLeft = ceil(expires / 86400);
-				calc = floor((expires / 86400) + .5);
-				return format("|cff6666ff%dd|r", timeLeft)
-			end
-		else
-			return "|cff6666ffReady|r"
-		end
-	end
-
-	local SetMacroTooltip = function(self)
-		if not self.TText2 then
-			GameTooltip:AddLine("Open " .. self.TText, 1, 1, 1)
-		else
-			GameTooltip:AddDoubleLine("[Left-Click]", "Open " .. self.TText, 0, 1, 0, 1, 1, 1)
-			GameTooltip:AddDoubleLine("[Right-Click]", "Use " .. self.TText2, 0, 1, 0, 1, 1, 1)
-			if InCombatLockdown() then return end
-			if(self.IsItem) then
-				GameTooltip:AddLine(" ", 1, 1, 1)
-				local remaining = GetMacroCooldown(self.IsItem)
-				GameTooltip:AddDoubleLine(self.TText2, remaining, 1, 0.5, 0, 0, 1, 1)
-			end
-		end
-	end
-
-	local SetHearthTooltip = function(self)
-		GameTooltip:AddLine(L["Hearthstone"], 1, 1, 1)
-		if InCombatLockdown() then return end
-		local remaining = GetMacroCooldown(6948)
-		GameTooltip:AddDoubleLine(L["Time Remaining"], remaining, 1, 1, 1, 0, 1, 1)
-		if(self.ExtraSpell) then
-			GameTooltip:AddLine(" ", 1, 1, 1)
-			GameTooltip:AddDoubleLine(self.ExtraSpell, "[Right Click]", 1, 1, 1, 0, 1, 0)
-		end
-	end
-
-	local function AddMacroTool(frame)
-		local width;
-		local height = RightSuperDockToolBar.currentSize;
-		if not LastAddedMacro then
-			frame:Point("RIGHT", RightSuperDockUtilityBar, "RIGHT", -6, 0);
-		else
-			frame:Point("RIGHT", LastAddedMacro, "LEFT", -6, 0);
-		end
-		LastAddedMacro = frame;
-		MacroCount = MacroCount + 1;
-		width = MacroCount * (height + 6)
-		RightSuperDockUtilityBar:Size(width, height)
-	end
-
-	local function CreateMacroToolButton(proName, proID, itemID, size)
-		local data = TOOL_DATA[proID]
-		if(not data) then return end
-		local button = CreateFrame("Button", ("%s_MacroBarButton"):format(itemID), RightSuperDockUtilityBar, "SecureActionButtonTemplate")
-		button:Size(size, size)
-		AddMacroTool(button)
-		button:SetFramedButtonTemplate()
-		button.Icon = button:CreateTexture(nil, "OVERLAY")
-		button.Icon:FillInner(button, 2, 2)
-		button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\PROFESSIONS]])
-		button.Icon:SetTexCoord(data[1], data[2], data[3], data[4])
-		button.Icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-		button.skillName = proName;
-		button.itemId = itemID;
-		button.TText = proName;
-
-		if proID == 186 then proName = "Smelting" end
-
-		if(data[5]) then
-			local rightClick
-			button:RegisterForClicks("AnyDown")
-			if(data[6] and GetItemCount(data[6], true) > 0) then
-				rightClick = GetItemInfo(data[6])
-				button.IsItem = data[6]
-			else
-				rightClick = GetSpellInfo(data[5])
-			end
-			button:SetAttribute("type", "macro")
-			button:SetAttribute("macrotext", "/cast [button:2] " .. rightClick .. ";" .. proName)
-			button.TText2 = rightClick
-		else
-			button:SetAttribute("type", "macro")
-			button:SetAttribute("macrotext", "/cast " .. proName)
-		end
-
-		ActivateDockletButton(button, nil, SetMacroTooltip)
-	end
-
-	function MOD:LoadToolBarProfessions()
-		if(SV.ToolBarLoaded) then return end
-		if(InCombatLockdown()) then MOD:RegisterEvent("PLAYER_REGEN_ENABLED"); return end
-		local size = RightSuperDockUtilityBar.currentSize
-		local hearth = CreateFrame("Button", "RightSuperDockHearthButton", RightSuperDockUtilityBar, "SecureActionButtonTemplate")
-		hearth:Size(size, size)
-		AddMacroTool(hearth)
-		hearth:SetFramedButtonTemplate()
-		hearth.Icon = hearth:CreateTexture(nil, "OVERLAY", nil, 0)
-		hearth.Icon:FillInner(hearth,2,2)
-		hearth.Icon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Icons\\DOCK-HEARTH")
-		hearth.Icon:SetTexCoord(0,0.5,0,1)
-
-		hearth:RegisterForClicks("AnyUp")
-		hearth:SetAttribute("type", "item")
-		hearth:SetAttribute("item", "Hearthstone")
-
-		ActivateDockletButton(hearth, nil, SetHearthTooltip)
-
-		for i = 1, #HEARTH_SPELLS do
-			if(IsSpellKnown(HEARTH_SPELLS[i])) then
-				local rightClickSpell = GetSpellInfo(HEARTH_SPELLS[i])
-				hearth:SetAttribute("type2", "spell")
-				hearth:SetAttribute("spell", rightClickSpell)
-				hearth.ExtraSpell = rightClickSpell
-			end
-		end
-
-		local proName, proID
-		local prof1, prof2, archaeology, _, cooking, firstAid = GetProfessions()
-		if(firstAid ~= nil) then
-			proName, _, _, _, _, _, proID = GetProfessionInfo(firstAid)
-			CreateMacroToolButton(proName, proID, firstAid, size)
-		end
-		if(archaeology ~= nil) then
-			proName, _, _, _, _, _, proID = GetProfessionInfo(archaeology)
-			CreateMacroToolButton(proName, proID, archaeology, size)
-		end
-		if(cooking ~= nil) then
-			proName, _, _, _, _, _, proID = GetProfessionInfo(cooking)
-			CreateMacroToolButton(proName, proID, cooking, size)
-		end
-		if(prof2 ~= nil) then
-			proName, _, _, _, _, _, proID = GetProfessionInfo(prof2)
-			if(proID ~= 182 and proID ~= 393) then
-				CreateMacroToolButton(proName, proID, prof2, size)
-			end
-		end
-		if(prof1 ~= nil) then
-			proName, _, _, _, _, _, proID = GetProfessionInfo(prof1)
-			if(proID ~= 182 and proID ~= 393) then
-				CreateMacroToolButton(proName, proID, prof1, size)
-			end
-		end
-
-		SV.ToolBarLoaded = true
-	end
-end
---[[
-##########################################################
-EXTERNALLY ACCESSIBLE METHODS
-##########################################################
-]]--
-SV.CurrentlyDocked = {};
-function MOD:IsDockletReady(arg)
-	local addon = arg;
-	if arg == "DockletMain" or arg == "DockletExtra" then
-		addon = SV.db.SVDock.docklets[arg]
-	end
-	if addon == nil or addon == "None" then
-		return false
-	end
-	return true
-end
-
-do
-	local function UnregisterDocklet(name)
-		local frame = _G[name];
-		if not frame or not frame.listIndex then return end
-		local i = frame.listIndex;
-		tremove(MOD.Docklets.FRAMES, i)
-	end
-
-	function MOD:ReloadDocklets(alert)
-		if InCombatLockdown() then return end
-
-		local frame, i;
-		twipe(SV.CurrentlyDocked);
-		if self:IsDockletReady("DockletMain") then
-			frame = SV.db.SVDock.docklets.MainWindow
-			if frame ~= nil and frame ~= "None" and _G[frame] then
-				UnregisterDocklet(frame)
-				SV.db.SVDock.docklets.MainWindow = "None"
-			end
-		elseif AddOnButton.IsRegistered then
-			RemoveTool(AddOnButton)
-			AddOnButton.TText = "";
-			AddOnButton.IsRegistered = false;
-		end
-		if self:IsDockletReady("DockletExtra") then
-			frame = SV.db.SVDock.docklets.ExtraWindow
-			if frame ~= nil and frame ~= "None" and _G[frame] then
-				UnregisterDocklet(frame)
-				SV.db.SVDock.docklets.ExtraWindow = "None"
-			end
-		end
-		SVUI_AddonDock1.FrameName = "None"
-		SVUI_AddonDock2.FrameName = "None"
-
-		local width = SV.db.SVDock.dockRightWidth or 350;
-		local height = (SV.db.SVDock.dockRightHeight or 180) - 22
-
-		if self:IsDockletReady('DockletMain') then
-			if self:IsDockletReady("DockletExtra") and SV.db.SVDock.docklets.enableExtra then
-				width = width * 0.5;
-			end
-			SVUI_AddonDock1:ClearAllPoints()
-			SVUI_AddonDock1:Size(width,height)
-			SVUI_AddonDock1:Point('BOTTOMLEFT',RightSuperDock,'BOTTOMLEFT',1,1)
-			SVUI_AddonDock2:ClearAllPoints()
-			SVUI_AddonDock2:Size(width,height)
-			SVUI_AddonDock2:Point('BOTTOMLEFT',SVUI_AddonDock1,'BOTTOMRIGHT',0,0)
-		end
-	end
-end
-
-function MOD:RegisterDocklet(name, tooltip, texture, onclick, isdefault)
-	local frame = _G[name];
-	if frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected()) then
-		frame:ClearAllPoints()
-		frame:SetParent(RightSuperDockFrameHolder)
-		frame:FillInner(RightSuperDockFrameHolder, 4, 4)
-		frame.FrameName = name;
-		tinsert(self.Docklets.FRAMES, frame);
-		frame.listIndex = #self.Docklets.FRAMES;
-		frame.ToolbarButton = CreateBasicToolButton(tooltip, texture, onclick, name, isdefault)
-	end
-end
-
-function MOD:RegisterMainDocklet(name)
-	local frame = _G[name];
-	if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then
-		SVUI_AddonDock1.FrameName = name;
-		SV.db.SVDock.docklets.MainWindow = name;
-		frame:ClearAllPoints()
-		frame:SetParent(SVUI_AddonDock1)
-		frame:SetAllPoints(SVUI_AddonDock1)
-		frame.ToggleName = "SVUI_AddonDocklet";
-		tinsert(self.Docklets.FRAMES, frame);
-		frame.listIndex = #self.Docklets.FRAMES;
-		AddTool(AddOnButton)
-		AddOnButton.TText = "";
-		AddOnButton.IsRegistered = true
-		SV.CurrentlyDocked[name] = true
-		if not InCombatLockdown() and frame:IsShown() then frame:Hide() end
-	end
-end
-
-function MOD:RegisterExtraDocklet(name)
-	local frame = _G[name];
-	if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then
-		SVUI_AddonDock2.FrameName = name;
-		SV.db.SVDock.docklets.ExtraWindow = name;
-		frame:ClearAllPoints()
-		frame:SetParent(SVUI_AddonDock2)
-		frame:SetAllPoints(SVUI_AddonDock2)
-		frame.ToggleName = "SVUI_AddonDocklet";
-		tinsert(self.Docklets.FRAMES, frame);
-		frame.listIndex = #self.Docklets.FRAMES;
-		AddOnButton.TText = "";
-		SV.CurrentlyDocked[name] = true;
-		if not InCombatLockdown() and frame:IsShown() then frame:Hide() end
-	end
-end
---[[
-##########################################################
-BUILD/UPDATE
-##########################################################
-]]--
-function MOD:UpdateSuperDock()
-	local leftWidth = SV.db.SVDock.dockLeftWidth or 350;
-	local leftHeight = SV.db.SVDock.dockLeftHeight or 180;
-	local rightWidth = SV.db.SVDock.dockRightWidth or 350;
-	local rightHeight = SV.db.SVDock.dockRightHeight or 180;
-	local buttonsize = SV.db.SVDock.buttonSize or 22;
-	local spacing = SV.db.SVDock.buttonSpacing or 4;
-
-	_G["LeftSuperDock"]:Size(leftWidth, leftHeight)
-	_G["LeftSuperDockAlert"]:Width(leftWidth)
-	_G["LeftSuperDockFrameHolder"]:Size(leftWidth, leftHeight)
-	_G["RightSuperDock"]:Size(rightWidth, rightHeight)
-	_G["RightSuperDockAlert"]:Width(rightWidth)
-	_G["RightSuperDockFrameHolder"]:Size(rightWidth, rightHeight)
-
-	self:BottomBorderVisibility();
-	self:TopBorderVisibility();
-	self:UpdateDockBackdrops();
-	self:ReloadDocklets()
-end
-
-function MOD:UpdateDockBackdrops()
-	if SV.db.SVDock.rightDockBackdrop then
-		RightSuperDock.backdrop:Show()
-		RightSuperDock.backdrop:ClearAllPoints()
-		RightSuperDock.backdrop:WrapOuter(RightSuperDock, 4, 4)
-	else
-		RightSuperDock.backdrop:Hide()
-	end
-	if SV.db.SVDock.leftDockBackdrop then
-		LeftSuperDock.backdrop:Show()
-		LeftSuperDock.backdrop:ClearAllPoints()
-		LeftSuperDock.backdrop:WrapOuter(LeftSuperDock, 4, 4)
-	else
-		LeftSuperDock.backdrop:Hide()
-	end
-end
-
-function MOD:BottomBorderVisibility()
-	if SV.db.SVDock.bottomPanel then
-		self.BottomBorder:Show()
-	else
-		self.BottomBorder:Hide()
-	end
-end
-
-function MOD:TopBorderVisibility()
-	if SV.db.SVDock.topPanel then
-		self.TopBorder:Show()
-	else
-		self.TopBorder:Hide()
-	end
-end
-
-function MOD:PLAYER_REGEN_ENABLED()
-	self:UnregisterEvent('PLAYER_REGEN_ENABLED')
-	self:LoadToolBarProfessions()
-end
-
-function MOD:ReLoad()
-	self:UpdateSuperDock();
-end
-
-function MOD:Load()
-	SV.cache.Docks = SV.cache.Docks	or {}
-
-	if(not SV.cache.Docks.SuperDockFaded) then
-		SV.cache.Docks.SuperDockFaded = false
-	end
-
-	self:CreateDockPanels()
-
-	local width = RightSuperDock:GetWidth();
-	local height = RightSuperDock:GetHeight() - 22
-	RightSuperDockFrameHolder:Size(width, height)
-	RightSuperDockFrameHolder:SetPoint("BOTTOMLEFT", RightSuperDockAlert, "TOPLEFT", 0, 0)
-	RightSuperDockFrameHolder:SetScript("OnShow", Docklet_OnShow)
-
-	if not InCombatLockdown()then
-		CycleDocklets()
-	end
-
-	hooksecurefunc(RightSuperDock, "SetSize", rightDockSizeHook)
-	self:UpdateDockBackdrops()
-	SVUI_AddonDock1:SetFrameLevel(RightSuperDockFrameHolder:GetFrameLevel() + 50)
-	SVUI_AddonDock2:SetFrameLevel(RightSuperDockFrameHolder:GetFrameLevel() + 50)
-
-	local size = RightSuperDockToolBar.currentSize;
-
-	AddOnButton:SetParent(RightSuperDockToolBar)
-	AddOnButton:Size(size, size)
-	AddOnButton:SetFramedButtonTemplate()
-	AddOnButton.Icon = AddOnButton:CreateTexture(nil, "OVERLAY")
-	AddOnButton.Icon:FillInner()
-	AddOnButton.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]])
-	AddOnButton.TText = "";
-	AddOnButton.IsRegistered = false;
-
-	ActivateDockletButton(AddOnButton, AddonDockletToggle)
-
-	AddOnButton:Hide()
-
-	SVUI_AddonDock1:SetScript("OnShow", DockletFrame_OnShow)
-	SVUI_AddonDock2:SetScript("OnShow", DockletFrame_OnShow)
-	self:ReloadDocklets(true)
-
-	SV.Timers:ExecuteTimer(self.LoadToolBarProfessions, 5)
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua b/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
index 0a067d2..a40a011 100644
--- a/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
+++ b/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
@@ -646,7 +646,7 @@ function SV:ToggleHenchman()
 			minion:Show()
 			minion.anim:Play()
 		end
-		RightSuperDockToggleButton.icon:SetGradient(unpack(SV.Media.gradient.green))
+		SV.Dock.Right.Button.Icon:SetGradient(unpack(SV.Media.gradient.green))
 	else
 		UpdateHenchmanModel(true)
 		for _,frame in pairs(SUBOPTIONS)do
@@ -670,7 +670,7 @@ function SV:ToggleHenchman()
 			minion.anim:Finish()
 			minion:Hide()
 		end
-		RightSuperDockToggleButton.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+		SV.Dock.Right.Button.Icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
 	end
 end

@@ -953,7 +953,7 @@ BUILD FUNCTION / UPDATE
 function MOD:Load()
 	local bubble = CreateFrame("Frame", "HenchmenSpeechBubble", SV.Screen)
 	bubble:SetSize(256,128)
-	bubble:Point("BOTTOMRIGHT", RightSuperDockToggleButton, "TOPLEFT", 0, 0)
+	bubble:Point("BOTTOMRIGHT", SV.Dock.Right.Button, "TOPLEFT", 0, 0)
 	bubble:SetFrameStrata("DIALOG")
 	bubble:SetFrameLevel(24)
 	bubble.bg = bubble:CreateTexture(nil,"BORDER")
diff --git a/Interface/AddOns/SVUI/packages/stats/SVStats.lua b/Interface/AddOns/SVUI/packages/stats/SVStats.lua
index 3aa88e7..85eb6ca 100644
--- a/Interface/AddOns/SVUI/packages/stats/SVStats.lua
+++ b/Interface/AddOns/SVUI/packages/stats/SVStats.lua
@@ -146,7 +146,7 @@ local UpdateAnchor = function()
 			width = anchor:GetWidth() / numPoints - 4;
 			height = anchor:GetHeight() - 4;
 			if(backdrops) then
-				height = RightSuperDockToggleButton:GetHeight() - 6
+				height = SV.Dock.Right.Button:GetHeight() - 6
 			end
 		end

@@ -669,7 +669,7 @@ function MOD:UpdateStatSize()
 	local gxWidth = tonumber(rez:match("(%d+)x%d+"));
 	local bw = gxWidth * 0.5
 	local defaultStatBarWidth = min(bw, 800)
-	local buttonsize = LeftSuperDockToolBar.currentSize or 22
+	local buttonsize = SV.Dock.Left.ToolBar:GetHeight()
     local statBarWidth = SV.db.SVStats.dockStatWidth or defaultStatBarWidth
     _G["SVUI_TopStatsDock"]:Size(statBarWidth - 2, buttonsize - 8)
 	_G["SVUI_StatsBar1"]:Size((statBarWidth * 0.5) - 1, buttonsize - 8)
@@ -693,8 +693,8 @@ function MOD:Load()
 	local gxWidth = tonumber(rez:match("(%d+)x%d+"));
 	local bw = gxWidth * 0.5
 	local defaultStatBarWidth = min(bw, 800)
-	local buttonsize = LeftSuperDockToolBar.currentSize or 22
-    local spacing = LeftSuperDock.currentSpacing or 4
+	local buttonsize = SV.Dock.Left.ToolBar:GetHeight()
+    local spacing = SV.Dock.Left:GetAttribute("spacingSize")
     local statBarWidth = SV.db.SVStats.dockStatWidth or defaultStatBarWidth

 	hexHighlight = SV:HexColor("highlight") or "FFFFFF"
@@ -714,7 +714,7 @@ function MOD:Load()

 	local topanchor = CreateFrame("Frame", "SVUI_TopStatsDock", SV.Screen)
 	topanchor:Size(statBarWidth - 2, buttonsize - 8)
-	topanchor:Point("LEFT", TopSuperDockToolBar, "RIGHT", spacing, 0)
+	topanchor:Point("LEFT", SV.Dock.Top.ToolBar, "RIGHT", spacing, 0)

 	local topleftdata = CreateFrame("Frame", "SVUI_StatsBar1", topanchor)
 	topleftdata:Size((statBarWidth * 0.5) - 1, buttonsize - 8)
diff --git a/Interface/AddOns/SVUI/packages/tip/SVTip.lua b/Interface/AddOns/SVUI/packages/tip/SVTip.lua
index 125cbb4..ed2326c 100644
--- a/Interface/AddOns/SVUI/packages/tip/SVTip.lua
+++ b/Interface/AddOns/SVUI/packages/tip/SVTip.lua
@@ -584,8 +584,8 @@ local _hook_GameTooltip_SetDefaultAnchor = function(self, parent)
 		self:ClearAllPoints()
 		if(SV.SVBag.BagFrame and SV.SVBag.BagFrame:IsShown()) then
 			self:SetPoint("BOTTOMRIGHT", SV.SVBag.BagFrame, "TOPRIGHT", -44, 18)
-		elseif(RightSuperDock:GetAlpha() == 1 and RightSuperDock:IsShown()) then
-			self:SetPoint("BOTTOMRIGHT", RightSuperDock, "TOPRIGHT", -44, 18)
+		elseif(SV.Dock.Right:GetAlpha() == 1 and SV.Dock.Right:IsShown()) then
+			self:SetPoint("BOTTOMRIGHT", SV.Dock.Right, "TOPRIGHT", -44, 18)
 		else
 			self:SetPoint("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -44, 78)
 		end
@@ -866,7 +866,7 @@ function MOD:Load()
 	if not SV.db.SVTip.enable then return end

 	local anchor = CreateFrame("Frame", "SVUI_ToolTip", SV.Screen)
-	anchor:Point("BOTTOMRIGHT", RightSuperDock, "TOPRIGHT", 0, 60)
+	anchor:Point("BOTTOMRIGHT", SV.Dock.Right, "TOPRIGHT", 0, 60)
 	anchor:Size(130, 20)
 	anchor:SetFrameLevel(anchor:GetFrameLevel()  +  50)
 	SV.Mentalo:Add(anchor, L["Tooltip"])
diff --git a/Interface/AddOns/SVUI/scripts/misc.lua b/Interface/AddOns/SVUI/scripts/misc.lua
index abd9a14..21a9006 100644
--- a/Interface/AddOns/SVUI/scripts/misc.lua
+++ b/Interface/AddOns/SVUI/scripts/misc.lua
@@ -474,7 +474,7 @@ end

 local function CreateTotemBar()
 	if(not SV.db.totems.enable) then return; end
-	local xOffset = SV.db.SVDock.dockLeftWidth + 12
+	local xOffset = SV.db.Dock.dockLeftWidth + 12
 	TotemBar = CreateFrame("Frame", "SVUI_TotemBar", SV.Screen)
 	TotemBar:SetPoint("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", xOffset, 40)
 	for i = 1, MAX_TOTEMS do
diff --git a/Interface/AddOns/SVUI/scripts/questwatch.lua b/Interface/AddOns/SVUI/scripts/questwatch.lua
index fcaa77e..006fe3a 100644
--- a/Interface/AddOns/SVUI/scripts/questwatch.lua
+++ b/Interface/AddOns/SVUI/scripts/questwatch.lua
@@ -58,7 +58,7 @@ local L = SV.L
 LOCAL VARS
 ##########################################################
 ]]--
-local RightSuperDockFrameHolder, QuestFrame, ObjectiveTrackerFrame;
+local QuestFrame, ObjectiveTrackerFrame;
 local ICON_FILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-QUESTS]]
 local OBJECTIVE_TRACKER_LINE_WIDTH = _G.OBJECTIVE_TRACKER_LINE_WIDTH;
 --[[
@@ -67,25 +67,23 @@ CORE FUNCTIONS
 ##########################################################
 ]]--
 local QuestFrame_OnEvent = function(self, event)
-	if(event == "QUEST_AUTOCOMPLETE" and RightSuperDockFrameHolder and QuestFrame) then
-		if RightSuperDockFrameHolder.FrameName and _G[RightSuperDockFrameHolder.FrameName] and _G[RightSuperDockFrameHolder.FrameName]:IsShown() then return end
+	if(event == "QUEST_AUTOCOMPLETE" and SV.Dock.Right.Window and QuestFrame) then
+		if SV.Dock.Right.Window.FrameName and _G[SV.Dock.Right.Window.FrameName] and _G[SV.Dock.Right.Window.FrameName]:IsShown() then return end
 		if not QuestFrame:IsShown() then
-			RightSuperDockFrameHolder.FrameName = "SVUI_QuestFrame"
-			if not RightSuperDockFrameHolder:IsShown()then
-				RightSuperDockFrameHolder:Show()
+			SV.Dock.Right.Window.FrameName = "SVUI_QuestFrame"
+			if not SV.Dock.Right.Window:IsShown()then
+				SV.Dock.Right.Window:Show()
 			end
-			SV.SVDock:CycleDocklets()
+			SV.Dock:CycleDocklets()
 			QuestFrame:Show()
 			if(QuestFrame.ToolbarButton) then
-				QuestFrame.ToolbarButton.IsOpen = true;
-				QuestFrame.ToolbarButton:SaveColors("green", "green")
+				QuestFrame.ToolbarButton:Activate()
 			end
 		end
 	end
 end

 local function CreateQuestFrame()
-	RightSuperDockFrameHolder = _G.RightSuperDockFrameHolder
 	ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame
 	if(not ObjectiveTrackerFrame) then return end
 	if(not SV.db.general.questWatch) then
@@ -126,11 +124,11 @@ local function CreateQuestFrame()
 	else
 		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
 		local bdTex = SV.Media.bar.glow
-		local WIDTH, HEIGHT = RightSuperDockFrameHolder:GetSize()
+		local WIDTH, HEIGHT = SV.Dock.Right.Window:GetSize()

-		QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", RightSuperDockFrameHolder);
+		QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", SV.Dock.Right.Window);
 		QuestFrame:SetFrameStrata("BACKGROUND");
-		SV.SVDock:RegisterDocklet("SVUI_QuestFrame", "Quest Watch", ICON_FILE, false, true)
+		SV.Dock:RegisterDocklet("SVUI_QuestFrame", "Quest Watch", ICON_FILE, false, true)

 		local listFrame = CreateFrame("ScrollFrame", nil, QuestFrame);
 		listFrame:SetPoint("TOPLEFT", QuestFrame, -62, 0);
diff --git a/Interface/AddOns/SVUI/scripts/raid.lua b/Interface/AddOns/SVUI/scripts/raid.lua
index ac43da5..4a18a4b 100644
--- a/Interface/AddOns/SVUI/scripts/raid.lua
+++ b/Interface/AddOns/SVUI/scripts/raid.lua
@@ -94,8 +94,8 @@ local function ToggleRaidUtil(event)
 	end

 	if CheckRaidStatus() then
-		local width = TopSuperDockToolBar.openWidth
-		TopSuperDockToolBar:SetWidth(width)
+		local width = SV.Dock.Top.ToolBar.openWidth
+		SV.Dock.Top.ToolBar:SetWidth(width)
 		if RaidUtilityPanel.toggled == true then
 			SVUI_RaidTools:Hide()
 			RaidUtilityPanel:Show()
@@ -104,7 +104,7 @@ local function ToggleRaidUtil(event)
 			RaidUtilityPanel:Hide()
 		end
 	else
-		TopSuperDockToolBar:SetWidth(1)
+		SV.Dock.Top.ToolBar:SetWidth(1)
 		SVUI_RaidTools:Hide()
 		RaidUtilityPanel:Hide()
 	end
@@ -119,13 +119,13 @@ RaidUtilFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
 RaidUtilFrame:SetScript("OnEvent", ToggleRaidUtil)

 local function LoadRaidUtility()
-	local buttonsize = SV.db.SVDock.buttonSize or 22;
+	local buttonsize = SV.db.Dock.buttonSize or 22;
 	--Create main frame
 	local RaidUtilityPanel = CreateFrame("Frame", "RaidUtilityPanel", SV.Screen, "SecureHandlerClickTemplate")
 	RaidUtilityPanel:SetPanelTemplate('Transparent')
 	RaidUtilityPanel:Width(120)
 	RaidUtilityPanel:Height(PANEL_HEIGHT)
-	RaidUtilityPanel:SetPoint("TOPLEFT", TopSuperDockToolBar, "BOTTOMLEFT", 0, -2)
+	RaidUtilityPanel:SetPoint("TOPLEFT", SV.Dock.Top.ToolBar, "BOTTOMLEFT", 0, -2)
 	RaidUtilityPanel:SetFrameLevel(3)
 	RaidUtilityPanel.toggled = false
 	RaidUtilityPanel:SetFrameStrata("HIGH")
@@ -134,7 +134,7 @@ local function LoadRaidUtility()
 	--Show Button
 	local SVUI_RaidTools = CreateFrame("Button", "SVUI_RaidTools", SV.Screen, "UIMenuButtonStretchTemplate, SecureHandlerClickTemplate")
 	SVUI_RaidTools:Size(buttonsize, buttonsize)
-	SVUI_RaidTools:Point("CENTER", TopSuperDockToolBar, "CENTER", 0, 0)
+	SVUI_RaidTools:Point("CENTER", SV.Dock.Top.ToolBar, "CENTER", 0, 0)
 	SVUI_RaidTools.icon = SVUI_RaidTools:CreateTexture(nil,"OVERLAY",nil)
 	SVUI_RaidTools.icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-RAIDTOOL]])
 	SVUI_RaidTools.icon:Point("TOPLEFT", SVUI_RaidTools, "TOPLEFT", 1, -1)
diff --git a/Interface/AddOns/SVUI/setup/installer.lua b/Interface/AddOns/SVUI/setup/installer.lua
index 22d0631..da661e7 100644
--- a/Interface/AddOns/SVUI/setup/installer.lua
+++ b/Interface/AddOns/SVUI/setup/installer.lua
@@ -221,7 +221,7 @@ end

 local function UFMoveRightQuadrant(toggle)
 	local anchors = SV.cache.Anchors
-	local dH = SV.db.SVDock.dockRightHeight  +  60
+	local dH = SV.db.Dock.dockRightHeight  +  60
 	if not toggle or toggle == "high" then
 		anchors.SVUI_BossHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
 		anchors.SVUI_ArenaHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
@@ -248,10 +248,10 @@ function SV.Setup:UserScreen(rez, preserve)

 	if rez == "low" then
 		if not preserve then
-			SV.db.SVDock.dockLeftWidth = 350;
-			SV.db.SVDock.dockLeftHeight = 180;
-			SV.db.SVDock.dockRightWidth = 350;
-			SV.db.SVDock.dockRightHeight = 180;
+			SV.db.Dock.dockLeftWidth = 350;
+			SV.db.Dock.dockLeftHeight = 180;
+			SV.db.Dock.dockRightWidth = 350;
+			SV.db.Dock.dockRightHeight = 180;
 			SV.db.SVAura.wrapAfter = 10
 			SV.db.SVUnit.fontSize = 10;
 			SV.db.SVUnit.player.width = 200;
@@ -281,7 +281,7 @@ function SV.Setup:UserScreen(rez, preserve)
 		end
 		SV.LowRez = true
 	else
-		SV:ResetData("SVDock")
+		SV:ResetData("Dock")
 		SV:ResetData("SVAura")
 		if not mungs then
 			UFMoveBottomQuadrant()
@@ -295,7 +295,7 @@ function SV.Setup:UserScreen(rez, preserve)
 	if(not preserve and not mungs) then
 		BarShuffle()
     	SV.Mentalo:SetPositions()
-		SVLib:RefreshModule('SVDock')
+		SVLib:RefreshModule('Dock')
 		SVLib:RefreshModule('SVAura')
 		SVLib:RefreshModule('SVBar')
 		SVLib:RefreshModule('SVUnit')
@@ -325,8 +325,8 @@ function SV.Setup:ChatConfigs(mungs)
 		local chatID = chat:GetID()
 		if i == 1 then
 			chat:ClearAllPoints()
-			chat:Point("BOTTOMLEFT", LeftSuperDock, "BOTTOMLEFT", 5, 5)
-			chat:Point("TOPRIGHT", LeftSuperDock, "TOPRIGHT", -5, -10)
+			chat:Point("BOTTOMLEFT", SVUI_DockLeft, "BOTTOMLEFT", 5, 5)
+			chat:Point("TOPRIGHT", SVUI_DockLeft, "TOPRIGHT", -5, -10)
 		end
 		FCF_SavePositionAndDimensions(chat)
 		FCF_StopDragging(chat)
@@ -427,8 +427,7 @@ function SV.Setup:ChatConfigs(mungs)
 	if not mungs then
 		if SV.Chat then
 			SV.Chat:ReLoad(true)
-			if SV.SVDock.Cache.RightSuperDockFaded  == true then RightSuperDockToggleButton:Click()end
-			if SV.SVDock.Cache.LeftSuperDockFaded  == true then LeftSuperDockToggleButton:Click()end
+			if SV.Dock.Cache.IsFaded == true then SV.Dock.Left.Button:Click() end
 		end
 		SV:SavedPopup()
 	end
diff --git a/Interface/AddOns/SVUI/system/_load.xml b/Interface/AddOns/SVUI/system/_load.xml
index 3b1ecb4..0b76b94 100644
--- a/Interface/AddOns/SVUI/system/_load.xml
+++ b/Interface/AddOns/SVUI/system/_load.xml
@@ -3,8 +3,10 @@
     <Script file="configs.lua"/>
 	<Script file="media.lua"/>
     <Script file="utilities.lua"/>
-    <Script file="framework.lua"/>
     <Script file="visibility.lua"/>
+    <Script file="screen.lua"/>
+    <Script file="templates.lua"/>
+    <Script file="docks.lua"/>
     <Script file="slash.lua"/>
     <Script file="alerts.lua"/>
     <Script file="moveable.lua"/>
diff --git a/Interface/AddOns/SVUI/system/configs.lua b/Interface/AddOns/SVUI/system/configs.lua
index 8756ac2..15103ce 100644
--- a/Interface/AddOns/SVUI/system/configs.lua
+++ b/Interface/AddOns/SVUI/system/configs.lua
@@ -467,7 +467,7 @@ SV.configs["SVChat"] = {
 	["basicTools"] = true,
 };

-SV.configs["SVDock"] = {
+SV.configs["Dock"] = {
 	["enable"] = true,
 	["dockLeftWidth"] = 412,
 	["dockLeftHeight"] = 224,
diff --git a/Interface/AddOns/SVUI/system/core.lua b/Interface/AddOns/SVUI/system/core.lua
index c1a4d9a..70631cf 100644
--- a/Interface/AddOns/SVUI/system/core.lua
+++ b/Interface/AddOns/SVUI/system/core.lua
@@ -533,6 +533,8 @@ function SVUI:Load()
 end

 function SVUI:Initialize()
+    self.Dock:Initialize();
+
     SVLib:Launch();

     self:UI_SCALE_CHANGED("PLAYER_LOGIN")
diff --git a/Interface/AddOns/SVUI/system/docks.lua b/Interface/AddOns/SVUI/system/docks.lua
new file mode 100644
index 0000000..e72c54a
--- /dev/null
+++ b/Interface/AddOns/SVUI/system/docks.lua
@@ -0,0 +1,1021 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+	__\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+	 ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+		______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+		 _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+			__/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+			 _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+				___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack        = _G.unpack;
+local select        = _G.select;
+local assert        = _G.assert;
+local type          = _G.type;
+local error         = _G.error;
+local pcall         = _G.pcall;
+local print         = _G.print;
+local ipairs        = _G.ipairs;
+local pairs         = _G.pairs;
+local tostring      = _G.tostring;
+local tonumber      = _G.tonumber;
+
+--STRING
+local string        = _G.string;
+local upper         = string.upper;
+local format        = string.format;
+local find          = string.find;
+local match         = string.match;
+local gsub          = string.gsub;
+--TABLE
+local table 		= _G.table;
+local tinsert       = _G.tinsert;
+local tremove       = _G.tremove;
+local twipe 		= _G.wipe;
+--MATH
+local math      	= _G.math;
+local min 			= math.min;
+local floor         = math.floor
+local ceil          = math.ceil
+--BLIZZARD API
+local GameTooltip          	= _G.GameTooltip;
+local InCombatLockdown     	= _G.InCombatLockdown;
+local CreateFrame          	= _G.CreateFrame;
+local GetTime         		= _G.GetTime;
+local GetItemCooldown       = _G.GetItemCooldown;
+local GetItemCount         	= _G.GetItemCount;
+local GetItemInfo          	= _G.GetItemInfo;
+local GetSpellInfo         	= _G.GetSpellInfo;
+local IsSpellKnown         	= _G.IsSpellKnown;
+local GetProfessions       	= _G.GetProfessions;
+local GetProfessionInfo    	= _G.GetProfessionInfo;
+local hooksecurefunc     	= _G.hooksecurefunc;
+--[[
+##########################################################
+ADDON
+##########################################################
+]]--
+local SV = select(2, ...)
+local L = SV.L
+--[[
+##########################################################
+DOCKING
+##########################################################
+]]--
+local Dock = SV:NewPackage("Dock", L["Screen Docks"]);
+Dock.DefaultDocklet = "";
+Dock.DockletWindows = {};
+Dock.DockletButtons = {};
+Dock.HandledDocklets = {};
+Dock.Border = {};
+
+local addonDock1 = CreateFrame("Frame", "SVUI_DockedAddon1", UIParent, "SVUI_DockletWindowTemplate");
+local addonDock2 = CreateFrame("Frame", "SVUI_DockedAddon2", UIParent, "SVUI_DockletWindowTemplate");
+
+Dock.Addons = {addonDock1, addonDock2};
+Dock.Dropdown = CreateFrame("Frame", "SVUI_DockDropdown", UIParent);
+
+-- MAIN REGIONS
+Dock.Left = _G["SVUI_DockLeft"]
+Dock.Right = _G["SVUI_DockRight"]
+Dock.Top = _G["SVUI_DockTop"]
+
+local AlertActivate = function(self, child)
+	local size = SV.db.Dock.buttonSize or 22;
+	self:Height(size)
+	child:ClearAllPoints()
+	child:SetAllPoints(self)
+end
+
+local AlertDeactivate = function(self)
+	self:Height(1)
+end
+
+Dock.Left.Alert.Activate = AlertActivate
+Dock.Left.Alert.Deactivate = AlertDeactivate
+
+Dock.Right.Alert.Activate = AlertActivate
+Dock.Right.Alert.Deactivate = AlertDeactivate
+
+local ICONFILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-BAG-MICRO]];
+local TOOL_DATA = {
+	[171] 	= {0,0.25,0,0.25}, 				-- PRO-ALCHEMY
+    [794] 	= {0.25,0.5,0,0.25,80451}, 		-- PRO-ARCHAELOGY
+    [164] 	= {0.5,0.75,0,0.25}, 			-- PRO-BLACKSMITH
+    [185] 	= {0.75,1,0,0.25,818,67097}, 	-- PRO-COOKING
+    [333] 	= {0,0.25,0.25,0.5,13262}, 		-- PRO-ENCHANTING
+    [202] 	= {0.25,0.5,0.25,0.5}, 			-- PRO-ENGINEERING
+    [129] 	= {0.5,0.75,0.25,0.5}, 			-- PRO-FIRSTAID
+    [773] 	= {0,0.25,0.5,0.75,51005}, 		-- PRO-INSCRIPTION
+    [755] 	= {0.25,0.5,0.5,0.75,31252},	-- PRO-JEWELCRAFTING
+    [165] 	= {0.5,0.75,0.5,0.75}, 			-- PRO-LEATHERWORKING
+    [186] 	= {0.75,1,0.5,0.75}, 			-- PRO-MINING
+    [197] 	= {0.25,0.5,0.75,1}, 			-- PRO-TAILORING
+}
+local HEARTH_SPELLS = {556,50977,18960,126892}
+--[[
+##########################################################
+PRE VARS/FUNCTIONS
+##########################################################
+]]--
+local DD_OnClick = function(self)
+	-- DO STUFF
+	self:GetParent():Hide()
+end
+
+local DD_OnEnter = function(self)
+	self.hoverTex:Show()
+end
+
+local DD_OnLeave = function(self)
+	self.hoverTex:Hide()
+end
+
+local function SetFilterMenu(self)
+	Dock.Dropdown:ClearAllPoints()
+	Dock.Dropdown:SetPoint("TOPLEFT", self, "BOTTOMLEFT", 0, -8)
+	ToggleFrame(Dock.Dropdown)
+end
+
+local function CycleDocklets()
+	local list = Dock.DockletWindows
+	for i=1, #list do
+		local f = list[i]
+		if(not InCombatLockdown() or (InCombatLockdown() and (f.IsProtected and not f:IsProtected()))) then
+			local b = _G[f.ToggleName]
+			if(b) then
+				b:Deactivate()
+			end
+			if f.Hide then
+				f:Hide()
+			end
+		end
+	end
+end
+
+local function GetDefaultWindow()
+	local window = Dock.DefaultDocklet
+	if window and _G[window] then
+		Dock.Right.Window.FrameName = window
+		Dock.Right.Window:Show()
+	end
+end
+
+local ToggleDocks = function(self)
+	GameTooltip:Hide()
+	if SV.cache.Docks.IsFaded then
+		SV.cache.Docks.IsFaded = nil;
+		SV:SecureFadeIn(Dock.Left, 0.2, Dock.Left:GetAlpha(), 1)
+		SV:SecureFadeIn(Dock.Right, 0.2, Dock.Right:GetAlpha(), 1)
+	else
+		SV.cache.Docks.IsFaded = true;
+		SV:SecureFadeOut(Dock.Left, 0.2, Dock.Left:GetAlpha(), 0, true)
+		SV:SecureFadeOut(Dock.Right, 0.2, Dock.Right:GetAlpha(), 0, true)
+	end
+end
+
+local Docklet_OnShow = function(self)
+	if(_G[Dock.Right.Window.FrameName]) then
+		if(InCombatLockdown() and (_G[Dock.Right.Window.FrameName].IsProtected and _G[Dock.Right.Window.FrameName]:IsProtected())) then return end
+		_G[Dock.Right.Window.FrameName]:Show()
+	end
+	if _G[Dock.Right.Window.SecondName] then
+		if(InCombatLockdown() and (_G[Dock.Right.Window.SecondName].IsProtected and _G[Dock.Right.Window.SecondName]:IsProtected())) then return end
+		_G[Dock.Right.Window.SecondName]:Show()
+	end
+end
+
+local DockButtonActivate = function(self)
+	self:SetAttribute("isActive", true)
+	self:SetPanelColor("green")
+	self.Icon:SetGradient(unpack(SV.Media.gradient.green))
+end
+
+local DockButtonDeactivate = function(self)
+	self:SetAttribute("isActive", false)
+	self:SetPanelColor("default")
+	self.Icon:SetGradient(unpack(SV.Media.gradient.icon))
+end
+
+local function ToggleDockletWindow(button)
+	local frameName = button.FrameName
+	local window = _G[frameName];
+	if(window) then
+		Dock.Right.Window.FrameName = frameName
+		if(not window:IsShown()) then
+			CycleDocklets()
+		end
+
+		if(not Dock.Right.Window:IsShown()) then
+			Dock.Right.Window:Show()
+		end
+
+		window:Show()
+		button:Activate()
+	else
+		button:Deactivate()
+		GetDefaultWindow()
+	end
+end
+
+local DockletButton_OnEnter = function(self, ...)
+	if SV.cache.Docks.IsFaded then
+		Dock.Left:Show()
+		SV:SecureFadeIn(Dock.Left, 0.2, Dock.Left:GetAlpha(), 1)
+		Dock.Right:Show()
+		SV:SecureFadeIn(Dock.Right, 0.2, Dock.Right:GetAlpha(), 1)
+	end
+
+	self:SetPanelColor("highlight")
+	self.Icon:SetGradient(unpack(SV.Media.gradient.bizzaro))
+
+	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+	GameTooltip:ClearLines()
+	if(self.CustomTooltip) then
+		self:CustomTooltip()
+	else
+		local tipText = self:GetAttribute("tipText")
+		GameTooltip:AddLine(tipText, 1, 1, 1)
+	end
+	GameTooltip:Show()
+end
+
+local DockletButton_OnLeave = function(self, ...)
+	if SV.cache.Docks.IsFaded then
+		SV:SecureFadeOut(Dock.Left, 0.2, Dock.Left:GetAlpha(), 0, true)
+		SV:SecureFadeOut(Dock.Right, 0.2, Dock.Right:GetAlpha(), 0, true)
+	end
+
+	if(self:GetAttribute("isActive")) then
+		self:SetPanelColor("green")
+		self.Icon:SetGradient(unpack(SV.Media.gradient.green))
+	else
+		self:SetPanelColor("default")
+		self.Icon:SetGradient(unpack(SV.Media.gradient.icon))
+	end
+
+	GameTooltip:Hide()
+end
+
+local DockletButton_OnClick = function(self, button)
+	if InCombatLockdown() then return end
+	if button == "RightButton" then
+		SetFilterMenu(self);
+	else
+		if self.PostClickFunction then
+			if(self:GetAttribute("isActive")) then
+				self:Deactivate()
+				GetDefaultWindow()
+			else
+				self:Activate()
+			end
+			self:PostClickFunction()
+		else
+			ToggleDockletWindow(self)
+		end
+	end
+end
+
+local DockletFrame_OnShow = function(self)
+	local frameName = self.FrameName;
+	if (frameName and _G[frameName]) then
+		_G[frameName]:Show()
+	end
+end
+
+local AddonDockletToggle = function(self)
+	if addonDock1.FrameName and _G[addonDock1.FrameName] then
+		if not _G[addonDock1.FrameName]:IsShown() then
+			CycleDocklets()
+			if not InCombatLockdown() and not addonDock1:IsShown()then
+				addonDock1:Show()
+			end
+			_G[addonDock1.FrameName]:Show()
+			self:Activate()
+		elseif not addonDock1:IsShown()then
+			if not InCombatLockdown() then addonDock1:Show() end
+			_G[addonDock1.FrameName]:Show()
+			self:Activate()
+		end
+	else
+		addonDock1.FrameName = "None"
+		if InCombatLockdown()then return end
+		if addonDock1:IsShown()then
+			addonDock1:Hide()
+		else
+			addonDock1:Show()
+		end
+		self:Deactivate()
+	end
+	if SV.db.Dock.docklets.enableExtra and addonDock2.FrameName and _G[addonDock2.FrameName] then
+		if not _G[addonDock2.FrameName]:IsShown() then
+			if not InCombatLockdown() and not addonDock2:IsShown()then
+				addonDock2:Show()
+				addonDock1:Show()
+			end
+			_G[addonDock2.FrameName]:Show()
+			self:Activate()
+		elseif not addonDock2:IsShown() then
+			if not InCombatLockdown() then
+				addonDock2:Show()
+				addonDock1:Show()
+			end
+			_G[addonDock2.FrameName]:Show()
+			self:Activate()
+		else
+			if not InCombatLockdown() then
+				addonDock2:Hide()
+				addonDock1:Hide()
+			end
+			self:Deactivate()
+		end
+	else
+		addonDock2.FrameName = "None"
+	end
+end
+
+local function SetSuperDockStyle(dock)
+	if dock.backdrop then return end
+	local backdrop = CreateFrame("Frame", nil, dock)
+	backdrop:SetAllPoints(dock)
+	backdrop:SetFrameStrata("BACKGROUND")
+	backdrop.bg = backdrop:CreateTexture(nil, "BORDER")
+	backdrop.bg:FillInner(backdrop)
+	backdrop.bg:SetTexture(1, 1, 1, 1)
+	backdrop.bg:SetGradientAlpha("VERTICAL", 0, 0, 0, 0.8, 0, 0, 0, 0)
+	backdrop.left = backdrop:CreateTexture(nil, "OVERLAY")
+	backdrop.left:SetTexture(1, 1, 1, 1)
+	backdrop.left:Point("TOPLEFT", 1, -1)
+	backdrop.left:Point("BOTTOMLEFT", -1, 1)
+	backdrop.left:Width(4)
+	backdrop.left:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0)
+	backdrop.right = backdrop:CreateTexture(nil, "OVERLAY")
+	backdrop.right:SetTexture(1, 1, 1, 1)
+	backdrop.right:Point("TOPRIGHT", -1, -1)
+	backdrop.right:Point("BOTTOMRIGHT", -1, 1)
+	backdrop.right:Width(4)
+	backdrop.right:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0)
+	backdrop.bottom = backdrop:CreateTexture(nil, "OVERLAY")
+	backdrop.bottom:SetTexture(0, 0, 0, 1)
+	backdrop.bottom:Point("BOTTOMLEFT", 1, 1)
+	backdrop.bottom:Point("BOTTOMRIGHT", -1, 1)
+	backdrop.bottom:Height(4)
+	backdrop.top = backdrop:CreateTexture(nil, "OVERLAY")
+	backdrop.top:SetTexture(0,0,0,0)
+	backdrop.top:Point("TOPLEFT", 1, -1)
+	backdrop.top:Point("TOPRIGHT", -1, 1)
+	backdrop.top:SetAlpha(0)
+	backdrop.top:Height(1)
+	return backdrop
+end
+
+Dock.CycleDocklets = CycleDocklets
+--[[
+##########################################################
+CORE FUNCTIONS
+##########################################################
+]]--
+_G.HideSuperDocks = function()
+	ToggleDocks(LeftDockToggleButton)
+end
+--[[
+##########################################################
+DOCKLET HELPERS
+##########################################################
+]]--
+local function AddTool(button)
+	local name = button:GetName();
+	if Dock.HandledDocklets[name] then return end
+	Dock.HandledDocklets[name] = true;
+	local height = Dock.Right.ToolBar:GetHeight();
+	local xOffset = #Dock.DockletButtons * (height + 6) + 6
+	button:SetPoint("RIGHT", Dock.Right.ToolBar, "RIGHT", (xOffset * -1), 0);
+	tinsert(Dock.DockletButtons, button)
+ 	button.listIndex = #Dock.DockletButtons;
+	button:Show()
+end
+
+function Dock:ActivateDockletButton(button, clickFunction, tipFunction, isdefault)
+	button.Activate = DockButtonActivate
+	button.Deactivate = DockButtonDeactivate
+
+	if(tipFunction and type(tipFunction) == "function") then
+		button.CustomTooltip = tipFunction
+	end
+
+	button:SetPanelColor("default")
+	button.Icon:SetGradient(unpack(SV.Media.gradient.icon))
+	button:SetScript("OnEnter", DockletButton_OnEnter)
+	button:SetScript("OnLeave", DockletButton_OnLeave)
+	button:SetScript("OnClick", DockletButton_OnClick)
+
+	if(clickFunction and type(clickFunction) == "function") then
+		button.PostClickFunction = clickFunction
+	end
+
+	if(isdefault) then
+		self.DefaultDocklet = button:GetAttribute("ownerFrame")
+		button:Activate()
+	end
+end
+
+local function CreateBasicToolButton(name, texture, onclick, frameName, isdefault)
+	local fName = frameName or name;
+	local dockIcon = texture or [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]];
+	local size = Dock.Right.ToolBar:GetHeight();
+	local button = _G[fName .. "_ToolBarButton"] or CreateFrame("Button", ("%s_ToolBarButton"):format(fName), Dock.Right.ToolBar, "SVUI_DockletButtonTemplate")
+
+	AddTool(button)
+
+	button:Size(size,size)
+	button:SetFramedButtonTemplate()
+	button.Icon:SetTexture(dockIcon)
+	button:SetAttribute("tipText", "Open " .. name)
+    button:SetAttribute("ownerFrame", fName)
+    button.FrameName = fName
+
+	Dock:ActivateDockletButton(button, onclick, nil, isdefault)
+
+	_G[fName].ToggleName = fName.."_ToolBarButton";
+
+	return button
+end
+--[[
+##########################################################
+DOCKS
+##########################################################
+]]--
+function Dock:CreateDockPanels()
+	local leftWidth = SV.db.Dock.dockLeftWidth or 350;
+	local leftHeight = SV.db.Dock.dockLeftHeight or 180;
+	local rightWidth = SV.db.Dock.dockRightWidth or 350;
+	local rightHeight = SV.db.Dock.dockRightHeight or 180;
+	local buttonsize = SV.db.Dock.buttonSize or 22;
+	local spacing = SV.db.Dock.buttonSpacing or 4;
+	local texture = [[Interface\AddOns\SVUI\assets\artwork\Template\BUTTON]];
+
+	-- [[ TOP AND BOTTOM BORDERS ]] --
+
+	self.Border.Top = CreateFrame("Frame", "SVUITopBorder", SV.Screen)
+	self.Border.Top:Point("TOPLEFT", SV.Screen, "TOPLEFT", -1, 1)
+	self.Border.Top:Point("TOPRIGHT", SV.Screen, "TOPRIGHT", 1, 1)
+	self.Border.Top:Height(14)
+	self.Border.Top:SetBackdrop({
+		bgFile = texture,
+		edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+		tile = false,
+		tileSize = 0,
+		edgeSize = 1,
+		insets = {left = 0, right = 0, top = 0, bottom = 0}
+	})
+	self.Border.Top:SetBackdropColor(unpack(SV.Media.color.special))
+	self.Border.Top:SetBackdropBorderColor(0,0,0,1)
+	self.Border.Top:SetFrameLevel(0)
+	self.Border.Top:SetFrameStrata('BACKGROUND')
+	self.Border.Top:SetScript("OnShow", function(this)
+		this:SetFrameLevel(0)
+		this:SetFrameStrata('BACKGROUND')
+	end)
+	self:TopBorderVisibility()
+
+	self.Border.Bottom = CreateFrame("Frame", "SVUIBottomBorder", SV.Screen)
+	self.Border.Bottom:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", -1, -1)
+	self.Border.Bottom:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", 1, -1)
+	self.Border.Bottom:Height(14)
+	self.Border.Bottom:SetBackdrop({
+		bgFile = texture,
+		edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+		tile = false,
+		tileSize = 0,
+		edgeSize = 1,
+		insets = {left = 0, right = 0, top = 0, bottom = 0}
+	})
+	self.Border.Bottom:SetBackdropColor(unpack(SV.Media.color.special))
+	self.Border.Bottom:SetBackdropBorderColor(0,0,0,1)
+	self.Border.Bottom:SetFrameLevel(0)
+	self.Border.Bottom:SetFrameStrata('BACKGROUND')
+	self.Border.Bottom:SetScript("OnShow", function(this)
+		this:SetFrameLevel(0)
+		this:SetFrameStrata('BACKGROUND')
+	end)
+	self:BottomBorderVisibility()
+
+	-- [[ BOTTOM LEFT DOCK ]] --
+
+    self.Left:SetParent(SV.Screen)
+    self.Left:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", 2, 2)
+    self.Left:Size(leftWidth, leftHeight)
+    self.Left:SetAttribute("buttonSize", buttonsize)
+    self.Left:SetAttribute("spacingSize", spacing)
+    self.Left.Button:Size(buttonsize, buttonsize)
+    self.Left.Button:SetFramedButtonTemplate()
+    self.Left.Button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\SVUI-EMBLEM]])
+    self.Left.Button:SetAttribute("tipText", L["Toggle Docks"])
+    self.Left.Button:RegisterForClicks("AnyUp")
+    self.Left.ToolBar:Point("LEFT", self.Left.Button, "RIGHT", spacing, 0)
+    self.Left.ToolBar:Height(buttonsize)
+
+	self.Left.Alert.Activate = AlertActivate
+	self.Left.Alert.Deactivate = AlertDeactivate
+
+	self.Left.backdrop = SetSuperDockStyle(self.Left.Window)
+
+	self:ActivateDockletButton(self.Left.Button, ToggleDocks)
+	SV.Mentalo:Add(self.Left, L["Left Dock"])
+
+	-- [[ BOTTOM RIGHT DOCK ]] --
+
+	self.Right:SetParent(SV.Screen)
+	self.Right:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -2, 2)
+	self.Right:Size(rightWidth, rightHeight)
+	self.Right:SetAttribute("buttonSize", buttonsize)
+    self.Right:SetAttribute("spacingSize", spacing)
+	self.Right.Button:Size(buttonsize, buttonsize)
+	self.Right.Button:SetFramedButtonTemplate()
+	self.Right.Button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-HENCHMAN]])
+	self.Right.Button:SetAttribute("tipText", "Call Henchman!")
+	self.Right.Button:RegisterForClicks("AnyUp")
+	self.Right.ToolBar:Point("RIGHT", self.Right.Button, "LEFT", -spacing, 0)
+	self.Right.ToolBar:Height(buttonsize)
+	self.Right.ToolBar.AddonButton:Size(buttonsize, buttonsize)
+	self.Right.ToolBar.AddonButton:SetFramedButtonTemplate()
+	self.Right.ToolBar.AddonButton.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]])
+	self.Right.ToolBar.AddonButton:SetAttribute("tipText", "")
+	self.Right.ToolBar.AddonButton.IsRegistered = false;
+	self.Right.UtilityBar:Point("RIGHT", self.Right.ToolBar, "LEFT", -spacing, 0)
+	self.Right.UtilityBar:Size(1, buttonsize)
+
+	self.Right.Alert.Activate = AlertActivate
+	self.Right.Alert.Deactivate = AlertDeactivate
+
+	self.Right.backdrop = SetSuperDockStyle(self.Right.Window)
+
+	self:ActivateDockletButton(self.Right.Button, SV.ToggleHenchman)
+	self:ActivateDockletButton(self.Right.ToolBar.AddonButton, AddonDockletToggle)
+	SV.Mentalo:Add(self.Right, L["Right Dock"])
+
+	if SV.cache.Docks.IsFaded then Dock.Left:Hide() Dock.Right:Hide() end
+
+	-- [[ TOP LEFT DOCK ]] --
+
+	self.Top:SetParent(SV.Screen)
+	self.Top:Point("TOPLEFT", SV.Screen, "TOPLEFT", 1, -2)
+	self.Top:Size(leftWidth, leftHeight)
+	self.Top:SetAttribute("buttonSize", buttonsize)
+    self.Top:SetAttribute("spacingSize", spacing)
+	self.Top.ToolBar:Size(1, buttonsize)
+
+	SV.Mentalo:Add(self.Top, L["Top Dock"])
+
+	--RIGHT CLICK MENU
+
+	self.Dropdown:SetParent(SV.Screen)
+	self.Dropdown:SetPanelTemplate("Default")
+	self.Dropdown.buttons = {}
+	self.Dropdown:SetFrameStrata("DIALOG")
+	self.Dropdown:SetClampedToScreen(true)
+
+	for i = 1, 4 do
+		self.Dropdown.buttons[i] = CreateFrame("Button", nil, self.Dropdown)
+
+		self.Dropdown.buttons[i].hoverTex = self.Dropdown.buttons[i]:CreateTexture(nil, 'OVERLAY')
+		self.Dropdown.buttons[i].hoverTex:SetAllPoints()
+		self.Dropdown.buttons[i].hoverTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
+		self.Dropdown.buttons[i].hoverTex:SetBlendMode("ADD")
+		self.Dropdown.buttons[i].hoverTex:Hide()
+
+		self.Dropdown.buttons[i].activeTex = self.Dropdown.buttons[i]:CreateTexture(nil, 'OVERLAY')
+		self.Dropdown.buttons[i].activeTex:SetAllPoints()
+		self.Dropdown.buttons[i].activeTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
+		self.Dropdown.buttons[i].activeTex:SetVertexColor(0,0.7,0)
+		self.Dropdown.buttons[i].activeTex:SetBlendMode("ADD")
+		self.Dropdown.buttons[i].activeTex:Hide()
+
+		self.Dropdown.buttons[i].text = self.Dropdown.buttons[i]:CreateFontString(nil, 'BORDER')
+		self.Dropdown.buttons[i].text:SetAllPoints()
+		self.Dropdown.buttons[i].text:SetFont(SV.Media.font.roboto,12,"OUTLINE")
+		self.Dropdown.buttons[i].text:SetJustifyH("LEFT")
+		self.Dropdown.buttons[i].text:SetText(("Option %d"):format(i))
+
+		self.Dropdown.buttons[i]:SetHeight(16)
+		self.Dropdown.buttons[i]:SetWidth(115)
+
+		self.Dropdown.buttons[i]:SetScript("OnEnter", DD_OnEnter)
+		self.Dropdown.buttons[i]:SetScript("OnLeave", DD_OnLeave)
+		self.Dropdown.buttons[i]:SetScript("OnClick", DD_OnClick)
+
+		if i == 1 then
+			self.Dropdown.buttons[i]:SetPoint("TOPLEFT", self.Dropdown, "TOPLEFT", 10, -10)
+		else
+			self.Dropdown.buttons[i]:SetPoint("TOPLEFT", self.Dropdown.buttons[i - 1], "BOTTOMLEFT", 0, 0)
+		end
+
+		self.Dropdown.buttons[i]:Show()
+	end
+
+	self.Dropdown:SetSize(135, 94)
+	self.Dropdown:Hide()
+	SV:AddToDisplayAudit(self.Dropdown)
+end
+
+local function BorderColorUpdates()
+	Dock.Border.Top:SetBackdropColor(unpack(SV.Media.color.special))
+	Dock.Border.Top:SetBackdropBorderColor(0,0,0,1)
+	Dock.Border.Bottom:SetBackdropColor(unpack(SV.Media.color.special))
+	Dock.Border.Bottom:SetBackdropBorderColor(0,0,0,1)
+end
+
+SV:NewCallback(BorderColorUpdates)
+
+do
+	local LastAddedMacro;
+	local MacroCount = 0;
+
+	local function GetMacroCooldown(itemID)
+		local start,duration = GetItemCooldown(itemID)
+		local expires = duration - (GetTime() - start)
+		if expires > 0.05 then
+			local timeLeft = 0;
+			local calc = 0;
+			if expires < 4 then
+				return format("|cffff0000%.1f|r", expires)
+			elseif expires < 60 then
+				return format("|cffffff00%d|r", floor(expires))
+			elseif expires < 3600 then
+				timeLeft = ceil(expires / 60);
+				calc = floor((expires / 60) + .5);
+				return format("|cffff9900%dm|r", timeLeft)
+			elseif expires < 86400 then
+				timeLeft = ceil(expires / 3600);
+				calc = floor((expires / 3600) + .5);
+				return format("|cff66ffff%dh|r", timeLeft)
+			else
+				timeLeft = ceil(expires / 86400);
+				calc = floor((expires / 86400) + .5);
+				return format("|cff6666ff%dd|r", timeLeft)
+			end
+		else
+			return "|cff6666ffReady|r"
+		end
+	end
+
+	local SetMacroTooltip = function(self)
+		local text1 = self:GetAttribute("tipText")
+		local text2 = self:GetAttribute("tipExtraText")
+		if(not text2) then
+			GameTooltip:AddLine(text1, 1, 1, 1)
+		else
+			GameTooltip:AddDoubleLine("[Left-Click]", text1, 0, 1, 0, 1, 1, 1)
+			GameTooltip:AddDoubleLine("[Right-Click]", "Use " .. text2, 0, 1, 0, 1, 1, 1)
+			if InCombatLockdown() then return end
+			if(self.ItemToUse) then
+				GameTooltip:AddLine(" ", 1, 1, 1)
+				local remaining = GetMacroCooldown(self.ItemToUse)
+				GameTooltip:AddDoubleLine(text2, remaining, 1, 0.5, 0, 0, 1, 1)
+			end
+		end
+	end
+
+	local SetHearthTooltip = function(self)
+		GameTooltip:AddLine(L["Hearthstone"], 1, 1, 1)
+		if InCombatLockdown() then return end
+		local remaining = GetMacroCooldown(6948)
+		GameTooltip:AddDoubleLine(L["Time Remaining"], remaining, 1, 1, 1, 0, 1, 1)
+		local extraText = self:GetAttribute("tipExtraText")
+		if(extraText) then
+			GameTooltip:AddLine(" ", 1, 1, 1)
+			GameTooltip:AddDoubleLine(extraText, "[Right Click]", 1, 1, 1, 0, 1, 0)
+		end
+	end
+
+	local function AddMacroTool(frame)
+		local height = Dock.Right.ToolBar:GetHeight();
+		if not LastAddedMacro then
+			frame:Point("RIGHT", Dock.Right.UtilityBar, "RIGHT", -6, 0);
+		else
+			frame:Point("RIGHT", LastAddedMacro, "LEFT", -6, 0);
+		end
+		LastAddedMacro = frame;
+		MacroCount = MacroCount + 1;
+		width = MacroCount * (height + 6)
+		Dock.Right.UtilityBar:Size(width, height)
+	end
+
+	local function CreateMacroToolButton(proName, proID, itemID, size)
+		local data = TOOL_DATA[proID]
+		if(not data) then return end
+		local button = CreateFrame("Button", ("%s_MacroBarButton"):format(itemID), Dock.Right.UtilityBar, "SecureActionButtonTemplate,SVUI_DockletButtonTemplate")
+		button:Size(size, size)
+		AddTool(button)
+		button:SetFramedButtonTemplate()
+		button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\PROFESSIONS]])
+		button.Icon:SetTexCoord(data[1], data[2], data[3], data[4])
+		button.Icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+		button:SetAttribute("tipText", "Open " .. proName)
+
+		if proID == 186 then proName = "Smelting" end
+
+		if(data[5]) then
+			local rightClick
+			button:RegisterForClicks("AnyDown")
+			if(data[6] and GetItemCount(data[6], true) > 0) then
+				rightClick = GetItemInfo(data[6])
+				button.ItemToUse = data[6]
+			else
+				rightClick = GetSpellInfo(data[5])
+			end
+			button:SetAttribute("tipExtraText", rightClick)
+			button:SetAttribute("type", "macro")
+			button:SetAttribute("macrotext", "/cast [button:2] " .. rightClick .. ";" .. proName)
+		else
+			button:SetAttribute("type", "macro")
+			button:SetAttribute("macrotext", "/cast " .. proName)
+		end
+
+		Dock:ActivateDockletButton(button, nil, SetMacroTooltip)
+	end
+
+	function Dock:LoadToolBarProfessions()
+		if(SV.ToolBarLoaded) then return end
+		if(InCombatLockdown()) then Dock:RegisterEvent("PLAYER_REGEN_ENABLED"); return end
+		local size = Dock.Right.UtilityBar:GetHeight()
+		local hearth = CreateFrame("Button", "SVUI_HearthButton", Dock.Right.UtilityBar, "SecureActionButtonTemplate, SVUI_DockletButtonTemplate")
+		hearth:Size(size, size)
+		AddTool(hearth)
+		hearth:SetFramedButtonTemplate()
+		hearth.Icon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Icons\\DOCK-HEARTH")
+		hearth.Icon:SetTexCoord(0,0.5,0,1)
+		hearth:RegisterForClicks("AnyUp")
+		hearth:SetAttribute("type", "item")
+		hearth:SetAttribute("item", "Hearthstone")
+
+		Dock:ActivateDockletButton(hearth, nil, SetHearthTooltip)
+
+		for i = 1, #HEARTH_SPELLS do
+			if(IsSpellKnown(HEARTH_SPELLS[i])) then
+				local rightClickSpell = GetSpellInfo(HEARTH_SPELLS[i])
+				hearth:SetAttribute("type2", "spell")
+				hearth:SetAttribute("spell", rightClickSpell)
+				hearth:SetAttribute("tipExtraText", rightClickSpell)
+			end
+		end
+
+		local proName, proID
+		local prof1, prof2, archaeology, _, cooking, firstAid = GetProfessions()
+		if(firstAid ~= nil) then
+			proName, _, _, _, _, _, proID = GetProfessionInfo(firstAid)
+			CreateMacroToolButton(proName, proID, firstAid, size)
+		end
+		if(archaeology ~= nil) then
+			proName, _, _, _, _, _, proID = GetProfessionInfo(archaeology)
+			CreateMacroToolButton(proName, proID, archaeology, size)
+		end
+		if(cooking ~= nil) then
+			proName, _, _, _, _, _, proID = GetProfessionInfo(cooking)
+			CreateMacroToolButton(proName, proID, cooking, size)
+		end
+		if(prof2 ~= nil) then
+			proName, _, _, _, _, _, proID = GetProfessionInfo(prof2)
+			if(proID ~= 182 and proID ~= 393) then
+				CreateMacroToolButton(proName, proID, prof2, size)
+			end
+		end
+		if(prof1 ~= nil) then
+			proName, _, _, _, _, _, proID = GetProfessionInfo(prof1)
+			if(proID ~= 182 and proID ~= 393) then
+				CreateMacroToolButton(proName, proID, prof1, size)
+			end
+		end
+
+		SV.ToolBarLoaded = true
+	end
+end
+--[[
+##########################################################
+EXTERNALLY ACCESSIBLE METHODS
+##########################################################
+]]--
+SV.CurrentlyDocked = {};
+
+function Dock:IsDockletReady(arg)
+	local addon = arg;
+	if arg == "DockletMain" or arg == "DockletExtra" then
+		addon = SV.db.Dock.docklets[arg]
+	end
+	if addon == nil or addon == "None" then
+		return false
+	end
+	return true
+end
+
+do
+	local function UnregisterDocklet(name)
+		local frame = _G[name];
+		if not frame or not frame.listIndex then return end
+		local i = frame.listIndex;
+		tremove(Dock.DockletWindows, i)
+	end
+
+	local function RemoveDocklet(button)
+		if not button or not button.listIndex then return end
+		local name = button:GetName();
+		if not Dock.HandledDocklets[name] then return end
+		Dock.HandledDocklets[name] = false;
+		local i = button.listIndex;
+		local PREV_TOOL = Dock.DockletButtons[i - 1]
+		tremove(Dock.DockletButtons, i)
+		if(PREV_TOOL) then
+			local height = Dock.Right.ToolBar:GetHeight();
+			local xOffset = (#Dock.DockletButtons - 1) * (height + 6) + 6
+			PREV_TOOL:SetPoint("RIGHT", Dock.Right.ToolBar, "RIGHT", (xOffset * -1), 0);
+		end
+		button:Hide()
+	end
+
+	function Dock:ReloadDocklets(alert)
+		if InCombatLockdown() then return end
+
+		local frame, i;
+		twipe(SV.CurrentlyDocked);
+		if self:IsDockletReady("DockletMain") then
+			frame = SV.db.Dock.docklets.MainWindow
+			if frame ~= nil and frame ~= "None" and _G[frame] then
+				UnregisterDocklet(frame)
+				SV.db.Dock.docklets.MainWindow = "None"
+			end
+		elseif self.Right.ToolBar.AddonButton.IsRegistered then
+			RemoveDocklet(self.Right.ToolBar.AddonButton)
+			self.Right.ToolBar.AddonButton:SetAttribute("tipText", "")
+			self.Right.ToolBar.AddonButton.IsRegistered = false;
+		end
+		if self:IsDockletReady("DockletExtra") then
+			frame = SV.db.Dock.docklets.ExtraWindow
+			if frame ~= nil and frame ~= "None" and _G[frame] then
+				UnregisterDocklet(frame)
+				SV.db.Dock.docklets.ExtraWindow = "None"
+			end
+		end
+		addonDock1.FrameName = "None"
+		addonDock2.FrameName = "None"
+
+		local width,height = Dock.Right.Window:GetSize();
+
+		if self:IsDockletReady('DockletMain') then
+			if self:IsDockletReady("DockletExtra") and SV.db.Dock.docklets.enableExtra then
+				width = width * 0.5;
+			end
+			addonDock1:ClearAllPoints()
+			addonDock1:Size(width,height)
+			addonDock1:Point('BOTTOMLEFT',Dock.Right.Window,'BOTTOMLEFT',1,1)
+			addonDock2:ClearAllPoints()
+			addonDock2:Size(width,height)
+			addonDock2:Point('BOTTOMLEFT',addonDock1,'BOTTOMRIGHT',0,0)
+		end
+	end
+end
+
+
+function Dock:RegisterDocklet(name, tooltip, texture, onclick, isdefault)
+	local frame = _G[name];
+	if frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected()) then
+		frame:ClearAllPoints()
+		frame:SetParent(self.Right.Window)
+		frame:FillInner(self.Right.Window, 4, 4)
+		frame.FrameName = name;
+		tinsert(self.DockletWindows, frame);
+		frame.listIndex = #self.DockletWindows;
+		frame.ToolbarButton = CreateBasicToolButton(tooltip, texture, onclick, name, isdefault)
+	end
+end
+
+function Dock:RegisterMainDocklet(name)
+	local frame = _G[name];
+	if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then
+		addonDock1.FrameName = name;
+		SV.db.Dock.docklets.MainWindow = name;
+		frame:ClearAllPoints()
+		frame:SetParent(addonDock1)
+		frame:SetAllPoints(addonDock1)
+		frame.ToggleName = "Dock.RightToolBarAddonButton";
+		tinsert(self.DockletWindows, frame);
+		frame.listIndex = #self.DockletWindows;
+		AddTool(self.Right.ToolBar.AddonButton)
+		self.Right.ToolBar.AddonButton:SetAttribute("tipText", "")
+		self.Right.ToolBar.AddonButton.IsRegistered = true
+		SV.CurrentlyDocked[name] = true
+		if not InCombatLockdown() and frame:IsShown() then frame:Hide() end
+	end
+end
+
+function Dock:RegisterExtraDocklet(name)
+	local frame = _G[name];
+	if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then
+		addonDock2.FrameName = name;
+		SV.db.Dock.docklets.ExtraWindow = name;
+		frame:ClearAllPoints()
+		frame:SetParent(addonDock2)
+		frame:SetAllPoints(addonDock2)
+		frame.ToggleName = "Dock.RightToolBarAddonButton";
+		tinsert(self.DockletWindows, frame);
+		frame.listIndex = #self.DockletWindows;
+		self.Right.ToolBar.AddonButton:SetAttribute("tipText", "")
+		SV.CurrentlyDocked[name] = true;
+		if not InCombatLockdown() and frame:IsShown() then frame:Hide() end
+	end
+end
+--[[
+##########################################################
+BUILD/UPDATE
+##########################################################
+]]--
+function Dock:UpdateDockBackdrops()
+	if SV.db.Dock.rightDockBackdrop then
+		Dock.Right.backdrop:Show()
+		Dock.Right.backdrop:ClearAllPoints()
+		Dock.Right.backdrop:WrapOuter(Dock.Right.Window, 4, 4)
+	else
+		Dock.Right.backdrop:Hide()
+	end
+	if SV.db.Dock.leftDockBackdrop then
+		Dock.Left.backdrop:Show()
+		Dock.Left.backdrop:ClearAllPoints()
+		Dock.Left.backdrop:WrapOuter(Dock.Left.Window, 4, 4)
+	else
+		Dock.Left.backdrop:Hide()
+	end
+end
+
+function Dock:BottomBorderVisibility()
+	if SV.db.Dock.bottomPanel then
+		self.Border.Bottom:Show()
+	else
+		self.Border.Bottom:Hide()
+	end
+end
+
+function Dock:TopBorderVisibility()
+	if SV.db.Dock.topPanel then
+		self.Border.Top:Show()
+	else
+		self.Border.Top:Hide()
+	end
+end
+
+function Dock:PLAYER_REGEN_ENABLED()
+	self:UnregisterEvent('PLAYER_REGEN_ENABLED')
+	self:LoadToolBarProfessions()
+end
+
+function Dock:Refresh()
+	local leftWidth = SV.db.Dock.dockLeftWidth or 350;
+	local leftHeight = SV.db.Dock.dockLeftHeight or 180;
+	local rightWidth = SV.db.Dock.dockRightWidth or 350;
+	local rightHeight = SV.db.Dock.dockRightHeight or 180;
+	local buttonsize = SV.db.Dock.buttonSize or 22;
+	local spacing = SV.db.Dock.buttonSpacing or 4;
+
+	self.Left:Size(leftWidth, leftHeight)
+	self.Right:Size(rightWidth, rightHeight)
+
+	self:BottomBorderVisibility();
+	self:TopBorderVisibility();
+	self:UpdateDockBackdrops();
+	self:ReloadDocklets()
+end
+
+function Dock:Initialize()
+	SV.cache.Docks = SV.cache.Docks	or {}
+
+	if(not SV.cache.Docks.IsFaded) then
+		SV.cache.Docks.IsFaded = false
+	end
+
+	self:CreateDockPanels()
+	self.Right.Window:SetScript("OnShow", Docklet_OnShow)
+
+	if not InCombatLockdown()then
+		CycleDocklets()
+	end
+
+	self:UpdateDockBackdrops()
+	addonDock1:SetFrameLevel(self.Right.Window:GetFrameLevel() + 50)
+	addonDock2:SetFrameLevel(self.Right.Window:GetFrameLevel() + 50)
+
+	local size = self.Right.ToolBar:GetHeight();
+
+	addonDock1:SetScript("OnShow", DockletFrame_OnShow)
+	addonDock2:SetScript("OnShow", DockletFrame_OnShow)
+	self:ReloadDocklets(true)
+
+	SV.Timers:ExecuteTimer(self.LoadToolBarProfessions, 5)
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/framework.lua b/Interface/AddOns/SVUI/system/framework.lua
deleted file mode 100644
index 7898163..0000000
--- a/Interface/AddOns/SVUI/system/framework.lua
+++ /dev/null
@@ -1,1251 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack    = _G.unpack;
-local select    = _G.select;
-local pairs     = _G.pairs;
-local ipairs    = _G.ipairs;
-local type      = _G.type;
-local error     = _G.error;
-local pcall     = _G.pcall;
-local tostring  = _G.tostring;
-local tonumber  = _G.tonumber;
-local table     = _G.table;
-local string     = _G.string;
-local math      = _G.math;
---[[ MATH METHODS ]]--
-local floor, abs, min, max = math.floor, math.abs, math.min, math.max;
-local parsefloat, ceil = math.parsefloat, math.ceil;
---[[ STRING METHODS ]]--
-local lower = string.lower;
---[[ TABLE METHODS ]]--
-local tremove, tcopy, twipe, tsort, tconcat, tdump = table.remove, table.copy, table.wipe, table.sort, table.concat, table.dump;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = select(2, ...)
-local L = SV.L
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local SizeScaled, HeightScaled, WidthScaled, PointScaled, WrapOuter, FillInner
-local TemplateUpdateFrames = {};
-local FontUpdateFrames = {};
-local NewFrame = CreateFrame;
-local NewHook = hooksecurefunc;
-local STANDARD_TEXT_FONT = _G.STANDARD_TEXT_FONT;
-local SCREEN_MOD = 1;
-
-local function GetUsableScreen()
-    local rez = GetCVar("gxResolution")
-    local height = rez:match("%d+x(%d+)")
-    local width = rez:match("(%d+)x%d+")
-    local gxHeight = tonumber(height)
-    local gxWidth = tonumber(width)
-    local gxMod = (768 / gxHeight)
-    return gxWidth, gxHeight, gxMod
-end
---[[
-##########################################################
-UI SCALING
-##########################################################
-]]--
-function SV:UI_SCALE_CHANGED(event)
-    local scale, evalwidth
-    local gxWidth, gxHeight, gxMod = GetUsableScreen()
-
-    if(IsMacClient() and self.DisplaySettings and self.DisplaySettings.screenheight and self.DisplaySettings.screenwidth) then
-        if(gxHeight ~= self.DisplaySettings.screenheight or gxWidth ~= self.DisplaySettings.screenwidth) then
-            gxHeight = self.DisplaySettings.screenheight;
-            gxWidth = self.DisplaySettings.screenwidth
-        end
-    end
-
-    if self.db.general.autoScale then
-        scale = max(0.64, min(1.15, gxMod))
-    else
-        scale = max(0.64, min(1.15, GetCVar("uiScale") or UIParent:GetScale() or gxMod))
-    end
-
-    SCREEN_MOD = gxMod / scale;
-
-    if(gxWidth < 1600) then
-        self.LowRez = true;
-    elseif(gxWidth >= 3840) then
-        self.LowRez = nil
-        if(self.db.general.multiMonitor) then
-            if(gxWidth < 4080) then
-                evalwidth = 1224;
-            elseif(gxWidth < 4320) then
-                evalwidth = 1360;
-            elseif(gxWidth < 4800) then
-                evalwidth = 1440;
-            elseif(gxWidth < 5760) then
-                if(gxHeight == 900) then evalwidth = 1600 else evalwidth = 1680 end
-            elseif(gxWidth < 7680) then
-                evalwidth = 1920;
-            elseif(gxWidth < 9840) then
-                evalwidth = 2560;
-            elseif(gxWidth > 9839) then
-                evalwidth = 3280;
-            end
-        else
-            if(gxWidth < 4080) then
-                evalwidth = 3840;
-            elseif(gxWidth < 4320) then
-                evalwidth = 4080;
-            elseif(gxWidth < 4800) then
-                evalwidth = 4320;
-            elseif(gxWidth < 5040) then
-                evalwidth = 4800;
-            elseif(gxWidth < 5760) then
-                evalwidth = 5040;
-            elseif(gxWidth < 7680) then
-                evalwidth = 5760;
-            elseif(gxWidth < 9840) then
-                evalwidth = 7680;
-            elseif(gxWidth > 9839) then
-                evalwidth = 9840;
-            end
-        end
-    end
-
-    local testScale1 = parsefloat(UIParent:GetScale(), 5)
-    local testScale2 = parsefloat(scale, 5)
-
-    if(event == "PLAYER_LOGIN" and (testScale1 ~= testScale2)) then
-        SetCVar("useUiScale", 1)
-        SetCVar("uiScale", scale)
-        WorldMapFrame.hasTaint = true;
-    end
-
-    if(event == 'PLAYER_LOGIN' or event == 'UI_SCALE_CHANGED') then
-        if IsMacClient() then
-            self.DisplaySettings.screenheight = floor(GetScreenHeight() * 100 + .5) / 100
-            self.DisplaySettings.screenwidth = floor(GetScreenWidth() * 100 + .5) / 100
-        end
-
-        if evalwidth then
-            local width = evalwidth
-            local height = gxHeight;
-            if(not self.db.general.autoScale or height > 1200) then
-                height = UIParent:GetHeight();
-                local ratio = gxHeight / height;
-                width = evalwidth / ratio;
-            end
-            self.Screen:SetSize(width, height);
-        else
-            self.Screen:SetSize(UIParent:GetSize());
-        end
-
-        self.Screen:ClearAllPoints()
-        self.Screen:SetPoint("CENTER")
-
-        local change = abs((testScale1 * 100) - (testScale2 * 100))
-        if(change > 1) then
-            if(self.db.general.autoScale) then
-                self:StaticPopup_Show('FAILED_UISCALE')
-            else
-                self:StaticPopup_Show('RL_CLIENT')
-            end
-        end
-
-        self.EffectiveScale = self.Screen:GetEffectiveScale()
-        self.ActualHeight = self.Screen:GetHeight()
-        self.ActualWidth = self.Screen:GetWidth()
-    end
-end
-
-local function scaled(value)
-    if(not SCREEN_MOD) then
-        SV:UI_SCALE_CHANGED()
-    end
-    return SCREEN_MOD * floor(value / SCREEN_MOD + .5);
-end
-
-SV.Scale = scaled
---[[
-##########################################################
-APPENDED POSITIONING METHODS
-##########################################################
-]]--
-do
-    local PARAMS = {}
-
-    function SizeScaled(self, width, height)
-        if(type(width) == "number") then
-            local h = (height and type(height) == "number") and height or width
-            self:SetSize(scaled(width), scaled(h))
-        end
-    end
-
-    function WidthScaled(self, width)
-        if(type(width) == "number") then
-            self:SetWidth(scaled(width))
-        end
-    end
-
-    function HeightScaled(self, height)
-        if(type(height) == "number") then
-            self:SetHeight(scaled(height))
-        end
-    end
-
-    function PointScaled(self, ...)
-        local n = select('#', ...)
-        PARAMS = {...}
-        local arg
-        for i = 1, n do
-            arg = PARAMS[i]
-            if(arg and type(arg) == "number") then
-                PARAMS[i] = scaled(arg)
-            end
-        end
-        self:SetPoint(unpack(PARAMS))
-    end
-
-    function WrapOuter(self, parent, x, y)
-        x = type(x) == "number" and x or 1
-        y = y or x
-        local nx = scaled(x);
-        local ny = scaled(y);
-        parent = parent or self:GetParent()
-        if self:GetPoint() then
-            self:ClearAllPoints()
-        end
-        self:SetPoint("TOPLEFT", parent, "TOPLEFT", -nx, ny)
-        self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", nx, -ny)
-    end
-
-    function FillInner(self, parent, x, y)
-        x = type(x) == "number" and x or 1
-        y = y or x
-        local nx = scaled(x);
-        local ny = scaled(y);
-        parent = parent or self:GetParent()
-        if self:GetPoint() then
-            self:ClearAllPoints()
-        end
-        self:SetPoint("TOPLEFT", parent, "TOPLEFT", nx, -ny)
-        self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", -nx, ny)
-    end
-end
---[[
-##########################################################
-APPENDED DESTROY METHODS
-##########################################################
-]]--
-local _purgatory = NewFrame("Frame", nil)
-_purgatory:Hide()
-
-local function Die(self)
-    if self.UnregisterAllEvents then
-        self:UnregisterAllEvents()
-        self:SetParent(_purgatory)
-    else
-        self:Hide()
-        self.Show = SV.fubar
-    end
-end
-
-local function RemoveTextures(self, option)
-    if(self.Panel) then return end
-    local region, layer, texture
-    for i = 1, self:GetNumRegions()do
-        region = select(i, self:GetRegions())
-        if(region and (region:GetObjectType() == "Texture")) then
-
-            layer = region:GetDrawLayer()
-            texture = region:GetTexture()
-
-            if(option) then
-                if(type(option) == "boolean") then
-                    if region.UnregisterAllEvents then
-                        region:UnregisterAllEvents()
-                        region:SetParent(_purgatory)
-                    else
-                        region.Show = region.Hide
-                    end
-                    region:Hide()
-                elseif(type(option) == "string" and ((layer == option) or (texture ~= option))) then
-                    region:SetTexture(0,0,0,0)
-                end
-            else
-                region:SetTexture(0,0,0,0)
-            end
-        end
-    end
-end
---[[
-##########################################################
-APPENDED FONT TEMPLATING METHODS
-##########################################################
-]]--
-local function SetFontTemplate(self, font, fontSize, fontStyle, fontJustifyH, fontJustifyV, noUpdate)
-    if not self then return end
-    local STANDARDFONTSIZE = SV.db.media.fonts and SV.db.media.fonts.size or 12
-    font = font or [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]]
-    fontSize = fontSize or STANDARDFONTSIZE;
-    fontJustifyH = fontJustifyH or "CENTER";
-    fontJustifyV = fontJustifyV or "MIDDLE";
-    if not font then return end
-    self.font = font;
-    self.fontSize = fontSize;
-    self.fontStyle = fontStyle;
-    self.fontJustifyH = fontJustifyH;
-    self.fontJustifyV = fontJustifyV;
-    self:SetFont(font, fontSize, fontStyle)
-    if(fontStyle and fontStyle ~= "NONE") then
-        self:SetShadowColor(0, 0, 0, 0)
-    else
-        self:SetShadowColor(0, 0, 0, 0.2)
-    end
-    self:SetShadowOffset(1, -1)
-    self:SetJustifyH(fontJustifyH)
-    self:SetJustifyV(fontJustifyV)
-    self.useCommon = fontSize and (fontSize == STANDARDFONTSIZE);
-    if(not noUpdate) then
-        FontUpdateFrames[self] = true
-    end
-end
---[[
-##########################################################
-FONT UPDATE CALLBACK
-##########################################################
-]]--
-local function FontTemplateUpdates()
-    local STANDARDFONTSIZE = SV.db.media.fonts.size;
-    for i=1, #FontUpdateFrames do
-        local frame = FontUpdateFrames[i]
-        if frame then
-            local fontSize = frame.useCommon and STANDARDFONTSIZE or frame.fontSize
-            frame:SetFont(frame.font, fontSize, frame.fontStyle)
-        else
-            FontUpdateFrames[i] = nil
-        end
-    end
-end
-
-function SV:UpdateFontTemplates()
-    FontTemplateUpdates()
-end
-
-SV:NewCallback(FontTemplateUpdates)
---[[
-##########################################################
-XML TEMPLATE LOOKUP TABLE
-##########################################################
-]]--
-local XML_LOOKUP = {
-    ["Default"] = "SVUI_PanelTemplate_Default",
-    ["Transparent"] = "SVUI_PanelTemplate_Transparent",
-    ["Component"] = "SVUI_PanelTemplate_Component",
-    ["Headline"] = "SVUI_PanelTemplate_Headline",
-    ["Button"] = "SVUI_PanelTemplate_Button",
-    ["FramedTop"] = "SVUI_PanelTemplate_FramedTop",
-    ["FramedBottom"] = "SVUI_PanelTemplate_FramedBottom",
-    ["Bar"] = "SVUI_PanelTemplate_Bar",
-    ["Slot"] = "SVUI_PanelTemplate_Slot",
-    ["Inset"] = "SVUI_PanelTemplate_Inset",
-    ["Comic"] = "SVUI_PanelTemplate_Comic",
-    ["Model"] = "SVUI_PanelTemplate_Model",
-    ["Paper"] = "SVUI_PanelTemplate_Paper",
-    ["Container"] = "SVUI_PanelTemplate_Container",
-    ["Pattern"] = "SVUI_PanelTemplate_Pattern",
-    ["Halftone"] = "SVUI_PanelTemplate_Halftone",
-    ["Action"] = "SVUI_PanelTemplate_Action",
-    ["Blackout"] = "SVUI_PanelTemplate_Blackout",
-    ["UnitLarge"] = "SVUI_PanelTemplate_UnitLarge",
-    ["UnitSmall"] = "SVUI_PanelTemplate_UnitSmall"
-};
---[[
-##########################################################
-INTERNAL HANDLERS
-##########################################################
-]]--
-local HookPanelBorderColor = function(self,r,g,b,a)
-    if self.BorderLeft then
-        self.BorderLeft:SetVertexColor(r,g,b,a)
-        self.BorderRight:SetVertexColor(r,g,b,a)
-        self.BorderTop:SetVertexColor(r,g,b,a)
-        self.BorderBottom:SetVertexColor(r,g,b,a)
-    end
-    if self.Shadow then
-        local alpha = self.Shadow:GetAttribute("shadowAlpha") or 0.5
-        self.Shadow:SetBackdropBorderColor(r,g,b,alpha)
-    end
-end
-
-local HookBackdrop = function(self,...)
-    self.Panel:SetBackdrop(...)
-end
-
-local HookBackdropColor = function(self,...)
-    self.Panel:SetBackdropColor(...)
-end
-
-local HookBackdropBorderColor = function(self,...)
-    self.Panel:SetBackdropBorderColor(...)
-end
-
-local HookVertexColor = function(self,...)
-    self.Panel.Skin:SetVertexColor(...)
-end
-
-local HookCustomBackdrop = function(self)
-    local bgid = self.Panel:GetAttribute("panelID")
-    local newBgFile = SV.Media.bg[bgid]
-    local bd = {
-        bgFile = newBgFile,
-        edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-        tile = false,
-        tileSize = 0,
-        edgeSize = 2,
-        insets =
-        {
-            left = 2,
-            right = 2,
-            top = 2,
-            bottom = 2,
-        },
-    }
-    self:SetBackdrop(bd)
-end
-
-local HookFrameLevel = function(self, level)
-    local adjustment = level - 1;
-    if(adjustment < 0) then adjustment = 0 end
-    self.Panel:SetFrameLevel(adjustment)
-end
-
-local Cooldown_ForceUpdate = function(self)
-    self.nextUpdate = 0;
-    self:Show()
-end
-
-local Cooldown_StopTimer = function(self)
-    self.enable = nil;
-    self:Hide()
-end
-
-local Cooldown_OnUpdate = function(self, elapsed)
-    if self.nextUpdate > 0 then
-        self.nextUpdate = self.nextUpdate - elapsed;
-        return
-    end
-    local expires = (self.duration - (GetTime() - self.start));
-    if expires > 0.05 then
-        if (self.fontScale * self:GetEffectiveScale() / UIParent:GetScale()) < 0.5 then
-            self.text:SetText('')
-            self.nextUpdate = 500
-        else
-            local timeLeft = 0;
-            local calc = 0;
-            if expires < 4 then
-                self.nextUpdate = 0.051
-                self.text:SetFormattedText("|cffff0000%.1f|r", expires)
-            elseif expires < 60 then
-                self.nextUpdate = 0.51
-                self.text:SetFormattedText("|cffffff00%d|r", floor(expires))
-            elseif expires < 3600 then
-                timeLeft = ceil(expires / 60);
-                calc = floor((expires / 60) + .5);
-                self.nextUpdate = calc > 1 and ((expires - calc) * 29.5) or (expires - 59.5);
-                self.text:SetFormattedText("|cffffffff%dm|r", timeLeft)
-            elseif expires < 86400 then
-                timeLeft = ceil(expires / 3600);
-                calc = floor((expires / 3600) + .5);
-                self.nextUpdate = calc > 1 and ((expires - calc) * 1799.5) or (expires - 3570);
-                self.text:SetFormattedText("|cff66ffff%dh|r", timeLeft)
-            else
-                timeLeft = ceil(expires / 86400);
-                calc = floor((expires / 86400) + .5);
-                self.nextUpdate = calc > 1 and ((expires - calc) * 43199.5) or (expires - 86400);
-                self.text:SetFormattedText("|cff6666ff%dd|r", timeLeft)
-            end
-        end
-    else
-        Cooldown_StopTimer(self)
-    end
-end
-
-local Cooldown_OnSizeChanged = function(self, width, height)
-    local frame = self.timer
-    local override = self.SizeOverride
-    local newSize = floor(width + .5) / 36;
-    override = override or frame:GetParent():GetParent().SizeOverride;
-    if override then
-        newSize = override / 20
-    end
-    if newSize == frame.fontScale then
-        return
-    end
-    frame.fontScale = newSize;
-    if newSize < 0.5 and not override then
-        frame:Hide()
-    else
-        frame:Show()
-        frame.text:SetFont([[Interface\AddOns\SVUI\assets\fonts\Numbers.ttf]], newSize * 15, 'OUTLINE')
-        if frame.enable then
-            Cooldown_ForceUpdate(frame)
-        end
-    end
-end
-
-local function CreateCooldownTimer(frame)
-    local timer = CreateFrame('Frame', nil, frame)
-    timer:Hide()
-    timer:SetAllPoints()
-    timer:SetScript('OnUpdate', Cooldown_OnUpdate)
-
-    local timeText = timer:CreateFontString(nil,'OVERLAY')
-    timeText:SetPoint('CENTER',1,1)
-    timeText:SetJustifyH("CENTER")
-    timer.text = timeText;
-
-    frame.timer = timer;
-    local width, height = frame:GetSize()
-    Cooldown_OnSizeChanged(frame, width, height)
-    frame:SetScript('OnSizeChanged', Cooldown_OnSizeChanged)
-
-    return frame.timer
-end
-
-local _hook_Cooldown_SetCooldown = function(self, start, duration, elapsed)
-    if start > 0 and duration > 2.5 then
-        local timer = self.timer or CreateCooldownTimer(self)
-        timer.start = start;
-        timer.duration = duration;
-        timer.enable = true;
-        timer.nextUpdate = 0;
-
-        if timer.fontScale >= 0.5 then
-            timer:Show()
-        end
-    else
-        local timer = self.timer;
-        if timer then
-            Cooldown_StopTimer(timer)
-        end
-    end
-    if self.timer then
-        if elapsed and elapsed > 0 then
-            self.timer:SetAlpha(0)
-        else
-            self.timer:SetAlpha(0.8)
-        end
-    end
-end
---[[
-##########################################################
-COOLDOWN HELPER
-##########################################################
-]]--
-local function CreateCooldown(button)
-    local cooldown = button:GetName() and _G[button:GetName().."Cooldown"]
-    if(cooldown) then
-        cooldown:ClearAllPoints()
-        cooldown:FillInner()
-        cooldown:SetSwipeColor(0, 0, 0, 1)
-        --cooldown:SetHideCountdownNumbers(true)
-
-        if(not cooldown.HookedCooldown) then
-            hooksecurefunc(cooldown, "SetCooldown", _hook_Cooldown_SetCooldown)
-            cooldown.HookedCooldown = true
-        end
-    end
-end
---[[
-##########################################################
-TEMPLATE HELPERS
-##########################################################
-]]--
-local function CreatePanelTemplate(frame, templateName, underlay, noupdate, padding, xOffset, yOffset, defaultColor)
-    local xmlTemplate = XML_LOOKUP[templateName] or "SVUI_PanelTemplate_Default"
-    local borderColor = {0,0,0,1}
-
-    frame.Panel = NewFrame('Frame', nil, frame, xmlTemplate)
-
-    local level = frame:GetFrameLevel()
-    if(level == 0 and not InCombatLockdown()) then
-        frame:SetFrameLevel(1)
-        level = 1
-    end
-
-    local adjustment = level - 1;
-
-    if(adjustment < 0) then adjustment = 0 end
-
-    frame.Panel:SetFrameLevel(adjustment)
-
-    NewHook(frame, "SetFrameLevel", HookFrameLevel)
-
-    if(defaultColor) then
-        frame.Panel:SetAttribute("panelColor", defaultColor)
-    end
-    if(noupdate) then
-        frame.Panel:SetAttribute("panelSkipUpdate", noupdate)
-    end
-
-    local colorName     = frame.Panel:GetAttribute("panelColor")
-    local gradientName  = frame.Panel:GetAttribute("panelGradient")
-    local forcedOffset  = frame.Panel:GetAttribute("panelOffset")
-
-    xOffset = forcedOffset or xOffset or 1
-    yOffset = forcedOffset or yOffset or 1
-
-    frame.Panel:WrapOuter(frame, xOffset, yOffset)
-
-    padding = padding or frame.Panel:GetAttribute("panelPadding")
-
-    if(padding and frame.Panel.BorderLeft) then
-        frame.Panel.BorderLeft:SetWidth(padding)
-        frame.Panel.BorderRight:SetWidth(padding)
-        frame.Panel.BorderTop:SetHeight(padding)
-        frame.Panel.BorderBottom:SetHeight(padding)
-    end
-
-    if(frame.Panel.Shadow) then
-        frame.Panel.Shadow:SetPoint('TOPLEFT', frame.Panel, 'TOPLEFT', -3, 3)
-        frame.Panel.Shadow:SetPoint('BOTTOMRIGHT', frame.Panel, 'BOTTOMRIGHT', 3, -3)
-
-        local alpha = frame.Panel.Shadow:GetAttribute("shadowAlpha") or 0.5
-        frame.Panel.Shadow:SetBackdropBorderColor(0,0,0,alpha)
-
-        local level = frame.Panel.Shadow:GetFrameLevel() - 1
-        if(level >= 0) then
-            frame.Panel.Shadow:SetFrameLevel(level)
-        else
-            frame.Panel.Shadow:SetFrameLevel(0)
-        end
-    end
-
-    local bgColor = SV.Media.color[colorName] or {0.18,0.18,0.18,1}
-
-    if(not frame.Panel:GetAttribute("panelNoBackdrop")) then
-        if(underlay) then
-            frame.Panel:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1)
-            frame.Panel:SetBackdropBorderColor(0,0,0,1)
-        else
-            local bd = frame.Panel:GetBackdrop()
-            frame:SetBackdrop(bd)
-            frame:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1)
-            frame:SetBackdropBorderColor(0,0,0,1)
-
-            frame.Panel:SetBackdrop(nil)
-        end
-
-        if(templateName ~= 'Transparent') then
-            NewHook(frame.Panel, "SetBackdropBorderColor", HookPanelBorderColor)
-            NewHook(frame, "SetBackdropBorderColor", HookBackdropBorderColor)
-            if(underlay) then
-                NewHook(frame, "SetBackdrop", HookBackdrop)
-                NewHook(frame, "SetBackdropColor", HookBackdropColor)
-            end
-            frame.BackdropNeedsUpdate = true
-            if(templateName == 'Pattern' or templateName == 'Comic') then
-                frame.UpdateBackdrop = HookCustomBackdrop
-            end
-        end
-    end
-
-    if(frame.Panel.Skin) then
-        if(not underlay) then
-            frame.Panel.Skin:SetParent(frame)
-            frame.Panel.Skin:FillInner(frame, xOffset, yOffset)
-        else
-            frame.Panel.Skin:FillInner(frame.Panel, xOffset, yOffset)
-        end
-        if(gradientName and SV.Media.gradient[gradientName]) then
-            frame.Panel.Skin:SetGradient(unpack(SV.Media.gradient[gradientName]))
-        else
-            frame.Panel.Skin:SetVertexColor(bgColor[1], bgColor[2], bgColor[3], bgColor[4] or 1)
-        end
-
-        if((not frame.Panel:GetAttribute("panelSkipUpdate")) and frame.Panel:GetAttribute("panelTexUpdate")) then
-            frame.TextureNeedsUpdate = true
-            if(templateName == 'UnitLarge' or templateName == 'UnitSmall') then
-                frame.UpdateColor = HookVertexColor
-                frame.NoColorUpdate = true
-            end
-        end
-    end
-end
-
-local function CreateButtonPanel(frame, noChecked, brightChecked)
-
-    if(frame.Left) then
-        frame.Left:SetAlpha(0)
-    end
-
-    if(frame.Middle) then
-        frame.Middle:SetAlpha(0)
-    end
-
-    if(frame.Right) then
-        frame.Right:SetAlpha(0)
-    end
-
-    if(frame.SetNormalTexture) then
-        frame:SetNormalTexture("")
-    end
-
-    if(frame.SetDisabledTexture) then
-        frame:SetDisabledTexture("")
-    end
-
-    if(frame.SetCheckedTexture) then
-        frame:SetCheckedTexture("")
-    end
-
-    if(frame.SetHighlightTexture) then
-        if(not frame.hover) then
-            local hover = frame:CreateTexture(nil, "OVERLAY")
-            hover:FillInner(frame.Panel)
-            frame.hover = hover;
-        end
-        local color = SV.Media.color.highlight
-        frame.hover:SetTexture(color[1], color[2], color[3], 0.5)
-        frame:SetHighlightTexture(frame.hover)
-    end
-
-    if(frame.SetPushedTexture) then
-        if(not frame.pushed) then
-            local pushed = frame:CreateTexture(nil, "OVERLAY")
-            pushed:FillInner(frame.Panel)
-            frame.pushed = pushed;
-        end
-        frame.pushed:SetTexture(0.1, 0.8, 0.1, 0.3)
-        frame:SetPushedTexture(frame.pushed)
-    end
-
-    if(not noChecked and frame.SetCheckedTexture) then
-        if(not frame.checked) then
-            local checked = frame:CreateTexture(nil, "OVERLAY")
-            checked:FillInner(frame.Panel)
-            frame.checked = checked
-        end
-
-        if(not brightChecked) then
-            frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-            frame.checked:SetVertexColor(0, 0.5, 0, 0.2)
-        else
-            frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\GLOSS]])
-            frame.checked:SetVertexColor(0, 1, 0, 1)
-        end
-
-        frame:SetCheckedTexture(frame.checked)
-    end
-
-    CreateCooldown(frame)
-end
---[[
-##########################################################
-TEMPLATE API
-##########################################################
-]]--
-local function SetBasicPanel(self, topX, topY, bottomX, bottomY, hasShadow)
-    local needsHooks = false;
-
-    if(hasShadow) then
-        if(not self.Panel) then
-            needsHooks = true
-
-            self.Panel = CreateFrame("Frame", nil, self)
-            self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", -2, 2)
-            self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 2, -2)
-        end
-
-        self.Panel:SetBackdrop({
-            bgFile = [[Interface\BUTTONS\WHITE8X8]],
-            tile = false,
-            tileSize = 0,
-            edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
-            edgeSize = 3,
-            insets =
-            {
-                left = 0,
-                right = 0,
-                top = 0,
-                bottom = 0,
-            },
-        })
-        self.Panel:SetBackdropColor(0,0,0,0)
-        self.Panel:SetBackdropBorderColor(0,0,0)
-    else
-        if(not self.Panel) then
-            needsHooks = true
-
-            self.Panel = CreateFrame("Frame", nil, self)
-            self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", topX, topY)
-            self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", bottomX, bottomY)
-        end
-
-        self.Panel:SetBackdrop({
-            bgFile = [[Interface\BUTTONS\WHITE8X8]],
-            tile = false,
-            tileSize = 0,
-            edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-            edgeSize = 1,
-            insets =
-            {
-                left = 1,
-                right = 1,
-                top = 1,
-                bottom = 1,
-            },
-        })
-        self.Panel:SetBackdropColor(0,0,0,0.65)
-        self.Panel:SetBackdropBorderColor(0,0,0)
-    end
-
-    if(needsHooks) then
-        local level = self:GetFrameLevel()
-        if(level == 0 and not InCombatLockdown()) then
-            self:SetFrameLevel(1)
-            level = 1
-        end
-
-        local adjustment = level - 1;
-        if(adjustment < 0) then adjustment = 0 end
-
-        self.Panel:SetFrameLevel(adjustment)
-
-        NewHook(self, "SetFrameLevel", HookFrameLevel)
-        NewHook(self, "SetBackdrop", HookBackdrop)
-        NewHook(self, "SetBackdropColor", HookBackdropColor)
-        NewHook(self, "SetBackdropBorderColor", HookBackdropBorderColor)
-    end
-end
-
-local function SetPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor)
-    if(not self or (self and self.Panel)) then return end
-    local padding = false
-    if(overridePadding and type(overridePadding) == "number") then
-        padding = overridePadding
-    end
-
-    CreatePanelTemplate(self, templateName, true, noupdate, padding, xOffset, yOffset, defaultColor)
-
-    if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then
-        TemplateUpdateFrames[self] = true
-        self.__registered = true
-    end
-end
-
-local function SetFixedPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor)
-    if(not self or (self and self.Panel)) then return end
-    local padding = false
-    if(overridePadding and type(overridePadding) == "number") then
-        padding = overridePadding
-    end
-
-    CreatePanelTemplate(self, templateName, false, noupdate, padding, xOffset, yOffset, defaultColor)
-
-    if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then
-        TemplateUpdateFrames[self] = true
-        self.__registered = true
-    end
-end
-
-local function SetPanelColor(self, ...)
-    local arg1,arg2,arg3,arg4,arg5,arg6,arg7 = select(1, ...)
-    if(not self.Panel or not arg1) then return; end
-    if(self.Panel.Skin and self.Panel:GetAttribute("panelGradient")) then
-        if(type(arg1) == "string") then
-            if(arg1 == "VERTICAL" or arg1 == "HORIZONTAL") then
-                self.Panel.Skin:SetGradient(...)
-            elseif(SV.Media.gradient[arg1]) then
-                if self.__border then
-                    local d,r,g,b,r2,g2,b2 = unpack(SV.Media.gradient[arg1])
-                    --self.Panel.Skin:SetGradient(d,r,g,b,r2,g2,b2)
-                    self.__border[1]:SetTexture(r2,g2,b2)
-                    self.__border[2]:SetTexture(r2,g2,b2)
-                    self.__border[3]:SetTexture(r2,g2,b2)
-                    self.__border[4]:SetTexture(r2,g2,b2)
-                else
-                    self.Panel.Skin:SetGradient(unpack(SV.Media.gradient[arg1]))
-                    if(SV.Media.color[arg1]) then
-                        local t = SV.Media.color[arg1]
-                        local r,g,b,a = t[1], t[2], t[3], t[4] or 1;
-                        self:SetBackdropColor(r,g,b,a)
-                    end
-                end
-            end
-        end
-    elseif(type(arg1) == "string" and SV.Media.color[arg1]) then
-        local t = SV.Media.color[arg1]
-        local r,g,b,a = t[1], t[2], t[3], t[4] or 1;
-        if self.__border then
-            self.__border[1]:SetTexture(r,g,b)
-            self.__border[2]:SetTexture(r,g,b)
-            self.__border[3]:SetTexture(r,g,b)
-            self.__border[4]:SetTexture(r,g,b)
-        else
-            self:SetBackdropColor(r,g,b)
-        end
-    elseif(arg1 and type(arg1) == "number") then
-        self:SetBackdropColor(...)
-    end
-end
---[[
-##########################################################
-APPENDED BUTTON TEMPLATING METHODS
-##########################################################
-]]--
-local function SetButtonTemplate(self, invisible, overridePadding, xOffset, yOffset, keepNormal, defaultColor)
-    if(not self or (self and self.Panel)) then return end
-
-    local padding = 1
-    if(overridePadding and type(overridePadding) == "number") then
-        padding = overridePadding
-    end
-
-    local x,y = -1,-1
-    local underlay = false
-    if(xOffset or yOffset) then
-        x = xOffset or -1
-        y = yOffset or -1
-        underlay = true
-    end
-
-    if(invisible) then
-        CreatePanelTemplate(self, "Transparent", underlay, true, padding, x, y, defaultColor)
-        self:SetBackdropColor(0,0,0,0)
-        self:SetBackdropBorderColor(0,0,0,0)
-        if(self.Panel.BorderLeft) then
-            self.Panel.BorderLeft:SetVertexColor(0,0,0,0)
-            self.Panel.BorderRight:SetVertexColor(0,0,0,0)
-            self.Panel.BorderTop:SetVertexColor(0,0,0,0)
-            self.Panel.BorderBottom:SetVertexColor(0,0,0,0)
-        end
-    else
-        CreatePanelTemplate(self, "Button", underlay, true, padding, x, y, defaultColor)
-    end
-
-    if(self.Left) then
-        self.Left:SetAlpha(0)
-    end
-
-    if(self.Middle) then
-        self.Middle:SetAlpha(0)
-    end
-
-    if(self.Right) then
-        self.Right:SetAlpha(0)
-    end
-
-    if(self.SetNormalTexture and not keepNormal) then
-        self:SetNormalTexture("")
-    end
-
-    if(self.SetDisabledTexture) then
-        self:SetDisabledTexture("")
-    end
-
-    if(self.SetHighlightTexture) then
-        if(not self.hover) then
-            local hover = self:CreateTexture(nil, "HIGHLIGHT")
-            FillInner(hover, self.Panel)
-            self.hover = hover;
-        end
-        self.hover:SetTexture(0.1, 0.8, 0.8, 0.5)
-        self:SetHighlightTexture(self.hover)
-    end
-
-    if(self.SetPushedTexture) then
-        if(not self.pushed) then
-            local pushed = self:CreateTexture(nil, "OVERLAY")
-            FillInner(pushed, self.Panel)
-            self.pushed = pushed;
-        end
-
-        self.pushed:SetTexture(0.1, 0.8, 0.1, 0.3)
-
-        self:SetPushedTexture(self.pushed)
-    end
-
-    if(self.SetCheckedTexture) then
-        if(not self.checked) then
-            local checked = self:CreateTexture(nil, "OVERLAY")
-            FillInner(checked, self.Panel)
-            self.checked = checked;
-        end
-
-        self.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-        self.checked:SetVertexColor(0, 0.5, 0, 0.2)
-
-        self:SetCheckedTexture(self.checked)
-    end
-
-    CreateCooldown(self)
-end
-
-local function SetSlotTemplate(self, underlay, padding, x, y, shadowAlpha)
-    if(not self or (self and self.Panel)) then return end
-    padding = padding or 1
-    CreatePanelTemplate(self, "Slot", underlay, true, padding, x, y)
-    CreateButtonPanel(self, true)
-    if(shadowAlpha) then
-        self.Panel.Shadow:SetAttribute("shadowAlpha", shadowAlpha)
-    end
-end
-
-local function SetCheckboxTemplate(self, underlay, x, y)
-    if(not self or (self and self.Panel)) then return end
-
-    if(underlay) then
-        x = x or -7
-        y = y or -7
-    end
-
-    CreatePanelTemplate(self, "Slot", underlay, true, 1, x, y)
-    CreateButtonPanel(self, false, true)
-
-    NewHook(self, "SetChecked", function(self,checked)
-        local r,g,b = 0,0,0
-        if(checked == 1 or checked == true) then
-            r,g,b = self:GetCheckedTexture():GetVertexColor()
-        end
-        self:SetBackdropBorderColor(r,g,b)
-    end)
-end
-
-local function SetEditboxTemplate(self, x, y, fixed)
-    if(not self or (self and self.Panel)) then return end
-
-    if self.TopLeftTex then Die(self.TopLeftTex) end
-    if self.TopRightTex then Die(self.TopRightTex) end
-    if self.TopTex then Die(self.TopTex) end
-    if self.BottomLeftTex then Die(self.BottomLeftTex) end
-    if self.BottomRightTex then Die(self.BottomRightTex) end
-    if self.BottomTex then Die(self.BottomTex) end
-    if self.LeftTex then Die(self.LeftTex) end
-    if self.RightTex then Die(self.RightTex) end
-    if self.MiddleTex then Die(self.MiddleTex) end
-    local underlay = true
-    if(fixed ~= nil) then underlay = fixed end
-    CreatePanelTemplate(self, "Inset", underlay, true, 1, x, y)
-
-    local globalName = self:GetName();
-    if globalName then
-        if _G[globalName.."Left"] then Die(_G[globalName.."Left"]) end
-        if _G[globalName.."Middle"] then Die(_G[globalName.."Middle"]) end
-        if _G[globalName.."Right"] then Die(_G[globalName.."Right"]) end
-        if _G[globalName.."Mid"] then Die(_G[globalName.."Mid"]) end
-
-        if globalName:find("Silver") or globalName:find("Copper") or globalName:find("Gold") then
-            self.Panel:SetPoint("TOPLEFT", -3, 1)
-            if globalName:find("Silver") or globalName:find("Copper") then
-                self.Panel:SetPoint("BOTTOMRIGHT", -12, -2)
-            else
-                self.Panel:SetPoint("BOTTOMRIGHT", -2, -2)
-            end
-        end
-    end
-end
-
-local function SetFramedButtonTemplate(self, template, borderSize)
-    if(not self or (self and self.Panel)) then return end
-
-    borderSize = borderSize or 2
-
-    template = template or "FramedBottom"
-
-    CreatePanelTemplate(self, template, false, false, 0, -borderSize, -borderSize)
-
-    if(self.Left) then
-        self.Left:SetAlpha(0)
-    end
-
-    if(self.Middle) then
-        self.Middle:SetAlpha(0)
-    end
-
-    if(self.Right) then
-        self.Right:SetAlpha(0)
-    end
-
-    if(self.SetNormalTexture) then
-        self:SetNormalTexture("")
-    end
-
-    if(self.SetDisabledTexture) then
-        self:SetDisabledTexture("")
-    end
-
-    if(not self.__border) then
-        local t = SV.Media.color.default
-        local r,g,b = t[1], t[2], t[3]
-
-        local border = {}
-
-        border[1] = self:CreateTexture(nil,"BORDER")
-        border[1]:SetTexture(r,g,b)
-        border[1]:SetPoint("TOPLEFT", -1, 1)
-        border[1]:SetPoint("BOTTOMLEFT", -1, -1)
-        border[1]:SetWidth(borderSize)
-
-        local leftoutline = self:CreateTexture(nil,"BORDER")
-        leftoutline:SetTexture(0,0,0)
-        leftoutline:SetPoint("TOPLEFT", -2, 2)
-        leftoutline:SetPoint("BOTTOMLEFT", -2, -2)
-        leftoutline:SetWidth(1)
-
-        border[2] = self:CreateTexture(nil,"BORDER")
-        border[2]:SetTexture(r,g,b)
-        border[2]:SetPoint("TOPRIGHT", 1, 1)
-        border[2]:SetPoint("BOTTOMRIGHT", 1, -1)
-        border[2]:SetWidth(borderSize)
-
-        local rightoutline = self:CreateTexture(nil,"BORDER")
-        rightoutline:SetTexture(0,0,0)
-        rightoutline:SetPoint("TOPRIGHT", 2, 2)
-        rightoutline:SetPoint("BOTTOMRIGHT", 2, -2)
-        rightoutline:SetWidth(1)
-
-        border[3] = self:CreateTexture(nil,"BORDER")
-        border[3]:SetTexture(r,g,b)
-        border[3]:SetPoint("TOPLEFT", -1, 1)
-        border[3]:SetPoint("TOPRIGHT", 1, 1)
-        border[3]:SetHeight(borderSize)
-
-        local topoutline = self:CreateTexture(nil,"BORDER")
-        topoutline:SetTexture(0,0,0)
-        topoutline:SetPoint("TOPLEFT", -2, 2)
-        topoutline:SetPoint("TOPRIGHT", 2, 2)
-        topoutline:SetHeight(1)
-
-        border[4] = self:CreateTexture(nil,"BORDER")
-        border[4]:SetTexture(r,g,b)
-        border[4]:SetPoint("BOTTOMLEFT", -1, -1)
-        border[4]:SetPoint("BOTTOMRIGHT", 1, -1)
-        border[4]:SetHeight(borderSize)
-
-        local bottomoutline = self:CreateTexture(nil,"BORDER")
-        bottomoutline:SetTexture(0,0,0)
-        bottomoutline:SetPoint("BOTTOMLEFT", -2, -2)
-        bottomoutline:SetPoint("BOTTOMRIGHT", 2, -2)
-        bottomoutline:SetHeight(1)
-
-        self.__border = border
-    end
-
-    if(not self.hover) then
-        self.hover = self:CreateTexture(nil, "HIGHLIGHT")
-    end
-
-    local color = SV.Media.color.highlight
-    self.hover:SetTexture(color[1], color[2], color[3], 0.5)
-    self.hover:SetAllPoints()
-    if(self.SetHighlightTexture) then
-        self:SetHighlightTexture(self.hover)
-    end
-
-    if(not self.__registered) then
-        TemplateUpdateFrames[self] = true
-        self.__registered = true
-    end
-end
---[[
-##########################################################
-TEMPLATE UPDATE CALLBACK
-##########################################################
-]]--
-local function FrameTemplateUpdates()
-    for frame in pairs(TemplateUpdateFrames) do
-        if(frame) then
-            local panelID = frame.Panel:GetAttribute("panelID")
-            local colorID = frame.Panel:GetAttribute("panelColor")
-            local panelColor = SV.Media.color[colorID];
-            if(frame.BackdropNeedsUpdate) then
-                if(frame.UpdateBackdrop) then
-                    frame:UpdateBackdrop()
-                end
-                if(panelColor) then
-                    frame:SetBackdropColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1)
-                end
-                frame:SetBackdropBorderColor(0,0,0,1)
-            end
-            if(frame.TextureNeedsUpdate and frame.Panel.Skin) then
-                local tex = SV.Media.bg[panelID]
-                if(tex) then
-                    frame.Panel.Skin:SetTexture(tex)
-                end
-                if(not frame.NoColorUpdate) then
-                    local gradient = frame.Panel:GetAttribute("panelGradient")
-                    if(gradient and SV.Media.gradient[gradient]) then
-                        local g = SV.Media.gradient[gradient]
-                        frame.Panel.Skin:SetGradient(g[1], g[2], g[3], g[4], g[5], g[6], g[7])
-                    elseif(panelColor) then
-                        frame.Panel.Skin:SetVertexColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1)
-                    end
-                end
-            end
-        end
-    end
-end
-
-SV:NewCallback(FrameTemplateUpdates)
---[[
-##########################################################
-ENUMERATION
-##########################################################
-]]--
-local function AppendMethods(OBJECT)
-    local META = getmetatable(OBJECT).__index
-    if not OBJECT.Size then META.Size = SizeScaled end
-    if not OBJECT.Width then META.Width = WidthScaled end
-    if not OBJECT.Height then META.Height = HeightScaled end
-    if not OBJECT.Point then META.Point = PointScaled end
-    if not OBJECT.WrapOuter then META.WrapOuter = WrapOuter end
-    if not OBJECT.FillInner then META.FillInner = FillInner end
-    if not OBJECT.Die then META.Die = Die end
-    if not OBJECT.RemoveTextures then META.RemoveTextures = RemoveTextures end
-    if not OBJECT.SetBasicPanel then META.SetBasicPanel = SetBasicPanel end
-    if not OBJECT.SetPanelTemplate then META.SetPanelTemplate = SetPanelTemplate end
-    if not OBJECT.SetFixedPanelTemplate then META.SetFixedPanelTemplate = SetFixedPanelTemplate end
-    if not OBJECT.SetPanelColor then META.SetPanelColor = SetPanelColor end
-    if not OBJECT.SetButtonTemplate then META.SetButtonTemplate = SetButtonTemplate end
-    if not OBJECT.SetSlotTemplate then META.SetSlotTemplate = SetSlotTemplate end
-    if not OBJECT.SetCheckboxTemplate then META.SetCheckboxTemplate = SetCheckboxTemplate end
-    if not OBJECT.SetEditboxTemplate then META.SetEditboxTemplate = SetEditboxTemplate end
-    if not OBJECT.SetFramedButtonTemplate then META.SetFramedButtonTemplate = SetFramedButtonTemplate end
-    if not OBJECT.SetFontTemplate then META.SetFontTemplate = SetFontTemplate end
-end
-
-local HANDLER, OBJECT = {["Frame"] = true}, NewFrame("Frame")
-AppendMethods(OBJECT)
-AppendMethods(OBJECT:CreateTexture())
-AppendMethods(OBJECT:CreateFontString())
-
-OBJECT = EnumerateFrames()
-while OBJECT do
-    local objType = OBJECT:GetObjectType()
-    if not HANDLER[objType] then
-		AppendMethods(OBJECT)
-		HANDLER[objType] = true
-	end
-	OBJECT = EnumerateFrames(OBJECT)
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/screen.lua b/Interface/AddOns/SVUI/system/screen.lua
new file mode 100644
index 0000000..4e7eef7
--- /dev/null
+++ b/Interface/AddOns/SVUI/system/screen.lua
@@ -0,0 +1,168 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+local pairs     = _G.pairs;
+local ipairs    = _G.ipairs;
+local type      = _G.type;
+local error     = _G.error;
+local pcall     = _G.pcall;
+local tostring  = _G.tostring;
+local tonumber  = _G.tonumber;
+local table     = _G.table;
+local string     = _G.string;
+local math      = _G.math;
+--[[ MATH METHODS ]]--
+local floor, abs, min, max = math.floor, math.abs, math.min, math.max;
+local parsefloat, ceil = math.parsefloat, math.ceil;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = select(2, ...)
+local L = SV.L
+
+SV.ScaleModifier = 1;
+
+local function GetUsableScreen()
+    local rez = GetCVar("gxResolution")
+    local height = rez:match("%d+x(%d+)")
+    local width = rez:match("(%d+)x%d+")
+    local gxHeight = tonumber(height)
+    local gxWidth = tonumber(width)
+    local gxMod = (768 / gxHeight)
+    return gxWidth, gxHeight, gxMod
+end
+--[[
+##########################################################
+UI SCALING
+##########################################################
+]]--
+function SV:UI_SCALE_CHANGED(event)
+    local scale, evalwidth
+    local gxWidth, gxHeight, gxMod = GetUsableScreen()
+
+    if(IsMacClient() and self.DisplaySettings and self.DisplaySettings.screenheight and self.DisplaySettings.screenwidth) then
+        if(gxHeight ~= self.DisplaySettings.screenheight or gxWidth ~= self.DisplaySettings.screenwidth) then
+            gxHeight = self.DisplaySettings.screenheight;
+            gxWidth = self.DisplaySettings.screenwidth
+        end
+    end
+
+    if self.db.general.autoScale then
+        scale = max(0.64, min(1.15, gxMod))
+    else
+        scale = max(0.64, min(1.15, GetCVar("uiScale") or UIParent:GetScale() or gxMod))
+    end
+
+    self.ScaleModifier = gxMod / scale;
+
+    if(gxWidth < 1600) then
+        self.LowRez = true;
+    elseif(gxWidth >= 3840) then
+        self.LowRez = nil
+        if(self.db.general.multiMonitor) then
+            if(gxWidth < 4080) then
+                evalwidth = 1224;
+            elseif(gxWidth < 4320) then
+                evalwidth = 1360;
+            elseif(gxWidth < 4800) then
+                evalwidth = 1440;
+            elseif(gxWidth < 5760) then
+                if(gxHeight == 900) then evalwidth = 1600 else evalwidth = 1680 end
+            elseif(gxWidth < 7680) then
+                evalwidth = 1920;
+            elseif(gxWidth < 9840) then
+                evalwidth = 2560;
+            elseif(gxWidth > 9839) then
+                evalwidth = 3280;
+            end
+        else
+            if(gxWidth < 4080) then
+                evalwidth = 3840;
+            elseif(gxWidth < 4320) then
+                evalwidth = 4080;
+            elseif(gxWidth < 4800) then
+                evalwidth = 4320;
+            elseif(gxWidth < 5040) then
+                evalwidth = 4800;
+            elseif(gxWidth < 5760) then
+                evalwidth = 5040;
+            elseif(gxWidth < 7680) then
+                evalwidth = 5760;
+            elseif(gxWidth < 9840) then
+                evalwidth = 7680;
+            elseif(gxWidth > 9839) then
+                evalwidth = 9840;
+            end
+        end
+    end
+
+    local testScale1 = parsefloat(UIParent:GetScale(), 5)
+    local testScale2 = parsefloat(scale, 5)
+
+    if(event == "PLAYER_LOGIN" and (testScale1 ~= testScale2)) then
+        SetCVar("useUiScale", 1)
+        SetCVar("uiScale", scale)
+        WorldMapFrame.hasTaint = true;
+    end
+
+    if(event == 'PLAYER_LOGIN' or event == 'UI_SCALE_CHANGED') then
+        if IsMacClient() then
+            self.DisplaySettings.screenheight = floor(GetScreenHeight() * 100 + .5) / 100
+            self.DisplaySettings.screenwidth = floor(GetScreenWidth() * 100 + .5) / 100
+        end
+
+        if evalwidth then
+            local width = evalwidth
+            local height = gxHeight;
+            if(not self.db.general.autoScale or height > 1200) then
+                height = UIParent:GetHeight();
+                local ratio = gxHeight / height;
+                width = evalwidth / ratio;
+            end
+            self.Screen:SetSize(width, height);
+        else
+            self.Screen:SetSize(UIParent:GetSize());
+        end
+
+        self.Screen:ClearAllPoints()
+        self.Screen:SetPoint("CENTER")
+
+        local change = abs((testScale1 * 100) - (testScale2 * 100))
+        if(change > 1) then
+            if(self.db.general.autoScale) then
+                self:StaticPopup_Show('FAILED_UISCALE')
+            else
+                self:StaticPopup_Show('RL_CLIENT')
+            end
+        end
+
+        self.EffectiveScale = self.Screen:GetEffectiveScale()
+        self.ActualHeight = self.Screen:GetHeight()
+        self.ActualWidth = self.Screen:GetWidth()
+    end
+end
+
+function SV:Scale(value)
+    return self.ScaleModifier * floor(value / self.ScaleModifier + .5);
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/templates.lua b/Interface/AddOns/SVUI/system/templates.lua
new file mode 100644
index 0000000..f7f190e
--- /dev/null
+++ b/Interface/AddOns/SVUI/system/templates.lua
@@ -0,0 +1,1121 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+local pairs     = _G.pairs;
+local ipairs    = _G.ipairs;
+local type      = _G.type;
+local error     = _G.error;
+local pcall     = _G.pcall;
+local tostring  = _G.tostring;
+local tonumber  = _G.tonumber;
+local table     = _G.table;
+local string     = _G.string;
+local math      = _G.math;
+--[[ MATH METHODS ]]--
+local floor, abs, min, max = math.floor, math.abs, math.min, math.max;
+local parsefloat, ceil = math.parsefloat, math.ceil;
+--[[ STRING METHODS ]]--
+local lower = string.lower;
+--[[ TABLE METHODS ]]--
+local tremove, tcopy, twipe, tsort, tconcat, tdump = table.remove, table.copy, table.wipe, table.sort, table.concat, table.dump;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = select(2, ...)
+local L = SV.L
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local SizeScaled, HeightScaled, WidthScaled, PointScaled, WrapOuter, FillInner
+local TemplateUpdateFrames = {};
+local FontUpdateFrames = {};
+local NewFrame = CreateFrame;
+local NewHook = hooksecurefunc;
+local STANDARD_TEXT_FONT = _G.STANDARD_TEXT_FONT;
+--[[
+##########################################################
+APPENDED POSITIONING METHODS
+##########################################################
+]]--
+do
+    local PARAMS = {}
+
+    function SizeScaled(self, width, height)
+        if(type(width) == "number") then
+            local h = (height and type(height) == "number") and height or width
+            self:SetSize(SV:Scale(width), SV:Scale(h))
+        end
+    end
+
+    function WidthScaled(self, width)
+        if(type(width) == "number") then
+            self:SetWidth(SV:Scale(width))
+        end
+    end
+
+    function HeightScaled(self, height)
+        if(type(height) == "number") then
+            self:SetHeight(SV:Scale(height))
+        end
+    end
+
+    function PointScaled(self, ...)
+        local n = select('#', ...)
+        PARAMS = {...}
+        local arg
+        for i = 1, n do
+            arg = PARAMS[i]
+            if(arg and type(arg) == "number") then
+                PARAMS[i] = SV:Scale(arg)
+            end
+        end
+        self:SetPoint(unpack(PARAMS))
+    end
+
+    function WrapOuter(self, parent, x, y)
+        x = type(x) == "number" and x or 1
+        y = y or x
+        local nx = SV:Scale(x);
+        local ny = SV:Scale(y);
+        parent = parent or self:GetParent()
+        if self:GetPoint() then
+            self:ClearAllPoints()
+        end
+        self:SetPoint("TOPLEFT", parent, "TOPLEFT", -nx, ny)
+        self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", nx, -ny)
+    end
+
+    function FillInner(self, parent, x, y)
+        x = type(x) == "number" and x or 1
+        y = y or x
+        local nx = SV:Scale(x);
+        local ny = SV:Scale(y);
+        parent = parent or self:GetParent()
+        if self:GetPoint() then
+            self:ClearAllPoints()
+        end
+        self:SetPoint("TOPLEFT", parent, "TOPLEFT", nx, -ny)
+        self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", -nx, ny)
+    end
+end
+--[[
+##########################################################
+APPENDED DESTROY METHODS
+##########################################################
+]]--
+local _purgatory = NewFrame("Frame", nil)
+_purgatory:Hide()
+
+local function Die(self)
+    if self.UnregisterAllEvents then
+        self:UnregisterAllEvents()
+        self:SetParent(_purgatory)
+    else
+        self:Hide()
+        self.Show = SV.fubar
+    end
+end
+
+local function RemoveTextures(self, option)
+    if(self.Panel) then return end
+    local region, layer, texture
+    for i = 1, self:GetNumRegions()do
+        region = select(i, self:GetRegions())
+        if(region and (region:GetObjectType() == "Texture")) then
+
+            layer = region:GetDrawLayer()
+            texture = region:GetTexture()
+
+            if(option) then
+                if(type(option) == "boolean") then
+                    if region.UnregisterAllEvents then
+                        region:UnregisterAllEvents()
+                        region:SetParent(_purgatory)
+                    else
+                        region.Show = region.Hide
+                    end
+                    region:Hide()
+                elseif(type(option) == "string" and ((layer == option) or (texture ~= option))) then
+                    region:SetTexture(0,0,0,0)
+                end
+            else
+                region:SetTexture(0,0,0,0)
+            end
+        end
+    end
+end
+--[[
+##########################################################
+APPENDED FONT TEMPLATING METHODS
+##########################################################
+]]--
+local function SetFontTemplate(self, font, fontSize, fontStyle, fontJustifyH, fontJustifyV, noUpdate)
+    if not self then return end
+    local STANDARDFONTSIZE = SV.db.media.fonts and SV.db.media.fonts.size or 12
+    font = font or [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]]
+    fontSize = fontSize or STANDARDFONTSIZE;
+    fontJustifyH = fontJustifyH or "CENTER";
+    fontJustifyV = fontJustifyV or "MIDDLE";
+    if not font then return end
+    self.font = font;
+    self.fontSize = fontSize;
+    self.fontStyle = fontStyle;
+    self.fontJustifyH = fontJustifyH;
+    self.fontJustifyV = fontJustifyV;
+    self:SetFont(font, fontSize, fontStyle)
+    if(fontStyle and fontStyle ~= "NONE") then
+        self:SetShadowColor(0, 0, 0, 0)
+    else
+        self:SetShadowColor(0, 0, 0, 0.2)
+    end
+    self:SetShadowOffset(1, -1)
+    self:SetJustifyH(fontJustifyH)
+    self:SetJustifyV(fontJustifyV)
+    self.useCommon = fontSize and (fontSize == STANDARDFONTSIZE);
+    if(not noUpdate) then
+        FontUpdateFrames[self] = true
+    end
+end
+--[[
+##########################################################
+FONT UPDATE CALLBACK
+##########################################################
+]]--
+local function FontTemplateUpdates()
+    local STANDARDFONTSIZE = SV.db.media.fonts.size;
+    for i=1, #FontUpdateFrames do
+        local frame = FontUpdateFrames[i]
+        if frame then
+            local fontSize = frame.useCommon and STANDARDFONTSIZE or frame.fontSize
+            frame:SetFont(frame.font, fontSize, frame.fontStyle)
+        else
+            FontUpdateFrames[i] = nil
+        end
+    end
+end
+
+function SV:UpdateFontTemplates()
+    FontTemplateUpdates()
+end
+
+SV:NewCallback(FontTemplateUpdates)
+--[[
+##########################################################
+XML TEMPLATE LOOKUP TABLE
+##########################################################
+]]--
+local XML_LOOKUP = {
+    ["Default"] = "SVUI_PanelTemplate_Default",
+    ["Transparent"] = "SVUI_PanelTemplate_Transparent",
+    ["Component"] = "SVUI_PanelTemplate_Component",
+    ["Headline"] = "SVUI_PanelTemplate_Headline",
+    ["Button"] = "SVUI_PanelTemplate_Button",
+    ["FramedTop"] = "SVUI_PanelTemplate_FramedTop",
+    ["FramedBottom"] = "SVUI_PanelTemplate_FramedBottom",
+    ["Bar"] = "SVUI_PanelTemplate_Bar",
+    ["Slot"] = "SVUI_PanelTemplate_Slot",
+    ["Inset"] = "SVUI_PanelTemplate_Inset",
+    ["Comic"] = "SVUI_PanelTemplate_Comic",
+    ["Model"] = "SVUI_PanelTemplate_Model",
+    ["Paper"] = "SVUI_PanelTemplate_Paper",
+    ["Container"] = "SVUI_PanelTemplate_Container",
+    ["Pattern"] = "SVUI_PanelTemplate_Pattern",
+    ["Halftone"] = "SVUI_PanelTemplate_Halftone",
+    ["Action"] = "SVUI_PanelTemplate_Action",
+    ["Blackout"] = "SVUI_PanelTemplate_Blackout",
+    ["UnitLarge"] = "SVUI_PanelTemplate_UnitLarge",
+    ["UnitSmall"] = "SVUI_PanelTemplate_UnitSmall"
+};
+--[[
+##########################################################
+INTERNAL HANDLERS
+##########################################################
+]]--
+local HookPanelBorderColor = function(self,r,g,b,a)
+    if self.BorderLeft then
+        self.BorderLeft:SetVertexColor(r,g,b,a)
+        self.BorderRight:SetVertexColor(r,g,b,a)
+        self.BorderTop:SetVertexColor(r,g,b,a)
+        self.BorderBottom:SetVertexColor(r,g,b,a)
+    end
+    if self.Shadow then
+        local alpha = self.Shadow:GetAttribute("shadowAlpha") or 0.5
+        self.Shadow:SetBackdropBorderColor(r,g,b,alpha)
+    end
+end
+
+local HookBackdrop = function(self,...)
+    self.Panel:SetBackdrop(...)
+end
+
+local HookBackdropColor = function(self,...)
+    self.Panel:SetBackdropColor(...)
+end
+
+local HookBackdropBorderColor = function(self,...)
+    self.Panel:SetBackdropBorderColor(...)
+end
+
+local HookVertexColor = function(self,...)
+    self.Panel.Skin:SetVertexColor(...)
+end
+
+local HookCustomBackdrop = function(self)
+    local bgid = self.Panel:GetAttribute("panelID")
+    local newBgFile = SV.Media.bg[bgid]
+    local bd = {
+        bgFile = newBgFile,
+        edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+        tile = false,
+        tileSize = 0,
+        edgeSize = 2,
+        insets =
+        {
+            left = 2,
+            right = 2,
+            top = 2,
+            bottom = 2,
+        },
+    }
+    self:SetBackdrop(bd)
+end
+
+local HookFrameLevel = function(self, level)
+    local adjustment = level - 1;
+    if(adjustment < 0) then adjustment = 0 end
+    self.Panel:SetFrameLevel(adjustment)
+end
+
+local Cooldown_ForceUpdate = function(self)
+    self.nextUpdate = 0;
+    self:Show()
+end
+
+local Cooldown_StopTimer = function(self)
+    self.enable = nil;
+    self:Hide()
+end
+
+local Cooldown_OnUpdate = function(self, elapsed)
+    if self.nextUpdate > 0 then
+        self.nextUpdate = self.nextUpdate - elapsed;
+        return
+    end
+    local expires = (self.duration - (GetTime() - self.start));
+    if expires > 0.05 then
+        if (self.fontScale * self:GetEffectiveScale() / UIParent:GetScale()) < 0.5 then
+            self.text:SetText('')
+            self.nextUpdate = 500
+        else
+            local timeLeft = 0;
+            local calc = 0;
+            if expires < 4 then
+                self.nextUpdate = 0.051
+                self.text:SetFormattedText("|cffff0000%.1f|r", expires)
+            elseif expires < 60 then
+                self.nextUpdate = 0.51
+                self.text:SetFormattedText("|cffffff00%d|r", floor(expires))
+            elseif expires < 3600 then
+                timeLeft = ceil(expires / 60);
+                calc = floor((expires / 60) + .5);
+                self.nextUpdate = calc > 1 and ((expires - calc) * 29.5) or (expires - 59.5);
+                self.text:SetFormattedText("|cffffffff%dm|r", timeLeft)
+            elseif expires < 86400 then
+                timeLeft = ceil(expires / 3600);
+                calc = floor((expires / 3600) + .5);
+                self.nextUpdate = calc > 1 and ((expires - calc) * 1799.5) or (expires - 3570);
+                self.text:SetFormattedText("|cff66ffff%dh|r", timeLeft)
+            else
+                timeLeft = ceil(expires / 86400);
+                calc = floor((expires / 86400) + .5);
+                self.nextUpdate = calc > 1 and ((expires - calc) * 43199.5) or (expires - 86400);
+                self.text:SetFormattedText("|cff6666ff%dd|r", timeLeft)
+            end
+        end
+    else
+        Cooldown_StopTimer(self)
+    end
+end
+
+local Cooldown_OnSizeChanged = function(self, width, height)
+    local frame = self.timer
+    local override = self.SizeOverride
+    local newSize = floor(width + .5) / 36;
+    override = override or frame:GetParent():GetParent().SizeOverride;
+    if override then
+        newSize = override / 20
+    end
+    if newSize == frame.fontScale then
+        return
+    end
+    frame.fontScale = newSize;
+    if newSize < 0.5 and not override then
+        frame:Hide()
+    else
+        frame:Show()
+        frame.text:SetFont([[Interface\AddOns\SVUI\assets\fonts\Numbers.ttf]], newSize * 15, 'OUTLINE')
+        if frame.enable then
+            Cooldown_ForceUpdate(frame)
+        end
+    end
+end
+
+local function CreateCooldownTimer(frame)
+    local timer = CreateFrame('Frame', nil, frame)
+    timer:Hide()
+    timer:SetAllPoints()
+    timer:SetScript('OnUpdate', Cooldown_OnUpdate)
+
+    local timeText = timer:CreateFontString(nil,'OVERLAY')
+    timeText:SetPoint('CENTER',1,1)
+    timeText:SetJustifyH("CENTER")
+    timer.text = timeText;
+
+    frame.timer = timer;
+    local width, height = frame:GetSize()
+    Cooldown_OnSizeChanged(frame, width, height)
+    frame:SetScript('OnSizeChanged', Cooldown_OnSizeChanged)
+
+    return frame.timer
+end
+
+local _hook_Cooldown_SetCooldown = function(self, start, duration, elapsed)
+    if start > 0 and duration > 2.5 then
+        local timer = self.timer or CreateCooldownTimer(self)
+        timer.start = start;
+        timer.duration = duration;
+        timer.enable = true;
+        timer.nextUpdate = 0;
+
+        if timer.fontScale >= 0.5 then
+            timer:Show()
+        end
+    else
+        local timer = self.timer;
+        if timer then
+            Cooldown_StopTimer(timer)
+        end
+    end
+    if self.timer then
+        if elapsed and elapsed > 0 then
+            self.timer:SetAlpha(0)
+        else
+            self.timer:SetAlpha(0.8)
+        end
+    end
+end
+--[[
+##########################################################
+COOLDOWN HELPER
+##########################################################
+]]--
+local function CreateCooldown(button)
+    local cooldown = button:GetName() and _G[button:GetName().."Cooldown"]
+    if(cooldown) then
+        cooldown:ClearAllPoints()
+        cooldown:FillInner()
+        cooldown:SetSwipeColor(0, 0, 0, 1)
+        --cooldown:SetHideCountdownNumbers(true)
+
+        if(not cooldown.HookedCooldown) then
+            hooksecurefunc(cooldown, "SetCooldown", _hook_Cooldown_SetCooldown)
+            cooldown.HookedCooldown = true
+        end
+    end
+end
+--[[
+##########################################################
+TEMPLATE HELPERS
+##########################################################
+]]--
+local function CreatePanelTemplate(frame, templateName, underlay, noupdate, padding, xOffset, yOffset, defaultColor)
+    local xmlTemplate = XML_LOOKUP[templateName] or "SVUI_PanelTemplate_Default"
+    local borderColor = {0,0,0,1}
+
+    frame.Panel = NewFrame('Frame', nil, frame, xmlTemplate)
+
+    local level = frame:GetFrameLevel()
+    if(level == 0 and not InCombatLockdown()) then
+        frame:SetFrameLevel(1)
+        level = 1
+    end
+
+    local adjustment = level - 1;
+
+    if(adjustment < 0) then adjustment = 0 end
+
+    frame.Panel:SetFrameLevel(adjustment)
+
+    NewHook(frame, "SetFrameLevel", HookFrameLevel)
+
+    if(defaultColor) then
+        frame.Panel:SetAttribute("panelColor", defaultColor)
+    end
+    if(noupdate) then
+        frame.Panel:SetAttribute("panelSkipUpdate", noupdate)
+    end
+
+    local colorName     = frame.Panel:GetAttribute("panelColor")
+    local gradientName  = frame.Panel:GetAttribute("panelGradient")
+    local forcedOffset  = frame.Panel:GetAttribute("panelOffset")
+
+    xOffset = forcedOffset or xOffset or 1
+    yOffset = forcedOffset or yOffset or 1
+
+    frame.Panel:WrapOuter(frame, xOffset, yOffset)
+
+    padding = padding or frame.Panel:GetAttribute("panelPadding")
+
+    if(padding and frame.Panel.BorderLeft) then
+        frame.Panel.BorderLeft:SetWidth(padding)
+        frame.Panel.BorderRight:SetWidth(padding)
+        frame.Panel.BorderTop:SetHeight(padding)
+        frame.Panel.BorderBottom:SetHeight(padding)
+    end
+
+    if(frame.Panel.Shadow) then
+        frame.Panel.Shadow:SetPoint('TOPLEFT', frame.Panel, 'TOPLEFT', -3, 3)
+        frame.Panel.Shadow:SetPoint('BOTTOMRIGHT', frame.Panel, 'BOTTOMRIGHT', 3, -3)
+
+        local alpha = frame.Panel.Shadow:GetAttribute("shadowAlpha") or 0.5
+        frame.Panel.Shadow:SetBackdropBorderColor(0,0,0,alpha)
+
+        local level = frame.Panel.Shadow:GetFrameLevel() - 1
+        if(level >= 0) then
+            frame.Panel.Shadow:SetFrameLevel(level)
+        else
+            frame.Panel.Shadow:SetFrameLevel(0)
+        end
+    end
+
+    local bgColor = SV.Media.color[colorName] or {0.18,0.18,0.18,1}
+
+    if(not frame.Panel:GetAttribute("panelNoBackdrop")) then
+        if(underlay) then
+            frame.Panel:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1)
+            frame.Panel:SetBackdropBorderColor(0,0,0,1)
+        else
+            local bd = frame.Panel:GetBackdrop()
+            frame:SetBackdrop(bd)
+            frame:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1)
+            frame:SetBackdropBorderColor(0,0,0,1)
+
+            frame.Panel:SetBackdrop(nil)
+        end
+
+        if(templateName ~= 'Transparent') then
+            NewHook(frame.Panel, "SetBackdropBorderColor", HookPanelBorderColor)
+            NewHook(frame, "SetBackdropBorderColor", HookBackdropBorderColor)
+            if(underlay) then
+                NewHook(frame, "SetBackdrop", HookBackdrop)
+                NewHook(frame, "SetBackdropColor", HookBackdropColor)
+            end
+            frame.BackdropNeedsUpdate = true
+            if(templateName == 'Pattern' or templateName == 'Comic') then
+                frame.UpdateBackdrop = HookCustomBackdrop
+            end
+        end
+    end
+
+    if(frame.Panel.Skin) then
+        if(not underlay) then
+            frame.Panel.Skin:SetParent(frame)
+            frame.Panel.Skin:FillInner(frame, xOffset, yOffset)
+        else
+            frame.Panel.Skin:FillInner(frame.Panel, xOffset, yOffset)
+        end
+        if(gradientName and SV.Media.gradient[gradientName]) then
+            frame.Panel.Skin:SetGradient(unpack(SV.Media.gradient[gradientName]))
+        else
+            frame.Panel.Skin:SetVertexColor(bgColor[1], bgColor[2], bgColor[3], bgColor[4] or 1)
+        end
+
+        if((not frame.Panel:GetAttribute("panelSkipUpdate")) and frame.Panel:GetAttribute("panelTexUpdate")) then
+            frame.TextureNeedsUpdate = true
+            if(templateName == 'UnitLarge' or templateName == 'UnitSmall') then
+                frame.UpdateColor = HookVertexColor
+                frame.NoColorUpdate = true
+            end
+        end
+    end
+end
+
+local function CreateButtonPanel(frame, noChecked, brightChecked)
+
+    if(frame.Left) then
+        frame.Left:SetAlpha(0)
+    end
+
+    if(frame.Middle) then
+        frame.Middle:SetAlpha(0)
+    end
+
+    if(frame.Right) then
+        frame.Right:SetAlpha(0)
+    end
+
+    if(frame.SetNormalTexture) then
+        frame:SetNormalTexture("")
+    end
+
+    if(frame.SetDisabledTexture) then
+        frame:SetDisabledTexture("")
+    end
+
+    if(frame.SetCheckedTexture) then
+        frame:SetCheckedTexture("")
+    end
+
+    if(frame.SetHighlightTexture) then
+        if(not frame.hover) then
+            local hover = frame:CreateTexture(nil, "OVERLAY")
+            hover:FillInner(frame.Panel)
+            frame.hover = hover;
+        end
+        local color = SV.Media.color.highlight
+        frame.hover:SetTexture(color[1], color[2], color[3], 0.5)
+        frame:SetHighlightTexture(frame.hover)
+    end
+
+    if(frame.SetPushedTexture) then
+        if(not frame.pushed) then
+            local pushed = frame:CreateTexture(nil, "OVERLAY")
+            pushed:FillInner(frame.Panel)
+            frame.pushed = pushed;
+        end
+        frame.pushed:SetTexture(0.1, 0.8, 0.1, 0.3)
+        frame:SetPushedTexture(frame.pushed)
+    end
+
+    if(not noChecked and frame.SetCheckedTexture) then
+        if(not frame.checked) then
+            local checked = frame:CreateTexture(nil, "OVERLAY")
+            checked:FillInner(frame.Panel)
+            frame.checked = checked
+        end
+
+        if(not brightChecked) then
+            frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+            frame.checked:SetVertexColor(0, 0.5, 0, 0.2)
+        else
+            frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\GLOSS]])
+            frame.checked:SetVertexColor(0, 1, 0, 1)
+        end
+
+        frame:SetCheckedTexture(frame.checked)
+    end
+
+    CreateCooldown(frame)
+end
+--[[
+##########################################################
+TEMPLATE API
+##########################################################
+]]--
+local function SetBasicPanel(self, topX, topY, bottomX, bottomY, hasShadow)
+    local needsHooks = false;
+
+    if(hasShadow) then
+        if(not self.Panel) then
+            needsHooks = true
+
+            self.Panel = CreateFrame("Frame", nil, self)
+            self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", -2, 2)
+            self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 2, -2)
+        end
+
+        self.Panel:SetBackdrop({
+            bgFile = [[Interface\BUTTONS\WHITE8X8]],
+            tile = false,
+            tileSize = 0,
+            edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
+            edgeSize = 3,
+            insets =
+            {
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = 0,
+            },
+        })
+        self.Panel:SetBackdropColor(0,0,0,0)
+        self.Panel:SetBackdropBorderColor(0,0,0)
+    else
+        if(not self.Panel) then
+            needsHooks = true
+
+            self.Panel = CreateFrame("Frame", nil, self)
+            self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", topX, topY)
+            self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", bottomX, bottomY)
+        end
+
+        self.Panel:SetBackdrop({
+            bgFile = [[Interface\BUTTONS\WHITE8X8]],
+            tile = false,
+            tileSize = 0,
+            edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+            edgeSize = 1,
+            insets =
+            {
+                left = 1,
+                right = 1,
+                top = 1,
+                bottom = 1,
+            },
+        })
+        self.Panel:SetBackdropColor(0,0,0,0.65)
+        self.Panel:SetBackdropBorderColor(0,0,0)
+    end
+
+    if(needsHooks) then
+        local level = self:GetFrameLevel()
+        if(level == 0 and not InCombatLockdown()) then
+            self:SetFrameLevel(1)
+            level = 1
+        end
+
+        local adjustment = level - 1;
+        if(adjustment < 0) then adjustment = 0 end
+
+        self.Panel:SetFrameLevel(adjustment)
+
+        NewHook(self, "SetFrameLevel", HookFrameLevel)
+        NewHook(self, "SetBackdrop", HookBackdrop)
+        NewHook(self, "SetBackdropColor", HookBackdropColor)
+        NewHook(self, "SetBackdropBorderColor", HookBackdropBorderColor)
+    end
+end
+
+local function SetPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor)
+    if(not self or (self and self.Panel)) then return end
+    local padding = false
+    if(overridePadding and type(overridePadding) == "number") then
+        padding = overridePadding
+    end
+
+    CreatePanelTemplate(self, templateName, true, noupdate, padding, xOffset, yOffset, defaultColor)
+
+    if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then
+        TemplateUpdateFrames[self] = true
+        self.__registered = true
+    end
+end
+
+local function SetFixedPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor)
+    if(not self or (self and self.Panel)) then return end
+    local padding = false
+    if(overridePadding and type(overridePadding) == "number") then
+        padding = overridePadding
+    end
+
+    CreatePanelTemplate(self, templateName, false, noupdate, padding, xOffset, yOffset, defaultColor)
+
+    if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then
+        TemplateUpdateFrames[self] = true
+        self.__registered = true
+    end
+end
+
+local function SetPanelColor(self, ...)
+    local arg1,arg2,arg3,arg4,arg5,arg6,arg7 = select(1, ...)
+    if(not self.Panel or not arg1) then return; end
+    if(self.Panel.Skin and self.Panel:GetAttribute("panelGradient")) then
+        if(type(arg1) == "string") then
+            if(arg1 == "VERTICAL" or arg1 == "HORIZONTAL") then
+                self.Panel.Skin:SetGradient(...)
+            elseif(SV.Media.gradient[arg1]) then
+                if self.__border then
+                    local d,r,g,b,r2,g2,b2 = unpack(SV.Media.gradient[arg1])
+                    --self.Panel.Skin:SetGradient(d,r,g,b,r2,g2,b2)
+                    self.__border[1]:SetTexture(r2,g2,b2)
+                    self.__border[2]:SetTexture(r2,g2,b2)
+                    self.__border[3]:SetTexture(r2,g2,b2)
+                    self.__border[4]:SetTexture(r2,g2,b2)
+                else
+                    self.Panel.Skin:SetGradient(unpack(SV.Media.gradient[arg1]))
+                    if(SV.Media.color[arg1]) then
+                        local t = SV.Media.color[arg1]
+                        local r,g,b,a = t[1], t[2], t[3], t[4] or 1;
+                        self:SetBackdropColor(r,g,b,a)
+                    end
+                end
+            end
+        end
+    elseif(type(arg1) == "string" and SV.Media.color[arg1]) then
+        local t = SV.Media.color[arg1]
+        local r,g,b,a = t[1], t[2], t[3], t[4] or 1;
+        if self.__border then
+            self.__border[1]:SetTexture(r,g,b)
+            self.__border[2]:SetTexture(r,g,b)
+            self.__border[3]:SetTexture(r,g,b)
+            self.__border[4]:SetTexture(r,g,b)
+        else
+            self:SetBackdropColor(r,g,b)
+        end
+    elseif(arg1 and type(arg1) == "number") then
+        self:SetBackdropColor(...)
+    end
+end
+--[[
+##########################################################
+APPENDED BUTTON TEMPLATING METHODS
+##########################################################
+]]--
+local function SetButtonTemplate(self, invisible, overridePadding, xOffset, yOffset, keepNormal, defaultColor)
+    if(not self or (self and self.Panel)) then return end
+
+    local padding = 1
+    if(overridePadding and type(overridePadding) == "number") then
+        padding = overridePadding
+    end
+
+    local x,y = -1,-1
+    local underlay = false
+    if(xOffset or yOffset) then
+        x = xOffset or -1
+        y = yOffset or -1
+        underlay = true
+    end
+
+    if(invisible) then
+        CreatePanelTemplate(self, "Transparent", underlay, true, padding, x, y, defaultColor)
+        self:SetBackdropColor(0,0,0,0)
+        self:SetBackdropBorderColor(0,0,0,0)
+        if(self.Panel.BorderLeft) then
+            self.Panel.BorderLeft:SetVertexColor(0,0,0,0)
+            self.Panel.BorderRight:SetVertexColor(0,0,0,0)
+            self.Panel.BorderTop:SetVertexColor(0,0,0,0)
+            self.Panel.BorderBottom:SetVertexColor(0,0,0,0)
+        end
+    else
+        CreatePanelTemplate(self, "Button", underlay, true, padding, x, y, defaultColor)
+    end
+
+    if(self.Left) then
+        self.Left:SetAlpha(0)
+    end
+
+    if(self.Middle) then
+        self.Middle:SetAlpha(0)
+    end
+
+    if(self.Right) then
+        self.Right:SetAlpha(0)
+    end
+
+    if(self.SetNormalTexture and not keepNormal) then
+        self:SetNormalTexture("")
+    end
+
+    if(self.SetDisabledTexture) then
+        self:SetDisabledTexture("")
+    end
+
+    if(self.SetHighlightTexture) then
+        if(not self.hover) then
+            local hover = self:CreateTexture(nil, "HIGHLIGHT")
+            FillInner(hover, self.Panel)
+            self.hover = hover;
+        end
+        self.hover:SetTexture(0.1, 0.8, 0.8, 0.5)
+        self:SetHighlightTexture(self.hover)
+    end
+
+    if(self.SetPushedTexture) then
+        if(not self.pushed) then
+            local pushed = self:CreateTexture(nil, "OVERLAY")
+            FillInner(pushed, self.Panel)
+            self.pushed = pushed;
+        end
+
+        self.pushed:SetTexture(0.1, 0.8, 0.1, 0.3)
+
+        self:SetPushedTexture(self.pushed)
+    end
+
+    if(self.SetCheckedTexture) then
+        if(not self.checked) then
+            local checked = self:CreateTexture(nil, "OVERLAY")
+            FillInner(checked, self.Panel)
+            self.checked = checked;
+        end
+
+        self.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+        self.checked:SetVertexColor(0, 0.5, 0, 0.2)
+
+        self:SetCheckedTexture(self.checked)
+    end
+
+    CreateCooldown(self)
+end
+
+local function SetSlotTemplate(self, underlay, padding, x, y, shadowAlpha)
+    if(not self or (self and self.Panel)) then return end
+    padding = padding or 1
+    CreatePanelTemplate(self, "Slot", underlay, true, padding, x, y)
+    CreateButtonPanel(self, true)
+    if(shadowAlpha) then
+        self.Panel.Shadow:SetAttribute("shadowAlpha", shadowAlpha)
+    end
+end
+
+local function SetCheckboxTemplate(self, underlay, x, y)
+    if(not self or (self and self.Panel)) then return end
+
+    if(underlay) then
+        x = x or -7
+        y = y or -7
+    end
+
+    CreatePanelTemplate(self, "Slot", underlay, true, 1, x, y)
+    CreateButtonPanel(self, false, true)
+
+    NewHook(self, "SetChecked", function(self,checked)
+        local r,g,b = 0,0,0
+        if(checked == 1 or checked == true) then
+            r,g,b = self:GetCheckedTexture():GetVertexColor()
+        end
+        self:SetBackdropBorderColor(r,g,b)
+    end)
+end
+
+local function SetEditboxTemplate(self, x, y, fixed)
+    if(not self or (self and self.Panel)) then return end
+
+    if self.TopLeftTex then Die(self.TopLeftTex) end
+    if self.TopRightTex then Die(self.TopRightTex) end
+    if self.TopTex then Die(self.TopTex) end
+    if self.BottomLeftTex then Die(self.BottomLeftTex) end
+    if self.BottomRightTex then Die(self.BottomRightTex) end
+    if self.BottomTex then Die(self.BottomTex) end
+    if self.LeftTex then Die(self.LeftTex) end
+    if self.RightTex then Die(self.RightTex) end
+    if self.MiddleTex then Die(self.MiddleTex) end
+    local underlay = true
+    if(fixed ~= nil) then underlay = fixed end
+    CreatePanelTemplate(self, "Inset", underlay, true, 1, x, y)
+
+    local globalName = self:GetName();
+    if globalName then
+        if _G[globalName.."Left"] then Die(_G[globalName.."Left"]) end
+        if _G[globalName.."Middle"] then Die(_G[globalName.."Middle"]) end
+        if _G[globalName.."Right"] then Die(_G[globalName.."Right"]) end
+        if _G[globalName.."Mid"] then Die(_G[globalName.."Mid"]) end
+
+        if globalName:find("Silver") or globalName:find("Copper") or globalName:find("Gold") then
+            self.Panel:SetPoint("TOPLEFT", -3, 1)
+            if globalName:find("Silver") or globalName:find("Copper") then
+                self.Panel:SetPoint("BOTTOMRIGHT", -12, -2)
+            else
+                self.Panel:SetPoint("BOTTOMRIGHT", -2, -2)
+            end
+        end
+    end
+end
+
+local function SetFramedButtonTemplate(self, template, borderSize)
+    if(not self or (self and self.Panel)) then return end
+
+    borderSize = borderSize or 2
+
+    template = template or "FramedBottom"
+
+    CreatePanelTemplate(self, template, false, false, 0, -borderSize, -borderSize)
+
+    if(self.Left) then
+        self.Left:SetAlpha(0)
+    end
+
+    if(self.Middle) then
+        self.Middle:SetAlpha(0)
+    end
+
+    if(self.Right) then
+        self.Right:SetAlpha(0)
+    end
+
+    if(self.SetNormalTexture) then
+        self:SetNormalTexture("")
+    end
+
+    if(self.SetDisabledTexture) then
+        self:SetDisabledTexture("")
+    end
+
+    if(not self.__border) then
+        local t = SV.Media.color.default
+        local r,g,b = t[1], t[2], t[3]
+
+        local border = {}
+
+        border[1] = self:CreateTexture(nil,"BORDER")
+        border[1]:SetTexture(r,g,b)
+        border[1]:SetPoint("TOPLEFT", -1, 1)
+        border[1]:SetPoint("BOTTOMLEFT", -1, -1)
+        border[1]:SetWidth(borderSize)
+
+        local leftoutline = self:CreateTexture(nil,"BORDER")
+        leftoutline:SetTexture(0,0,0)
+        leftoutline:SetPoint("TOPLEFT", -2, 2)
+        leftoutline:SetPoint("BOTTOMLEFT", -2, -2)
+        leftoutline:SetWidth(1)
+
+        border[2] = self:CreateTexture(nil,"BORDER")
+        border[2]:SetTexture(r,g,b)
+        border[2]:SetPoint("TOPRIGHT", 1, 1)
+        border[2]:SetPoint("BOTTOMRIGHT", 1, -1)
+        border[2]:SetWidth(borderSize)
+
+        local rightoutline = self:CreateTexture(nil,"BORDER")
+        rightoutline:SetTexture(0,0,0)
+        rightoutline:SetPoint("TOPRIGHT", 2, 2)
+        rightoutline:SetPoint("BOTTOMRIGHT", 2, -2)
+        rightoutline:SetWidth(1)
+
+        border[3] = self:CreateTexture(nil,"BORDER")
+        border[3]:SetTexture(r,g,b)
+        border[3]:SetPoint("TOPLEFT", -1, 1)
+        border[3]:SetPoint("TOPRIGHT", 1, 1)
+        border[3]:SetHeight(borderSize)
+
+        local topoutline = self:CreateTexture(nil,"BORDER")
+        topoutline:SetTexture(0,0,0)
+        topoutline:SetPoint("TOPLEFT", -2, 2)
+        topoutline:SetPoint("TOPRIGHT", 2, 2)
+        topoutline:SetHeight(1)
+
+        border[4] = self:CreateTexture(nil,"BORDER")
+        border[4]:SetTexture(r,g,b)
+        border[4]:SetPoint("BOTTOMLEFT", -1, -1)
+        border[4]:SetPoint("BOTTOMRIGHT", 1, -1)
+        border[4]:SetHeight(borderSize)
+
+        local bottomoutline = self:CreateTexture(nil,"BORDER")
+        bottomoutline:SetTexture(0,0,0)
+        bottomoutline:SetPoint("BOTTOMLEFT", -2, -2)
+        bottomoutline:SetPoint("BOTTOMRIGHT", 2, -2)
+        bottomoutline:SetHeight(1)
+
+        self.__border = border
+    end
+
+    if(not self.hover) then
+        self.hover = self:CreateTexture(nil, "HIGHLIGHT")
+    end
+
+    local color = SV.Media.color.highlight
+    self.hover:SetTexture(color[1], color[2], color[3], 0.5)
+    self.hover:SetAllPoints()
+    if(self.SetHighlightTexture) then
+        self:SetHighlightTexture(self.hover)
+    end
+
+    if(not self.__registered) then
+        TemplateUpdateFrames[self] = true
+        self.__registered = true
+    end
+end
+--[[
+##########################################################
+TEMPLATE UPDATE CALLBACK
+##########################################################
+]]--
+local function FrameTemplateUpdates()
+    for frame in pairs(TemplateUpdateFrames) do
+        if(frame) then
+            local panelID = frame.Panel:GetAttribute("panelID")
+            local colorID = frame.Panel:GetAttribute("panelColor")
+            local panelColor = SV.Media.color[colorID];
+            if(frame.BackdropNeedsUpdate) then
+                if(frame.UpdateBackdrop) then
+                    frame:UpdateBackdrop()
+                end
+                if(panelColor) then
+                    frame:SetBackdropColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1)
+                end
+                frame:SetBackdropBorderColor(0,0,0,1)
+            end
+            if(frame.TextureNeedsUpdate and frame.Panel.Skin) then
+                local tex = SV.Media.bg[panelID]
+                if(tex) then
+                    frame.Panel.Skin:SetTexture(tex)
+                end
+                if(not frame.NoColorUpdate) then
+                    local gradient = frame.Panel:GetAttribute("panelGradient")
+                    if(gradient and SV.Media.gradient[gradient]) then
+                        local g = SV.Media.gradient[gradient]
+                        frame.Panel.Skin:SetGradient(g[1], g[2], g[3], g[4], g[5], g[6], g[7])
+                    elseif(panelColor) then
+                        frame.Panel.Skin:SetVertexColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1)
+                    end
+                end
+            end
+        end
+    end
+end
+
+SV:NewCallback(FrameTemplateUpdates)
+--[[
+##########################################################
+ENUMERATION
+##########################################################
+]]--
+local function AppendMethods(OBJECT)
+    local META = getmetatable(OBJECT).__index
+    if not OBJECT.Size then META.Size = SizeScaled end
+    if not OBJECT.Width then META.Width = WidthScaled end
+    if not OBJECT.Height then META.Height = HeightScaled end
+    if not OBJECT.Point then META.Point = PointScaled end
+    if not OBJECT.WrapOuter then META.WrapOuter = WrapOuter end
+    if not OBJECT.FillInner then META.FillInner = FillInner end
+    if not OBJECT.Die then META.Die = Die end
+    if not OBJECT.RemoveTextures then META.RemoveTextures = RemoveTextures end
+    if not OBJECT.SetBasicPanel then META.SetBasicPanel = SetBasicPanel end
+    if not OBJECT.SetPanelTemplate then META.SetPanelTemplate = SetPanelTemplate end
+    if not OBJECT.SetFixedPanelTemplate then META.SetFixedPanelTemplate = SetFixedPanelTemplate end
+    if not OBJECT.SetPanelColor then META.SetPanelColor = SetPanelColor end
+    if not OBJECT.SetButtonTemplate then META.SetButtonTemplate = SetButtonTemplate end
+    if not OBJECT.SetSlotTemplate then META.SetSlotTemplate = SetSlotTemplate end
+    if not OBJECT.SetCheckboxTemplate then META.SetCheckboxTemplate = SetCheckboxTemplate end
+    if not OBJECT.SetEditboxTemplate then META.SetEditboxTemplate = SetEditboxTemplate end
+    if not OBJECT.SetFramedButtonTemplate then META.SetFramedButtonTemplate = SetFramedButtonTemplate end
+    if not OBJECT.SetFontTemplate then META.SetFontTemplate = SetFontTemplate end
+end
+
+local HANDLER, OBJECT = {["Frame"] = true}, NewFrame("Frame")
+AppendMethods(OBJECT)
+AppendMethods(OBJECT:CreateTexture())
+AppendMethods(OBJECT:CreateFontString())
+
+OBJECT = EnumerateFrames()
+while OBJECT do
+    local objType = OBJECT:GetObjectType()
+    if not HANDLER[objType] then
+		AppendMethods(OBJECT)
+		HANDLER[objType] = true
+	end
+	OBJECT = EnumerateFrames(OBJECT)
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/xml/_load.xml b/Interface/AddOns/SVUI/xml/_load.xml
index adbd8de..d2cc8c8 100644
--- a/Interface/AddOns/SVUI/xml/_load.xml
+++ b/Interface/AddOns/SVUI/xml/_load.xml
@@ -1,5 +1,5 @@
 <Ui xmlns="http://www.blizzard.com/wow/ui/">
 	<Include file='system.xml'/>
-	<Include file='widgets.xml'/>
+	<Include file='framework.xml'/>
 	<Include file='mentalo.xml'/>
 </Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/xml/framework.xml b/Interface/AddOns/SVUI/xml/framework.xml
new file mode 100644
index 0000000..a272d16
--- /dev/null
+++ b/Interface/AddOns/SVUI/xml/framework.xml
@@ -0,0 +1,1353 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+    <Button name="SVUI_DockletButtonTemplate" virtual="true">
+        <Size x="22" y="22"/>
+        <Attributes>
+            <Attribute name="tipText" type="string" value="" />
+            <Attribute name="tipExtraText" type="string" value="" />
+            <Attribute name="ownerFrame" type="string" value="None" />
+            <Attribute name="isActive" type="boolean" value="false" />
+        </Attributes>
+        <Layers>
+            <Layer level="OVERLAY">
+                <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" />
+                    </Anchors>
+                </Texture>
+            </Layer>
+        </Layers>
+    </Button>
+
+    <Frame name="SVUI_DockletWindowTemplate" virtual="true">
+        <Attributes>
+            <Attribute name="ownerFrame" type="string" value="None" />
+            <Attribute name="isLoaded" type="boolean" value="false" />
+        </Attributes>
+    </Frame>
+
+    <Frame name="SVUI_DockLeft" frameStrata="BACKGROUND">
+        <Attributes>
+            <Attribute name="spacingSize" type="number" value="4" />
+            <Attribute name="buttonSize" type="number" value="22" />
+        </Attributes>
+        <Anchors>
+            <Anchor point="BOTTOMLEFT" />
+        </Anchors>
+        <Frames>
+            <Button name="$parentButton" parentKey="Button">
+                <Size x="22" y="22"/>
+                <Anchors>
+                    <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                </Anchors>
+                <Attributes>
+                    <Attribute name="tipText" type="string" value="" />
+                    <Attribute name="tipExtraText" type="string" value="" />
+                    <Attribute name="ownerFrame" type="string" value="None" />
+                    <Attribute name="isActive" type="boolean" value="false" />
+                </Attributes>
+                <Layers>
+                    <Layer level="OVERLAY">
+                        <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT">
+                            <Anchors>
+                                <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" />
+                                <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" />
+                            </Anchors>
+                        </Texture>
+                    </Layer>
+                </Layers>
+            </Button>
+            <Frame name="$parentToolBar" parentKey="ToolBar">
+                <Size y="22"/>
+                <Anchors>
+                    <Anchor point="BOTTOMLEFT" relativeTo="$parentButton" relativePoint="BOTTOMRIGHT" x="4" y="0" />
+                    <Anchor point="BOTTOMRIGHT" relativeTo="$parent" relativePoint="BOTTOMRIGHT" x="0" y="0" />
+                </Anchors>
+            </Frame>
+            <Frame name="$parentAlert" parentKey="Alert" frameStrata="BACKGROUND">
+                <Size y="1"/>
+                <Anchors>
+                    <Anchor point="BOTTOMLEFT" relativeTo="$parentButton" relativePoint="TOPLEFT" x="0" y="4" />
+                    <Anchor point="BOTTOMRIGHT" relativeTo="$parentToolBar" relativePoint="TOPRIGHT" x="0" y="4" />
+                </Anchors>
+            </Frame>
+            <Frame name="$parentWindow" parentKey="Window" frameStrata="BACKGROUND">
+                <Anchors>
+                    <Anchor point="BOTTOMLEFT" relativeTo="$parentAlert" relativePoint="TOPLEFT" x="0" y="4" />
+                    <Anchor point="TOPRIGHT" relativeTo="$parent" relativePoint="TOPRIGHT" x="0" y="4" />
+                </Anchors>
+            </Frame>
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_DockRight" frameStrata="BACKGROUND">
+        <Attributes>
+            <Attribute name="spacingSize" type="number" value="4" />
+            <Attribute name="buttonSize" type="number" value="22" />
+        </Attributes>
+        <Anchors>
+            <Anchor point="BOTTOMRIGHT" />
+        </Anchors>
+        <Frames>
+            <Button name="$parentButton" parentKey="Button">
+                <Size x="22" y="22"/>
+                <Anchors>
+                    <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                </Anchors>
+                <Attributes>
+                    <Attribute name="tipText" type="string" value="" />
+                    <Attribute name="tipExtraText" type="string" value="" />
+                    <Attribute name="ownerFrame" type="string" value="None" />
+                    <Attribute name="isActive" type="boolean" value="false" />
+                </Attributes>
+                <Layers>
+                    <Layer level="OVERLAY">
+                        <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT">
+                            <Anchors>
+                                <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" />
+                                <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" />
+                            </Anchors>
+                        </Texture>
+                    </Layer>
+                </Layers>
+            </Button>
+            <Frame name="$parentToolBar" parentKey="ToolBar">
+                <Size y="22"/>
+                <Anchors>
+                    <Anchor point="BOTTOMLEFT" relativeTo="$parent" relativePoint="BOTTOMLEFT" x="0" y="0" />
+                    <Anchor point="BOTTOMRIGHT" relativeTo="$parentButton" relativePoint="BOTTOMLEFT" x="-4" y="0" />
+                </Anchors>
+                <Frames>
+                    <Button name="$parentAddonButton" parentKey="AddonButton" hidden="true">
+                        <Size x="22" y="22"/>
+                        <Anchors>
+                            <Anchor point="RIGHT" relativePoint="RIGHT" />
+                        </Anchors>
+                        <Attributes>
+                            <Attribute name="tipText" type="string" value="" />
+                            <Attribute name="tipExtraText" type="string" value="" />
+                            <Attribute name="ownerFrame" type="string" value="None" />
+                            <Attribute name="isActive" type="boolean" value="false" />
+                        </Attributes>
+                        <Layers>
+                            <Layer level="OVERLAY">
+                                <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT">
+                                    <Anchors>
+                                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" />
+                                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" />
+                                    </Anchors>
+                                </Texture>
+                            </Layer>
+                        </Layers>
+                    </Button>
+                </Frames>
+            </Frame>
+            <Frame name="$parentUtilityBar" parentKey="UtilityBar">
+                <Size x="1" y="22"/>
+                <Anchors>
+                    <Anchor point="BOTTOMRIGHT" relativeTo="$parentToolBar" relativePoint="BOTTOMLEFT" x="-4" y="0" />
+                </Anchors>
+            </Frame>
+            <Frame name="$parentAlert" parentKey="Alert" frameStrata="BACKGROUND">
+                <Size y="1"/>
+                <Anchors>
+                    <Anchor point="BOTTOMRIGHT" relativeTo="$parentButton" relativePoint="TOPRIGHT" x="0" y="4" />
+                    <Anchor point="BOTTOMLEFT" relativeTo="$parentToolBar" relativePoint="TOPLEFT" x="0" y="4" />
+                </Anchors>
+            </Frame>
+            <Frame name="$parentWindow" parentKey="Window" frameStrata="BACKGROUND">
+                <Anchors>
+                    <Anchor point="BOTTOMRIGHT" relativeTo="$parentAlert" relativePoint="TOPRIGHT" x="0" y="4" />
+                    <Anchor point="TOPLEFT" relativeTo="$parent" relativePoint="TOPLEFT" x="0" y="0" />
+                </Anchors>
+            </Frame>
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_DockTop" frameStrata="BACKGROUND">
+        <Attributes>
+            <Attribute name="spacingSize" type="number" value="4" />
+            <Attribute name="buttonSize" type="number" value="22" />
+        </Attributes>
+        <Anchors>
+            <Anchor point="TOPLEFT" />
+        </Anchors>
+        <Frames>
+            <Frame name="$parentToolBar" parentKey="ToolBar" frameStrata="BACKGROUND">
+                <Size y="1"/>
+                <Anchors>
+                    <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                </Anchors>
+            </Frame>
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_ShadowTemplate" virtual="true">
+        <Attributes>
+            <Attribute name="shadowAlpha" type="number" value="0.5" />
+        </Attributes>
+        <Backdrop edgeFile="Interface\AddOns\SVUI\assets\artwork\Template\GLOW">
+            <EdgeSize val="3" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0" g="0" b="0" a="0" />
+            <BorderColor r="0" g="0" b="0" a="0.5" />
+        </Backdrop>
+    </Frame>
+
+	<Frame name="SVUI_PanelTemplate_Default" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="default" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="default" />
+            <Attribute name="panelGradient" type="string" value="default" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
+                <Color r="0.2" g="0.2" b="0.2" a="1" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Transparent" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="transparent" />
+            <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelColor" type="string" value="transparent" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="2" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0" g="0" b="0" a="0.5" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Component" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="component" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="default" />
+            <Attribute name="panelGradient" type="string" value="default" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="2" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
+                <Color r="0.2" g="0.2" b="0.2" a="1" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Headline" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="headline" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="darkest" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" tile="true">
+            <TileSize val="20" />
+            <Color r="0" g="0" b="0" a="0.5" />
+        </Backdrop>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Button" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="button" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="default" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\BUTTON" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="2" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_FramedTop" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="framedtop" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="default" />
+            <Attribute name="panelGradient" type="string" value="darkest2" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT2" setAllPoints="true" />
+                <Color r="0.2" g="0.2" b="0.2" a="1" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_FramedBottom" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="framedbottom" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="default" />
+            <Attribute name="panelGradient" type="string" value="darkest" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
+                <Color r="0.2" g="0.2" b="0.2" a="1" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Bar" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="bar" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="transparent" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0" g="0" b="0" a="0.5" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Slot" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="slot" />
+            <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelColor" type="string" value="transparent" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
+            <Color r="0" g="0" b="0" a="0.5" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Inset" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="inset" />
+            <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelColor" type="string" value="transparent" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="2" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0" g="0" b="0" a="0.5" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Comic" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="comic" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="class" />
+            <Attribute name="panelGradient" type="string" value="class" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" tile="false">
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" setAllPoints="true" />
+                <Color r="0.2" g="0.2" b="0.2" a="1" />
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Model" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="model" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelColor" type="string" value="special" />
+            <Attribute name="panelGradient" type="string" value="class" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" tile="false">
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.37" g="0.32" b="0.29" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" setAllPoints="true" />
+                <Color r="0.37" g="0.32" b="0.29" a="1" />
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Paper" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="paper" />
+            <Attribute name="panelPadding" type="number" value="3" />
+            <Attribute name="panelColor" type="string" value="white" />
+            <Attribute name="panelGradient" type="string" value="white" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="1" g="1" b="1" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" setAllPoints="true" />
+                <Color r="1" g="1" b="1" a="1" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Container" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="container" />
+            <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelColor" type="string" value="special" />
+            <Attribute name="panelGradient" type="string" value="special" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.37" g="0.32" b="0.29" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" setAllPoints="true" />
+                <Color r="0.37" g="0.32" b="0.29" a="1" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Pattern" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="pattern" />
+            <Attribute name="panelPadding" type="number" value="3" />
+            <Attribute name="panelColor" type="string" value="special" />
+            <Attribute name="panelGradient" type="string" value="special" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="1" />
+            <TileSize val="0" />
+            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
+            <Color r="0.37" g="0.32" b="0.29" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" setAllPoints="true" />
+                <Color r="0.37" g="0.32" b="0.29" a="1" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Action" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="action" />
+            <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelColor" type="string" value="default" />
+            <Attribute name="panelGradient" type="string" value="special" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="2" />
+            <TileSize val="0" />
+            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
+                <Color r="0.2" g="0.2" b="0.2" a="1" />
+            </Layer>
+            <Layer level="BACKGROUND" textureSubLevel="2">
+                <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPLEFT">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOP" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="LEFT" />
+                    </Anchors>
+                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
+                </Texture>
+                <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPRIGHT">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="TOPLEFT" relativePoint="TOP" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" />
+                    </Anchors>
+                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
+                </Texture>
+                <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMLEFT">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" />
+                        <Anchor point="TOPLEFT" relativePoint="LEFT" />
+                    </Anchors>
+                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
+                </Texture>
+                <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMRIGHT">
+                    <Anchors>
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" />
+                        <Anchor point="TOPRIGHT" relativePoint="RIGHT" />
+                    </Anchors>
+                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
+                </Texture>
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Halftone" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="halftone" />
+            <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelColor" type="string" value="default" />
+            <Attribute name="panelGradient" type="string" value="special" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="2" />
+            <TileSize val="0" />
+            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
+            <Color r="0.2" g="0.2" b="0.2" a="1" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
+                <Color r="0.2" g="0.2" b="0.2" a="1" />
+            </Layer>
+            <Layer level="BACKGROUND" textureSubLevel="2">
+                <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPLEFT">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOP" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="LEFT" />
+                    </Anchors>
+                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
+                </Texture>
+                <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPRIGHT">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="TOPLEFT" relativePoint="TOP" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" />
+                    </Anchors>
+                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
+                </Texture>
+                <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMLEFT">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" />
+                        <Anchor point="TOPLEFT" relativePoint="LEFT" />
+                    </Anchors>
+                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
+                </Texture>
+                <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMRIGHT">
+                    <Anchors>
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" />
+                        <Anchor point="TOPRIGHT" relativePoint="RIGHT" />
+                    </Anchors>
+                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
+                </Texture>
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_Blackout" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="blackout" />
+            <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelColor" type="string" value="transparent" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelOffset" type="number" value="2" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
+            <EdgeSize val="2" />
+            <TileSize val="0" />
+            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
+            <Color r="0" g="0" b="0" a="0.5" />
+            <BorderColor r="0" g="0" b="0" a="1" />
+        </Backdrop>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
+                <Color r="0" g="0" b="0" a="0.5" />
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="2" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_UnitLarge" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="unitlarge" />
+            <Attribute name="panelPadding" type="number" value="0" />
+            <Attribute name="panelColor" type="string" value="special" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelOffset" type="number" value="3" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+            <Attribute name="panelNoBackdrop" type="boolean" value="true" />
+        </Attributes>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-BG1" setAllPoints="true" />
+                <Color r="0.37" g="0.32" b="0.29" a="1" />
+            </Layer>
+        </Layers>
+    </Frame>
+
+    <Frame name="SVUI_PanelTemplate_UnitSmall" virtual="true">
+        <Attributes>
+            <Attribute name="panelID" type="string" value="unitlarge" />
+            <Attribute name="panelPadding" type="number" value="0" />
+            <Attribute name="panelColor" type="string" value="special" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelOffset" type="number" value="3" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+            <Attribute name="panelNoBackdrop" type="boolean" value="true" />
+        </Attributes>
+        <Layers>
+            <Layer level="BACKGROUND" textureSubLevel="1">
+                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-SMALL-BG1" setAllPoints="true" />
+                <Color r="0.37" g="0.32" b="0.29" a="1" />
+            </Layer>
+        </Layers>
+    </Frame>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/xml/widgets.xml b/Interface/AddOns/SVUI/xml/widgets.xml
deleted file mode 100644
index 7f08346..0000000
--- a/Interface/AddOns/SVUI/xml/widgets.xml
+++ /dev/null
@@ -1,1189 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-    <Button name="SVUI_DockletButtonTemplate" virtual="true">
-        <Size x="22" y="22"/>
-        <Attributes>
-            <Attribute name="tipText" type="string" value="Toggle" />
-            <Attribute name="ownerFrame" type="string" value="" />
-            <Attribute name="bgGradient" type="string" value="default" />
-            <Attribute name="iconGradient" type="string" value="icon" />
-        </Attributes>
-        <Layers>
-            <Layer level="OVERLAY">
-                <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" />
-                    </Anchors>
-                </Texture>
-            </Layer>
-        </Layers>
-    </Button>
-    <Frame name="SVUI_ShadowTemplate" virtual="true">
-        <Attributes>
-            <Attribute name="shadowAlpha" type="number" value="0.5" />
-        </Attributes>
-        <Backdrop edgeFile="Interface\AddOns\SVUI\assets\artwork\Template\GLOW">
-            <EdgeSize val="3" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0" g="0" b="0" a="0" />
-            <BorderColor r="0" g="0" b="0" a="0.5" />
-        </Backdrop>
-    </Frame>
-
-	<Frame name="SVUI_PanelTemplate_Default" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="default" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="default" />
-            <Attribute name="panelGradient" type="string" value="default" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
-                <Color r="0.2" g="0.2" b="0.2" a="1" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Transparent" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="transparent" />
-            <Attribute name="panelPadding" type="number" value="2" />
-            <Attribute name="panelColor" type="string" value="transparent" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="2" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0" g="0" b="0" a="0.5" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Component" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="component" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="default" />
-            <Attribute name="panelGradient" type="string" value="default" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="2" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
-                <Color r="0.2" g="0.2" b="0.2" a="1" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
-        </Frames>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Headline" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="headline" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="darkest" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" tile="true">
-            <TileSize val="20" />
-            <Color r="0" g="0" b="0" a="0.5" />
-        </Backdrop>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Button" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="button" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="default" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\BUTTON" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="2" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
-        </Frames>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_FramedTop" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="framedtop" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="default" />
-            <Attribute name="panelGradient" type="string" value="darkest2" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT2" setAllPoints="true" />
-                <Color r="0.2" g="0.2" b="0.2" a="1" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_FramedBottom" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="framedbottom" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="default" />
-            <Attribute name="panelGradient" type="string" value="darkest" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
-                <Color r="0.2" g="0.2" b="0.2" a="1" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Bar" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="bar" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="transparent" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0" g="0" b="0" a="0.5" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="1" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Slot" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="slot" />
-            <Attribute name="panelPadding" type="number" value="2" />
-            <Attribute name="panelColor" type="string" value="transparent" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
-            <Color r="0" g="0" b="0" a="0.5" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
-        </Frames>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Inset" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="inset" />
-            <Attribute name="panelPadding" type="number" value="2" />
-            <Attribute name="panelColor" type="string" value="transparent" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="2" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0" g="0" b="0" a="0.5" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Comic" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="comic" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="class" />
-            <Attribute name="panelGradient" type="string" value="class" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" tile="false">
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" setAllPoints="true" />
-                <Color r="0.2" g="0.2" b="0.2" a="1" />
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Model" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="model" />
-            <Attribute name="panelPadding" type="number" value="1" />
-            <Attribute name="panelColor" type="string" value="special" />
-            <Attribute name="panelGradient" type="string" value="class" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" tile="false">
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.37" g="0.32" b="0.29" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" setAllPoints="true" />
-                <Color r="0.37" g="0.32" b="0.29" a="1" />
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Paper" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="paper" />
-            <Attribute name="panelPadding" type="number" value="3" />
-            <Attribute name="panelColor" type="string" value="white" />
-            <Attribute name="panelGradient" type="string" value="white" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="1" g="1" b="1" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" setAllPoints="true" />
-                <Color r="1" g="1" b="1" a="1" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Container" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="container" />
-            <Attribute name="panelPadding" type="number" value="2" />
-            <Attribute name="panelColor" type="string" value="special" />
-            <Attribute name="panelGradient" type="string" value="special" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.37" g="0.32" b="0.29" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" setAllPoints="true" />
-                <Color r="0.37" g="0.32" b="0.29" a="1" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Pattern" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="pattern" />
-            <Attribute name="panelPadding" type="number" value="3" />
-            <Attribute name="panelColor" type="string" value="special" />
-            <Attribute name="panelGradient" type="string" value="special" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="1" />
-            <TileSize val="0" />
-            <BackgroundInsets left="0" right="0" top="0" bottom="0" />
-            <Color r="0.37" g="0.32" b="0.29" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" setAllPoints="true" />
-                <Color r="0.37" g="0.32" b="0.29" a="1" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="3" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
-        </Frames>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Action" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="action" />
-            <Attribute name="panelPadding" type="number" value="2" />
-            <Attribute name="panelColor" type="string" value="default" />
-            <Attribute name="panelGradient" type="string" value="special" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="2" />
-            <TileSize val="0" />
-            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
-                <Color r="0.2" g="0.2" b="0.2" a="1" />
-            </Layer>
-            <Layer level="BACKGROUND" textureSubLevel="2">
-                <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPLEFT">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOP" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="LEFT" />
-                    </Anchors>
-                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
-                </Texture>
-                <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPRIGHT">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="TOPLEFT" relativePoint="TOP" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" />
-                    </Anchors>
-                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
-                </Texture>
-                <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMLEFT">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" />
-                        <Anchor point="TOPLEFT" relativePoint="LEFT" />
-                    </Anchors>
-                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
-                </Texture>
-                <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMRIGHT">
-                    <Anchors>
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" />
-                        <Anchor point="TOPRIGHT" relativePoint="RIGHT" />
-                    </Anchors>
-                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
-                </Texture>
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
-        </Frames>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Halftone" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="halftone" />
-            <Attribute name="panelPadding" type="number" value="2" />
-            <Attribute name="panelColor" type="string" value="default" />
-            <Attribute name="panelGradient" type="string" value="special" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="2" />
-            <TileSize val="0" />
-            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
-            <Color r="0.2" g="0.2" b="0.2" a="1" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
-                <Color r="0.2" g="0.2" b="0.2" a="1" />
-            </Layer>
-            <Layer level="BACKGROUND" textureSubLevel="2">
-                <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPLEFT">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOP" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="LEFT" />
-                    </Anchors>
-                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
-                </Texture>
-                <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPRIGHT">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="TOPLEFT" relativePoint="TOP" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" />
-                    </Anchors>
-                    <Color r="0.05" g="0.05" b="0.05" a="0.5" />
-                </Texture>
-                <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMLEFT">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" />
-                        <Anchor point="TOPLEFT" relativePoint="LEFT" />
-                    </Anchors>
-                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
-                </Texture>
-                <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMRIGHT">
-                    <Anchors>
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" />
-                        <Anchor point="TOPRIGHT" relativePoint="RIGHT" />
-                    </Anchors>
-                    <Color r="0.1" g="0.1" b="0.1" a="0.5" />
-                </Texture>
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
-        </Frames>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_Blackout" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="blackout" />
-            <Attribute name="panelPadding" type="number" value="2" />
-            <Attribute name="panelColor" type="string" value="transparent" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="false" />
-            <Attribute name="panelOffset" type="number" value="2" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-        </Attributes>
-        <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
-            <EdgeSize val="2" />
-            <TileSize val="0" />
-            <BackgroundInsets left="1" right="1" top="1" bottom="1" />
-            <Color r="0" g="0" b="0" a="0.5" />
-            <BorderColor r="0" g="0" b="0" a="1" />
-        </Backdrop>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" />
-                <Color r="0" g="0" b="0" a="0.5" />
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension x="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
-                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
-                    <Anchors>
-                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
-                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
-                    </Anchors>
-                    <Size>
-                        <AbsDimension y="2" />
-                    </Size>
-                    <Color r="0" g="0" b="0" a="1" />
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
-        </Frames>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_UnitLarge" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="unitlarge" />
-            <Attribute name="panelPadding" type="number" value="0" />
-            <Attribute name="panelColor" type="string" value="special" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelOffset" type="number" value="3" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-            <Attribute name="panelNoBackdrop" type="boolean" value="true" />
-        </Attributes>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-BG1" setAllPoints="true" />
-                <Color r="0.37" g="0.32" b="0.29" a="1" />
-            </Layer>
-        </Layers>
-    </Frame>
-
-    <Frame name="SVUI_PanelTemplate_UnitSmall" virtual="true">
-        <Attributes>
-            <Attribute name="panelID" type="string" value="unitlarge" />
-            <Attribute name="panelPadding" type="number" value="0" />
-            <Attribute name="panelColor" type="string" value="special" />
-            <Attribute name="panelGradient" type="boolean" value="false" />
-            <Attribute name="panelTexUpdate" type="boolean" value="true" />
-            <Attribute name="panelOffset" type="number" value="3" />
-            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
-            <Attribute name="panelNoBackdrop" type="boolean" value="true" />
-        </Attributes>
-        <Layers>
-            <Layer level="BACKGROUND" textureSubLevel="1">
-                <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-SMALL-BG1" setAllPoints="true" />
-                <Color r="0.37" g="0.32" b="0.29" a="1" />
-            </Layer>
-        </Layers>
-    </Frame>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
index b5fad1c..ea016a2 100644
--- a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
+++ b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
@@ -772,11 +772,11 @@ function PLUGIN:GetServiceState()
 	if inUse then
 		if onHold then
 			self.Docklet:SetPanelColor("yellow")
-			self.Docklet.icon:SetGradient(unpack(YELLOW_GRADIENT))
+			self.Docklet.Icon:SetGradient(unpack(YELLOW_GRADIENT))
 			self.Docklet.stateColor = YELLOW_GRADIENT
 		else
 			self.Docklet:SetPanelColor("green")
-			self.Docklet.icon:SetGradient(unpack(GREEN_GRADIENT))
+			self.Docklet.Icon:SetGradient(unpack(GREEN_GRADIENT))
 			self.Docklet.stateColor = GREEN_GRADIENT
 		end
 	else
@@ -903,23 +903,24 @@ function PLUGIN:EnableAnsweringService()
 	self:RegisterEvent("CHAT_MSG_IGNORED")
 	self:RegisterUpdate("PhoneTimeUpdate", 4)

-	local buttonsize = LeftSuperDockToolBar.currentSize
+	local buttonsize = SV.Dock.Left.ToolBar:GetHeight()

 	local docklet = CreateFrame("Button", nil, UIParent)
-	docklet:SetParent(LeftSuperDockToolBar)
-	docklet:Point("LEFT", LeftSuperDockToolBar, "LEFT", 3, 0)
+	docklet:SetParent(SV.Dock.Left.ToolBar)
+	docklet:Point("LEFT", SV.Dock.Left.Button, "RIGHT", 4, 0)
 	docklet:Size(buttonsize, buttonsize)
 	docklet:SetFramedButtonTemplate()
-	docklet.icon = docklet:CreateTexture(nil, "OVERLAY")
-	docklet.icon:FillInner(docklet,2,2)
-	docklet.icon:SetTexture(ICON_FILE)
+	docklet.Icon = docklet:CreateTexture(nil, "OVERLAY")
+	docklet.Icon:FillInner(docklet,2,2)
+	docklet.Icon:SetTexture(ICON_FILE)
 	docklet.stateColor = {"VERTICAL", 0.33, 0.25, 0.13, 0.47, 0.39, 0.27}
 	docklet.TText = L["Show / Hide Phone Lines"]
 	docklet:RegisterForClicks("AnyUp")

-	--SV.SVDock:ActivateDockletButton(docklet, AnsweringOnClick)
-
-	LeftSuperDockToolBar:SetWidth(buttonsize + 4)
+	SV.Dock:ActivateDockletButton(docklet, AnsweringOnClick)
+	local width = SV.Dock.Left.ToolBar:GetWidth() - (buttonsize + 4)
+	SV.Dock.Left.ToolBar:SetWidth(width)
+	SV.Dock.Left.ToolBar:Point("LEFT", docklet, "RIGHT", 4, 0)

 	self.Docklet = docklet

@@ -929,7 +930,7 @@ function PLUGIN:EnableAnsweringService()
 	window:SetHeight(145)
 	window:SetScript("OnDragStart", function(this) this:StartMoving() end)
 	window:SetScript("OnDragStop", function(this) this:StopMovingOrSizing() end)
-	window:SetPoint("BOTTOMRIGHT", LeftSuperDock, "TOPRIGHT", 0, 6)
+	window:SetPoint("BOTTOMRIGHT", SV.Dock.Left, "TOPRIGHT", 0, 6)
 	window:SetFixedPanelTemplate("Transparent")
 	window:SetMovable(true)
 	window:EnableMouse(true)
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua
index 76c29dc..66cf6d0 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua
@@ -31,23 +31,23 @@ GET ADDON DATA
 ]]--
 local SV = _G["SVUI"];
 local L = SV.L;
-local MOD = SV.SVDock
+local MOD = SV.Dock
 local CHAT = SV.SVChat
 local BAG = SV.SVBag

-SV.Options.args.SVDock = {
+SV.Options.args.Dock = {
   type = "group",
   name = MOD.TitleID,
   args = {}
 }

-SV.Options.args.SVDock.args["intro"] = {
+SV.Options.args.Dock.args["intro"] = {
 	order = 1,
 	type = "description",
 	name = "Configure the various frame docks around the screen"
 };

-SV.Options.args.SVDock.args["common"] = {
+SV.Options.args.Dock.args["common"] = {
 	order = 2,
 	type = "group",
 	name = "General",
@@ -58,7 +58,7 @@ SV.Options.args.SVDock.args["common"] = {
 			type = 'toggle',
 			name = L['Bottom Panel'],
 			desc = L['Display a border across the bottom of the screen.'],
-			get = function(j)return SV.db.SVDock.bottomPanel end,
+			get = function(j)return SV.db.Dock.bottomPanel end,
 			set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:BottomBorderVisibility()end
 		},
 		topPanel = {
@@ -66,13 +66,13 @@ SV.Options.args.SVDock.args["common"] = {
 			type = 'toggle',
 			name = L['Top Panel'],
 			desc = L['Display a border across the top of the screen.'],
-			get = function(j)return SV.db.SVDock.topPanel end,
+			get = function(j)return SV.db.Dock.topPanel end,
 			set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:TopBorderVisibility()end
 		},
 	}
 };

-SV.Options.args.SVDock.args["leftDockGroup"] = {
+SV.Options.args.Dock.args["leftDockGroup"] = {
 		order = 3,
 		type = "group",
 		name = L["Left Dock"],
@@ -83,7 +83,7 @@ SV.Options.args.SVDock.args["leftDockGroup"] = {
 				type = 'toggle',
 				name = L['Left Dock Backdrop'],
 				desc = L['Display a backdrop behind the left-side dock.'],
-				get = function(j)return SV.db.SVDock.leftDockBackdrop end,
+				get = function(j)return SV.db.Dock.leftDockBackdrop end,
 				set = function(key,value)
 					MOD:ChangeDBVar(value,key[#key]);
 					MOD:UpdateDockBackdrops()
@@ -98,10 +98,10 @@ SV.Options.args.SVDock.args["leftDockGroup"] = {
 				max = 600,
 				step = 1,
 				width = "full",
-				get = function()return SV.db.SVDock.dockLeftHeight;end,
+				get = function()return SV.db.Dock.dockLeftHeight;end,
 				set = function(key,value)
 					MOD:ChangeDBVar(value,key[#key]);
-					MOD:UpdateSuperDock(true)
+					MOD:Refresh()
 					CHAT:RefreshChatFrames(true)
 				end,
 			},
@@ -114,10 +114,10 @@ SV.Options.args.SVDock.args["leftDockGroup"] = {
 				max = 700,
 				step = 1,
 				width = "full",
-				get = function()return SV.db.SVDock.dockLeftWidth;end,
+				get = function()return SV.db.Dock.dockLeftWidth;end,
 				set = function(key,value)
 					MOD:ChangeDBVar(value,key[#key]);
-					MOD:UpdateSuperDock(true)
+					MOD:Refresh()
 					CHAT:RefreshChatFrames(true)
 				end,
 			},
@@ -133,7 +133,7 @@ local acceptableDocklets = {
 };

 local function GetLiveDockletsA()
-	local test = SV.db.SVDock.docklets.DockletExtra;
+	local test = SV.db.Dock.docklets.DockletExtra;
 	local t = {["None"] = L["None"]};
 	for n,l in pairs(acceptableDocklets) do
 		if IsAddOnLoaded(n) or IsAddOnLoaded(l) then
@@ -153,7 +153,7 @@ local function GetLiveDockletsA()
 end

 local function GetLiveDockletsB()
-	local test = SV.db.SVDock.docklets.DockletMain;
+	local test = SV.db.Dock.docklets.DockletMain;
 	local t = {["None"] = L["None"]};
 	for n,l in pairs(acceptableDocklets) do
 		if IsAddOnLoaded(n) or IsAddOnLoaded(l) then
@@ -172,7 +172,7 @@ local function GetLiveDockletsB()
 	return t;
 end

-SV.Options.args.SVDock.args["rightDockGroup"] = {
+SV.Options.args.Dock.args["rightDockGroup"] = {
 	order = 4,
 	type = "group",
 	name = L["Right Dock"],
@@ -183,7 +183,7 @@ SV.Options.args.SVDock.args["rightDockGroup"] = {
 			type = 'toggle',
 			name = L['Right Dock Backdrop'],
 			desc = L['Display a backdrop behind the right-side dock.'],
-			get = function(j)return SV.db.SVDock.rightDockBackdrop end,
+			get = function(j)return SV.db.Dock.rightDockBackdrop end,
 			set = function(key,value)
 				MOD:ChangeDBVar(value,key[#key]);
 				MOD:UpdateDockBackdrops()
@@ -198,10 +198,10 @@ SV.Options.args.SVDock.args["rightDockGroup"] = {
 			max = 600,
 			step = 1,
 			width = "full",
-			get = function()return SV.db.SVDock.dockRightHeight;end,
+			get = function()return SV.db.Dock.dockRightHeight;end,
 			set = function(key,value)
 				MOD:ChangeDBVar(value,key[#key]);
-				MOD:UpdateSuperDock(true)
+				MOD:Refresh()
 				CHAT:RefreshChatFrames(true)
 			end,
 		},
@@ -214,10 +214,10 @@ SV.Options.args.SVDock.args["rightDockGroup"] = {
 			max = 700,
 			step = 1,
 			width = "full",
-			get = function()return SV.db.SVDock.dockRightWidth;end,
+			get = function()return SV.db.Dock.dockRightWidth;end,
 			set = function(key,value)
 				MOD:ChangeDBVar(value,key[#key]);
-				MOD:UpdateSuperDock(true)
+				MOD:Refresh()
 				CHAT:RefreshChatFrames(true)
 				BAG.BagFrame:UpdateLayout()
 				BAG.BankFrame:UpdateLayout()
@@ -270,33 +270,33 @@ SV.Options.args.SVDock.args["rightDockGroup"] = {
 							name = "Primary Docklet",
 							desc = "Select an addon to occupy the primary docklet window",
 							values = function()return GetLiveDockletsA()end,
-							get = function()return SV.db.SVDock.docklets.DockletMain end,
-							set = function(a,value)SV.db.SVDock.docklets.DockletMain = value;SV:ReloadDocklets()end,
+							get = function()return SV.db.Dock.docklets.DockletMain end,
+							set = function(a,value)SV.db.Dock.docklets.DockletMain = value;MOD:ReloadDocklets()end,
 						},
 						DockletCombatFade = {
 							type = "toggle",
 							order = 2,
 							name = "Out of Combat (Hide)",
-							get = function()return SV.db.SVDock.docklets.DockletCombatFade end,
-							set = function(a,value)SV.db.SVDock.docklets.DockletCombatFade = value;end
+							get = function()return SV.db.Dock.docklets.DockletCombatFade end,
+							set = function(a,value)SV.db.Dock.docklets.DockletCombatFade = value;end
 						},
 						enableExtra = {
 							type = "toggle",
 							order = 3,
 							name = "Split Docklet",
 							desc = "Split the primary docklet window for 2 addons.",
-							get = function()return SV.db.SVDock.docklets.enableExtra end,
-							set = function(a,value)SV.db.SVDock.docklets.enableExtra = value;SV:ReloadDocklets()end,
+							get = function()return SV.db.Dock.docklets.enableExtra end,
+							set = function(a,value)SV.db.Dock.docklets.enableExtra = value;MOD:ReloadDocklets()end,
 						},
 						DockletExtra = {
 							type = "select",
 							order = 4,
 							name = "Secondary Docklet",
 							desc = "Select another addon",
-							disabled = function()return (not SV.db.SVDock.docklets.enableExtra or SV.db.SVDock.docklets.DockletMain == "None") end,
+							disabled = function()return (not SV.db.Dock.docklets.enableExtra or SV.db.Dock.docklets.DockletMain == "None") end,
 							values = function()return GetLiveDockletsB()end,
-							get = function()return SV.db.SVDock.docklets.DockletExtra end,
-							set = function(a,value)SV.db.SVDock.docklets.DockletExtra = value;SV:ReloadDocklets()end,
+							get = function()return SV.db.Dock.docklets.DockletExtra end,
+							set = function(a,value)SV.db.Dock.docklets.DockletExtra = value;MOD:ReloadDocklets()end,
 						}
 					}
 				}
diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
index cd302ad..feea122 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
@@ -343,7 +343,7 @@ local ModeAlert_OnHide = function()
 		SV:AddonMessage(ERR_NOT_IN_COMBAT);
 		return;
 	end
-	RightSuperDockAlert:Deactivate()
+	SV.Dock.Right.Alert:Deactivate()
 end

 local ModeAlert_OnShow = function(self)
@@ -353,7 +353,7 @@ local ModeAlert_OnShow = function(self)
 		return;
 	end
 	SV:SecureFadeIn(self, 0.3, 0, 1)
-	RightSuperDockAlert:Activate(self)
+	SV.Dock.Right.Alert:Activate(self)
 end

 local ModeAlert_OnMouseDown = function(self)
@@ -392,16 +392,16 @@ function PLUGIN:Load()
 	self.InModeGear = false;

 	local ALERT_HEIGHT = 60;
-	local DOCK_WIDTH = RightSuperDockFrameHolder:GetWidth();
-	local DOCK_HEIGHT = RightSuperDockFrameHolder:GetHeight();
+	local DOCK_WIDTH = SV.Dock.Right.Window:GetWidth();
+	local DOCK_HEIGHT = SV.Dock.Right.Window:GetHeight();
 	local DOCKLET_WIDTH = DOCK_WIDTH - 4
 	local DOCKLET_HEIGHT = DOCK_HEIGHT - 4
 	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;

-	local modesDocklet = CreateFrame("Frame", "SVUI_ModesDockFrame", RightSuperDockFrameHolder)
+	local modesDocklet = CreateFrame("Frame", "SVUI_ModesDockFrame", SV.Dock.Right.Window)
 	modesDocklet:SetWidth(DOCKLET_WIDTH);
 	modesDocklet:SetHeight(DOCKLET_HEIGHT);
-	modesDocklet:SetPoint("CENTER",RightSuperDockFrameHolder,"CENTER",0,0);
+	modesDocklet:SetPoint("CENTER",SV.Dock.Right.Window,"CENTER",0,0);

 	local modesToolBar = CreateFrame("Frame", "SVUI_ModesDockToolBar", modesDocklet)
 	modesToolBar:SetWidth(BUTTON_SIZE + 4);
@@ -456,8 +456,8 @@ function PLUGIN:Load()
 	mode1Button:SetScript('OnLeave', ModeButton_OnLeave)
 	mode1Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)

-	local ModeAlert = CreateFrame("Frame", nil, RightSuperDockAlert)
-	ModeAlert:SetAllPoints(RightSuperDockAlert)
+	local ModeAlert = CreateFrame("Frame", nil, SV.Dock.Right.Alert)
+	ModeAlert:SetAllPoints(SV.Dock.Right.Alert)
 	ModeAlert:SetBackdrop({
         bgFile = [[Interface\AddOns\SVUI\assets\artwork\Bars\HALFTONE]],
         edgeFile = [[Interface\BUTTONS\WHITE8X8]],
@@ -545,7 +545,7 @@ function PLUGIN:Load()
 	self.LogWindow = log
 	self.Docklet = modesDocklet

-	SV.SVDock:RegisterDocklet("SVUI_ModesDockFrame", self.TitleID, ICON_FILE, false)
+	SV.Dock:RegisterDocklet("SVUI_ModesDockFrame", self.TitleID, ICON_FILE, false)

 	self.Docklet:Hide()

diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
index a5a3c9c..512cb54 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
@@ -458,7 +458,7 @@ function PLUGIN:LoadArchaeologyMode()
 		end
 		bar:SetStatusBarColor(0.2, 0.2, 0.8, 0.5)

-		local sOffset = SV.Scale(1)
+		local sOffset = SV:Scale(1)
 		-- Race Text
 		local race = bar:CreateFontString()
 		race:SetFontObject(NumberFont_Outline_Large)
diff --git a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua
index cbbb54e..f165c40 100644
--- a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua
+++ b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua
@@ -900,7 +900,7 @@ local FightOMaticAlert_OnHide = function()
 		SV:AddonMessage(ERR_NOT_IN_COMBAT);
 		return;
 	end
-	RightSuperDockAlert:Deactivate()
+	SV.Dock.Right.Alert:Deactivate()
 end

 local FightOMaticAlert_OnShow = function(self)
@@ -910,7 +910,7 @@ local FightOMaticAlert_OnShow = function(self)
 		return;
 	end
 	SV:SecureFadeIn(self, 0.3, 0, 1)
-	RightSuperDockAlert:Activate(self)
+	SV.Dock.Right.Alert:Activate(self)
 end

 local FightOMaticAlert_OnMouseDown = function(self)
@@ -996,19 +996,19 @@ function PLUGIN:Load()
 	self.cache = self.cache or {}

 	local ALERT_HEIGHT = 60;
-	local DOCK_WIDTH = RightSuperDockFrameHolder:GetWidth();
-	local DOCK_HEIGHT = RightSuperDockFrameHolder:GetHeight();
+	local DOCK_WIDTH = SV.Dock.Right.Window:GetWidth();
+	local DOCK_HEIGHT = SV.Dock.Right.Window:GetHeight();
 	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;

 	self.HitBy = false;
 	self.Scanning = false;
 	self.InPVP = false

-	local holder = CreateFrame("Frame", "SVUI_FightOMaticDock", RightSuperDockFrameHolder)
+	local holder = CreateFrame("Frame", "SVUI_FightOMaticDock", SV.Dock.Right.Window)
 	holder:SetFrameStrata("BACKGROUND")
 	holder:SetWidth(DOCK_WIDTH - 4);
 	holder:SetHeight(DOCK_HEIGHT - 4);
-	holder:SetPoint("CENTER",RightSuperDockFrameHolder,"CENTER",0,0);
+	holder:SetPoint("CENTER",SV.Dock.Right.Window,"CENTER",0,0);

 	local toolBar = CreateFrame("Frame", "SVUI_FightOMaticToolBar", holder)
 	toolBar:SetWidth(BUTTON_SIZE + 4);
@@ -1129,7 +1129,7 @@ function PLUGIN:Load()
 	MakeUtilityWindow()
 	MakeInfoWindow()

-	SV.SVDock:RegisterDocklet("SVUI_FightOMaticDock", self.TitleID, ICON_FILE)
+	SV.Dock:RegisterDocklet("SVUI_FightOMaticDock", self.TitleID, ICON_FILE)

 	holder:Hide()

diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
index e60e56c..bfba374 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
@@ -262,91 +262,91 @@ OPTIONS CREATION
 ##########################################################
 ]]--
 local RegisterAddonDocklets = function()
-	local MAIN = _G["SVUI_AddonDock1"];
-	local EXTRA = _G["SVUI_AddonDock2"];
-	local main = SV.db.SVDock.docklets.DockletMain;
-  	local alternate = SV.db.SVDock.docklets.enableExtra and SV.db.SVDock.docklets.DockletExtra or "";
+	local MAIN = _G["SVUI_DockedAddon1"];
+	local EXTRA = _G["SVUI_DockedAddon2"];
+	local main = SV.db.Dock.docklets.DockletMain;
+  	local alternate = SV.db.Dock.docklets.enableExtra and SV.db.Dock.docklets.DockletExtra or "";
   	local tipLeft, tipRight = "", "";
   	if main == nil or main == "None" then return end

 	if find(main, "Skada") or find(alternate, "Skada") then
-		if SV.SVDock:IsDockletReady("Skada") then
+		if SV.Dock:IsDockletReady("Skada") then
 			PLUGIN:Docklet_Skada()
 			if find(alternate, "Skada") and EXTRA.FrameName  ~= "SkadaHolder2" then
 				tipRight = "and Skada";
-				SV.SVDock:RegisterExtraDocklet("SkadaHolder2")
+				SV.Dock:RegisterExtraDocklet("SkadaHolder2")
 				PLUGIN.DockedParent["Skada"] = EXTRA
 			end
 			if find(main, "Skada") and MAIN.FrameName  ~= "SkadaHolder" then
 				tipLeft = "Skada";
-				SV.SVDock:RegisterMainDocklet("SkadaHolder")
+				SV.Dock:RegisterMainDocklet("SkadaHolder")
 				PLUGIN.DockedParent["Skada"] = MAIN
 			end
 		end
 	end
 	if main == "Omen" or alternate == "Omen" then
-		if SV.SVDock:IsDockletReady("Omen") then
+		if SV.Dock:IsDockletReady("Omen") then
 			if alternate == "Omen" and EXTRA.FrameName ~= "OmenAnchor" then
 				tipRight = "and Omen";
-				SV.SVDock:RegisterExtraDocklet("OmenAnchor")
+				SV.Dock:RegisterExtraDocklet("OmenAnchor")
 				PLUGIN:Docklet_Omen(EXTRA)
 				PLUGIN.DockedParent["Omen"] = EXTRA
 			elseif MAIN.FrameName ~= "OmenAnchor" then
 				tipLeft = "Omen";
-				SV.SVDock:RegisterMainDocklet("OmenAnchor")
+				SV.Dock:RegisterMainDocklet("OmenAnchor")
 				PLUGIN:Docklet_Omen(MAIN)
 				PLUGIN.DockedParent["Omen"] = MAIN
 			end
 		end
 	end
 	if main == "Recount" or alternate == "Recount" then
-		if SV.SVDock:IsDockletReady("Recount") then
+		if SV.Dock:IsDockletReady("Recount") then
 			if alternate == "Recount" and EXTRA.FrameName ~= "Recount_MainWindow" then
 				tipRight = "and Recount";
-				SV.SVDock:RegisterExtraDocklet("Recount_MainWindow")
+				SV.Dock:RegisterExtraDocklet("Recount_MainWindow")
 				PLUGIN:Docklet_Recount(EXTRA)
 				PLUGIN.DockedParent["Recount"] = EXTRA
 			elseif MAIN.FrameName ~= "Recount_MainWindow" then
 				tipLeft = "Recount";
-				SV.SVDock:RegisterMainDocklet("Recount_MainWindow")
+				SV.Dock:RegisterMainDocklet("Recount_MainWindow")
 				PLUGIN:Docklet_Recount(MAIN)
 				PLUGIN.DockedParent["Recount"] = MAIN
 			end
 		end
 	end
 	if main == "TinyDPS" or alternate == "TinyDPS" then
-		if SV.SVDock:IsDockletReady("TinyDPS") then
+		if SV.Dock:IsDockletReady("TinyDPS") then
 			if alternate == "TinyDPS" and EXTRA.FrameName ~= "tdpsFrame" then
 				tipRight = "and TinyDPS";
-				SV.SVDock:RegisterExtraDocklet("tdpsFrame")
+				SV.Dock:RegisterExtraDocklet("tdpsFrame")
 				PLUGIN:Docklet_TinyDPS(EXTRA)
 				PLUGIN.DockedParent["TinyDPS"] = EXTRA
 			elseif MAIN.FrameName ~= "tdpsFrame" then
 				tipLeft = "TinyDPS";
-				SV.SVDock:RegisterMainDocklet("tdpsFrame")
+				SV.Dock:RegisterMainDocklet("tdpsFrame")
 				PLUGIN:Docklet_TinyDPS(MAIN)
 				PLUGIN.DockedParent["TinyDPS"] = MAIN
 			end
 		end
 	end
 	if main == "alDamageMeter" or alternate == "alDamageMeter" then
-		if SV.SVDock:IsDockletReady("alDamageMeter") then
+		if SV.Dock:IsDockletReady("alDamageMeter") then
 			if alternate == "alDamageMeter" and EXTRA.FrameName ~= "alDamagerMeterFrame" then
 				tipRight = "and alDamageMeter";
-				SV.SVDock:RegisterExtraDocklet("alDamagerMeterFrame")
+				SV.Dock:RegisterExtraDocklet("alDamagerMeterFrame")
 				PLUGIN:Docklet_alDamageMeter(EXTRA)
 				PLUGIN.DockedParent["alDamageMeter"] = EXTRA
 			elseif MAIN.FrameName ~= "alDamagerMeterFrame" then
 				tipLeft = "alDamageMeter";
-				SV.SVDock:RegisterMainDocklet("alDamagerMeterFrame")
+				SV.Dock:RegisterMainDocklet("alDamagerMeterFrame")
 				PLUGIN:Docklet_alDamageMeter(MAIN)
 				PLUGIN.DockedParent["alDamageMeter"] = MAIN
 			end
 		end
 	end

-	if(_G["SVUI_AddonDocklet"]) then
-		_G["SVUI_AddonDocklet"].TText = ("%s%s"):format(tipLeft, tipRight)
+	if(SV.Dock.Right.ToolBar.AddonButton) then
+		SV.Dock.Right.ToolBar.AddonButton:SetAttribute("tipText", ("%s%s"):format(tipLeft, tipRight))
 	end
 end
 --[[
@@ -383,8 +383,8 @@ function PLUGIN:Load()
 	alert:Hide();
 	self.Alert = alert;

-	NewHook(SV.SVDock, "ReloadDocklets", RegisterAddonDocklets);
-	SV.SVDock:ReloadDocklets();
+	NewHook(SV.Dock, "ReloadDocklets", RegisterAddonDocklets);
+	SV.Dock:ReloadDocklets();

 	self:RegisterEvent("PLAYER_ENTERING_WORLD");
 	self:RegisterEvent("ADDON_LOADED");
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua
index 30c1c37..45665e5 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua
@@ -106,7 +106,7 @@ local function StyleRecount()

   PLUGIN:ApplyScrollFrameStyle(Recount_MainWindow_ScrollBarScrollBar)

-  Recount_MainWindow:HookScript('OnShow', function(self) if InCombatLockdown() then return end if SV.CurrentlyDocked["Recount_MainWindow"] then RightSuperDockFrameHolder:Show() end end)
+  Recount_MainWindow:HookScript('OnShow', function(self) if InCombatLockdown() then return end if SV.CurrentlyDocked["Recount_MainWindow"] then SV.Dock.Right.Window:Show() end end)
   Recount.MainWindow.FileButton:HookScript('OnClick', function(self) if LibDropdownFrame0 then PLUGIN:ApplyFrameStyle(LibDropdownFrame0) end end)

   hooksecurefunc(Recount, 'ShowScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Show() end)
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua
index f9f875b..93a629c 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua
@@ -42,13 +42,13 @@ SKADA
 ]]--
 local function CheckForHolders()
   if(not SkadaHolder) then
-    SkadaHolder = CreateFrame("Frame", "SkadaHolder", SVUI_AddonDock1)
+    SkadaHolder = CreateFrame("Frame", "SkadaHolder", SVUI_DockedAddon1)
   end
   if(not SkadaHolder2) then
-    SkadaHolder2 = CreateFrame("Frame", "SkadaHolder2", SVUI_AddonDock2)
+    SkadaHolder2 = CreateFrame("Frame", "SkadaHolder2", SVUI_DockedAddon2)
   end
-  SkadaHolder:SetSize(SVUI_AddonDock1:GetSize())
-  SkadaHolder2:SetSize(SVUI_AddonDock2:GetSize())
+  SkadaHolder:SetSize(SVUI_DockedAddon1:GetSize())
+  SkadaHolder2:SetSize(SVUI_DockedAddon2:GetSize())
 end

 local function skada_panel_loader(holder, window)
@@ -84,9 +84,9 @@ function PLUGIN:Docklet_Skada()
   for index,window in pairs(Skada:GetWindows()) do
     local wname = window.db.name or "Skada"
     local key = "SkadaBarWindow" .. wname
-    if(SVUI.db.SVDock.docklets.DockletMain == key)then
+    if(SVUI.db.Dock.docklets.DockletMain == key)then
       skada_panel_loader(SkadaHolder, window)
-    elseif(SVUI.db.SVDock.docklets.enableExtra and SVUI.db.SVDock.docklets.DockletExtra == key) then
+    elseif(SVUI.db.Dock.docklets.enableExtra and SVUI.db.Dock.docklets.DockletExtra == key) then
       skada_panel_loader(SkadaHolder2, window)
     else
       window.db.barslocked = false;
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua
index 1dbbef9..62c4fc8 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua
@@ -46,7 +46,7 @@ local function StyleTinyDPS()
 	tdpsFrame:HookScript("OnShow", function()
 		if InCombatLockdown() then return end
 		if SV.CurrentlyDocked["tdpsFrame"] then
-			RightSuperDockFrameHolder:Show()
+			SV.Dock.Right.Window:Show()
 		end
 	end)

diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua
index a68f60a..dccd32a 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua
@@ -46,7 +46,7 @@ local function StyleALDamageMeter()
   alDamageMeterFrame:HookScript('OnShow', function()
     if InCombatLockdown() then return end
     if SV.CurrentlyDocked["alDamagerMeterFrame"] then
-      RightSuperDockFrameHolder:Show()
+      SV.Dock.Right.Window:Show()
     end
   end)
 end
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
index e179438..3793a51 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
@@ -42,7 +42,7 @@ local Schema = PLUGIN.Schema;
 local LSM = LibStub("LibSharedMedia-3.0")
 local NewHook = hooksecurefunc;

-local ScaledOffset = SV.Scale(1)
+local ScaledOffset = SV:Scale(1)
 --[[
 ##########################################################
  /$$$$$$$$/$$$$$$$   /$$$$$$  /$$      /$$ /$$$$$$$$