Quantcast

5.2.6

Steven Jackson [11-26-14 - 00:37]
5.2.6
Filename
Interface/AddOns/SVUI/framework/api/api_layout.lua
Interface/AddOns/SVUI/framework/api/api_templates.lua
Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_AuraWatch/oUF_AuraWatch.lua
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.lua
Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/aura.lua
Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
Interface/AddOns/SVUI/packages/aura/SVAura.lua
Interface/AddOns/SVUI/packages/map/SVMap.lua
Interface/AddOns/SVUI/packages/plates/SVPlate.lua
Interface/AddOns/SVUI/packages/stats/SVStats.lua
Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
Interface/AddOns/SVUI/packages/tools/components/garrison.lua
Interface/AddOns/SVUI/packages/tools/components/questwatch.lua
Interface/AddOns/SVUI/packages/unit/elements/auras.lua
Interface/AddOns/SVUI/packages/unit/groups.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua
Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
diff --git a/Interface/AddOns/SVUI/framework/api/api_layout.lua b/Interface/AddOns/SVUI/framework/api/api_layout.lua
index a37486e..c09ed41 100644
--- a/Interface/AddOns/SVUI/framework/api/api_layout.lua
+++ b/Interface/AddOns/SVUI/framework/api/api_layout.lua
@@ -126,13 +126,14 @@ local _purgatory = CreateFrame("Frame", nil)
 _purgatory:Hide()

 local function Die(self)
-    if self.UnregisterAllEvents then
+    if(self.SetAtlas) then self.SetAtlas = SV.fubar end
+    if(self.UnregisterAllEvents) then
         self:UnregisterAllEvents()
         self:SetParent(_purgatory)
     else
         self:Hide()
         self.Show = SV.fubar
-    end
+    end
 end

 local function RemoveTextures(self, option)
diff --git a/Interface/AddOns/SVUI/framework/api/api_templates.lua b/Interface/AddOns/SVUI/framework/api/api_templates.lua
index 8db352e..a7dc2a1 100644
--- a/Interface/AddOns/SVUI/framework/api/api_templates.lua
+++ b/Interface/AddOns/SVUI/framework/api/api_templates.lua
@@ -276,14 +276,16 @@ end
 COOLDOWN HELPER
 ##########################################################
 ]]--
-local function CreateCooldown(button)
+local function CreateCooldown(button, muted)
     local cooldown = button:GetName() and _G[button:GetName().."Cooldown"]
     if(cooldown) then
         if(not SV.db.general or (SV.db.general and (not SV.db.general.cooldown))) then return end
         cooldown:ClearAllPoints()
         cooldown:FillInner()
-        cooldown:SetSwipeColor(0, 0, 0, 1)
-        cooldown:SetHideCountdownNumbers(true)
+        cooldown:SetDrawEdge(false)
+        if(not muted) then
+            cooldown:SetSwipeColor(0, 0, 0, 1)
+        end

         if(not cooldown.HookedCooldown) then
             hooksecurefunc(cooldown, "SetCooldown", _hook_Cooldown_SetCooldown)
@@ -410,7 +412,7 @@ local function CreatePanelTemplate(frame, templateName, underlay, noupdate, padd
     end
 end

-local function CreateButtonPanel(frame, noChecked, brightChecked)
+local function CreateButtonPanel(frame, noChecked, brightChecked, mutedCooldown)

     if(frame.Left) then
         frame.Left:SetAlpha(0)
@@ -475,7 +477,7 @@ local function CreateButtonPanel(frame, noChecked, brightChecked)
         frame:SetCheckedTexture(frame.checked)
     end

-    CreateCooldown(frame)
+    CreateCooldown(frame, mutedCooldown)
 end
 --[[
 ##########################################################
@@ -715,11 +717,11 @@ local function SetButtonTemplate(self, invisible, overridePadding, xOffset, yOff
     CreateCooldown(self)
 end

-local function SetSlotTemplate(self, underlay, padding, x, y, shadowAlpha)
+local function SetSlotTemplate(self, underlay, padding, x, y, shadowAlpha, mutedCooldown)
     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)
+    CreateButtonPanel(self, true, nil, mutedCooldown)
     if(shadowAlpha) then
         self.Panel.Shadow:SetAttribute("shadowAlpha", shadowAlpha)
     end
@@ -740,15 +742,6 @@ local function SetCheckboxTemplate(self, shrink, x, y)
     self:SetSize(width, height)

     CreatePanelTemplate(self, "Inset", true, true, 1, x, y)
-    --CreateButtonPanel(self, false, true)
-
-    -- hooksecurefunc(self, "SetChecked", function(self, checked)
-    --     local r,g,b = 0,0,0
-    --     if(checked == true) then
-    --         r,g,b = self:GetCheckedTexture():GetVertexColor()
-    --     end
-    --     self:SetBackdropBorderColor(r,g,b)
-    -- end)
 end

 local function SetEditboxTemplate(self, x, y, fixed)
diff --git a/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua b/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua
index 53fec21..27d6ca9 100644
--- a/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua
+++ b/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua
@@ -1005,6 +1005,13 @@ function Mentalo:Initialize()
 	MentaloDraggablesUpdate(self)

 	self:SetPositions()
+
+	--PET JOURNAL TAINT FIX (STILL NEEDED?)
+	local info = UIPanelWindows["PetJournalParent"];
+	for name, value in pairs(info) do
+		PetJournalParent:SetAttribute("UIPanelLayout-"..name, value);
+	end
+	PetJournalParent:SetAttribute("UIPanelLayout-defined", true);
 end

 SV.Mentalo = Mentalo
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_AuraWatch/oUF_AuraWatch.lua b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_AuraWatch/oUF_AuraWatch.lua
index d2bd366..3e83575 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_AuraWatch/oUF_AuraWatch.lua
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_AuraWatch/oUF_AuraWatch.lua
@@ -216,7 +216,7 @@ local function setupIcons(self)
 			icon.name = name

 			if not icon.cd and not (watch.hideCooldown or icon.hideCooldown) then
-				local cd = CreateFrame("Cooldown", nil, icon)
+				local cd = CreateFrame("Cooldown", nil, icon, "CooldownFrameTemplate")
 				cd:SetAllPoints(icon)
 				icon.cd = cd
 			end
diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.lua b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.lua
index f95e27d..833d224 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.lua
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.lua
@@ -134,7 +134,7 @@ local Enable = function(self, unit)
 			self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED", Update)
 			self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED", Update)
 			if not trinket.CD then
-				trinket.CD = CreateFrame("Cooldown", nil, trinket)
+				trinket.CD = CreateFrame("Cooldown", nil, trinket, "CooldownFrameTemplate")
 				trinket.CD:SetAllPoints(trinket)
 			end

diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/aura.lua b/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/aura.lua
index ccaba42..e723054 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/aura.lua
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/aura.lua
@@ -30,24 +30,15 @@ local createAuraIcon = function(icons, index)
 	button:SetWidth(icons.size or 16)
 	button:SetHeight(icons.size or 16)

-	local cd = CreateFrame("Cooldown", nil, button)
-	cd:SetPoint("TOPLEFT", button, "TOPLEFT", 1, -1)
-	cd:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -1, 1)
+	local cd = CreateFrame("Cooldown", nil, button, "CooldownFrameTemplate")
+	cd:SetAllPoints(button)

-	local text = cd:CreateFontString(nil, "OVERLAY")
-	text:SetFont(icons.textFont or [[Fonts\FRIZQT__.TTF]], icons.textSize or 10, icons.textOutline or "NONE")
-	text:SetPoint("CENTER", 1, 1)
-	text:SetJustifyH("CENTER")
-
-	local icon = button:CreateTexture(nil, "ARTWORK")
-	icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	icon:SetPoint("TOPLEFT", button, "TOPLEFT", 1, -1)
-	icon:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -1, 1)
+	local icon = button:CreateTexture(nil, "BORDER")
+	icon:SetAllPoints(button)

 	local count = button:CreateFontString(nil, "OVERLAY")
-	count:SetFont(icons.textFont or [[Fonts\FRIZQT__.TTF]], icons.textSize or 10, icons.textOutline or "NONE")
+	count:SetFontObject(NumberFontNormal)
 	count:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -1, 0)
-	count:SetJustifyH("RIGHT")

 	local overlay = button:CreateTexture(nil, "OVERLAY")
 	overlay:SetTexture"Interface\\Buttons\\UI-Debuff-Overlays"
@@ -72,7 +63,6 @@ local createAuraIcon = function(icons, index)
 	button.icon = icon
 	button.count = count
 	button.cd = cd
-	button.text = text

 	if(icons.PostCreateIcon) then icons:PostCreateIcon(button) end

diff --git a/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua b/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
index 3f7a44d..f46681c 100644
--- a/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
+++ b/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
@@ -263,7 +263,7 @@ local function SaveActionButton(parent)
 	end
 	MOD:FixKeybindText(parent)
 	MOD.ButtonCache[parent] = true
-	parent:SetSlotTemplate(true, 2, 0, 0, 0.75)
+	parent:SetSlotTemplate(true, 2, 0, 0, 0.75, true)
 	parent:SetCheckedTexture("")
 end

@@ -633,7 +633,7 @@ do
 	local Button_OnEnter = function(self)
 		local parent = self:GetParent()
 		if parent and parent._fade then
-			if self.cd then
+			if(self.cd) then
 				self.cd:SetSwipeColor(0, 0, 0, 1)
 				self.cd:SetDrawBling(true)
 			end
@@ -645,7 +645,7 @@ do
 		local parent = self:GetParent()
 		GameTooltip:Hide()
 		if parent and parent._fade then
-			if self.cd then
+			if(self.cd) then
 				self.cd:SetSwipeColor(0, 0, 0, 0)
 				self.cd:SetDrawBling(false)
 			end
@@ -670,14 +670,23 @@ do

 			if(selfcast) then
 				button:SetAttribute("unit2", "player")
-			end
+			end
+
+			if(bar._fade) then
+				if button.cd then
+					button.cd:SetSwipeColor(0, 0, 0, 0)
+					button.cd:SetDrawBling(false)
+				end
+			else
+				if button.cd then
+					button.cd:SetSwipeColor(0, 0, 0, 1)
+					button.cd:SetDrawBling(true)
+				end
+			end

-			if(not button._hookFade) then
+			if(not button._hookFade) then
 				button:HookScript('OnEnter', Button_OnEnter)
 				button:HookScript('OnLeave', Button_OnLeave)
-				-- if(hideByScale) then
-				-- 	NewHook(button, "SetAlpha", function(self) print(self:GetName());print(self:GetAlpha()) end)
-				-- end
 				button._hookFade = true;
 			end

diff --git a/Interface/AddOns/SVUI/packages/aura/SVAura.lua b/Interface/AddOns/SVUI/packages/aura/SVAura.lua
index f8a39f9..8e7ce52 100644
--- a/Interface/AddOns/SVUI/packages/aura/SVAura.lua
+++ b/Interface/AddOns/SVUI/packages/aura/SVAura.lua
@@ -103,6 +103,9 @@ local AURA_ICONS = {
 	[[Interface\Addons\SVUI\assets\artwork\Icons\AURA-MULTISTRIKE]],
 	[[Interface\Addons\SVUI\assets\artwork\Icons\AURA-VERSATILITY]]
 };
+
+local BASIC_TEXTURE = [[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]];
+
 -- local RefHyperBuffs = {
 -- 	[1]={1126,115921,20217},
 -- 	[2]={21562,109773,469},
@@ -208,7 +211,7 @@ do
 			if name then
 				if val > 0 and expires then
 					local timeLeft = expires - GetTime()
-					if not self.timeLeft then
+					if(not self.timeLeft) then
 						self.timeLeft = timeLeft;
 						self:SetScript("OnUpdate", RefreshAuraTime)
 					else
@@ -241,15 +244,16 @@ do
 			self.texture:SetTexture(tex)
 			local offset = 2;
 			local enchantIndex = self:GetName():sub(-1)
-			if enchantIndex:match("2") then
+			if(enchantIndex:match("2")) then
 				offset = 5
 			end

+			if(quality) then
+				self:SetBackdropBorderColor(GetItemQualityColor(quality))
+			end
+
 			local enchantInfo = select(offset, GetWeaponEnchantInfo())
-			if(enchantInfo) then
-				if quality then
-					self:SetBackdropBorderColor(GetItemQualityColor(quality))
-				end
+			if(enchantInfo) then
 				self.offset = offset;
 				self:SetScript("OnUpdate", RefreshAuraTime)
 				self.nextUpdate = -1;
@@ -265,48 +269,43 @@ do
 	end

 	function MOD:CreateIcon(aura)
-		if(not aura.Skinned) then
-			if aura.SetNormalTexture then aura:SetNormalTexture("") end
-			if aura.SetHighlightTexture then aura:SetHighlightTexture("") end
-			if aura.SetPushedTexture then aura:SetPushedTexture("") end
-			if aura.SetDisabledTexture then aura:SetDisabledTexture("") end
-			aura:SetBackdrop({
-				bgFile = [[Interface\BUTTONS\WHITE8X8]],
-				tile = false,
-				tileSize = 0,
-				edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-				edgeSize = 2,
-				insets = {
-					left = 0,
-					right = 0,
-					top = 0,
-					bottom = 0
-				}
-			 })
-		 	aura:SetBackdropColor(0, 0, 0)
-		 	aura:SetBackdropBorderColor(0, 0, 0)
-		 	local cd = aura:GetName() and _G[aura:GetName().."Cooldown"]
-			if cd then
-				cd:ClearAllPoints()
-				cd:FillInner(aura, 0, 0)
-			end
-			aura.Skinned = true
-		end
-
 		local font = LSM:Fetch("font", SV.db.SVAura.font)
+
+		aura:SetBackdrop({
+			bgFile = [[Interface\BUTTONS\WHITE8X8]],
+			tile = false,
+			tileSize = 0,
+			edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+			edgeSize = 2,
+			insets = {
+				left = 0,
+				right = 0,
+				top = 0,
+				bottom = 0
+			}
+		 })
+	 	aura:SetBackdropColor(0, 0, 0)
+	 	aura:SetBackdropBorderColor(0, 0, 0)
+
 		aura.texture = aura:CreateTexture(nil, "BORDER")
 		aura.texture:FillInner(aura, 2, 2)
 		aura.texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+
 		aura.count = aura:CreateFontString(nil, "ARTWORK")
 		aura.count:SetPoint("BOTTOMRIGHT", (-1 + SV.db.SVAura.countOffsetH), (1 + SV.db.SVAura.countOffsetV))
 		aura.count:FontManager(font, SV.db.SVAura.fontSize, SV.db.SVAura.fontOutline)
+
 		aura.time = aura:CreateFontString(nil, "ARTWORK")
 		aura.time:SetPoint("TOP", aura, "BOTTOM", 1 + SV.db.SVAura.timeOffsetH, 0 + SV.db.SVAura.timeOffsetV)
 		aura.time:FontManager(font, SV.db.SVAura.fontSize, SV.db.SVAura.fontOutline)
+
 		aura.highlight = aura:CreateTexture(nil, "HIGHLIGHT")
-		aura.highlight:SetTexture(0, 0, 0, 0.45)
-		aura.highlight:FillInner()
+		aura.highlight:SetTexture(BASIC_TEXTURE)
+		aura.highlight:SetVertexColor(1, 1, 1, 0.45)
+		aura.highlight:FillInner(aura, 2, 2)
+
 		SV.Animate:Flash(aura)
+
 		aura:SetScript("OnAttributeChanged", Aura_OnAttributeChanged)
 	end
 end
@@ -487,14 +486,14 @@ function MOD:UpdateAuraHeader(auraHeader, auraType)
 	local showBy = db.showBy
 	local font = LSM:Fetch("font", SV.db.SVAura.font)

-	if auraType == "buffs" then
+	if(auraType == "buffs") then
 		auraHeader:SetAttribute("consolidateTo", SV.db.SVAura.hyperBuffs.enable == true and 1 or 0)
 		auraHeader:SetAttribute("weaponTemplate", ("SVUI_AuraTemplate%d"):format(db.size))
 	end

 	auraHeader:SetAttribute("separateOwn", db.isolate)
 	auraHeader:SetAttribute("sortMethod", db.sortMethod)
-	auraHeader:SetAttribute("sortDir", db.sortDir)
+	auraHeader:SetAttribute("sortDirection", db.sortDir)
 	auraHeader:SetAttribute("maxWraps", db.maxWraps)
 	auraHeader:SetAttribute("wrapAfter", db.wrapAfter)

diff --git a/Interface/AddOns/SVUI/packages/map/SVMap.lua b/Interface/AddOns/SVUI/packages/map/SVMap.lua
index be789bf..d6ec9c2 100644
--- a/Interface/AddOns/SVUI/packages/map/SVMap.lua
+++ b/Interface/AddOns/SVUI/packages/map/SVMap.lua
@@ -837,11 +837,6 @@ function MOD:Load()
 	Minimap:SetScript("OnMouseWheel", MiniMap_MouseWheel)
 	Minimap:SetScript("OnMouseUp", MiniMap_MouseUp)

-	local info = UIPanelWindows["PetJournalParent"];
-	for name, value in pairs(info) do
-		PetJournalParent:SetAttribute("UIPanelLayout-"..name, value);
-	end
-	PetJournalParent:SetAttribute("UIPanelLayout-defined", true);
 	SV.Mentalo:Add(mapHolder, L["Minimap"])

 	if(SV.db.SVMap.tinyWorldMap) then
diff --git a/Interface/AddOns/SVUI/packages/plates/SVPlate.lua b/Interface/AddOns/SVUI/packages/plates/SVPlate.lua
index b0b7783..fe1f198 100644
--- a/Interface/AddOns/SVUI/packages/plates/SVPlate.lua
+++ b/Interface/AddOns/SVUI/packages/plates/SVPlate.lua
@@ -877,33 +877,36 @@ do
 	function UpdatePlateElements(plate, frame)
 		ColorizeAndScale(plate, frame)
 		local region = select(4, plate:GetRegions())
-		if region and region:GetObjectType() == 'FontString' then
+		if(region and region:GetObjectType() == 'FontString') then
 			plate.ref.level = region
 		end
-		if plate.ref.level:IsShown() then
+
+		if(plate.ref.level:IsShown()) then
 			local level = plate.ref.level:GetObjectType() == 'FontString' and tonumber(plate.ref.level:GetText()) or nil
 			local elite, boss, mylevel = plate.ref.eliteicon:IsShown(), plate.ref.skullicon:IsShown(), UnitLevel("player")
 			frame.health.eliteborder:Hide()
-			if boss then
+			if(boss) then
 				frame.level:SetText("??")
 				frame.level:SetTextColor(0.8, 0.05, 0)
 				frame.health.eliteborder:Show()
-			elseif level then
+			elseif(level) then
 				frame.level:SetText(level..(elite and "+" or ""))
 				frame.level:SetTextColor(plate.ref.level:GetTextColor())
 				if(elite) then frame.health.eliteborder:Show() end
 			end
-		elseif plate.ref.skullicon:IsShown() and frame.level:GetText() ~= '??' then
+		elseif(plate.ref.skullicon:IsShown() and frame.level:GetText() ~= '??') then
 			frame.level:SetText("??")
 			frame.level:SetTextColor(0.8, 0.05, 0)
 		end
+
 		if plate.setting.tiny then
 			frame.level:SetText("")
 			frame.level:Hide()
-		elseif not frame.level:IsShown() then
+		elseif(not frame.level:IsShown()) then
 			frame.level:Show()
 		end
-		if frame.name.SetText then
+
+		if(frame.name.SetText) then
 			frame.name:SetText(plate.name:GetText())
 		end
 	end
diff --git a/Interface/AddOns/SVUI/packages/stats/SVStats.lua b/Interface/AddOns/SVUI/packages/stats/SVStats.lua
index 2339abb..e44b31e 100644
--- a/Interface/AddOns/SVUI/packages/stats/SVStats.lua
+++ b/Interface/AddOns/SVUI/packages/stats/SVStats.lua
@@ -357,27 +357,34 @@ do
 				parent:RegisterEvent(event)
 			end
 		end
+
 		if config["event_handler"]then
 			parent:SetScript("OnEvent", config["event_handler"])
 			config["event_handler"](parent, "SVUI_FORCE_RUN")
 		end
+
 		if config["update_handler"]then
 			parent:SetScript("OnUpdate", config["update_handler"])
 			config["update_handler"](parent, 20000)
 		end
+
 		if config["click_handler"]then
 			parent.onClick = config["click_handler"]
 		end
 		parent:SetScript("OnClick", Parent_OnClick)
+
 		if config["focus_handler"]then
 			parent:SetScript("OnEnter", config["focus_handler"])
 		end
+
 		if config["blur_handler"]then
 			parent:SetScript("OnLeave", config["blur_handler"])
 		else
 			parent:SetScript("OnLeave", Stat_OnLeave)
 		end
+
 		parent:Show()
+
 		if config["init_handler"]then
 			config["init_handler"](parent)
 		end
@@ -576,7 +583,7 @@ function MOD:Load()
 	self.Accountant[playerRealm]["gold"] = self.Accountant[playerRealm]["gold"] or {};
 	self.Accountant[playerRealm]["gold"][playerName] = self.Accountant[playerRealm]["gold"][playerName] or 0;
 	self.Accountant[playerRealm]["tokens"] = self.Accountant[playerRealm]["tokens"] or {};
-	self.Accountant[playerRealm]["tokens"][playerName] = self.Accountant[playerRealm]["tokens"][playerName] or 738;
+	self.Accountant[playerRealm]["tokens"][playerName] = self.Accountant[playerRealm]["tokens"][playerName] or {};

 	self:NewAnchor(SV.Dock.BottomCenter.Left, 3, "ANCHOR_CURSOR")
 	self:NewAnchor(SV.Dock.BottomCenter.Right, 3, "ANCHOR_CURSOR")
@@ -585,7 +592,6 @@ function MOD:Load()

 	self:LoadServerGold()
 	self:CacheRepData()
-	self:CacheTokenData()

 	self.tooltip:SetParent(SV.Screen)
 	self.tooltip:SetFrameStrata("DIALOG")
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua b/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
index db26bed..af41ed9 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
@@ -43,8 +43,6 @@ local playerName = UnitName("player");
 local playerRealm = GetRealmName();

 local TokenEvents = {'PLAYER_ENTERING_WORLD','PLAYER_MONEY','CURRENCY_DISPLAY_UPDATE'};
-local TokenMenuList = {};
-local TokenParent;

 local function TokenInquiry(id, weekly, capped)
   local name, amount, tex, week, weekmax, maxed, discovered = GetCurrencyInfo(id)
@@ -80,73 +78,73 @@ end

 local function TokensEventHandler(self, event,...)
     if not IsLoggedIn() or not self then return end
-    local id = MOD.Accountant[playerRealm]["tokens"][playerName];
+    local id = MOD.Accountant[playerRealm]["tokens"][playerName][self.TokenStatIndex];
     local _, current, tex = GetCurrencyInfo(id)
     local currentText = ("\124T%s:12\124t %s"):format(tex, current);
     self.text:SetText(currentText)
 end

-local function AddToTokenMenu(id)
+local function AddToTokenMenu(self, id)
 	local name, _, tex, _, _, _, _ = GetCurrencyInfo(id)
 	local itemName = "\124T"..tex..":12\124t "..name;
 	local fn = function()
-		MOD.Accountant[playerRealm]["tokens"][playerName] = id;
-		TokensEventHandler(TokenParent)
+		MOD.Accountant[playerRealm]["tokens"][playerName][self.TokenStatIndex] = id;
+		TokensEventHandler(self)
 	end
-	tinsert(TokenMenuList, {text = itemName, func = fn});
+	tinsert(self.TokenMenuList, {text = itemName, func = fn});
 end

-function MOD:CacheTokenData()
-    twipe(TokenMenuList)
+local function CacheTokenData(self)
+    twipe(self.TokenMenuList)
     local prof1, prof2, archaeology, _, cooking = GetProfessions()
     if archaeology then
-        AddToTokenMenu(398)
-        AddToTokenMenu(384)
-        AddToTokenMenu(393)
-        AddToTokenMenu(677)
-        AddToTokenMenu(400)
-        AddToTokenMenu(394)
-        AddToTokenMenu(397)
-        AddToTokenMenu(676)
-        AddToTokenMenu(401)
-        AddToTokenMenu(385)
-        AddToTokenMenu(399)
-        AddToTokenMenu(821)
-        AddToTokenMenu(829)
-        AddToTokenMenu(944)
+        AddToTokenMenu(self, 398)
+        AddToTokenMenu(self, 384)
+        AddToTokenMenu(self, 393)
+        AddToTokenMenu(self, 677)
+        AddToTokenMenu(self, 400)
+        AddToTokenMenu(self, 394)
+        AddToTokenMenu(self, 397)
+        AddToTokenMenu(self, 676)
+        AddToTokenMenu(self, 401)
+        AddToTokenMenu(self, 385)
+        AddToTokenMenu(self, 399)
+        AddToTokenMenu(self, 821)
+        AddToTokenMenu(self, 829)
+        AddToTokenMenu(self, 944)
     end
     if cooking then
-        AddToTokenMenu(81)
-        AddToTokenMenu(402)
+        AddToTokenMenu(self, 81)
+        AddToTokenMenu(self, 402)
     end
     if(prof1 == 9 or prof2 == 9) then
-        AddToTokenMenu(61)
-        AddToTokenMenu(361)
-        AddToTokenMenu(698)
-
-        AddToTokenMenu(910)
-        AddToTokenMenu(999)
-        AddToTokenMenu(1020)
-        AddToTokenMenu(1008)
-        AddToTokenMenu(1017)
+        AddToTokenMenu(self, 61)
+        AddToTokenMenu(self, 361)
+        AddToTokenMenu(self, 698)
+
+        AddToTokenMenu(self, 910)
+        AddToTokenMenu(self, 999)
+        AddToTokenMenu(self, 1020)
+        AddToTokenMenu(self, 1008)
+        AddToTokenMenu(self, 1017)
     end
-    AddToTokenMenu(697, false, true)
-    AddToTokenMenu(738)
-    AddToTokenMenu(615)
-    AddToTokenMenu(614)
-    AddToTokenMenu(395, false, true)
-    AddToTokenMenu(396, false, true)
-    AddToTokenMenu(390, true)
-    AddToTokenMenu(392, false, true)
-    AddToTokenMenu(391)
-    AddToTokenMenu(241)
-    AddToTokenMenu(416)
-    AddToTokenMenu(515)
-    AddToTokenMenu(776)
-    AddToTokenMenu(777)
-    AddToTokenMenu(789)
-    AddToTokenMenu(823)
-    AddToTokenMenu(824)
+    AddToTokenMenu(self, 697, false, true)
+    AddToTokenMenu(self, 738)
+    AddToTokenMenu(self, 615)
+    AddToTokenMenu(self, 614)
+    AddToTokenMenu(self, 395, false, true)
+    AddToTokenMenu(self, 396, false, true)
+    AddToTokenMenu(self, 390, true)
+    AddToTokenMenu(self, 392, false, true)
+    AddToTokenMenu(self, 391)
+    AddToTokenMenu(self, 241)
+    AddToTokenMenu(self, 416)
+    AddToTokenMenu(self, 515)
+    AddToTokenMenu(self, 776)
+    AddToTokenMenu(self, 777)
+    AddToTokenMenu(self, 789)
+    AddToTokenMenu(self, 823)
+    AddToTokenMenu(self, 824)
 end

 local function Tokens_OnEnter(self)
@@ -223,9 +221,15 @@ local function Tokens_OnEnter(self)
 end

 local function Tokens_OnClick(self, button)
-	TokenParent = self;
-  MOD:CacheTokenData()
-	SV.Dropdown:Open(self, TokenMenuList)
-end
+  CacheTokenData(self);
+	SV.Dropdown:Open(self, self.TokenMenuList)
+end
+
+local function Tokens_OnInit(self)
+  self.TokenStatIndex = self:GetName()
+  self.TokenMenuList = {};
+  MOD.Accountant[playerRealm]["tokens"][playerName][self.TokenStatIndex] = MOD.Accountant[playerRealm]["tokens"][playerName][self.TokenStatIndex] or 738;
+  CacheTokenData(self);
+end

-MOD:Extend('Tokens', TokenEvents, TokensEventHandler, nil,  Tokens_OnClick,  Tokens_OnEnter)
\ No newline at end of file
+MOD:Extend('Tokens', TokenEvents, TokensEventHandler, nil,  Tokens_OnClick,  Tokens_OnEnter, nil, Tokens_OnInit)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/tools/components/garrison.lua b/Interface/AddOns/SVUI/packages/tools/components/garrison.lua
index ff827b0..539f00d 100644
--- a/Interface/AddOns/SVUI/packages/tools/components/garrison.lua
+++ b/Interface/AddOns/SVUI/packages/tools/components/garrison.lua
@@ -311,6 +311,6 @@ function MOD:UpdateGarrisonTool()
 end

 function MOD:LoadGarrisonTool()
-	if((not SV.db.SVTools.garrison) or self.GarrisonLoaded) then return end
+	if((not SV.db.SVTools.garrison) or self.GarrisonLoaded or (not GarrisonLandingPageMinimapButton)) then return end
 	SV.Timers:ExecuteTimer(LoadToolBarGarrison, 5)
 end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/tools/components/questwatch.lua b/Interface/AddOns/SVUI/packages/tools/components/questwatch.lua
index 879d79f..e916ddb 100644
--- a/Interface/AddOns/SVUI/packages/tools/components/questwatch.lua
+++ b/Interface/AddOns/SVUI/packages/tools/components/questwatch.lua
@@ -85,6 +85,26 @@ function MOD:QUEST_AUTOCOMPLETE(event)
 	end
 end

+local ShowSubDocklet = function(self)
+	local frame  = self.FrameLink
+	if(frame and frame.Show) then
+		if(InCombatLockdown() and (frame.IsProtected and frame:IsProtected())) then return end
+		if(not frame:IsShown()) then
+			frame:Show()
+		end
+	end
+end
+
+local HideSubDocklet = function(self)
+	local frame  = self.FrameLink
+	if(frame and frame.Hide) then
+		if(InCombatLockdown() and (frame.IsProtected and frame:IsProtected())) then return end
+		if(frame:IsShown()) then
+			frame:Hide()
+		end
+	end
+end
+
 function MOD:LoadQuestWatch()
 	local ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame

@@ -99,7 +119,6 @@ function MOD:LoadQuestWatch()

 		ObjectiveTrackerFrame:ClearAllPoints()
 		ObjectiveTrackerFrame:SetClampedToScreen(false)
-		ObjectiveTrackerFrame:SetParent(self.QuestWatch)
 		ObjectiveTrackerFrame:SetAllPoints(self.QuestWatch)
 		ObjectiveTrackerFrame:SetFrameLevel(self.QuestWatch:GetFrameLevel()  +  1)
 		ObjectiveTrackerFrame.ClearAllPoints = SV.fubar;
@@ -170,7 +189,6 @@ function MOD:LoadQuestWatch()

 		ObjectiveTrackerFrame:ClearAllPoints()
 		ObjectiveTrackerFrame:SetClampedToScreen(false)
-		ObjectiveTrackerFrame:SetParent(listFrame)
 		ObjectiveTrackerFrame:SetHeight(500)
 		ObjectiveTrackerFrame:SetWidth(WIDTH)
 		ObjectiveTrackerFrame:SetPoint("TOPRIGHT", listFrame, "TOPRIGHT", -31, 0)
@@ -212,5 +230,9 @@ function MOD:LoadQuestWatch()
 		self.QuestWatch.DockButton:MakeDefault();
 		self.QuestWatch:Show();
 		self:RegisterEvent("QUEST_AUTOCOMPLETE");
+
+		self.QuestWatch.FrameLink = ObjectiveTrackerFrame
+		self.QuestWatch:SetScript('OnShow', ShowSubDocklet);
+		self.QuestWatch:SetScript('OnHide', HideSubDocklet);
 	end
 end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/elements/auras.lua b/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
index faed861..94a8766 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
@@ -70,6 +70,7 @@ local CustomAuraFilter,CustomBarFilter;
 local AURA_FONT = [[Interface\AddOns\SVUI\assets\fonts\Display.ttf]];
 local AURA_FONTSIZE = 11;
 local AURA_OUTLINE = "OUTLINE";
+local BASIC_TEXTURE = [[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]];
 local shadowTex = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]];
 local counterOffsets = {
 	["TOPLEFT"] = {6, 1},
@@ -96,7 +97,7 @@ local textCounterOffsets = {
 LOCAL FUNCTIONS
 ##########################################################
 ]]--
-local AuraRemover_OnClick = function(self)
+local AuraIcon_OnClick = function(self)
 	if not IsShiftKeyDown() then return end
 	local name = self.name;
 	if name then
@@ -106,35 +107,31 @@ local AuraRemover_OnClick = function(self)
 	end
 end

-local AuraBarRemover_OnClick = function(self)
-	if not IsShiftKeyDown() then return end
-	local name = self:GetParent().aura.name
-	if name then
-		SV:AddonMessage((L["The spell '%s' has been added to the Blocked unitframe aura filter."]):format(name))
-		SV.filters["Blocked"][name] = {["enable"] = true, ["priority"] = 0}
-		MOD:RefreshUnitFrames()
-	end
+local AuraIcon_OnEnter = function(self)
+	if(not self:IsVisible()) then return end
+
+	GameTooltip:SetOwner(self, "ANCHOR_BOTTOMRIGHT")
+	self:UpdateTooltip()
 end

-local PostCreateAuraBars = function(self)
-	self.iconHolder:RegisterForClicks("RightButtonUp")
-	self.iconHolder:SetScript("OnClick", AuraBarRemover_OnClick)
-end
+local AuraIcon_OnLeave = function()
+	GameTooltip:Hide()
+end

-local PostCreateAuraIcon = function(self, aura)
-	aura.cd.noOCC = true;
-	aura.cd.noCooldownCount = true;
-	aura.cd:SetReverse(true)
-	aura.overlay:SetTexture(0,0,0,0)
-	aura.stealable:SetTexture(0,0,0,0)
-
-    if aura.styled then return end
-    if aura.SetNormalTexture then aura:SetNormalTexture("") end
-	if aura.SetHighlightTexture then aura:SetHighlightTexture("") end
-	if aura.SetPushedTexture then aura:SetPushedTexture("") end
-	if aura.SetDisabledTexture then aura:SetDisabledTexture("") end
+local Aura_UpdateTooltip = function(self)
+	GameTooltip:SetUnitAura(self.parent.__owner.unit, self:GetID(), self.filter)
+end
+
+local CreateAuraIcon = function(icons, index)
+	local aura = CreateFrame("Button", nil, icons)
+	aura:RemoveTextures()
+	aura:EnableMouse(true)
+	aura:RegisterForClicks('RightButtonUp')

-    aura:SetBackdrop({
+	aura:SetWidth(icons.size or 16)
+	aura:SetHeight(icons.size or 16)
+
+	aura:SetBackdrop({
     	bgFile = [[Interface\BUTTONS\WHITE8X8]],
 		tile = false,
 		tileSize = 0,
@@ -149,110 +146,120 @@ local PostCreateAuraIcon = function(self, aura)
     })
     aura:SetBackdropColor(0, 0, 0, 0)
     aura:SetBackdropBorderColor(0, 0, 0)
-    aura.icon:FillInner(aura, 1, 1)
-    aura.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-    aura:RegisterForClicks("RightButtonUp")
-	aura:SetScript("OnClick", AuraRemover_OnClick)
-	aura.styled = true
-end

-local ColorizeAuraBars = function(self)
-	local bars = self.bars;
-	for i = 1, #bars do
-		local auraBar = bars[i]
-		if not auraBar:IsVisible()then break end
-		local color
-		local spellName = auraBar.statusBar.aura.name;
-		local spellID = auraBar.statusBar.aura.spellID;
-		if(SV.filters["Defense"][spellName]) then
-			color = oUF_Villain.colors.shield_bars
-		elseif(SV.db.media.unitframes.spellcolor[spellName]) then
-			color = SV.db.media.unitframes.spellcolor[spellName]
-		end
-		if color then
-			auraBar.statusBar:SetStatusBarColor(unpack(color))
-			auraBar:SetBackdropColor(color[1] * 0.25, color[2] * 0.25, color[3] * 0.25, 0.5)
-		else
-			local r, g, b = auraBar.statusBar:GetStatusBarColor()
-			auraBar:SetBackdropColor(r * 0.25, g * 0.25, b * 0.25, 0.5)
-		end
-	end
+	local cd = CreateFrame("Cooldown", nil, aura, "CooldownFrameTemplate");
+	cd:FillInner(aura, 1, 1);
+	cd.noOCC = true;
+	cd.noCooldownCount = true;
+	cd:SetReverse(true);
+	cd:SetHideCountdownNumbers(true);
+
+	local text = cd:CreateFontString(nil, 'OVERLAY');
+	text:SetFontObject(NumberFontNormal);
+	text:SetPoint('CENTER', aura, 'CENTER', 1, 1);
+	text:SetJustifyH('CENTER');
+
+	local count = aura:CreateFontString(nil, "OVERLAY");
+	count:SetFontObject(NumberFontNormal);
+	count:SetPoint("BOTTOMRIGHT", aura, "BOTTOMRIGHT", -1, 0);
+
+	local icon = aura:CreateTexture(nil, "BORDER");
+	icon:SetAllPoints(aura);
+	icon:FillInner(aura, 1, 1);
+    icon:SetTexCoord(0.1, 0.9, 0.1, 0.9);
+
+	local overlay = aura:CreateTexture(nil, "OVERLAY");
+	overlay:SetAllPoints(aura);
+	overlay:SetTexture(BASIC_TEXTURE);
+	overlay:SetVertexColor(0, 0, 0);
+	overlay:Hide();
+
+	-- local stealable = aura:CreateTexture(nil, 'OVERLAY')
+	-- stealable:SetTexture(0,0,0,0)
+	-- stealable:SetPoint('TOPLEFT', -3, 3)
+	-- stealable:SetPoint('BOTTOMRIGHT', 3, -3)
+	-- aura.stealable = stealable
+
+	aura.UpdateTooltip = Aura_UpdateTooltip;
+	aura:SetScript("OnEnter", AuraIcon_OnEnter);
+	aura:SetScript("OnLeave", AuraIcon_OnLeave);
+	aura:SetScript("OnClick", AuraIcon_OnClick);
+
+	tinsert(icons, aura);
+
+	aura.parent = icons;
+	aura.cd = cd;
+	aura.text = text;
+	aura.icon = icon;
+	aura.count = count;
+	aura.overlay = overlay;
+
+	return aura
 end

 local UpdateAuraTimer = function(self, elapsed)
 	self.expiration = self.expiration - elapsed;
-
-	if(self.expiration <= 0) then
+	if(self.nextUpdate > 0) then
+		self.nextUpdate = self.nextUpdate - elapsed;
+	elseif(self.expiration <= 0) then
 		self:SetScript("OnUpdate", nil)
-		if(self.text:GetFont()) then
-			self.text:SetText("")
+		self.text:SetText('')
+	else
+		local expires = self.expiration;
+		local calc, timeLeft = 0, 0;
+		local timeFormat;
+		if expires < 60 then
+			if expires >= 4 then
+				timeLeft = floor(expires)
+				timeFormat = "|cffffff00%d|r"
+				self.nextUpdate = 0.51
+			else
+				timeLeft = expires
+				timeFormat = "|cffff0000%.1f|r"
+				self.nextUpdate = 0.051
+			end
+		elseif expires < 3600 then
+			timeFormat = "|cffffffff%dm|r"
+			timeLeft = ceil(expires  /  60);
+			calc = floor((expires  /  60)  +  .5);
+			self.nextUpdate = calc > 1 and ((expires - calc)  *  29.5) or (expires - 59.5);
+		elseif expires < 86400 then
+			timeFormat = "|cff66ffff%dh|r"
+			timeLeft = ceil(expires  /  3600);
+			calc = floor((expires  /  3600)  +  .5);
+			self.nextUpdate = calc > 1 and ((expires - calc)  *  1799.5) or (expires - 3570);
+		else
+			timeFormat = "|cff6666ff%dd|r"
+			timeLeft = ceil(expires  /  86400);
+			calc = floor((expires  /  86400)  +  .5);
+			self.nextUpdate = calc > 1 and ((expires - calc)  *  43199.5) or (expires - 86400);
 		end
-		return
-	end
-
-	if(self.nextUpdate > 0) then
-		self.nextUpdate = self.nextUpdate - elapsed;
-		return
-	end
-
-	local expires = self.expiration;
-	local calc, timeLeft = 0, 0;
-	local timeFormat;

-	if expires < 60 then
-		if expires >= 4 then
-			timeLeft = floor(expires)
-			timeFormat = "|cffffff00%d|r"
-			self.nextUpdate = 0.51
-		else
-			timeLeft = expires
-			timeFormat = "|cffff0000%.1f|r"
-			self.nextUpdate = 0.051
-		end
-	elseif expires < 3600 then
-		timeFormat = "|cffffffff%dm|r"
-		timeLeft = ceil(expires  /  60);
-		calc = floor((expires  /  60)  +  .5);
-		self.nextUpdate = calc > 1 and ((expires - calc)  *  29.5) or (expires - 59.5);
-	elseif expires < 86400 then
-		timeFormat = "|cff66ffff%dh|r"
-		timeLeft = ceil(expires  /  3600);
-		calc = floor((expires  /  3600)  +  .5);
-		self.nextUpdate = calc > 1 and ((expires - calc)  *  1799.5) or (expires - 3570);
-	else
-		timeFormat = "|cff6666ff%dd|r"
-		timeLeft = ceil(expires  /  86400);
-		calc = floor((expires  /  86400)  +  .5);
-		self.nextUpdate = calc > 1 and ((expires - calc)  *  43199.5) or (expires - 86400);
-	end
-	if self.text:GetFont() then
-		self.text:SetFormattedText(timeFormat, timeLeft)
-	else
 		self.text:SetFormattedText(timeFormat, timeLeft)
 	end
 end

 local PostUpdateAuraIcon = function(self, unit, button, index, offset)
 	local name, _, _, _, dtype, duration, expiration, _, isStealable = UnitAura(unit, index, button.filter)
-	local isFriend = UnitIsFriend('player', unit) == 1 and true or false
+	local isFriend = (UnitIsFriend('player', unit) == 1) and true or false
 	if button.isDebuff then
 		if(not isFriend and button.owner and button.owner ~= "player" and button.owner ~= "vehicle") then
-			button:SetBackdropBorderColor(0.9, 0.1, 0.1)
+			button:SetBackdropBorderColor(0.9, 0.1, 0.1, 1)
 			button.icon:SetDesaturated((unit and not unit:find('arena%d')) and true or false)
 		else
 			local color = DebuffTypeColor[dtype] or DebuffTypeColor.none
 			if (name == "Unstable Affliction" or name == "Vampiric Touch") and SV.class ~= "WARLOCK" then
-				button:SetBackdropBorderColor(0.05, 0.85, 0.94)
+				button:SetBackdropBorderColor(0.05, 0.85, 0.94, 1)
 			else
-				button:SetBackdropBorderColor(color.r * 0.6, color.g * 0.6, color.b * 0.6)
+				button:SetBackdropBorderColor(color.r * 0.6, color.g * 0.6, color.b * 0.6, 1)
 			end
 			button.icon:SetDesaturated(false)
 		end
 	else
 		if (isStealable) and not isFriend then
-			button:SetBackdropBorderColor(237/255, 234/255, 142/255)
+			button:SetBackdropBorderColor(0.92, 0.91, 0.55, 1)
 		else
-			button:SetBackdropBorderColor(0,0,0,1)
+			button:SetBackdropBorderColor(0, 0, 0, 1)
 		end
 	end

@@ -263,7 +270,7 @@ local PostUpdateAuraIcon = function(self, unit, button, index, offset)

 	button.spell = name
 	button.isStealable = isStealable
-	if expiration and duration ~= 0 then
+	if(expiration and duration ~= 0) then
 		if(not button:GetScript('OnUpdate')) then
 			button.expirationTime = expiration
 			button.expiration = expiration - GetTime()
@@ -275,14 +282,55 @@ local PostUpdateAuraIcon = function(self, unit, button, index, offset)
 			button.nextUpdate = -1
 		end
 	end
-	if duration == 0 or expiration == 0 then
+	if((duration == 0) or (expiration == 0)) then
 		button:SetScript('OnUpdate', nil)
-		if(button.text:GetFont()) then
-			button.text:SetText('')
-		end
+		button.text:SetText('')
 	end
+end
+
+
+--[[ AURABAR HANDLERS ]]--
+
+local AuraBar_OnClick = function(self)
+	if not IsShiftKeyDown() then return end
+	local name = self:GetParent().aura.name
+	if name then
+		SV:AddonMessage((L["The spell '%s' has been added to the Blocked unitframe aura filter."]):format(name))
+		SV.filters["Blocked"][name] = {["enable"] = true, ["priority"] = 0}
+		MOD:RefreshUnitFrames()
+	end
+end
+
+local PostCreateAuraBars = function(self)
+	self.iconHolder:RegisterForClicks("RightButtonUp")
+	self.iconHolder:SetScript("OnClick", AuraBar_OnClick)
 end

+local ColorizeAuraBars = function(self)
+	local bars = self.bars;
+	for i = 1, #bars do
+		local auraBar = bars[i]
+		if not auraBar:IsVisible()then break end
+		local color
+		local spellName = auraBar.statusBar.aura.name;
+		local spellID = auraBar.statusBar.aura.spellID;
+		if(SV.filters["Defense"][spellName]) then
+			color = oUF_Villain.colors.shield_bars
+		elseif(SV.db.media.unitframes.spellcolor[spellName]) then
+			color = SV.db.media.unitframes.spellcolor[spellName]
+		end
+		if color then
+			auraBar.statusBar:SetStatusBarColor(unpack(color))
+			auraBar:SetBackdropColor(color[1] * 0.25, color[2] * 0.25, color[3] * 0.25, 0.5)
+		else
+			local r, g, b = auraBar.statusBar:GetStatusBarColor()
+			auraBar:SetBackdropColor(r * 0.25, g * 0.25, b * 0.25, 0.5)
+		end
+	end
+end
+
+--[[ AURA FILTERING ]]--
+
 do
 	local function _test(setting, helpful)
 		local friend, enemy = false, false
@@ -464,7 +512,7 @@ function MOD:CreateBuffs(frame, unit)
 	local aura = CreateFrame("Frame", nil, frame)
 	aura.___key = unit
 	aura.spacing = 2;
-	aura.PostCreateIcon = PostCreateAuraIcon;
+	aura.CreateIcon = CreateAuraIcon;
 	aura.PostUpdateIcon = PostUpdateAuraIcon;
 	aura.CustomFilter = CustomAuraFilter;
 	aura:SetFrameLevel(10)
@@ -479,7 +527,7 @@ function MOD:CreateDebuffs(frame, unit)
 	local aura = CreateFrame("Frame", nil, frame)
 	aura.___key = unit
 	aura.spacing = 2;
-	aura.PostCreateIcon = PostCreateAuraIcon;
+	aura.CreateIcon = CreateAuraIcon;
 	aura.PostUpdateIcon = PostUpdateAuraIcon;
 	aura.CustomFilter = CustomAuraFilter;
 	aura.type = "debuffs"
@@ -672,9 +720,10 @@ function MOD:UpdateAuraWatch(frame, key, override)
 						watchedAura.border:SetVertexColor(0, 0, 0)
 					end
 					if not watchedAura.cd then
-						watchedAura.cd = CreateFrame("Cooldown", nil, watchedAura)
+						watchedAura.cd = CreateFrame("Cooldown", nil, watchedAura, "CooldownFrameTemplate")
 						watchedAura.cd:SetAllPoints(watchedAura)
 						watchedAura.cd:SetReverse(true)
+						watchedAura.cd:SetHideCountdownNumbers(true)
 						watchedAura.cd:SetFrameLevel(watchedAura:GetFrameLevel())
 					end
 					if watchedAura.style == "coloredIcon"then
diff --git a/Interface/AddOns/SVUI/packages/unit/groups.lua b/Interface/AddOns/SVUI/packages/unit/groups.lua
index 2f4c6fa..ddf354f 100644
--- a/Interface/AddOns/SVUI/packages/unit/groups.lua
+++ b/Interface/AddOns/SVUI/packages/unit/groups.lua
@@ -859,7 +859,7 @@ local HeaderUnsetAttributes = function(self)
     self:SetAttribute("maxColumns", nil)
     self:SetAttribute("nameList", nil)
     self:SetAttribute("point", nil)
-    self:SetAttribute("sortDir", nil)
+    self:SetAttribute("sortDirection", nil)
     self:SetAttribute("sortMethod", "NAME")
     self:SetAttribute("startingIndex", nil)
     self:SetAttribute("strictFiltering", nil)
@@ -1030,7 +1030,7 @@ local GroupConfigure = function(self)
                 frame:SetAttribute("maxColumns", 1)
                 frame:SetAttribute("unitsPerColumn", 5)
                 GroupDistributor[sortMethod](frame)
-                frame:SetAttribute("sortDir", settings.sortDir)
+                frame:SetAttribute("sortDirection", settings.sortDir)
                 frame:SetAttribute("showPlayer", settings.showPlayer)
             end

diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua
index 85f59d4..030bad2 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua
@@ -24,97 +24,257 @@ local PLUGIN = select(2, ...);
 local Schema = PLUGIN.Schema;
 --[[
 ##########################################################
-HELPERS
+OVERRIDES AND HOOKS
 ##########################################################
 ]]--
 local AlphaBlock = function() return end

-local function StyleLootFrame(frame)
-	frame:SetAlpha(1)
-	frame.SetAlpha = AlphaBlock
-	frame.Background:Die()
+local _hook_DisableBackground = function(self)
+    self:DisableDrawLayer("BACKGROUND")
+end;

-	frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	frame.IconBorder:Die()
+local _hook_DisableBorder = function(self)
+    self:DisableDrawLayer("BORDER")
+end;

-	frame.Icon.Underlay = CreateFrame("Frame", nil, frame)
-	frame.Icon.Underlay:WrapOuter(frame.Icon)
-	frame.Icon.Underlay:SetSlotTemplate(true, 2, 0, 0)
-	frame.Icon:SetParent(frame.Icon.Underlay)
+local _hook_DisableBoth = function(self)
+	self:DisableDrawLayer("BACKGROUND")
+    self:DisableDrawLayer("BORDER")
+end;

-	frame.Underlay = CreateFrame("Frame", nil, frame)
-	frame.Underlay:SetPoint("TOPLEFT", frame.Icon.Underlay, "TOPLEFT", -4, 4)
-	frame.Underlay:SetPoint("BOTTOMRIGHT", frame.Icon.Underlay, "BOTTOMRIGHT", 180, -4)
+local _hook_DisableOverlay = function(self)
+    self:DisableDrawLayer("OVERLAY")
+end;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local function StyleAlertIcon(frame, icon)
+	if((not frame) or (not icon)) then return end

-	PLUGIN:ApplyPopupStyle(frame.Underlay)
+	icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+
+	if(not frame.IconSlot) then
+		frame.IconSlot = CreateFrame("Frame", nil, frame)
+		frame.IconSlot:WrapOuter(icon)
+		frame.IconSlot:SetSlotTemplate()
+		icon:SetParent(frame.IconSlot)
+	end
 end
--- /script GarrisonMissionAlertFrame:Show()
-local function StyleGarrisonMissionAlertFrame()
-    local frameName = "GarrisonMissionAlertFrame"
-    local frame = _G[frameName]
-    if(frame and (not frame.Panel)) then
+
+local function StyleLootFrame(frame)
+	if(not frame) then return end
+
+	if(not frame.Panel) then
 		frame:SetAlpha(1)
 		frame.SetAlpha = AlphaBlock
-		frame.AlphaHooked = true
-		frame:DisableDrawLayer("BACKGROUND")
-		PLUGIN:ApplyAlertStyle(frame)
-		frame:ChangeAlertColor('blue')
+		PLUGIN:ApplyAlertStyle(frame, 2)
+		frame:AlertColor(0.28, 0.31, 0.32)
+
+		if(frame.Background) then frame.Background:Die() end
+		if(frame.BGAtlas) then frame.BGAtlas:Die() end
+		if(frame.IconBorder) then frame.IconBorder:Die() end
+		if(frame.SpecIcon) then frame.SpecIcon:Die() end
+		if(frame.SpecRing) then frame.SpecRing:Die() end
+	end

-		frame.IconBG:SetTexture('')
+	if(frame.Icon and (not frame.IconSlot)) then
+		frame.Icon:ClearAllPoints()
+		frame.Icon:SetPoint("LEFT", frame, "LEFT", 14, 0)
+		StyleAlertIcon(frame, frame.Icon)
+	end
+end

-		frame.Title:FontManager(nil, 12)
-		frame.Title:SetTextColor(1, 1, 1)
+local function StyleUpgradeFrame(frame)
+	if(not frame) then return end

-		_G[frameName.."Glow"]:Die()
-		_G[frameName.."Shine"]:Die()
+	if(not frame.Panel) then
+		frame:SetAlpha(1)
+		frame.SetAlpha = AlphaBlock
+		PLUGIN:ApplyAlertStyle(frame, 2)
+		frame:AlertColor(0.28, 0.31, 0.32)
+
+		frame.Background:Die()
+		frame.BorderGlow:Die()
+		frame.BaseQualityBorder:Die()
+		frame.UpgradeQualityBorder:Die()
+
+		frame:DisableDrawLayer("OVERLAY")
+		frame:HookScript("OnShow", _hook_DisableOverlay)
+	end
+
+	if(frame.Icon and (not frame.IconSlot)) then
+		frame.Icon:ClearAllPoints()
+		frame.Icon:SetPoint("LEFT", frame, "LEFT", 12, 0)
+		StyleAlertIcon(frame, frame.Icon)
 	end
 end
--- /script GarrisonBuildingAlertFrame:Show()
-local function StyleGarrisonBuildingAlertFrame()
-    local frameName = "GarrisonBuildingAlertFrame"
-    local frame = _G[frameName]
-    if(frame and (not frame.Panel)) then
+
+local function AchievementStyle()
+	for i = 1, MAX_ACHIEVEMENT_ALERTS do
+		local frameName = "AchievementAlertFrame"..i
+		local frame = _G[frameName]
+		if(frame and (not frame.Panel)) then
+			frame:SetAlpha(1)
+			frame.SetAlpha = AlphaBlock
+
+			PLUGIN:ApplyAlertStyle(frame)
+			frame:AlertColor(0.08, 0.25, 0.72)
+
+			local icon = _G[frameName.."IconTexture"];
+			icon:ClearAllPoints()
+			icon:SetPoint("LEFT", frame, "LEFT", 12, 0)
+
+			StyleAlertIcon(frame, icon)
+
+			if(_G[frameName .. 'Glow']) then _G[frameName .. 'Glow']:Die() end
+			if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end
+			if(_G[frameName .. 'Background']) then _G[frameName .. 'Background']:SetTexture(0,0,0,0) end
+			if(_G[frameName .. 'IconOverlay']) then _G[frameName .. 'IconOverlay']:Die() end
+			if(_G[frameName .. 'GuildBanner']) then _G[frameName .. 'GuildBanner']:Die() end
+			if(_G[frameName .. 'GuildBorder']) then _G[frameName .. 'GuildBorder']:Die() end
+			if(_G[frameName .. 'OldAchievement']) then _G[frameName .. 'OldAchievement']:Die() end
+		end
+	end
+end
+
+local function DungeonCompletionStyle()
+	local frameName = "DungeonCompletionAlertFrame1"
+	local frame = _G[frameName]
+	if(frame and (not frame.Panel)) then
 		frame:SetAlpha(1)
 		frame.SetAlpha = AlphaBlock
-		frame.AlphaHooked = true
-		frame:DisableDrawLayer("BACKGROUND")
-		PLUGIN:ApplyPopupStyle(frame,0.75,0.42,0)

-		frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		PLUGIN:ApplyAlertStyle(frame)
+		frame:AlertColor(0.08, 0.25, 0.72)
+
+		local icon = frame.dungeonTexture;
+		if(icon) then
+			icon:SetDrawLayer("OVERLAY")
+			icon:ClearAllPoints()
+			icon:SetPoint("LEFT", frame, "LEFT", 12, 0)
+			StyleAlertIcon(frame, icon)
+		end
+
+		if(_G[frameName .. 'GlowFrame']) then
+			if(_G[frameName .. 'GlowFrame'].glow) then _G[frameName .. 'GlowFrame'].glow:Die() end
+			_G[frameName .. 'GlowFrame']:Die()
+		end
+		if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end

-		frame.Title:FontManager(nil, 12)
-		frame.Title:SetTextColor(1, 1, 1)
+		frame:DisableDrawLayer("BORDER")
+		frame:HookScript("OnShow", _hook_DisableBorder)
+	end
+end

-		_G[frameName.."Glow"]:Die()
-		_G[frameName.."Shine"]:Die()
-	end
+local function GuildChallengeStyle()
+    local frameName = "GuildChallengeAlertFrame"
+	local frame = _G[frameName];
+	if(frame and (not frame.Panel)) then
+		frame:SetAlpha(1)
+		frame.SetAlpha = AlphaBlock
+
+		PLUGIN:ApplyAlertStyle(frame)
+		frame:AlertColor(0.33, 0.25, 0.13)
+
+		local icon = _G[frameName .. 'EmblemIcon'];
+		if(icon) then
+			StyleAlertIcon(frame, icon)
+			SetLargeGuildTabardTextures("player", icon, nil, nil)
+		end
+
+		if(_G[frameName .. 'Glow']) then _G[frameName .. 'Glow']:Die() end
+		if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end
+
+		frame:DisableDrawLayer("BACKGROUND")
+		frame:DisableDrawLayer("BORDER")
+		frame:HookScript("OnShow", _hook_DisableBoth)
+	end
 end
--- /script GarrisonFollowerAlertFrame:Show()
-local function StyleGarrisonFollowerAlertFrame()
-    local frameName = "GarrisonFollowerAlertFrame"
-    local frame = _G[frameName]
-    if(frame and (not frame.Panel)) then
+
+local function ChallengeModeStyle()
+	local frameName = "ChallengeModeAlertFrame1"
+	local frame = _G[frameName];
+	if(frame and (not frame.Panel)) then
 		frame:SetAlpha(1)
 		frame.SetAlpha = AlphaBlock
-		frame.AlphaHooked = true
+
+		PLUGIN:ApplyAlertStyle(frame)
+		frame:AlertColor(0.33, 0.25, 0.13)
+
+		local icon = _G[frameName .. 'DungeonTexture'];
+		if(icon) then
+			icon:ClearAllPoints()
+			icon:SetPoint("LEFT", frame, "LEFT", 12, 0)
+			StyleAlertIcon(frame, icon)
+		end
+
+		if(_G[frameName .. 'GlowFrame']) then
+			if(_G[frameName .. 'GlowFrame'].glow) then _G[frameName .. 'GlowFrame'].glow:Die() end
+			_G[frameName .. 'GlowFrame']:Die()
+		end
+		if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end
+		if(_G[frameName .. 'Border']) then _G[frameName .. 'Border']:Die() end
+
 		frame:DisableDrawLayer("BACKGROUND")
-		PLUGIN:ApplyPopupStyle(frame)
+		frame:HookScript("OnShow", _hook_DisableBackground)
+	end
+end

-		frame.FollowerBG:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+local function ScenarioStyle()
+	local frameName = "ScenarioAlertFrame1"
+	local frame = _G[frameName];
+	if(frame and (not frame.Panel)) then
+		frame:SetAlpha(1)
+		frame.SetAlpha = AlphaBlock
+
+		PLUGIN:ApplyAlertStyle(frame)
+		frame:AlertColor(0.33, 0.25, 0.13)

-		frame.Title:FontManager(nil, 12)
-		frame.Title:SetTextColor(1, 1, 1)
+		local icon = _G[frameName .. 'DungeonTexture'];
+		if(icon) then
+			icon:ClearAllPoints()
+			icon:SetPoint("LEFT", frame, "LEFT", 12, 0)
+			StyleAlertIcon(frame, icon)
+		end

-		_G[frameName.."Glow"]:Die()
-		_G[frameName.."Shine"]:Die()
-	end
+		if(_G[frameName .. 'GlowFrame']) then
+			if(_G[frameName .. 'GlowFrame'].glow) then _G[frameName .. 'GlowFrame'].glow:Die() end
+			_G[frameName .. 'GlowFrame']:Die()
+		end
+		if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end

-	if(frame.PortraitFrame) then
-		--frame.PortraitFrame:SetPanelTemplate('Blackout')
-		frame.PortraitFrame.PortraitRing:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Unitframe\FOLLOWER-RING]])
-		frame.PortraitFrame.PortraitRingQuality:SetTexture('')
-		frame.PortraitFrame.LevelBorder:SetTexture('')
-	end
+		frame:DisableDrawLayer("BORDER")
+		frame:HookScript("OnShow", _hook_DisableBorder)
+	end
+end
+
+local function CriteriaStyle()
+	for i = 1, MAX_ACHIEVEMENT_ALERTS do
+		local frameName = "CriteriaAlertFrame"..i
+		local frame = _G[frameName]
+		if(frame and (not frame.Panel)) then
+			frame:SetAlpha(1)
+			frame.SetAlpha = AlphaBlock
+
+			PLUGIN:ApplyAlertStyle(frame)
+			frame:AlertColor(0.08, 0.25, 0.72)
+
+			local icon = _G[frameName .. 'IconTexture'];
+			if(icon) then
+				icon:ClearAllPoints()
+				icon:SetPoint("LEFT", frame, "LEFT", 12, 0)
+				StyleAlertIcon(frame, icon)
+			end
+
+			if(_G[frameName .. 'Glow']) then _G[frameName .. 'Glow']:Die() end
+			if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end
+			if(_G[frameName .. 'Background']) then _G[frameName .. 'Background']:SetTexture(0,0,0,0) end
+			if(_G[frameName .. 'IconOverlay']) then _G[frameName .. 'IconOverlay']:Die() end
+			if(_G[frameName .. 'IconBling']) then _G[frameName .. 'IconBling']:Die() end
+		end
+	end
 end
 --[[
 ##########################################################
@@ -122,292 +282,194 @@ ALERTFRAME STYLES
 ##########################################################
 ]]--
 local function AlertStyle()
-	if PLUGIN.db.blizzard.enable ~= true or PLUGIN.db.blizzard.alertframes ~= true then return end
+	if PLUGIN.db.blizzard.enable ~= true or PLUGIN.db.blizzard.alertframes ~= true then return end

+	--[[ SVUI ]]--
 	for i = 1, 4 do
-		local alert = _G["SVUI_SystemAlert"..i];
-		if(alert) then
-			for b = 1, 3 do
-				alert.buttons[b]:SetButtonTemplate()
+		frame = _G["SVUI_SystemAlert"..i];
+		if(frame) then
+			frame:RemoveTextures()
+
+			PLUGIN:ApplyAlertStyle(frame)
+
+			frame.buttons[1]:SetButtonTemplate()
+			frame.buttons[2]:SetButtonTemplate()
+			frame.buttons[3]:SetButtonTemplate()
+
+			frame.gold:SetEditboxTemplate()
+			frame.silver:SetEditboxTemplate()
+			frame.copper:SetEditboxTemplate()
+
+			frame.input:SetEditboxTemplate()
+			frame.input.Panel:Point("TOPLEFT", -2, -4)
+			frame.input.Panel:Point("BOTTOMRIGHT", 2, 4)
+		end
+	end
+
+	--[[ LOOT WON ]]--
+	do
+		for i = 1, #LOOT_WON_ALERT_FRAMES do
+			StyleLootFrame(LOOT_WON_ALERT_FRAMES[i])
+		end
+		StyleLootFrame(BonusRollLootWonFrame)
+		hooksecurefunc("AlertFrame_SetLootWonAnchors", function()
+			for i = 1, #LOOT_WON_ALERT_FRAMES do
+				local frame = LOOT_WON_ALERT_FRAMES[i]
+				if(frame) then StyleLootFrame(frame) end
 			end
-			alert:RemoveTextures()
-			PLUGIN:ApplyAlertStyle(alert)
-			alert.input:SetEditboxTemplate()
-			alert.input.Panel:Point("TOPLEFT", -2, -4)
-			alert.input.Panel:Point("BOTTOMRIGHT", 2, 4)
-			alert.gold:SetEditboxTemplate()
-			alert.silver:SetEditboxTemplate()
-			alert.copper:SetEditboxTemplate()
+		end)
+		hooksecurefunc("LootWonAlertFrame_SetUp", function(self, itemLink, ...)
+		    local itemName, itemHyperLink, itemRarity, itemTexture;
+		    if (self.isCurrency) then
+		        itemName, _, itemTexture, _, _, _, _, itemRarity = GetCurrencyInfo(itemLink);
+		        itemHyperLink = itemLink;
+		    else
+		        itemName, itemHyperLink, itemRarity, _, _, _, _, _, _, itemTexture = GetItemInfo(itemLink);
+		    end
+	    	local color = ITEM_QUALITY_COLORS[itemRarity];
+	    	if(not self.IconSlot) then return end;
+			self.IconSlot:SetBackdropColor(color.r, color.g, color.b);
+		end)
+	end
+
+	--[[ MONEY WON ]]--
+	do
+		for i = 1, #MONEY_WON_ALERT_FRAMES do
+			StyleLootFrame(MONEY_WON_ALERT_FRAMES[i])
 		end
+		StyleLootFrame(BonusRollMoneyWonFrame)
+		hooksecurefunc("AlertFrame_SetMoneyWonAnchors", function()
+			for i = 1, #MONEY_WON_ALERT_FRAMES do
+				local frame = MONEY_WON_ALERT_FRAMES[i]
+				if(frame) then StyleLootFrame(frame) end
+			end
+		end)
 	end

-	StyleGarrisonMissionAlertFrame()
-	StyleGarrisonBuildingAlertFrame()
-	StyleGarrisonFollowerAlertFrame()
+	--[[ LOOT UPGRADE ]]--
+	do
+		for i = 1, #LOOT_UPGRADE_ALERT_FRAMES do
+			StyleUpgradeFrame(LOOT_UPGRADE_ALERT_FRAMES[i])
+		end
+		hooksecurefunc("AlertFrame_SetLootUpgradeFrameAnchors", function()
+			for i = 1, #LOOT_UPGRADE_ALERT_FRAMES do
+				local frame = LOOT_UPGRADE_ALERT_FRAMES[i]
+				if(frame) then StyleUpgradeFrame(frame) end
+			end
+		end)
+		hooksecurefunc("LootUpgradeFrame_SetUp", function(self, itemLink, ...)
+		    local itemName, itemHyperLink, itemRarity, _, _, _, _, _, _, itemTexture = GetItemInfo(itemLink);
+	    	local color = ITEM_QUALITY_COLORS[itemRarity];
+	    	if(not self.IconSlot) then return end;
+			self.IconSlot:SetBackdropColor(color.r, color.g, color.b);
+		end)
+	end

-	hooksecurefunc("GarrisonMissionAlertFrame_ShowAlert", function()
-	    GarrisonMissionAlertFrame:DisableDrawLayer("BACKGROUND")
-	end)
+	--[[ ACHIEVEMENT ]]--
+	AchievementStyle()
+	hooksecurefunc("AlertFrame_SetAchievementAnchors", AchievementStyle)

-	hooksecurefunc("GarrisonBuildingAlertFrame_ShowAlert", function()
-	    GarrisonBuildingAlertFrame:DisableDrawLayer("BACKGROUND")
-	end)
+	--[[ DUNGEON ]]--
+	DungeonCompletionStyle()
+	hooksecurefunc("AlertFrame_SetDungeonCompletionAnchors", DungeonCompletionStyle)

-	hooksecurefunc("GarrisonFollowerAlertFrame_ShowAlert", function()
-	    GarrisonFollowerAlertFrame:DisableDrawLayer("BACKGROUND")
-	end)
+	--[[ GUILD CHALLENGE ]]--
+	GuildChallengeStyle()
+	hooksecurefunc("AlertFrame_SetGuildChallengeAnchors", GuildChallengeStyle)

-	hooksecurefunc("AlertFrame_SetAchievementAnchors", function()
-		for i = 1, MAX_ACHIEVEMENT_ALERTS do
-			local frameName = "AchievementAlertFrame"..i
-			local frame = _G[frameName]
-			if(frame and (not frame.Panel)) then
-				frame:SetAlpha(1)
-				frame.SetAlpha = AlphaBlock
-				frame.AlphaHooked = true
-				PLUGIN:ApplyAlertStyle(frame)
-				frame:ChangeAlertColor('blue')
+	--[[ CHALLENGE MODE ]]--
+	ChallengeModeStyle()
+	hooksecurefunc("AlertFrame_SetChallengeModeAnchors", ChallengeModeStyle)

-				_G[frameName.."Background"]:SetTexture(0,0,0,0)
-				_G[frameName.."Unlocked"]:FontManager(nil, 12)
-				_G[frameName.."Unlocked"]:SetTextColor(1, 1, 1)
-				_G[frameName.."Name"]:FontManager(nil, 12)
+	--[[ SCENARIO ]]--
+	ScenarioStyle()
+	hooksecurefunc("AlertFrame_SetScenarioAnchors", ScenarioStyle)

-				local icon = _G[frameName.."IconTexture"];
-				icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				icon:ClearAllPoints()
-				icon:Point("LEFT", frame, 7, 0)
-				icon.Underlay = CreateFrame("Frame", nil, frame)
-				icon.Underlay:WrapOuter(icon)
-				icon.Underlay:SetSlotTemplate()
-				icon:SetParent(icon.Underlay)
-
-				_G[frameName.."IconOverlay"]:Die()
-				_G[frameName.."OldAchievement"]:Die()
-				_G[frameName.."Glow"]:Die()
-				_G[frameName.."Shine"]:Die()
-				_G[frameName.."GuildBanner"]:Die()
-				_G[frameName.."GuildBorder"]:Die()
-			end
-		end
-	end)
+	--[[ CRITERIA ]]--
+	CriteriaStyle()
+	hooksecurefunc("AlertFrame_SetCriteriaAnchors", CriteriaStyle)

-	hooksecurefunc("AlertFrame_SetDungeonCompletionAnchors", function()
-		for i = 1, DUNGEON_COMPLETION_MAX_REWARDS do
-			local frame = _G["DungeonCompletionAlertFrame"..i]
-			if(frame and (not frame.Panel)) then
-				frame:SetAlpha(1)
-				frame.SetAlpha = AlphaBlock
-				frame.AlphaHooked = true
-
-				PLUGIN:ApplyAlertStyle(frame)
-				frame:ChangeAlertColor('blue')
-
-				frame.dungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				frame.dungeonTexture:SetDrawLayer("OVERLAY")
-				frame.dungeonTexture:ClearAllPoints()
-				frame.dungeonTexture:Point("LEFT", frame, 7, 0)
-				frame.dungeonTexture.Underlay = CreateFrame("Frame", nil, frame)
-				frame.dungeonTexture.Underlay:WrapOuter(frame.dungeonTexture)
-				frame.dungeonTexture.Underlay:SetSlotTemplate()
-				frame.dungeonTexture:SetParent(frame.dungeonTexture.Underlay)
-
-				-- frame.Shine:Die()
-				-- frame.GlowFrame:Die()
-				-- frame.GlowFrame.Glow:Die()
-				frame.raidArt:Die()
-				frame.dungeonArt1:Die()
-				frame.dungeonArt2:Die()
-				frame.dungeonArt3:Die()
-				frame.dungeonArt4:Die()
-				frame.heroicIcon:Die()
-			end
-		end
-	end)
+	--[[ GARRISON ]]--
+	do
+		local frameName, frame;

-	hooksecurefunc("AlertFrame_SetGuildChallengeAnchors", function()
-		local frame = GuildChallengeAlertFrame;
-		if frame then
+		--Garrison Mission
+	    frameName = "GarrisonMissionAlertFrame"
+	    frame = _G[frameName]
+	    if(frame and (not frame.Panel)) then
 			frame:SetAlpha(1)
-
-			if(not frame.AlphaHooked) then
-				frame.SetAlpha = AlphaBlock
-				frame.AlphaHooked = true
-			end
+			frame.SetAlpha = AlphaBlock
+			frame:DisableDrawLayer("BACKGROUND")

-			if(not frame.Panel) then
-				frame:SetBasicPanel()
-				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", -2, -6)
-				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 6)
-			end
+			PLUGIN:ApplyAlertStyle(frame)
+			frame:AlertColor(0.28, 0.31, 0.32)

-			local j = select(2, frame:GetRegions())
-			if j:GetObjectType() == "Texture"then
-				if j:GetTexture() == "Interface\\GuildFrame\\GuildChallenges"then j:Die()end
-			end
+			frame.IconBG:SetTexture('')
+			frame.Title:FontManager(nil, 12)
+			frame.Title:SetTextColor(1, 1, 1)

-			GuildChallengeAlertFrameGlow:Die()
-			GuildChallengeAlertFrameShine:Die()
-			GuildChallengeAlertFrameEmblemBorder:Die()
-			if not GuildChallengeAlertFrameEmblemIcon.b then
-				GuildChallengeAlertFrameEmblemIcon.b = CreateFrame("Frame", nil, frame)
-				GuildChallengeAlertFrameEmblemIcon.b:SetFixedPanelTemplate("Default")
-				GuildChallengeAlertFrameEmblemIcon.b:Point("TOPLEFT", GuildChallengeAlertFrameEmblemIcon, "TOPLEFT", -3, 3)
-				GuildChallengeAlertFrameEmblemIcon.b:Point("BOTTOMRIGHT", GuildChallengeAlertFrameEmblemIcon, "BOTTOMRIGHT", 3, -2)
-				GuildChallengeAlertFrameEmblemIcon:SetParent(GuildChallengeAlertFrameEmblemIcon.b)
-			end
-			SetLargeGuildTabardTextures("player", GuildChallengeAlertFrameEmblemIcon, nil, nil)
-		end
-	end)
+			if(_G[frameName .. 'Glow']) then _G[frameName .. 'Glow']:Die() end
+			if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end

-	hooksecurefunc("AlertFrame_SetChallengeModeAnchors", function()
-		local frame = ChallengeModeAlertFrame1;
-		if frame then
-			frame:SetAlpha(1)
-			frame.SetAlpha = AlphaBlock
-			if not frame.Panel then
-				frame:SetBasicPanel()
-				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", 19, -6)
-				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -22, 6)
-			end
-			for i = 1, frame:GetNumRegions()do
-				local j = select(i, frame:GetRegions())
-				if j:GetObjectType() == "Texture"then
-					if j:GetTexture() == "Interface\\Challenges\\challenges-main" then j:Die() end
-				end
-			end
-			-- ChallengeModeAlertFrame1Shine:Die()
-			-- ChallengeModeAlertFrame1GlowFrame:Die()
-			-- ChallengeModeAlertFrame1GlowFrame.Glow:Die()
-			ChallengeModeAlertFrame1Border:Die()
-			ChallengeModeAlertFrame1DungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			ChallengeModeAlertFrame1DungeonTexture:ClearAllPoints()
-			ChallengeModeAlertFrame1DungeonTexture:Point("LEFT", frame.Panel, 9, 0)
-			if not ChallengeModeAlertFrame1DungeonTexture.b then
-				ChallengeModeAlertFrame1DungeonTexture.b = CreateFrame("Frame", nil, frame)
-				ChallengeModeAlertFrame1DungeonTexture.b:SetFixedPanelTemplate("Default")
-				ChallengeModeAlertFrame1DungeonTexture.b:WrapOuter(ChallengeModeAlertFrame1DungeonTexture)
-				ChallengeModeAlertFrame1DungeonTexture:SetParent(ChallengeModeAlertFrame1DungeonTexture.b)
-			end
-		end
-	end)
+			frame:HookScript("OnShow", _hook_DisableBackground)
+		end

-	hooksecurefunc("AlertFrame_SetScenarioAnchors", function()
-		local frame = ScenarioAlertFrame1;
-		if frame then
+		--Garrison Building
+		frameName = "GarrisonBuildingAlertFrame"
+	    frame = _G[frameName]
+	    if(frame and (not frame.Panel)) then
 			frame:SetAlpha(1)
 			frame.SetAlpha = AlphaBlock
-			if not frame.Panel then
-				frame:SetBasicPanel()
-				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", 4, 4)
-				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -7, 6)
-			end
-			for i = 1, frame:GetNumRegions()do
-				local j = select(i, frame:GetRegions())
-				if j:GetObjectType() == "Texture"then
-					if j:GetTexture() == "Interface\\Scenarios\\ScenariosParts" then j:Die() end
-				end
-			end
-			-- ScenarioAlertFrame1Shine:Die()
-			-- ScenarioAlertFrame1GlowFrame:Die()
-			-- ScenarioAlertFrame1GlowFrame.Glow:Die()
-			ScenarioAlertFrame1DungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			ScenarioAlertFrame1DungeonTexture:ClearAllPoints()
-			ScenarioAlertFrame1DungeonTexture:Point("LEFT", frame.Panel, 9, 0)
-			if not ScenarioAlertFrame1DungeonTexture.b then
-				ScenarioAlertFrame1DungeonTexture.b = CreateFrame("Frame", nil, frame)
-				ScenarioAlertFrame1DungeonTexture.b:SetFixedPanelTemplate("Default")
-				ScenarioAlertFrame1DungeonTexture.b:WrapOuter(ScenarioAlertFrame1DungeonTexture)
-				ScenarioAlertFrame1DungeonTexture:SetParent(ScenarioAlertFrame1DungeonTexture.b)
-			end
-		end
-	end)
+			frame:DisableDrawLayer("BACKGROUND")

-	hooksecurefunc("AlertFrame_SetCriteriaAnchors", function()
-		for i = 1, MAX_ACHIEVEMENT_ALERTS do
-			local frameName = "CriteriaAlertFrame"..i
-			local frame = _G[frameName]
-			if(frame and (not frame.Panel)) then
-				frame:SetAlpha(1)
-				frame.SetAlpha = AlphaBlock
-				frame.AlphaHooked = true
-				PLUGIN:ApplyAlertStyle(frame)
-				frame:ChangeAlertColor('blue')
+			PLUGIN:ApplyAlertStyle(frame, 2)
+			frame:AlertColor(0.75, 0.42, 0)

-				_G[frameName.."Background"]:SetTexture(0,0,0,0)
-				_G[frameName.."Unlocked"]:FontManager(nil, 12)
-				_G[frameName.."Unlocked"]:SetTextColor(1, 1, 1)
-				_G[frameName.."Name"]:FontManager(nil, 12)
+			frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			frame.Title:FontManager(nil, 12)
+			frame.Title:SetTextColor(1, 1, 1)

-				local icon = _G[frameName.."IconTexture"];
-				icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				icon:ClearAllPoints()
-				icon:Point("LEFT", frame, 7, 0)
-				icon.Underlay = CreateFrame("Frame", nil, frame)
-				icon.Underlay:WrapOuter(icon)
-				icon.Underlay:SetSlotTemplate()
-				icon:SetParent(icon.Underlay)
-
-				_G[frameName.."IconOverlay"]:Die()
-				_G[frameName.."Glow"]:Die()
-				_G[frameName.."Shine"]:Die()
-				_G[frameName.."IconBling"]:Die()
-			end
-		end
-	end)
+			if(_G[frameName .. 'Glow']) then _G[frameName .. 'Glow']:Die() end
+			if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end

-	hooksecurefunc("AlertFrame_SetLootWonAnchors", function()
-		for i = 1, #LOOT_WON_ALERT_FRAMES do
-			local frame = LOOT_WON_ALERT_FRAMES[i]
-			if(frame and (not frame.Panel)) then
-				frame:SetAlpha(1)
-				frame.SetAlpha = AlphaBlock
-				PLUGIN:ApplyPopupStyle(frame)
-				frame.Background:Die()
-				frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				frame.IconBorder:Die()
-				-- frame.Glow:Die()
-				-- frame.Shine:Die()
-				frame.Icon.Underlay = CreateFrame("Frame", nil, frame)
-				frame.Icon.Underlay:WrapOuter(frame.Icon)
-				frame.Icon.Underlay:SetSlotTemplate()
-				frame.Icon:SetParent(frame.Icon.Underlay)
-			end
-		end
-	end)
+			frame:HookScript("OnShow", _hook_DisableBackground)
+		end

-	hooksecurefunc("AlertFrame_SetMoneyWonAnchors", function()
-		for i = 1, #MONEY_WON_ALERT_FRAMES do
-			local frame = MONEY_WON_ALERT_FRAMES[i]
-			if(frame and (not frame.Panel)) then
+		--Garrison Follower
+		frameName = "GarrisonFollowerAlertFrame"
+	    frame = _G[frameName]
+	    if(frame) then
+	    	if(not frame.Panel) then
 				frame:SetAlpha(1)
 				frame.SetAlpha = AlphaBlock
-				PLUGIN:ApplyPopupStyle(frame)
-				frame.Background:Die()
-				frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				frame.IconBorder:Die()
-				-- frame.Glow:Die()
-				-- frame.Shine:Die()
-				frame.Icon.Underlay = CreateFrame("Frame", nil, frame)
-				frame.Icon.Underlay:WrapOuter(frame.Icon)
-				frame.Icon.Underlay:SetSlotTemplate()
-				frame.Icon:SetParent(frame.Icon.Underlay)
-			end
-		end
-	end)
+				frame:DisableDrawLayer("BACKGROUND")
+
+				PLUGIN:ApplyAlertStyle(frame, 2)

-	hooksecurefunc("LootWonAlertFrame_SetUp", function(self)
-	    if(self.BGAtlas) then
-	        self.BGAtlas:Hide();
-	    end
-	end)
+				frame.FollowerBG:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				frame.Title:FontManager(nil, 12)
+				frame.Title:SetTextColor(1, 1, 1)

-	StyleLootFrame(BonusRollMoneyWonFrame)
-	StyleLootFrame(BonusRollLootWonFrame)
+				if(_G[frameName .. 'Glow']) then _G[frameName .. 'Glow']:Die() end
+				if(_G[frameName .. 'Shine']) then _G[frameName .. 'Shine']:Die() end
+
+				frame:HookScript("OnShow", _hook_DisableBackground)
+			end
+
+			if(frame.PortraitFrame) then
+				frame.PortraitFrame.PortraitRing:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Unitframe\FOLLOWER-RING]])
+				frame.PortraitFrame.PortraitRingQuality:SetTexture('')
+				frame.PortraitFrame.LevelBorder:SetTexture('')
+			end
+		end
+	end
 end
 --[[
 ##########################################################
 PLUGIN LOADING
 ##########################################################
 ]]--
-PLUGIN:SaveCustomStyle(AlertStyle)
\ No newline at end of file
+PLUGIN:SaveCustomStyle(AlertStyle)
+-- /script GarrisonMissionAlertFrame:Show()
+-- /script GarrisonBuildingAlertFrame:Show()
+-- /script GarrisonFollowerAlertFrame:Show()
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua
index 484d48b..118cd08 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua
@@ -279,16 +279,12 @@ local function CharacterFrameStyle()
 	PLUGIN:ApplyPaginationStyle(CharacterFrameExpandButton)

 	hooksecurefunc('CharacterFrame_Collapse', function()
-		CharacterFrameExpandButton:SetNormalTexture(nil)
-		CharacterFrameExpandButton:SetPushedTexture(nil)
-		CharacterFrameExpandButton:SetDisabledTexture(nil)
+		CharacterFrameExpandButton:RemoveTextures()
 		SquareButton_SetIcon(CharacterFrameExpandButton, 'RIGHT')
 	end)

 	hooksecurefunc('CharacterFrame_Expand', function()
-		CharacterFrameExpandButton:SetNormalTexture(nil)
-		CharacterFrameExpandButton:SetPushedTexture(nil)
-		CharacterFrameExpandButton:SetDisabledTexture(nil)
+		CharacterFrameExpandButton:RemoveTextures()
 		SquareButton_SetIcon(CharacterFrameExpandButton, 'LEFT')
 	end)

@@ -314,10 +310,7 @@ local function CharacterFrameStyle()
 	PLUGIN:ApplyScrollFrameStyle(_G["PaperDollEquipmentManagerPaneScrollBar"], 5)

 	for _,gName in pairs(CharFrameList) do
-		local frame = _G[gName]
-		if(frame) then
-			frame:RemoveTextures(true)
-		end
+		if(_G[gName]) then _G[gName]:RemoveTextures(true) end
 	end

 	CharacterModelFrameBackgroundTopLeft:SetTexture(0,0,0,0)
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
index 2f88483..75b2c3c 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
@@ -579,7 +579,7 @@ function PLUGIN:ApplyDropdownStyle(this, width)

 		NewHook(ddButton, "SetPoint", _hook_DropDownButton_SetPoint)

-		PLUGIN:ApplyPaginationStyle(ddButton, true)
+		self:ApplyPaginationStyle(ddButton, true)

 		local currentLevel = this:GetFrameLevel()
 		if(currentLevel == 0) then
@@ -636,105 +636,88 @@ end
 |__/  |__/|________/|________/|__/  |__/   |__/
 ##########################################################
 --]]
-local ChangeAlertColor = function(self, colorName)
-	local r,g,b = unpack(SV.Media.color[colorName])
-	self.AlertPanel[1]:SetBackdropColor(r,g,b)
-	self.AlertPanel[2]:SetVertexColor(r,g,b)
+local ALERT_TEMPLATE = {
+	{
+		COLOR = {0.8, 0.2, 0.2},
+		BG = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BG]],
+		LEFT = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-LEFT]],
+		RIGHT = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-RIGHT]],
+		TOP = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-TOP]],
+		BOTTOM = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BOTTOM]],
+	},
+	{
+		COLOR = {0.08, 0.4, 0},
+		BG = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BG-2]],
+		LEFT = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-LEFT-2]],
+		RIGHT = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-RIGHT-2]],
+		TOP = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-TOP]],
+		BOTTOM = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BOTTOM]],
+	},
+}
+
+local SetAlertColor = function(self, r, g, b)
+	self.AlertPanel:SetBackdropColor(r,g,b)
+	self.AlertPanel.left:SetVertexColor(r,g,b)
+	self.AlertPanel.right:SetVertexColor(r,g,b)
+	self.AlertPanel.top:SetVertexColor(r,g,b)
+	self.AlertPanel.bottom:SetVertexColor(r,g,b)
 end

-function PLUGIN:ApplyAlertStyle(frame)
-	if(not frame or (frame and frame.AlertPanel)) then return end
-
-	local lvl = frame:GetFrameLevel()
-	if lvl < 1 then lvl = 1 end
-    local alertpanel = CreateFrame("Frame", nil, frame)
-    alertpanel:SetAllPoints(frame)
-    alertpanel:SetFrameLevel(lvl - 1)
-    alertpanel:SetBackdrop({
-        bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BG]]
-    })
-    alertpanel:SetBackdropColor(0.8, 0.2, 0.2)
-
-    --[[ LEFT ]]--
-    local left = alertpanel:CreateTexture(nil, "BORDER")
-    left:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-LEFT]])
-    left:Point("TOPRIGHT", alertpanel,"TOPLEFT", 0, 0)
-    left:Point("BOTTOMRIGHT", alertpanel, "BOTTOMLEFT", 0, 0)
-    left:Width(frame:GetHeight())
-
-    --[[ RIGHT ]]--
-    local right = alertpanel:CreateTexture(nil, "BORDER")
-    right:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-RIGHT]])
-    right:SetVertexColor(0.8, 0.2, 0.2)
-    right:Point("TOPLEFT", alertpanel,"TOPRIGHT", 0, 0)
-    right:Point("BOTTOMLEFT", alertpanel, "BOTTOMRIGHT", 0, 0)
-    right:Width(frame:GetHeight() * 2)
+function PLUGIN:ApplyAlertStyle(frame, alertType)
+	if(not frame or (frame and frame.AlertPanel)) then return end

-    --[[ TOP ]]--
-    local top = alertpanel:CreateTexture(nil, "BORDER")
-    top:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-TOP]])
-    top:Point("BOTTOMLEFT", alertpanel,"TOPLEFT", 0, 0)
-    top:Point("BOTTOMRIGHT", alertpanel, "TOPRIGHT", 0, 0)
-    top:Height(frame:GetHeight() * 0.5)
+	alertType = alertType or 1;

-    --[[ BOTTOM ]]--
-    local bottom = alertpanel:CreateTexture(nil, "BORDER")
-    bottom:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BOTTOM]])
-    bottom:Point("TOPLEFT", alertpanel,"BOTTOMLEFT", 0, 0)
-    bottom:Point("TOPRIGHT", alertpanel, "BOTTOMRIGHT", 0, 0)
-    bottom:Width(frame:GetHeight() * 0.5)
-
-    frame.AlertPanel = {alertpanel, right}
-    frame.ChangeAlertColor = ChangeAlertColor
-end
+	local TEMPLATE = ALERT_TEMPLATE[alertType];
+	local r,g,b = unpack(TEMPLATE.COLOR);
+	local size = frame:GetHeight();
+	local half = size * 0.5;
+	local offset = size * 0.1;
+	local lvl = frame:GetFrameLevel();

-function PLUGIN:ApplyPopupStyle(frame,r,g,b)
-	if(not frame or (frame and frame.AlertPanel)) then return end
-	r = r or 0.08
-	g = g or 0.4
-	b = b or 0
-	local lvl = frame:GetFrameLevel()
 	if lvl < 1 then lvl = 1 end
+
     local alertpanel = CreateFrame("Frame", nil, frame)
-    alertpanel:SetAllPoints(frame)
+    alertpanel:SetPoint("TOPLEFT", frame, "TOPLEFT", offset, 0)
+    alertpanel:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -offset, 0)
     alertpanel:SetFrameLevel(lvl - 1)
     alertpanel:SetBackdrop({
-        bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BG-2]]
+        bgFile = TEMPLATE.BG
     })
     alertpanel:SetBackdropColor(r,g,b)

     --[[ LEFT ]]--
-    local left = alertpanel:CreateTexture(nil, "BORDER")
-    left:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-LEFT-2]])
-    left:SetVertexColor(r,g,b)
-    left:SetPoint("TOPRIGHT", alertpanel,"TOPLEFT", 0, 0)
-    left:SetPoint("BOTTOMRIGHT", alertpanel, "BOTTOMLEFT", 0, 0)
-    left:SetWidth(frame:GetHeight())
+    alertpanel.left = alertpanel:CreateTexture(nil, "BORDER")
+    alertpanel.left:SetTexture(TEMPLATE.LEFT)
+    alertpanel.left:SetVertexColor(r,g,b)
+    alertpanel.left:SetPoint("TOPRIGHT", alertpanel, "TOPLEFT", 0, 0)
+    alertpanel.left:SetPoint("BOTTOMRIGHT", alertpanel, "BOTTOMLEFT", 0, 0)
+    alertpanel.left:SetWidth(size)

     --[[ RIGHT ]]--
-    local right = alertpanel:CreateTexture(nil, "BORDER")
-    right:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-RIGHT-2]])
-    right:SetVertexColor(r,g,b)
-    right:SetPoint("TOPLEFT", alertpanel,"TOPRIGHT", 0, 0)
-    right:SetPoint("BOTTOMLEFT", alertpanel, "BOTTOMRIGHT", 0, 0)
-    right:SetWidth(frame:GetHeight() * 2)
+    alertpanel.right = alertpanel:CreateTexture(nil, "BORDER")
+    alertpanel.right:SetTexture(TEMPLATE.RIGHT)
+    alertpanel.right:SetVertexColor(r,g,b)
+    alertpanel.right:SetPoint("TOPLEFT", alertpanel, "TOPRIGHT", 0, 0)
+    alertpanel.right:SetPoint("BOTTOMLEFT", alertpanel, "BOTTOMRIGHT", 0, 0)
+    alertpanel.right:SetWidth(size * 2)

     --[[ TOP ]]--
-    local top = alertpanel:CreateTexture(nil, "BORDER")
-    top:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-TOP]])
-    top:SetPoint("BOTTOMLEFT", alertpanel,"TOPLEFT", 0, 0)
-    top:SetPoint("BOTTOMRIGHT", alertpanel, "TOPRIGHT", 0, 0)
-    top:SetHeight(frame:GetHeight() * 0.5)
+    alertpanel.top = alertpanel:CreateTexture(nil, "BORDER")
+    alertpanel.top:SetTexture(TEMPLATE.TOP)
+    alertpanel.top:SetPoint("BOTTOMLEFT", alertpanel, "TOPLEFT", 0, 0)
+    alertpanel.top:SetPoint("BOTTOMRIGHT", alertpanel, "TOPRIGHT", 0, 0)
+    alertpanel.top:SetHeight(half)

     --[[ BOTTOM ]]--
-    local bottom = alertpanel:CreateTexture(nil, "BORDER")
-    bottom:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BOTTOM]])
-    bottom:SetPoint("TOPLEFT", alertpanel,"BOTTOMLEFT", 0, 0)
-    bottom:SetPoint("TOPRIGHT", alertpanel, "BOTTOMRIGHT", 0, 0)
-    bottom:SetHeight(frame:GetHeight() * 0.5)
-
-    frame.AlertPanel = {alertpanel, right}
-    frame.ChangeAlertColor = ChangeAlertColor
+    alertpanel.bottom = alertpanel:CreateTexture(nil, "BORDER")
+    alertpanel.bottom:SetTexture(TEMPLATE.BOTTOM)
+    alertpanel.bottom:SetPoint("TOPLEFT", alertpanel, "BOTTOMLEFT", 0, 0)
+    alertpanel.bottom:SetPoint("TOPRIGHT", alertpanel, "BOTTOMRIGHT", 0, 0)
+    alertpanel.bottom:SetWidth(half)
+
+    frame.AlertPanel = alertpanel
+    frame.AlertColor = SetAlertColor
 end
 --[[
 ##########################################################