Quantcast

working out unit frame bloat from tables

Steven Jackson [07-07-14 - 21:10]
working out unit frame bloat from tables
Filename
Interface/AddOns/SVUI/libs/oUF/elements/aura.lua
Interface/AddOns/SVUI/libs/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.lua
Interface/AddOns/SVUI/packages/unit/SVUnit.lua
Interface/AddOns/SVUI/packages/unit/class/druid.lua
Interface/AddOns/SVUI/packages/unit/common/actionpanel.lua
Interface/AddOns/SVUI/packages/unit/common/aurabars.lua
Interface/AddOns/SVUI/packages/unit/common/auras.lua
Interface/AddOns/SVUI/packages/unit/common/health.lua
Interface/AddOns/SVUI/packages/unit/common/media.lua
Interface/AddOns/SVUI/packages/unit/common/misc.lua
Interface/AddOns/SVUI/packages/unit/common/power.lua
Interface/AddOns/SVUI/packages/unit/frames/all_units.lua
Interface/AddOns/SVUI/packages/unit/frames/basic/focus.lua
Interface/AddOns/SVUI/packages/unit/frames/basic/ft.lua
Interface/AddOns/SVUI/packages/unit/frames/basic/pet.lua
Interface/AddOns/SVUI/packages/unit/frames/basic/player.lua
Interface/AddOns/SVUI/packages/unit/frames/basic/pt.lua
Interface/AddOns/SVUI/packages/unit/frames/basic/target.lua
Interface/AddOns/SVUI/packages/unit/frames/basic/tot.lua
Interface/AddOns/SVUI/packages/unit/frames/extra/arena.lua
Interface/AddOns/SVUI/packages/unit/frames/extra/boss.lua
Interface/AddOns/SVUI/packages/unit/frames/group/assist.lua
Interface/AddOns/SVUI/packages/unit/frames/group/party.lua
Interface/AddOns/SVUI/packages/unit/frames/group/raid.lua
Interface/AddOns/SVUI/packages/unit/frames/group/rpet.lua
Interface/AddOns/SVUI/packages/unit/frames/group/tank.lua
Interface/AddOns/SVUI/system/classes/Database.lua
Interface/AddOns/SVUI/system/templates.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua
diff --git a/Interface/AddOns/SVUI/libs/oUF/elements/aura.lua b/Interface/AddOns/SVUI/libs/oUF/elements/aura.lua
index 1e12f1c..ccaba42 100644
--- a/Interface/AddOns/SVUI/libs/oUF/elements/aura.lua
+++ b/Interface/AddOns/SVUI/libs/oUF/elements/aura.lua
@@ -31,14 +31,23 @@ local createAuraIcon = function(icons, index)
 	button:SetHeight(icons.size or 16)

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

-	local icon = button:CreateTexture(nil, "BORDER")
-	icon: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 count = button:CreateFontString(nil, "OVERLAY")
-	count:SetFontObject(NumberFontNormal)
+	count:SetFont(icons.textFont or [[Fonts\FRIZQT__.TTF]], icons.textSize or 10, icons.textOutline or "NONE")
 	count:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -1, 0)
+	count:SetJustifyH("RIGHT")

 	local overlay = button:CreateTexture(nil, "OVERLAY")
 	overlay:SetTexture"Interface\\Buttons\\UI-Debuff-Overlays"
@@ -63,6 +72,7 @@ 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/libs/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.lua b/Interface/AddOns/SVUI/libs/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.lua
index 38df462..a71679f 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.lua
+++ b/Interface/AddOns/SVUI/libs/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.lua
@@ -74,13 +74,18 @@ local function CreateAuraBar(oUF, anchor)
 	frame:SetHeight(auraBarParent.auraBarHeight or 20)
 	frame:SetWidth((auraBarParent.auraBarWidth or auraBarParent:GetWidth()) - (frame:GetHeight() + (auraBarParent.gap or 0)))
 	frame.anchor = anchor
+
+	local bg = frame:CreateTexture(nil, "BORDER")
+	bg:SetAllPoints(frame)
+	bg:SetTexture(0, 0, 0, 0.25)
+	frame.bg = bg

 	-- the main bar
 	local statusBar = CreateFrame("StatusBar", nil, frame)
-	statusBar:SetStatusBarTexture(auraBarParent.auraBarTexture or [[Interface\TargetingFrame\UI-StatusBar]])
+	statusBar:SetStatusBarTexture(auraBarParent.barTexture or [[Interface\TargetingFrame\UI-StatusBar]])
 	statusBar:SetAlpha(auraBarParent.fgalpha or 1)
-	statusBar:SetAllPoints(frame)
-
+	statusBar:SetPoint("TOPLEFT", frame, "TOPLEFT", 1, -1)
+	statusBar:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -1, 1)
 	frame.statusBar = statusBar

 	if auraBarParent.down == true then
@@ -113,28 +118,25 @@ local function CreateAuraBar(oUF, anchor)
 	statusBar.iconHolder:SetScript('OnLeave', OnLeave)
 	statusBar.iconHolder.UpdateTooltip = UpdateTooltip

-	statusBar.icon = statusBar.iconHolder:CreateTexture(nil, 'BACKGROUND')
+	statusBar.icon = statusBar.iconHolder:CreateTexture(nil, 'OVERLAY')
 	statusBar.icon:SetTexCoord(.07, .93, .07, .93)
-	statusBar.icon:SetAllPoints()
+	statusBar.icon:SetPoint("TOPLEFT", statusBar.iconHolder, "TOPLEFT", 1, -1)
+	statusBar.icon:SetPoint("BOTTOMRIGHT", statusBar.iconHolder, "BOTTOMRIGHT", -1, 1)

 	statusBar.spelltime = statusBar:CreateFontString(nil, 'ARTWORK')
-	if auraBarParent.spellTimeObject then
-		statusBar.spelltime:SetFontObject(auraBarParent.spellTimeObject)
-	else
-		statusBar.spelltime:SetFont(auraBarParent.spellTimeFont or [[Fonts\FRIZQT__.TTF]], auraBarParent.spellTimeSize or 10)
-	end
+	statusBar.spelltime:SetFont(auraBarParent.textFont or [[Fonts\FRIZQT__.TTF]], auraBarParent.textSize or 10, auraBarParent.textOutline or "NONE")
 	statusBar.spelltime:SetTextColor(1 ,1, 1)
+	statusBar.spelltime:SetShadowOffset(1, -1)
+  	statusBar.spelltime:SetShadowColor(0, 0, 0)
 	statusBar.spelltime:SetJustifyH'RIGHT'
 	statusBar.spelltime:SetJustifyV'CENTER'
 	statusBar.spelltime:SetPoint'RIGHT'

 	statusBar.spellname = statusBar:CreateFontString(nil, 'ARTWORK')
-	if auraBarParent.spellNameObject then
-		statusBar.spellname:SetFontObject(auraBarParent.spellNameObject)
-	else
-		statusBar.spellname:SetFont(auraBarParent.spellNameFont or [[Fonts\FRIZQT__.TTF]], auraBarParent.spellNameSize or 10)
-	end
+	statusBar.spellname:SetFont(auraBarParent.textFont or [[Fonts\FRIZQT__.TTF]], auraBarParent.textSize or 10, auraBarParent.textOutline or "NONE")
 	statusBar.spellname:SetTextColor(1, 1, 1)
+	statusBar.spellname:SetShadowOffset(1, -1)
+  	statusBar.spellname:SetShadowColor(0, 0, 0)
 	statusBar.spellname:SetJustifyH'LEFT'
 	statusBar.spellname:SetJustifyV'CENTER'
 	statusBar.spellname:SetPoint'LEFT'
diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
index 9ae50c5..b748f9b 100644
--- a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
+++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
@@ -222,10 +222,7 @@ end

 function MOD:RefreshUnitFrames()
 	if SuperVillain.db['SVUnit'].enable~=true then return end
-	self:UpdateAuraUpvalues()
 	self:RefreshUnitColors()
-	self:RefreshUnitFonts()
-	self:RefreshUnitTextures()

 	for unit in pairs(BasicFrames)do
 		if self.db[unit].enable then
diff --git a/Interface/AddOns/SVUI/packages/unit/class/druid.lua b/Interface/AddOns/SVUI/packages/unit/class/druid.lua
index ae86331..8f1b4ad 100644
--- a/Interface/AddOns/SVUI/packages/unit/class/druid.lua
+++ b/Interface/AddOns/SVUI/packages/unit/class/druid.lua
@@ -48,7 +48,7 @@ DRUID ALT MANA
 ##########################################################
 ]]--
 local UpdateAltPower = function(self, unit, arg1, arg2)
-	local value = self:GetParent().Power.value;
+	local value = self:GetParent().InfoPanel.Power;
 	if(arg1 ~= arg2) then
 		local color = oUF_SuperVillain['colors'].power['MANA']
 		color = SuperVillain:HexColor(color[1],color[2],color[3])
@@ -64,18 +64,18 @@ local UpdateAltPower = function(self, unit, arg1, arg2)
 	else
 		self.Text:SetText()
 	end
-end;
+end

-local function CreateAltMana(playerFrame,eclipse)
-	local bar = CreateFrame('Frame', nil, playerFrame)
+local function CreateAltMana(playerFrame, eclipse)
+	local bar = CreateFrame("Frame", nil, playerFrame)
 	bar:SetFrameStrata("LOW")
 	bar:SetPoint("TOPLEFT", eclipse, "TOPLEFT", 38, 0)
 	bar:SetPoint("BOTTOMRIGHT", eclipse, "BOTTOMRIGHT", 0, 0)
 	bar:SetFixedPanelTemplate("Default")
-	bar:SetFrameLevel(bar:GetFrameLevel()+1)
+	bar:SetFrameLevel(bar:GetFrameLevel() + 1)
 	bar.colorPower = true;
 	bar.PostUpdatePower = UpdateAltPower;
-	bar.ManaBar = CreateFrame('StatusBar', nil, bar)
+	bar.ManaBar = CreateFrame("StatusBar", nil, bar)
 	bar.ManaBar.noupdate = true;
 	bar.ManaBar:SetStatusBarTexture(SuperVillain.Media.bar.glow)
 	bar.ManaBar:FillInner(bar)
@@ -83,11 +83,11 @@ local function CreateAltMana(playerFrame,eclipse)
 	bar.bg:SetAllPoints(bar.ManaBar)
 	bar.bg:SetTexture([[Interface\BUTTONS\WHITE8X8]])
 	bar.bg.multiplier = 0.3;
-	bar.Text = bar.ManaBar:CreateFontString(nil, 'OVERLAY')
+	bar.Text = bar.ManaBar:CreateFontString(nil, "OVERLAY")
 	bar.Text:SetAllPoints(bar.ManaBar)
-	MOD:SetUnitFont(bar.Text)
+	bar.Text:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
 	return bar
-end;
+end
 --[[
 ##########################################################
 POSITIONING
@@ -129,7 +129,7 @@ local Reposition = function(self)

 	bar.Text:SetPoint("TOPLEFT", bar, "TOPLEFT", 10, 0)
 	bar.Text:SetPoint("BOTTOMRIGHT", bar, "BOTTOMRIGHT", -10, 0)
-end;
+end
 --[[
 ##########################################################
 DRUID ECLIPSE BAR
@@ -171,7 +171,7 @@ local TrackerCallback = function(energy, direction, virtual_energy, virtual_dire
 		energy, direction, virtual_energy, virtual_direction, virtual_eclipse = LibBalancePowerTracker:GetEclipseEnergyInfo()
 		directionHandler[virtual_direction](playerFrame.EclipseBar)
 	end
-end;
+end

 function MOD:CreateDruidResourceBar(playerFrame)
 	local bar = CreateFrame('Frame', nil, playerFrame)
@@ -265,7 +265,7 @@ function MOD:CreateDruidResourceBar(playerFrame)
 	playerFrame.ClassBarRefresh = Reposition;

 	return bar
-end;
+end
 --[[
 ##########################################################
 DRUID COMBO POINTS
@@ -287,21 +287,21 @@ local comboTextures = {

 local ShowPoint = function(self)
 	self:SetAlpha(1)
-end;
+end

 local HidePoint = function(self)
 	self.Icon:SetTexture(comboTextures[random(1,3)])
 	self:SetAlpha(0)
-end;
+end

 local ShowSmallPoint = function(self)
 	self:SetAlpha(1)
-end;
+end

 local HideSmallPoint = function(self)
 	self.Icon:SetVertexColor(unpack(cpointColor[i]))
 	self:SetAlpha(0)
-end;
+end

 local RepositionCombo = function(self)
 	local bar = self.HyperCombo.CPoints;
@@ -328,7 +328,7 @@ local RepositionCombo = function(self)
 			bar[i]:Point("LEFT", bar[i - 1], "RIGHT", -2, 0)
 		end
 	end
-end;
+end

 function MOD:CreateDruidCombobar(targetFrame, isSmall)
 	local max = 5
@@ -362,11 +362,11 @@ function MOD:CreateDruidCombobar(targetFrame, isSmall)
 		cpoint.Icon = icon

 		bar.CPoints[i] = cpoint
-	end;
+	end

 	targetFrame.ComboRefresh = RepositionCombo;
 	bar.PointShow = isSmall and ShowSmallPoint or ShowPoint;
 	bar.PointHide = isSmall and HideSmallPoint or HidePoint;

 	return bar
-end;
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/common/actionpanel.lua b/Interface/AddOns/SVUI/packages/unit/common/actionpanel.lua
index 444684b..1c295c1 100644
--- a/Interface/AddOns/SVUI/packages/unit/common/actionpanel.lua
+++ b/Interface/AddOns/SVUI/packages/unit/common/actionpanel.lua
@@ -189,10 +189,36 @@ local function CreateActionPanel(frame, offset)
 end;
 --[[
 ##########################################################
+NAME
+##########################################################
+]]--
+local function CreateNameText(frame, unitName)
+	local db = MOD.db
+
+	if(MOD.db[unitName] and MOD.db[unitName].name) then
+		db = MOD.db[unitName].name
+	end
+
+	local name = frame:CreateFontString(nil, "OVERLAY")
+	name:SetShadowOffset(2, -2)
+	name:SetShadowColor(0, 0, 0, 1)
+	name:SetFontTemplate()
+
+	if unitNmae == "target" then
+		name:SetPoint("RIGHT", frame)
+	else
+		name:SetPoint("CENTER", frame)
+	end
+
+	name:SetFont(LSM:Fetch("font", db.font), db.fontSize, db.fontOutline)
+	return name;
+end
+--[[
+##########################################################
 ACTIONPANEL / INFOPANEL
 ##########################################################
 ]]--
-function MOD:SetActionPanel(frame, unit)
+function MOD:SetActionPanel(frame, unit, noHealthText, noPowerText, noMiscText)
 	if(unit and (unit == "target" or unit == "player")) then
 		frame.ActionPanel = CreateActionPanel(frame, 3)
 		frame.Threat = CreateThreat(frame.ActionPanel, unit)
@@ -252,11 +278,32 @@ function MOD:SetActionPanel(frame, unit)
 		frame.InfoPanel:SetFrameLevel(frame.InfoPanel:GetFrameLevel() + 30)
 	end

-	local miscText = frame.InfoPanel:CreateFontString(nil, "OVERLAY")
-	MOD:SetUnitFont(miscText)
-	miscText:Point("CENTER", frame, "CENTER", 0, 0)
+	frame.InfoPanel.Name = CreateNameText(frame.InfoPanel, unit)
+
+	local reverse = unit and (unit == "target" or unit == "focus" or unit == "boss" or unit == "arena") or false;
+	local offset, direction
+
+	if(not noHealthText) then
+		frame.InfoPanel.Health = frame.InfoPanel:CreateFontString(nil, "OVERLAY")
+		frame.InfoPanel.Health:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+		offset = reverse and 2 or -2;
+		direction = reverse and "LEFT" or "RIGHT";
+		frame.InfoPanel.Health:Point(direction, frame.InfoPanel, direction, offset, 0)
+	end
+
+	if(not noPowerText) then
+		frame.InfoPanel.Power = frame.InfoPanel:CreateFontString(nil, "OVERLAY")
+		frame.InfoPanel.Power:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+		offset = reverse and -2 or 2;
+		direction = reverse and "RIGHT" or "LEFT";
+		frame.InfoPanel.Power:Point(direction, frame.InfoPanel, direction, offset, 0)
+	end

-	frame.InfoPanel.Misc = miscText
+	if(not noMiscText) then
+		frame.InfoPanel.Misc = frame.InfoPanel:CreateFontString(nil, "OVERLAY")
+		frame.InfoPanel.Misc:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+		frame.InfoPanel.Misc:Point("CENTER", frame, "CENTER", 0, 0)
+	end

 	frame.HealthPanel = CreateFrame("Frame", nil, frame)
 	frame.HealthPanel:SetAllPoints(frame)
diff --git a/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua b/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua
index 5ae3c93..08a6326 100644
--- a/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua
+++ b/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua
@@ -32,45 +32,30 @@ local tsort,floor,sub,huge = table.sort,math.floor,string.sub,math.huge;
 BUILD FUNCTION
 ##########################################################
 ]]--
-function MOD:CreateAuraBars()
-	local parent = self:GetParent().parent
-	local db = parent.db.aurabar
-	local auraBar = self.statusBar;
-	self:SetFixedPanelTemplate('Transparent',true)
-	auraBar:FillInner(self)
-	MOD:WatchUnitMedia("aurabarfonts", auraBar)
-	auraBar.spelltime:SetFontTemplate(LSM:Fetch("font", MOD.db.auraFont), MOD.db.auraFontSize, MOD.db.auraFontOutline, "RIGHT", nil, true)
-	auraBar.spelltime:SetShadowOffset(1, -1)
-  	auraBar.spelltime:SetShadowColor(0, 0, 0)
-	auraBar.spellname:SetFontTemplate(LSM:Fetch("font", MOD.db.auraFont), MOD.db.auraFontSize, MOD.db.auraFontOutline, "LEFT", nil, true)
-	auraBar.spellname:SetShadowOffset(1, -1)
-  	auraBar.spellname:SetShadowColor(0, 0, 0)
-	auraBar.spellname:ClearAllPoints()
-	auraBar.spellname:SetPoint('LEFT',auraBar,'LEFT',4,0)
-	auraBar.spellname:SetPoint('RIGHT',auraBar.spelltime,'LEFT',-4,0)
-	auraBar.iconHolder:SetFixedPanelTemplate('Transparent',true)
-	auraBar.icon:FillInner(auraBar.iconHolder)
-	auraBar.icon:SetDrawLayer('OVERLAY')
-	auraBar.bg = auraBar:CreateTexture(nil,'BORDER')
-	auraBar.bg:Hide()
-	auraBar.iconHolder:RegisterForClicks('RightButtonUp')
-	auraBar.iconHolder:SetScript('OnClick',function(self)
-		if not IsShiftKeyDown()then return end;
-		local n = self:GetParent().aura.name;
-		local id = self:GetParent().aura.spellID;
-		if id then
-			SuperVillain:AddonMessage(format(L['The spell "%s" has been added to the Blocked unitframe aura filter.'],n))
-			SuperVillain.Filters:Change('Blocked', id, {['enable'] = true, ['priority'] = 0})
-			MOD:RefreshUnitFrames()
-		end
-	end)
-end;
+local AuraRemover_OnClick = function(self)
+	if not IsShiftKeyDown() then return end
+	local n = self:GetParent().aura.name;
+	local id = self:GetParent().aura.spellID;
+	if id then
+		SuperVillain:AddonMessage(format(L["The spell "%s" has been added to the Blocked unitframe aura filter."], n))
+		SuperVillain.Filters:Change("Blocked", id, {["enable"] = true, ["priority"] = 0})
+		MOD:RefreshUnitFrames()
+	end
+end
+
+local function PostCreateAuraBars(self)
+	self:SetPanelTemplate("Bar")
+	local auraBar = self.statusBar
+	auraBar.iconHolder:SetFixedPanelTemplate("Transparent")
+	auraBar.iconHolder:RegisterForClicks("RightButtonUp")
+	auraBar.iconHolder:SetScript("OnClick", AuraRemover_OnClick)
+end

 function MOD:ColorizeAuraBars()
 	local bars = self.bars;
-	for i=1,#bars do
+	for i = 1, #bars do
 		local auraBar = bars[i]
-		if not auraBar:IsVisible()then break end;
+		if not auraBar:IsVisible()then break end
 		local color
 		local spellName = auraBar.statusBar.aura.name;
 		local spellID = auraBar.statusBar.aura.spellID;
@@ -78,124 +63,126 @@ function MOD:ColorizeAuraBars()
 			color = oUF_SuperVillain.colors.shield_bars
 		elseif(SuperVillain.db.media.unitframes.spellcolor[spellName]) then
 			color = SuperVillain.db.media.unitframes.spellcolor[spellName]
-		end;
+		end
 		if color then
 			auraBar.statusBar:SetStatusBarColor(unpack(color))
-			auraBar.statusBar.bg:SetTexture(color[1]*0.25,color[2]*0.25,color[3]*0.25)
+			auraBar:SetBackdropColor(color[1] * 0.25, color[2] * 0.25, color[3] * 0.25)
 		else
-			local r,g,b = auraBar.statusBar:GetStatusBarColor()
-			auraBar.statusBar.bg:SetTexture(r*0.25,g*0.25,b*0.25)
+			local r, g, b = auraBar.statusBar:GetStatusBarColor()
+			auraBar:SetBackdropColor(r * 0.25, g * 0.25, b * 0.25)
 		end
 	end
-end;
+end

-local function CheckAuraFilter(setting,helpful)
+local function CheckAuraFilter(setting, helpful)
 	local friend, enemy = false, false
-	if type(setting)=='boolean' then
+	if type(setting) == "boolean" then
 		friend = setting;
 	  	enemy = setting
-	elseif setting and type(setting)~='string' then
+	elseif setting and type(setting) ~= "string" then
 		friend = setting.friendly;
 	  	enemy = setting.enemy
-	end;
+	end
 	if (friend and helpful) or (enemy and not helpful) then
 	  return true;
 	end
   	return false
-end;
+end

-function MOD:AuraBarFilter(unit,name,_,_,_,debuffType,duration,_,unitCaster,isStealable,shouldConsolidate,spellID)
-	if not MOD.db then return end;
+function MOD:AuraBarFilter(unit, name, _, _, _, debuffType, duration, _, unitCaster, isStealable, shouldConsolidate, spellID)
+	if not MOD.db then return end
 	if(spellID == 65148) then
 		return false;
 	end
 	local db = self.db.aurabar;
-	local filtered = (unitCaster=='player' or unitCaster=='vehicle') and true or false;
+	local filtered = (unitCaster == "player" or unitCaster == "vehicle") and true or false;
 	local allowed = true;
 	local pass = false;
-	local friendly = UnitIsFriend('player',unit) == 1 and true or false;
+	local friendly = UnitIsFriend("player", unit) == 1 and true or false;

-	if CheckAuraFilter(db.filterPlayer,friendly) then
-		allowed=filtered;
-		pass=true
-	end;
-	if CheckAuraFilter(db.filterDispellable,friendly)then
-		if (self.type=='buffs' and not isStealable) or (self.type=='debuffs' and debuffType and not SuperVillain:DispellAvailable(debuffType)) or debuffType==nil then
-			filtered=false
-		end;
-		pass=true
-	end;
-	if CheckAuraFilter(db.filterRaid,friendly)then
-		if shouldConsolidate==1 then filtered=false end;
-		pass=true
-	end;
-	if CheckAuraFilter(db.filterInfinite,friendly)then
-		if duration==0 or not duration then
-			filtered=false
-		end;
-		pass=true
-	end;
-	if CheckAuraFilter(db.filterBlocked,friendly)then
-		local blackList = SuperVillain.Filters['Blocked'][name]
-		if blackList and blackList.enable then filtered=false end;
-		pass=true
-	end;
-	if CheckAuraFilter(db.filterAllowed,friendly)then
-		local whiteList = SuperVillain.Filters['Allowed'][name]
+	if CheckAuraFilter(db.filterPlayer, friendly) then
+		allowed = filtered;
+		pass = true
+	end
+	if CheckAuraFilter(db.filterDispellable, friendly)then
+		if (self.type == "buffs" and not isStealable) or (self.type == "debuffs" and debuffType and not SuperVillain:DispellAvailable(debuffType)) or debuffType == nil then
+			filtered = false
+		end
+		pass = true
+	end
+	if CheckAuraFilter(db.filterRaid, friendly)then
+		if shouldConsolidate == 1 then filtered = false end
+		pass = true
+	end
+	if CheckAuraFilter(db.filterInfinite, friendly)then
+		if duration == 0 or not duration then
+			filtered = false
+		end
+		pass = true
+	end
+	if CheckAuraFilter(db.filterBlocked, friendly)then
+		local blackList = SuperVillain.Filters["Blocked"][name]
+		if blackList and blackList.enable then filtered = false end
+		pass = true
+	end
+	if CheckAuraFilter(db.filterAllowed, friendly)then
+		local whiteList = SuperVillain.Filters["Allowed"][name]
 		if whiteList and whiteList.enable then
-			filtered=true
+			filtered = true
 		elseif not pass then
-			filtered=false
-		end;
-		pass=true
-	end;
+			filtered = false
+		end
+		pass = true
+	end
 	if db.useFilter and SuperVillain.Filters[db.useFilter]then
 		local spellsDB = SuperVillain.Filters[db.useFilter];
-		if db.useFilter ~= 'Blocked' then
+		if db.useFilter  ~= "Blocked" then
 			if spellsDB[name] and spellsDB[name].enable and allowed then
-				filtered=true
+				filtered = true
 			elseif not pass then
-				filtered=false
+				filtered = false
 			end
 		elseif spellsDB[name] and spellsDB[name].enable then
-			filtered=false
+			filtered = false
 		end
-	end;
+	end
 	return filtered
-end;
+end
 --[[
 ##########################################################
 UTILITY
 ##########################################################
 ]]--
 function MOD:CreateAuraBarHeader(frame,unitName)
-	local abHeader = CreateFrame('Frame',nil,frame)
-	abHeader.parent = frame;
-	abHeader.PostCreateBar = self.CreateAuraBars;
-	abHeader.gap = -1;
-	abHeader.spacing = -1;
-	abHeader.spark = true;
-	abHeader.filter = self.AuraBarFilter;
-	abHeader.PostUpdate = self.ColorizeAuraBars;
+	local auraBarParent = CreateFrame('Frame',nil,frame)
+	auraBarParent.parent = frame;
+	auraBarParent.PostCreateBar = PostCreateAuraBars;
+	auraBarParent.gap = -1;
+	auraBarParent.spacing = -1;
+	auraBarParent.spark = true;
+	auraBarParent.filter = self.AuraBarFilter;
+	auraBarParent.PostUpdate = self.ColorizeAuraBars;
 	local bartex = self.db.auraBarStatusbar
-	abHeader.auraBarTexture = LSM:Fetch("statusbar", bartex);
-	self:WatchUnitMedia("aurabars", abHeader)
-	return abHeader
-end;
+	auraBarParent.barTexture = LSM:Fetch("statusbar", bartex);
+	auraBarParent.textFont = LSM:Fetch("font", MOD.db.auraFont)
+	auraBarParent.textSize = MOD.db.auraFontSize
+	auraBarParent.textOutline = MOD.db.auraFontOutline
+	return auraBarParent
+end

 function MOD:SortAuraBars(parent,sorting)
-	if not parent then return end;
+	if not parent then return end
 	if sorting=='TIME_REMAINING' then
 		parent.sort=true;
 	elseif sorting=='TIME_REMAINING_REVERSE' then
-		parent.sort=function(a,b)local compA,compB=a.noTime and huge or a.expirationTime, b.noTime and huge or b.expirationTime; return compA < compB end;
+		parent.sort=function(a,b)local compA,compB=a.noTime and huge or a.expirationTime, b.noTime and huge or b.expirationTime; return compA < compB end
 	elseif sorting=='TIME_DURATION' then
-		parent.sort=function(a,b)local compA,compB=a.noTime and huge or a.duration, b.noTime and huge or b.duration; return compA > compB end;
+		parent.sort=function(a,b)local compA,compB=a.noTime and huge or a.duration, b.noTime and huge or b.duration; return compA > compB end
 	elseif sorting=='TIME_DURATION_REVERSE' then
-		parent.sort=function(a,b)local compA,compB=a.noTime and huge or a.duration, b.noTime and huge or b.duration; return compA < compB end;
+		parent.sort=function(a,b)local compA,compB=a.noTime and huge or a.duration, b.noTime and huge or b.duration; return compA < compB end
 	elseif sorting=='NAME' then
-		parent.sort=function(a,b)return a.name > b.name end;
+		parent.sort=function(a,b)return a.name > b.name end
 	else
 		parent.sort=nil;
-	end;
-end;
\ No newline at end of file
+	end
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/common/auras.lua b/Interface/AddOns/SVUI/packages/unit/common/auras.lua
index f05dbd6..61307a0 100644
--- a/Interface/AddOns/SVUI/packages/unit/common/auras.lua
+++ b/Interface/AddOns/SVUI/packages/unit/common/auras.lua
@@ -80,7 +80,22 @@ local textCounterOffsets = {
 LOCAL FUNCTIONS
 ##########################################################
 ]]--
-local function SetAuraTemplate(aura)
+local AuraRemover_OnClick = function(self)
+	if not IsShiftKeyDown() then return end
+	local name = self.name;
+	if name then
+		SuperVillain:AddonMessage(format(L['The spell "%s" has been added to the Blocked unitframe aura filter.'], name))
+		SuperVillain.Filters["Blocked"]["spells"][name] = {["enable"] = true, ["priority"] = 0}
+		MOD:RefreshUnitFrames()
+	end
+end
+
+local function PostCreateAuraIcon(aura)
+	aura.cd.noOCC = true;
+	aura.cd.noCooldownCount = true;
+	aura.cd:SetReverse()
+	aura.overlay:SetTexture(nil)
+	aura.stealable:SetTexture(nil)
     if aura.styled then return end
     if aura.SetNormalTexture then aura:SetNormalTexture("") end
 	if aura.SetHighlightTexture then aura:SetHighlightTexture("") end
@@ -102,137 +117,11 @@ local function SetAuraTemplate(aura)
     aura:SetBackdropColor(0, 0, 0, 0)
     aura:SetBackdropBorderColor(0, 0, 0)
     aura:RegisterForClicks("RightButtonUp")
-	aura:SetScript("OnClick", function(self)
-		if not IsShiftKeyDown()then return end
-		local name = self.name;
-		if name then
-			SuperVillain:AddonMessage(format(L['The spell "%s" has been added to the Blocked unitframe aura filter.'], name))
-			SuperVillain.Filters["Blocked"]["spells"][name] = {["enable"] = true, ["priority"] = 0}
-			MOD:RefreshUnitFrames()
-		end
-	end)
+	aura:SetScript("OnClick", AuraRemover_OnClick)
 	aura.styled = true
-end
---[[
-##########################################################
-BUILD FUNCTION
-##########################################################
-]]--
-function MOD:CreateBuffs(frame)
-	local aura = CreateFrame("Frame", nil, frame)
-	aura.spacing = 2;
-	aura.PostCreateIcon = self.CreateAuraIcon;
-	aura.PostUpdateIcon = self.PostUpdateAura;
-	aura.CustomFilter = self.AuraFilter;
-	aura:SetFrameLevel(10)
-	aura.type = "buffs"
-	self:WatchUnitMedia("aurafonts", aura)
-	return aura
-end
-
-function MOD:CreateDebuffs(frame)
-	local aura = CreateFrame("Frame", nil, frame)
-	aura.spacing = 2;
-	aura.PostCreateIcon = self.CreateAuraIcon;
-	aura.PostUpdateIcon = self.PostUpdateAura;
-	aura.CustomFilter = self.AuraFilter;
-	aura.type = "debuffs"
-	aura:SetFrameLevel(10)
-	self:WatchUnitMedia("aurafonts", aura)
-	return aura
-end
-
-function MOD:CreateAuraWatch(frame)
-	local aWatch = CreateFrame("Frame", nil, frame)
-	aWatch:SetFrameLevel(frame:GetFrameLevel()  +  25)
-	aWatch:FillInner(frame.Health)
-	aWatch.presentAlpha = 1;
-	aWatch.missingAlpha = 0;
-	aWatch.strictMatching = true;
-	aWatch.icons = {}
-	return aWatch
-end
-
-function MOD:UpdateAuraTimer(elapsed)
-	self.expiration = self.expiration - elapsed;
-	if(self.nextUpdate > 0) then
-		self.nextUpdate = self.nextUpdate - elapsed;
-		return
-	end
-	if(self.expiration  <= 0) then
-		self:SetScript("OnUpdate", nil)
-		if(self.text:GetFont()) then
-			self.text:SetText("")
-		end
-		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:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-		self.text:SetFormattedText(timeFormat, timeLeft)
-	end
-end
-
-function MOD:CreateAuraIcon(aura, index, offset)
-	aura.cd.noOCC = true;
-	aura.cd.noCooldownCount = true;
-	aura.cd:SetReverse()
-	aura.cd:FillInner(aura, 0, 0)
-
-	aura.text = aura.cd:CreateFontString(nil, "OVERLAY")
-	aura.text:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-	aura.text:SetPoint("CENTER", 1, 1)
-	aura.text:SetJustifyH("CENTER")
-
-	aura.icon:FillInner(aura, 2, 2)
-	aura.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	aura.icon:SetDrawLayer("ARTWORK")
-
-	aura.count:ClearAllPoints()
-	aura.count:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-	aura.count:SetPoint("BOTTOMRIGHT", 1, 1)
-	aura.count:SetJustifyH("RIGHT")
-
-	aura.overlay:SetTexture(nil)
-
-	aura.stealable:SetTexture(nil)
-
-	SetAuraTemplate(aura)
-end
+end

-function MOD:PostUpdateAura(unit, button, index, offset, filter, isDebuff, duration, timeLeft)
+local function PostUpdateAuraIcon(unit, button, index, offset, filter, isDebuff, duration, timeLeft)
 	local name, _, _, _, dtype, duration, expiration, _, isStealable = UnitAura(unit, index, button.filter)
 	local isFriend = UnitIsFriend('player', unit) == 1 and true or false
 	if button.isDebuff then
@@ -284,20 +173,12 @@ function MOD:PostUpdateAura(unit, button, index, offset, filter, isDebuff, durat
 	end
 end

-function MOD:UpdateAuraWatchFromHeader(group, override)
-	assert(self[group],"Invalid group specified.")
-	for i=1,self[group]:GetNumChildren() do
-		local frame = select(i, self[group]:GetChildren())
-		if frame and frame.Health then MOD:UpdateAuraWatch(frame,override) end
-	end
-end
-
-local function CheckAuraFilter(setting,helpful)
+local function CheckAuraFilter(setting, helpful)
 	local friend, enemy = false, false
-	if type(setting)=='boolean' then
+	if type(setting) == "boolean" then
 		friend = setting;
 	  	enemy = setting
-	elseif setting and type(setting)~='string' then
+	elseif setting and type(setting) ~= "string" then
 		friend = setting.friendly;
 	  	enemy = setting.enemy
 	end
@@ -307,116 +188,191 @@ local function CheckAuraFilter(setting,helpful)
   	return false
 end

-function MOD:AuraFilter(unit, icon, name, _, _, _, dtype, duration, _, caster, isStealable, shouldConsolidate, spellID, canApplyAura, isBossAura)
+local function CustomAuraIconFilter(self, unit, icon, name, _, _, _, dtype, duration, _, caster, isStealable, shouldConsolidate, spellID, canApplyAura, isBossAura)
 	if spellID == 65148 then return false end
-	local isPlayer,friendly;
+	local isPlayer, friendly;
 	local db = self:GetParent().db;
 	local auraType = self.type;
 	if not db or not auraType or not db[auraType] then return true end;
-	local filtered=true;
-	local allowed=true;
-	local pass=false;
-	local isPlayer=caster=='player'or caster=='vehicle'
-	local friendly=UnitIsFriend('player',unit)==1 and true or false;
-	local filterType=friendly and db.friendlyAuraType or db.enemyAuraType;
-	icon.isPlayer=isPlayer;
-	icon.owner=caster;
-	icon.name=name;
-	icon.priority=0;
-	local shieldSpell = SuperVillain.Filters['Shield'][name]
+	local filtered = true;
+	local allowed = true;
+	local pass = false;
+	local isPlayer = caster == "player"or caster == "vehicle"
+	local friendly = UnitIsFriend("player", unit) == 1 and true or false;
+	local filterType = friendly and db.friendlyAuraType or db.enemyAuraType;
+	icon.isPlayer = isPlayer;
+	icon.owner = caster;
+	icon.name = name;
+	icon.priority = 0;
+	local shieldSpell = SuperVillain.Filters["Shield"][name]
 	if shieldSpell and shieldSpell.enable then
-		icon.priority=shieldSpell.priority
+		icon.priority = shieldSpell.priority
 	end
-	if CheckAuraFilter(db.filterPlayer,friendly)then
-		if isPlayer then filtered=true else filtered=false end
-		allowed=filtered;
-		pass=true
+	if CheckAuraFilter(db.filterPlayer, friendly)then
+		if isPlayer then filtered = true else filtered = false end
+		allowed = filtered;
+		pass = true
 	end
-	if CheckAuraFilter(db.filterDispellable,friendly) then
-		if (auraType=='buffs' and not isStealable) or (auraType=='debuffs' and dtype and not SuperVillain:DispellAvailable(dtype)) or dtype==nil then
-			filtered=false
+	if CheckAuraFilter(db.filterDispellable, friendly) then
+		if (auraType == "buffs" and not isStealable) or (auraType == "debuffs" and dtype and not SuperVillain:DispellAvailable(dtype)) or dtype == nil then
+			filtered = false
 		end
-		pass=true
+		pass = true
 	end
-	if CheckAuraFilter(db.filterRaid,friendly) then
-		if shouldConsolidate==1 then filtered=false end
-		pass=true
+	if CheckAuraFilter(db.filterRaid, friendly) then
+		if shouldConsolidate == 1 then filtered = false end
+		pass = true
 	end
-	if CheckAuraFilter(db.filterInfinite,friendly)then
-		if duration==0 or not duration then
-			filtered=false
+	if CheckAuraFilter(db.filterInfinite, friendly)then
+		if duration == 0 or not duration then
+			filtered = false
 		end
-		pass=true
+		pass = true
 	end
-	if CheckAuraFilter(db.useBlocked,friendly) then
-		local blackListSpell=SuperVillain.Filters['Blocked'][name]
+	if CheckAuraFilter(db.useBlocked, friendly) then
+		local blackListSpell = SuperVillain.Filters["Blocked"][name]
 		if blackListSpell and blackListSpell.enable then
-			filtered=false
+			filtered = false
 		end
-		pass=true
+		pass = true
 	end
-	if CheckAuraFilter(db.useAllowed,friendly) then
-		local whiteListSpell=SuperVillain.Filters['Allowed'][name]
+	if CheckAuraFilter(db.useAllowed, friendly) then
+		local whiteListSpell = SuperVillain.Filters["Allowed"][name]
 		if whiteListSpell and whiteListSpell.enable then
-			filtered=true;
-			icon.priority=whiteListSpell.priority
+			filtered = true;
+			icon.priority = whiteListSpell.priority
 		elseif not pass then
-			filtered=false
+			filtered = false
 		end
-		pass=true
+		pass = true
 	end

 	if db.useFilter and SuperVillain.Filters[db.useFilter] then
-		local spellDB=SuperVillain.Filters[db.useFilter];
-		if db.useFilter ~= 'Blocked' then
+		local spellDB = SuperVillain.Filters[db.useFilter];
+		if db.useFilter  ~= "Blocked" then
 			if spellDB[name] and spellDB[name].enable and allowed then
-				filtered=true;
-				icon.priority=spellDB[name].priority;
-				if db.useFilter == 'Shield' and (spellID==86698 or spellID==86669) then
-					filtered=false
+				filtered = true;
+				icon.priority = spellDB[name].priority;
+				if db.useFilter == "Shield" and (spellID == 86698 or spellID == 86669) then
+					filtered = false
 				end
 			elseif not pass then
-				filtered=false
+				filtered = false
 			end
 		elseif spellDB[name] and spellDB[name].enable then
-			filtered=false
+			filtered = false
 		end
 	end
 	return filtered
 end
 --[[
 ##########################################################
-UPDATE
+BUILD FUNCTION
 ##########################################################
 ]]--
-function MOD:UpdateAuraUpvalues()
-	AURA_FONT = LSM:Fetch("font",MOD.db.auraFont);
-	AURA_FONTSIZE = MOD.db.auraFontSize;
-	AURA_OUTLINE = MOD.db.auraFontOutline;
-end
+function MOD:CreateBuffs(frame)
+	local aura = CreateFrame("Frame", nil, frame)
+	aura.spacing = 2;
+	aura.PostCreateIcon = PostCreateAuraIcon;
+	aura.PostUpdateIcon = PostUpdateAuraIcon;
+	aura.CustomFilter = CustomAuraIconFilter;
+	aura:SetFrameLevel(10)
+	aura.type = "buffs"
+	aura.textFont = LSM:Fetch("font", MOD.db.auraFont)
+	aura.textSize = MOD.db.auraFontSize
+	aura.textOutline = MOD.db.auraFontOutline
+	return aura
+end

-function MOD:UpdateAuraIconSettings(aura, useParent)
-	if(useParent) then
-		aura.text:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-		aura.count:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-		-- if aura:IsMouseEnabled() then
-		-- 	aura:EnableMouse(false)
-		-- end
-	else
-		local i = 1;
-		while aura[i] do
-			local icon = aura[i]
-			icon.text:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-			icon.count:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-			-- if icon:IsMouseEnabled() then
-			-- 	icon:EnableMouse(false)
-			-- end
-			i = i + 1
+function MOD:CreateDebuffs(frame)
+	local aura = CreateFrame("Frame", nil, frame)
+	aura.spacing = 2;
+	aura.PostCreateIcon = PostCreateAuraIcon;
+	aura.PostUpdateIcon = PostUpdateAuraIcon;
+	aura.CustomFilter = CustomAuraIconFilter;
+	aura.type = "debuffs"
+	aura:SetFrameLevel(10)
+	aura.textFont = LSM:Fetch("font", MOD.db.auraFont)
+	aura.textSize = MOD.db.auraFontSize
+	aura.textOutline = MOD.db.auraFontOutline
+	return aura
+end
+
+function MOD:CreateAuraWatch(frame)
+	local aWatch = CreateFrame("Frame", nil, frame)
+	aWatch:SetFrameLevel(frame:GetFrameLevel()  +  25)
+	aWatch:FillInner(frame.Health)
+	aWatch.presentAlpha = 1;
+	aWatch.missingAlpha = 0;
+	aWatch.strictMatching = true;
+	aWatch.icons = {}
+	return aWatch
+end
+
+function MOD:UpdateAuraTimer(elapsed)
+	self.expiration = self.expiration - elapsed;
+	if(self.nextUpdate > 0) then
+		self.nextUpdate = self.nextUpdate - elapsed;
+		return
+	end
+	if(self.expiration  <= 0) then
+		self:SetScript("OnUpdate", nil)
+		if(self.text:GetFont()) then
+			self.text:SetText("")
+		end
+		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
-end
+	if self.text:GetFont() then
+		self.text:SetFormattedText(timeFormat, timeLeft)
+	else
+		self.text:SetFormattedText(timeFormat, timeLeft)
+	end
+end

-function MOD:UpdateAuraWatch(frame,override)
+function MOD:UpdateAuraWatchFromHeader(group, override)
+	assert(self[group],"Invalid group specified.")
+	for i=1,self[group]:GetNumChildren() do
+		local frame = select(i, self[group]:GetChildren())
+		if frame and frame.Health then MOD:UpdateAuraWatch(frame,override) end
+	end
+end
+--[[
+##########################################################
+UPDATE
+##########################################################
+]]--
+function MOD:UpdateAuraWatch(frame, override)
 	local temp = {}
 	local AW = frame.AuraWatch;
 	local db = frame.db.buffIndicator;
@@ -429,49 +385,49 @@ function MOD:UpdateAuraWatch(frame,override)
 	end
 	local bwSize = db.size;

-	if frame.unit=='pet' and not override then
+	if frame.unit == "pet" and not override then
 		local petBW = SuperVillain.Filters["PetBuffWatch"] or {}
-		for _,buff in pairs(petBW)do
-			if buff.style=='text'then
-				buff.style='NONE'
+		for _, buff in pairs(petBW)do
+			if buff.style == "text"then
+				buff.style = "NONE"
 			end
-			tinsert(temp,buff)
+			tinsert(temp, buff)
 		end
 	else
 		local unitBW = SuperVillain.Filters["BuffWatch"] or {}
-		for _,buff in pairs(unitBW)do
-			if buff.style=='text'then
-				buff.style='NONE'
+		for _, buff in pairs(unitBW)do
+			if buff.style == "text"then
+				buff.style = "NONE"
 			end
-			tinsert(temp,buff)
+			tinsert(temp, buff)
 		end
 	end

 	if AW.icons then
-		for i=1,#AW.icons do
-			local iconTest=false;
-			for j=1,#temp do
-				if #temp[j].id and #temp[j].id==AW.icons[i] then
-					iconTest=true;
+		for i = 1, #AW.icons do
+			local iconTest = false;
+			for j = 1, #temp do
+				if #temp[j].id and #temp[j].id == AW.icons[i] then
+					iconTest = true;
 					break
 				end
 			end
 			if not iconTest then
 				AW.icons[i]:Hide()
-				AW.icons[i]=nil
+				AW.icons[i] = nil
 			end
 		end
 	end

-	for i=1,#temp do
+	for i = 1, #temp do
 		if temp[i].id then
-			local buffName,_,buffTexture = GetSpellInfo(temp[i].id)
+			local buffName, _, buffTexture = GetSpellInfo(temp[i].id)
 			if buffName then
 				local watchedAura;
 				if not AW.icons[temp[i].id]then
-					watchedAura=CreateFrame("Frame",nil,AW)
+					watchedAura = CreateFrame("Frame", nil, AW)
 				else
-					watchedAura=AW.icons[temp[i].id]
+					watchedAura = AW.icons[temp[i].id]
 				end
 				watchedAura.name = buffName;
 				watchedAura.image = buffTexture;
@@ -488,40 +444,40 @@ function MOD:UpdateAuraWatch(frame,override)
 				watchedAura:ClearAllPoints()
 				watchedAura:SetPoint(temp[i].point, frame.Health, temp[i].point, temp[i].xOffset, temp[i].yOffset)
 				if not watchedAura.icon then
-					watchedAura.icon = watchedAura:CreateTexture(nil,"BORDER")
+					watchedAura.icon = watchedAura:CreateTexture(nil, "BORDER")
 					watchedAura.icon:SetAllPoints(watchedAura)
 				end
 				if not watchedAura.text then
-					local awText = CreateFrame('Frame',nil,watchedAura)
-					awText:SetFrameLevel(watchedAura:GetFrameLevel()+50)
-					watchedAura.text = awText:CreateFontString(nil,'BORDER')
+					local awText = CreateFrame("Frame", nil, watchedAura)
+					awText:SetFrameLevel(watchedAura:GetFrameLevel() + 50)
+					watchedAura.text = awText:CreateFontString(nil, "BORDER")
 				end
 				if not watchedAura.border then
-					watchedAura.border = watchedAura:CreateTexture(nil,"BACKGROUND")
-					watchedAura.border:Point("TOPLEFT",-1,1)
-					watchedAura.border:Point("BOTTOMRIGHT",1,-1)
+					watchedAura.border = watchedAura:CreateTexture(nil, "BACKGROUND")
+					watchedAura.border:Point("TOPLEFT", -1, 1)
+					watchedAura.border:Point("BOTTOMRIGHT", 1, -1)
 					watchedAura.border:SetTexture([[Interface\BUTTONS\WHITE8X8]])
-					watchedAura.border:SetVertexColor(0,0,0)
+					watchedAura.border:SetVertexColor(0, 0, 0)
 				end
 				if not watchedAura.cd then
-					watchedAura.cd = CreateFrame("Cooldown",nil,watchedAura)
+					watchedAura.cd = CreateFrame("Cooldown", nil, watchedAura)
 					watchedAura.cd:SetAllPoints(watchedAura)
 					watchedAura.cd:SetReverse(true)
 					watchedAura.cd:SetFrameLevel(watchedAura:GetFrameLevel())
 				end
-				if watchedAura.style=='coloredIcon'then
+				if watchedAura.style == "coloredIcon"then
 					watchedAura.icon:SetTexture([[Interface\BUTTONS\WHITE8X8]])
 					if temp[i]["color"]then
 						watchedAura.icon:SetVertexColor(temp[i]["color"].r, temp[i]["color"].g, temp[i]["color"].b)
 					else
-						watchedAura.icon:SetVertexColor(0.8,0.8,0.8)
+						watchedAura.icon:SetVertexColor(0.8, 0.8, 0.8)
 					end
 					watchedAura.icon:Show()
 					watchedAura.border:Show()
 					watchedAura.cd:SetAlpha(1)
-				elseif watchedAura.style=='texturedIcon' then
-					watchedAura.icon:SetVertexColor(1,1,1)
-					watchedAura.icon:SetTexCoord(.18,.82,.18,.82)
+				elseif watchedAura.style == "texturedIcon" then
+					watchedAura.icon:SetVertexColor(1, 1, 1)
+					watchedAura.icon:SetTexCoord(.18, .82, .18, .82)
 					watchedAura.icon:SetTexture(watchedAura.image)
 					watchedAura.icon:Show()
 					watchedAura.border:Show()
@@ -533,40 +489,45 @@ function MOD:UpdateAuraWatch(frame,override)
 				end
 				if watchedAura.displayText then
 					watchedAura.text:Show()
-					local r,g,b=1,1,1;
+					local r, g, b = 1, 1, 1;
 					if temp[i].textColor then
-						r,g,b = temp[i].textColor.r, temp[i].textColor.g, temp[i].textColor.b
+						r, g, b = temp[i].textColor.r, temp[i].textColor.g, temp[i].textColor.b
 					end
-					watchedAura.text:SetTextColor(r,g,b)
+					watchedAura.text:SetTextColor(r, g, b)
 				else
 					watchedAura.text:Hide()
 				end
 				if not watchedAura.count then
-					watchedAura.count=watchedAura:CreateFontString(nil,"OVERLAY")
+					watchedAura.count = watchedAura:CreateFontString(nil, "OVERLAY")
 				end
 				watchedAura.count:ClearAllPoints()
 				if watchedAura.displayText then
-					local anchor,relative,x,y=unpack(textCounterOffsets[temp[i].point])
+					local anchor, relative, x, y = unpack(textCounterOffsets[temp[i].point])
 					watchedAura.count:SetPoint(anchor, watchedAura.text, relative, x, y)
 				else
-					watchedAura.count:SetPoint("CENTER",unpack(counterOffsets[temp[i].point]))
-				end
-				watchedAura.count:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
-				watchedAura.text:SetFont(AURA_FONT, AURA_FONTSIZE, AURA_OUTLINE)
+					watchedAura.count:SetPoint("CENTER", unpack(counterOffsets[temp[i].point]))
+				end
+
+				local fontFile = LSM:Fetch("font", MOD.db.auraFont)
+				local fontSize = MOD.db.auraFontSize
+				local fontOutline = MOD.db.auraFontOutline
+
+				watchedAura.count:SetFont(fontFile, fontSize, fontOutline)
+				watchedAura.text:SetFont(fontFile, fontSize, fontOutline)
 				watchedAura.text:ClearAllPoints()
-				watchedAura.text:SetPoint(temp[i].point,watchedAura,temp[i].point)
+				watchedAura.text:SetPoint(temp[i].point, watchedAura, temp[i].point)
 				if temp[i].enable then
-					AW.icons[temp[i].id]=watchedAura;
+					AW.icons[temp[i].id] = watchedAura;
 					if AW.watched then
-						AW.watched[temp[i].id]=watchedAura
+						AW.watched[temp[i].id] = watchedAura
 					end
 				else
-					AW.icons[temp[i].id]=nil;
+					AW.icons[temp[i].id] = nil;
 					if AW.watched then
-						AW.watched[temp[i].id]=nil
+						AW.watched[temp[i].id] = nil
 					end
 					watchedAura:Hide()
-					watchedAura=nil
+					watchedAura = nil
 				end
 			end
 		end
@@ -574,7 +535,7 @@ function MOD:UpdateAuraWatch(frame,override)
 	if frame.AuraWatch.Update then
 		frame.AuraWatch.Update(frame)
 	end
-	temp=nil
+	temp = nil
 end
 --[[
 ##########################################################
diff --git a/Interface/AddOns/SVUI/packages/unit/common/health.lua b/Interface/AddOns/SVUI/packages/unit/common/health.lua
index 661004c..127972f 100644
--- a/Interface/AddOns/SVUI/packages/unit/common/health.lua
+++ b/Interface/AddOns/SVUI/packages/unit/common/health.lua
@@ -46,7 +46,7 @@ local Anim_OnUpdate = function(self)
 	local parent = self.parent
 	local coord = self._coords;
 	parent:SetTexCoord(coord[1],coord[2],coord[3],coord[4])
-end;
+end

 local Anim_OnPlay = function(self)
 	local parent = self.parent
@@ -54,7 +54,7 @@ local Anim_OnPlay = function(self)
 	if not parent:IsShown() then
 		parent:Show()
 	end
-end;
+end

 local Anim_OnStop = function(self)
 	local parent = self.parent
@@ -62,7 +62,7 @@ local Anim_OnStop = function(self)
 	if parent:IsShown() then
 		parent:Hide()
 	end
-end;
+end

 local function SetNewAnimation(frame, animType, parent)
 	local anim = frame:CreateAnimation(animType, subType)
@@ -208,28 +208,12 @@ local CustomUpdate = function(self, event, unit)

 	if self.ResurrectIcon then
 		self.ResurrectIcon:SetAlpha(min == 0 and 1 or 0)
-	end;
+	end
 	if self.isForced then
 		local current = random(1,max)
 		health:SetValue(-current)
-	end;
-
-	-- local portrait = self.Portrait
-	-- if(portrait and portrait:IsObjectType'Model') then
-	-- 	if(UnitIsDeadOrGhost(unit) and not portrait.isdead) then
-	-- 		portrait:SetCamDistanceScale(1)
-	-- 		portrait:SetPortraitZoom(0)
-	-- 		portrait:SetPosition(4,-1,1)
-	-- 		portrait:ClearModel()
-	-- 		portrait:SetModel(DEAD_MODEL_FILE)
-	-- 		portrait.isdead = true
-	-- 		portrait.guid = nil
-	-- 	elseif(not UnitIsDeadOrGhost(unit) and portrait.isdead == true) then
-	-- 		portrait.isdead = nil
-	-- 		MOD.Update3DPortrait(self, event, unit)
-	-- 	end
-	-- end
-end;
+	end
+end

 local Update = function(self, event, unit)
 	if(self.unit ~= unit) or not unit then return end
@@ -302,29 +286,13 @@ local Update = function(self, event, unit)

 	if self.ResurrectIcon then
 		self.ResurrectIcon:SetAlpha(min == 0 and 1 or 0)
-	end;
+	end
 	if self.isForced then
 		min = random(1,max)
 		health:SetValue(min)
-	end;
-	if self.db and self.db.gridMode then
+	end
+	if(db.gridMode) then
 		health:SetOrientation("VERTICAL")
-	end;
-
-	local portrait = self.Portrait
-	if(portrait and portrait:IsObjectType'Model') then
-		if(UnitIsDeadOrGhost(unit) and not portrait.isdead) then
-			portrait:SetCamDistanceScale(1)
-			portrait:SetPortraitZoom(0)
-			portrait:SetPosition(4,-1,1)
-			portrait:ClearModel()
-			portrait:SetModel(DEAD_MODEL_FILE)
-			portrait.isdead = true
-			portrait.guid = nil
-		elseif(not UnitIsDeadOrGhost(unit) and portrait.isdead == true) then
-			portrait.isdead = nil
-			MOD.Update3DPortrait(self, event, unit)
-		end
 	end
 end
 --[[
@@ -332,7 +300,7 @@ end
 BUILD FUNCTION
 ##########################################################
 ]]--
-function MOD:CreateHealthBar(frame, hasbg, text, reverse)
+function MOD:CreateHealthBar(frame, hasbg, reverse)
 	local healthBar = CreateFrame("StatusBar", nil, frame)
 	healthBar:SetFrameStrata("LOW")
 	healthBar:SetFrameLevel(4)
@@ -347,7 +315,7 @@ function MOD:CreateHealthBar(frame, hasbg, text, reverse)
 		healthBar.bg:SetTexture(SuperVillain.Media.bar.gradient)
 		healthBar.bg:SetVertexColor(0.4, 0.1, 0.1)
 		healthBar.bg.multiplier = 0.25
-	end;
+	end

 	local flasher = CreateFrame("Frame", nil, frame)
 	flasher:SetFrameLevel(3)
@@ -360,17 +328,7 @@ function MOD:CreateHealthBar(frame, hasbg, text, reverse)
 	flasher[1]:SetBlendMode("ADD")
 	flasher[1]:SetAllPoints(flasher)
 	SetAnim(flasher[1], flasher)
-	flasher:Hide()
-
-	if text then
-		healthBar.value = healthBar:CreateFontString(nil, "OVERLAY")
-		healthBar.value.db = "health"
-		MOD:SetUnitFont(healthBar.value)
-		healthBar.value:SetParent(frame.InfoPanel)
-		local offset = reverse and 2 or -2;
-		local direction = reverse and "LEFT" or "RIGHT";
-		healthBar.value:Point(direction, healthBar, direction, offset, 0)
-	end;
+	flasher:Hide()

 	healthBar.animation = flasher
 	healthBar.noupdate = false;
@@ -379,7 +337,7 @@ function MOD:CreateHealthBar(frame, hasbg, text, reverse)
 	healthBar.colorDisconnected = true
 	healthBar.Override = Update;
 	return healthBar
-end;
+end

 function MOD:RefreshHealthBar(frame)
 	if(frame.db and frame.db.portrait) then
@@ -392,5 +350,5 @@ function MOD:RefreshHealthBar(frame)
 			frame.Health:SetStatusBarTexture(LSM:Fetch("statusbar", MOD.db.statusbar))
 			frame.Health.Override = Update;
 		end
-	end;
+	end
 end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/common/media.lua b/Interface/AddOns/SVUI/packages/unit/common/media.lua
index 6f76ef8..083d6b5 100644
--- a/Interface/AddOns/SVUI/packages/unit/common/media.lua
+++ b/Interface/AddOns/SVUI/packages/unit/common/media.lua
@@ -60,15 +60,7 @@ local CURRENT_FONTOUTLINE = "OUTLINE";
 local CURRENT_AURABAR_FONT = [[Interface\AddOns\SVUI\assets\fonts\Alert.ttf]];
 local CURRENT_AURABAR_FONTSIZE = 14
 local CURRENT_AURABAR_FONTOUTLINE = "NONE"
-
-local MediaCache = {
-	["bars"] = {},
-	["aurabars"] = {},
-	["fonts"] = {},
-	["namefonts"] = {},
-	["aurafonts"] = {},
-	["aurabarfonts"] = {}
-}
+local INIT_UPDATE = false;
 --[[
 ##########################################################
 CORE FUNCTIONS
@@ -83,81 +75,8 @@ local function UpdateUnitMediaLocals()
 	CURRENT_AURABAR_FONT = LSM:Fetch("font", MOD.db.auraFont);
 	CURRENT_AURABAR_FONTSIZE = MOD.db.auraFontSize
 	CURRENT_AURABAR_FONTOUTLINE = MOD.db.auraFontOutline
-end
-
-function MOD:SetUnitFont(element, unit)
-	if(not element) then return; end
-	if(not unit or not MOD.db[unit] or not MOD.db[unit].name) then
-		element:SetFontTemplate(CURRENT_FONT, CURRENT_FONTSIZE, CURRENT_FONTOUTLINE)
-		MediaCache["fonts"][element] = true;
-	else
-		local db = MOD.db[unit].name;
-		local font = LSM:Fetch("font", db.font);
-		element:SetFontTemplate(font, db.fontSize, db.fontOutline)
-		if(not MediaCache["namefonts"][unit]) then
-			MediaCache["namefonts"][unit] = {}
-		end
-		MediaCache["namefonts"][unit][element] = true;
-	end
-end
-
-function MOD:UpdateUnitFont(unit)
-	if(not unit) then return; end
-	local t = MediaCache["namefonts"][unit];
-	local db = MOD.db[unit].name;
-
-	if(db and t) then
-		for element in pairs(t) do
-			local font = LSM:Fetch("font", db.font);
-			element:SetFontTemplate(font, db.fontSize, db.fontOutline)
-		end
-	end
-end
-
-function MOD:RefreshUnitAuraFonts()
-	UpdateUnitMediaLocals()
-	for element in pairs(MediaCache["aurabarfonts"]) do
-		element.spelltime:SetFontTemplate(CURRENT_AURABAR_FONT, CURRENT_AURABAR_FONTSIZE, CURRENT_AURABAR_FONTOUTLINE, "RIGHT")
-		element.spellname:SetFontTemplate(CURRENT_AURABAR_FONT, CURRENT_AURABAR_FONTSIZE, CURRENT_AURABAR_FONTOUTLINE, "LEFT")
-	end
-	local i = 1
-	for element in pairs(MediaCache["aurafonts"]) do
-		i = 1;
-		while element[i] do
-			local icon = element[i]
-			icon.text:SetFont(CURRENT_AURABAR_FONT, CURRENT_AURABAR_FONTSIZE, CURRENT_AURABAR_FONTOUTLINE)
-			icon.count:SetFont(CURRENT_AURABAR_FONT, CURRENT_AURABAR_FONTSIZE, CURRENT_AURABAR_FONTOUTLINE)
-			i = i + 1
-		end
-	end
-end
-
-function MOD:RefreshUnitFonts()
-	UpdateUnitMediaLocals()
-	for element in pairs(MediaCache["fonts"]) do
-		element:SetFontTemplate(CURRENT_FONT, CURRENT_FONTSIZE, CURRENT_FONTOUTLINE)
-	end
-end
-
-function MOD:SetUnitStatusbar(element)
-	if(not element or element.noupdate or element:GetObjectType()  ~= "StatusBar") then return; end
-	element:SetStatusBarTexture(CURRENT_BAR_TEXTURE)
-	MediaCache["bars"][element] = true;
-end
-
-function MOD:WatchUnitMedia(key, frame)
-	MediaCache[key][frame] = true;
-end
-
-function MOD:RefreshUnitTextures()
-	UpdateUnitMediaLocals()
-	for element in pairs(MediaCache["bars"]) do
-		element:SetStatusBarTexture(CURRENT_BAR_TEXTURE)
-	end
-	for element in pairs(MediaCache["aurabars"]) do
-		element.auraBarTexture = CURRENT_AURABAR_TEXTURE
-	end
-end
+	INIT_UPDATE = true
+end

 function MOD:RefreshUnitColors()
 	local db = SuperVillain.db.media.unitframes
@@ -180,4 +99,64 @@ function MOD:RefreshUnitColors()
 	end
 	local r, g, b = db.health[1], db.health[2], db.health[3]
 	oUF_SuperVillain.colors.smooth = {1, 0, 0, 1, 1, 0, r, g, b}
+end
+
+local unitRoster = {"player", "target", "targettarget", "pet", "pettarget", "focus", "focustarget", "party", "raidpet", "assist", "tank", "raid10", "raid25", "raid40", "boss", "arena"};
+
+function MOD:RefreshUnitMedia(unitName, updateUpvalues)
+	if(not self.db or (self.db and self.db.enable ~= true)) then return end
+	if((not INIT_UPDATE) or updateUpvalues == true) then UpdateUnitMediaLocals() end
+	local db = self.db
+	local unitDB = db[unitName]
+	if(self[unitName] and unitDB and unitDB.enable) then
+
+		local frame = self[unitName]
+		local panel = frame.InfoPanel
+
+		if(panel.Name and unitDB.name) then
+			panel.Name:SetFont(LSM:Fetch("font", unitDB.name.font), unitDB.name.fontSize, unitDB.name.fontOutline)
+		end
+		if(panel.Health) then
+			panel.Health:SetFont(CURRENT_FONT, CURRENT_FONTSIZE, CURRENT_FONTOUTLINE)
+		end
+		if(panel.Power) then
+			panel.Power:SetFont(CURRENT_FONT, CURRENT_FONTSIZE, CURRENT_FONTOUTLINE)
+		end
+		if(panel.Misc) then
+			panel.Misc:SetFont(CURRENT_FONT, CURRENT_FONTSIZE, CURRENT_FONTOUTLINE)
+		end
+		if(frame.Power and (unitDB.power and unitDB.power.enable)) then
+			frame.Power:SetStatusBarTexture(CURRENT_BAR_TEXTURE)
+		end
+		if(frame.AuraBars and (unitDB.aurabar and unitDB.aurabar.enable)) then
+			local ab = frame.AuraBars
+			ab.auraBarTexture = CURRENT_AURABAR_TEXTURE
+			ab.textFont = CURRENT_AURABAR_FONT
+			ab.textSize = CURRENT_AURABAR_FONTSIZE
+			ab.textOutline = CURRENT_AURABAR_FONTOUTLINE
+		end
+		if(frame.Buffs and (unitDB.buffs and unitDB.buffs.enable)) then
+			local buffs = frame.Buffs
+			buffs.textFont = CURRENT_AURABAR_FONT
+			buffs.textSize = CURRENT_AURABAR_FONTSIZE
+			buffs.textOutline = CURRENT_AURABAR_FONTOUTLINE
+		end
+		if(frame.Debuffs and (unitDB.debuffs and unitDB.debuffs.enable)) then
+			local debuffs = frame.Debuffs
+			debuffs.textFont = CURRENT_AURABAR_FONT
+			debuffs.textSize = CURRENT_AURABAR_FONTSIZE
+			debuffs.textOutline = CURRENT_AURABAR_FONTOUTLINE
+		end
+	end
+end
+
+function MOD:RefreshAllUnitMedia()
+	if(not self.db or (self.db and self.db.enable ~= true)) then return end
+	UpdateUnitMediaLocals()
+	-- [[ COLORS ]] --
+	self:RefreshUnitColors()
+	-- [[ FRAMES ]] --
+	for i = 1, 16 do
+		self:RefreshUnitMedia(unitRoster[i], false)
+	end
 end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/common/misc.lua b/Interface/AddOns/SVUI/packages/unit/common/misc.lua
index d801c48..c0df411 100644
--- a/Interface/AddOns/SVUI/packages/unit/common/misc.lua
+++ b/Interface/AddOns/SVUI/packages/unit/common/misc.lua
@@ -36,28 +36,6 @@ local ROLE_ICON_DATA = {
 	["HEALER"] = {0,0.5,0.5,1, 0.5,0.75,0.75,1},
 	["DAMAGER"] = {0.5,1,0,0.5, 0.75,1,0.5,0.75}
 };
--- local fadeManager = CreateFrame("Frame",nil,UIParent)
--- fadeManager.fadeRoles = false;
--- fadeManager.fadeNames = false;
--- fadeManager.fadeFrames = {};
---[[
-##########################################################
-NAME
-##########################################################
-]]--
-function MOD:CreateNameText(frame, unitName)
-	local name = frame.InfoPanel:CreateFontString(nil, "OVERLAY")
-	name:SetShadowOffset(2, -2)
-	name:SetShadowColor(0, 0, 0, 1)
-	name:SetFontTemplate()
-	if unitNmae == "target" then
-		name:SetPoint("TOPRIGHT", frame.InfoPanel)
-	else
-		name:SetPoint("CENTER", frame.InfoPanel)
-	end
-	MOD:SetUnitFont(name, unitName)
-	return name;
-end
 --[[
 ##########################################################
 RAID DEBUFFS / DEBUFF HIGHLIGHT
@@ -102,7 +80,7 @@ VARIOUS ICONS
 ]]--
 function MOD:CreateResurectionIcon(frame)
 	local rez = frame.InfoPanel:CreateTexture(nil, "OVERLAY")
-	rez:Point("CENTER", frame.Health.value, "CENTER")
+	rez:Point("CENTER", frame.InfoPanel.Health, "CENTER")
 	rez:Size(30, 25)
 	rez:SetDrawLayer("OVERLAY", 7)
 	return rez
@@ -156,7 +134,6 @@ function MOD:CreateRoleIcon(frame)
 	rIcon:Point("BOTTOMRIGHT", rIconHolder, "BOTTOMRIGHT")
 	rIcon.Override = MOD.UpdateRoleIcon;
 	frame:RegisterEvent("UNIT_CONNECTION", MOD.UpdateRoleIcon)
-	-- fadeManager.fadeFrames[frame] = true;
 	return rIcon
 end

@@ -235,44 +212,4 @@ function MOD:RaidRoleUpdate()
 			looterIcon:Point("RIGHT", frame, "RIGHT")
 		end
 	end
-end
---[[
-##########################################################
-FADEFRAME MANAGER
-##########################################################
-]]--
--- fadeManager:SetScript("OnEvent", function(self, event, ...)
--- 	if event == "PLAYER_REGEN_DISABLED" then
--- 		for frame, _ in pairs(fadeManager.fadeFrames) do
--- 			if frame.Name and fadeManager.fadeNames == true then
--- 				frame.Name:SetAlpha(0.4)
--- 				local f1, f2, f3 = frame.Name:GetFont()
--- 				frame.Name.OldOutline = f3
--- 				frame.Name:SetFont(f1, f2, nil)
--- 			end
--- 			if frame.LFDRole and fadeManager.fadeRoles == true then frame.LFDRole:SetAlpha(0) end
--- 		end
--- 	elseif event == "PLAYER_REGEN_ENABLED" then
--- 		for frame, _ in pairs(fadeManager.fadeFrames) do
--- 			if frame.Name and fadeManager.fadeNames == true then
--- 				frame.Name:SetAlpha(1)
--- 				local f1, f2, f3 = frame.Name:GetFont()
--- 				frame.Name:SetFont(f1, f2, frame.Name.OldOutline or "OUTLINE")
--- 			end
--- 			if frame.LFDRole and fadeManager.fadeRoles == true then frame.LFDRole:SetAlpha(1) end
--- 		end
--- 	end
--- end)
-
--- function MOD:SetFadeManager()
--- 	if MOD.db.combatFadeRoles  ~= true and MOD.db.combatFadeNames  ~= true then
--- 		fadeManager:UnregisterAllEvents()
--- 		fadeManager.fadeRoles = false;
--- 		fadeManager.fadeNames = false;
--- 	else
--- 		fadeManager:RegisterEvent("PLAYER_REGEN_ENABLED")
--- 		fadeManager:RegisterEvent("PLAYER_REGEN_DISABLED")
--- 		fadeManager.fadeRoles = MOD.db.combatFadeRoles;
--- 		fadeManager.fadeNames = MOD.db.combatFadeNames;
--- 	end
--- end
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/common/power.lua b/Interface/AddOns/SVUI/packages/unit/common/power.lua
index 10164a2..1037110 100644
--- a/Interface/AddOns/SVUI/packages/unit/common/power.lua
+++ b/Interface/AddOns/SVUI/packages/unit/common/power.lua
@@ -27,130 +27,123 @@ LOCAL VARIABLES
 ##########################################################
 ]]--
 local random = math.random;
-local token={[0]="MANA",[1]="RAGE",[2]="FOCUS",[3]="ENERGY",[6]="RUNIC_POWER"}
+local token = {[0] = "MANA", [1] = "RAGE", [2] = "FOCUS", [3] = "ENERGY", [6] = "RUNIC_POWER"}
 --[[
 ##########################################################
 LOCAL FUNCTIONS
 ##########################################################
 ]]--
-local PostUpdateAltPower = function(self,min,current,max)
-	local remaining=floor(current / max * 100)
-	local parent=self:GetParent()
+local PostUpdateAltPower = function(self, min, current, max)
+	local remaining = floor(current  /  max  *  100)
+	local parent = self:GetParent()
 	if remaining < 35 then
-		self:SetStatusBarColor(0,1,0)
+		self:SetStatusBarColor(0, 1, 0)
 	elseif remaining < 70 then
-		self:SetStatusBarColor(1,1,0)
+		self:SetStatusBarColor(1, 1, 0)
 	else
-		self:SetStatusBarColor(1,0,0)
-	end;
-	local unit=parent.unit;
+		self:SetStatusBarColor(1, 0, 0)
+	end
+	local unit = parent.unit;
 	if(unit == "player" and self.text) then
-		local apInfo=select(10,UnitAlternatePowerInfo(unit))
+		local apInfo = select(10, UnitAlternatePowerInfo(unit))
 		if remaining > 0 then
-			self.text:SetText(apInfo..": "..format("%d%%",remaining))
+			self.text:SetText(apInfo..": "..format("%d%%", remaining))
 		else
 			self.text:SetText(apInfo..": 0%")
 		end
 	elseif(unit and unit:find("boss%d") and self.text) then
 		self.text:SetTextColor(self:GetStatusBarColor())
-		if not parent.Power.value:GetText() or parent.Power.value:GetText()=="" then
-			self.text:Point("BOTTOMRIGHT",parent.Health,"BOTTOMRIGHT")
+		if not parent.InfoPanel.Power:GetText() or parent.InfoPanel.Power:GetText() == "" then
+			self.text:Point("BOTTOMRIGHT", parent.Health, "BOTTOMRIGHT")
 		else
-			self.text:Point("RIGHT", parent.Power.value.value, "LEFT", 2, 0)
-		end;
+			self.text:Point("RIGHT", parent.InfoPanel.Power, "LEFT", 2, 0)
+		end
 		if remaining > 0 then
-			self.text:SetText("|cffD7BEA5[|r"..format("%d%%",remaining).."|cffD7BEA5]|r")
+			self.text:SetText("|cffD7BEA5[|r"..format("%d%%", remaining).."|cffD7BEA5]|r")
 		else
 			self.text:SetText(nil)
 		end
 	end
-end;
+end
 --[[
 ##########################################################
 BUILD FUNCTION
 ##########################################################
 ]]--
-function MOD:CreatePowerBar(frame,bg,text,direction)
-	local power=CreateFrame('StatusBar',nil,frame)
-	MOD:SetUnitStatusbar(power)
+function MOD:CreatePowerBar(frame, bg)
+	local power = CreateFrame("StatusBar", nil, frame)
+	power:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
 	power:SetPanelTemplate("Inset")
 	if bg then
-		power.bg=power:CreateTexture(nil,'BORDER')
+		power.bg = power:CreateTexture(nil, "BORDER")
 		power.bg:SetAllPoints()
 		power.bg:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-		power.bg.multiplier=0.2
-	end;
-	if text then
-		power.value=frame.InfoPanel:CreateFontString(nil,'OVERLAY')
-		power.value.db='power'MOD:SetUnitFont(power.value)
-		power.value:SetParent(frame.InfoPanel)
-		local offset = -2;
-		if direction=='LEFT'then offset=2 end;
-		power.value:Point(direction,frame.Health,direction,offset,0)
-	end;
-	power.colorDisconnected=false;
-	power.colorTapping=false;
-	power.PostUpdate=MOD.PostUpdatePower;
+		power.bg.multiplier = 0.2
+	end
+	power.colorDisconnected = false;
+	power.colorTapping = false;
+	power.PostUpdate = MOD.PostUpdatePower;
 	return power
-end;
+end

 function MOD:CreateAltPowerBar(frame)
-	local altPower = CreateFrame("StatusBar",nil,frame)
-	MOD:SetUnitStatusbar(altPower)
+	local altPower = CreateFrame("StatusBar", nil, frame)
+	altPower:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
 	altPower:SetPanelTemplate("Inset")
 	altPower:GetStatusBarTexture():SetHorizTile(false)
 	altPower:SetFrameStrata("MEDIUM")
-	altPower.text = altPower:CreateFontString(nil,'OVERLAY')
+	altPower.text = altPower:CreateFontString(nil, "OVERLAY")
 	altPower.text:SetPoint("CENTER")
 	altPower.text:SetJustifyH("CENTER")
-	MOD:SetUnitFont(altPower.text)
+	altPower.text:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
 	altPower.PostUpdate = PostUpdateAltPower;
 	return altPower
-end;
+end
 --[[
 ##########################################################
 UPDATE
 ##########################################################
 ]]--
-function MOD:PowerUpdateNamePosition(frame,unit)
-	if not frame.Power.value:IsShown() or not frame.Name then return end;
+local function PowerUpdateNamePosition(frame, unit)
+	local panel = frame.InfoPanel
+	if(not panel.Power or (panel.Power and not panel.Power:IsShown()) or not panel.Name) then return end
 	local db = frame.db;
-	local parent = frame.Name:GetParent()
+	local parent = panel.Name:GetParent()
 	if UnitIsPlayer(unit)then
 		local point = db.name.position;
-		frame.Power.value:SetAlpha(1)
-		frame.Name:ClearAllPoints()
-		SuperVillain:ReversePoint(frame.Name, point, parent, db.name.xOffset, db.name.yOffset)
+		panel.Power:SetAlpha(1)
+		panel.Name:ClearAllPoints()
+		SuperVillain:ReversePoint(panel.Name, point, parent, db.name.xOffset, db.name.yOffset)
 	else
-		frame.Power.value:SetAlpha(db.power.hideonnpc and 0 or 1)
-		frame.Name:ClearAllPoints()
-		frame.Name:SetPoint(frame.Power.value:GetPoint())
-	end;
-end;
+		panel.Power:SetAlpha(db.power.hideonnpc and 0 or 1)
+		panel.Name:ClearAllPoints()
+		panel.Name:SetPoint(panel.Power:GetPoint())
+	end
+end

-function MOD:PostUpdatePower(unit,value,max)
-	local powerType,_,_,_,_ = UnitPowerType(unit)
-	local parent=self:GetParent()
+function MOD:PostUpdatePower(unit, value, max)
+	local powerType, _, _, _, _ = UnitPowerType(unit)
+	local parent = self:GetParent()
 	if parent.isForced then
 		value = random(1, max)
 		powerType = random(0, 4)
 		self:SetValue(value)
-	end;
-	local colors=oUF_SuperVillain.colors.power[token[powerType]]
+	end
+	local colors = oUF_SuperVillain.colors.power[token[powerType]]
 	local mult = self.bg.multiplier or 1;
 	local isPlayer = UnitPlayerControlled(unit)
 	if isPlayer and self.colorClass then
-		local _,class=UnitClassBase(unit);
-		colors=oUF_SuperVillain['colors'].class[class]
+		local _, class = UnitClassBase(unit);
+		colors = oUF_SuperVillain["colors"].class[class]
 	elseif not isPlayer then
-		local react=UnitReaction("player",unit)
-		colors=oUF_SuperVillain['colors'].reaction[react]
-	end;
+		local react = UnitReaction("player", unit)
+		colors = oUF_SuperVillain["colors"].reaction[react]
+	end
 	if not colors then return end
-	self:SetStatusBarColor(colors[1],colors[2],colors[3])
-	self.bg:SetVertexColor(colors[1]*mult,colors[2]*mult,colors[3]*mult)
-	local db=parent.db;
+	self:SetStatusBarColor(colors[1], colors[2], colors[3])
+	self.bg:SetVertexColor(colors[1] * mult, colors[2] * mult, colors[3] * mult)
+	local db = parent.db;
 	if db and db.power and db.power.hideonnpc then
-		MOD:PowerUpdateNamePosition(parent,unit)
+		PowerUpdateNamePosition(parent, unit)
 	end
-end;
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/all_units.lua b/Interface/AddOns/SVUI/packages/unit/frames/all_units.lua
index 113773f..f202cd2 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/all_units.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/all_units.lua
@@ -68,38 +68,6 @@ local SETTINGS = {
 	["boss"]={"BOTTOMRIGHT","TOPLEFT","BOTTOMLEFT","TOPRIGHT",-1,1},
 	["arena"]={"BOTTOMRIGHT","TOPLEFT","BOTTOMLEFT","TOPRIGHT",-1,1}
 };
-local useUnitWidth = {
-	["player"] = true,
-	["target"] = true,
-	["targettarget"] = true,
-	["pet"] = true,
-	["pettarget"] = true,
-	["focus"] = true,
-	["focustarget"] = true,
-	["party"] = false,
-	["raid"] = false,
-	["raidpet"] = false,
-	["assist"] = true,
-	["tank"] = true,
-	["boss"] = true,
-	["arena"] = true
-};
-local useSolidTexture = {
-	["player"] = false,
-	["target"] = false,
-	["targettarget"] = true,
-	["pet"] = true,
-	["pettarget"] = true,
-	["focus"] = false,
-	["focustarget"] = true,
-	["party"] = true,
-	["raid"] = true,
-	["raidpet"] = true,
-	["assist"] = true,
-	["tank"] = true,
-	["boss"] = true,
-	["arena"] = true
-};
 --[[
 ##########################################################
 LOCAL FUNCTIONS
@@ -134,7 +102,7 @@ function MOD:RefreshUnitLayout(frame, template)
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
 	local BEST_SIZE = min(UNIT_WIDTH,UNIT_HEIGHT);
-	local AURA_HOLDER = useUnitWidth[template] and db.width or SuperVillain:Scale(100)
+	local AURA_HOLDER = db.width
 	local powerHeight = (db.power and db.power.enable) and (db.power.height - 1) or 1;
 	local BOTTOM_ANCHOR1 = UNIT_TEMPLATE[1];
 	local TOP_ANCHOR1 = UNIT_TEMPLATE[2];
@@ -145,14 +113,19 @@ function MOD:RefreshUnitLayout(frame, template)
 	local overlayAnimation = false;
 	local portraitWidth = (1 * MOD1);
 	local healthPanel = frame.HealthPanel
+	local infoPanel = frame.InfoPanel
 	local calculatedHeight = db.height;

+	if(template:find("raid")) then
+		AURA_HOLDER = 100
+	end
+
 	if(db.portrait and db.portrait.enable) then
 		if(not db.portrait.overlay) then
 			portraitWidth = ((db.portrait.width * MOD1) + (1 * MOD1))
 		else
 			portraitOverlay = true
-			overlayAnimation = MOD.db.overlayAnimation
+			overlayAnimation = self.db.overlayAnimation
 		end
 	end
 	if(frame.PVPSpecIcon and db.pvpSpecIcon) then
@@ -209,26 +182,65 @@ function MOD:RefreshUnitLayout(frame, template)
 		glow:Point("BOTTOMRIGHT",GAP,-GAP)
 	end

-	if(frame.InfoPanel.Misc and db.misc) then
-		frame:Tag(frame.InfoPanel.Misc, db.misc.tags)
+	--[[ INFO TEXTS ]]--
+
+	if(infoPanel.Name and db.name) then
+		local nametext = infoPanel.Name
+		if(not db.power or (not db.power.hideonnpc) or db.power.tags == "") then
+			nametext:ClearAllPoints()
+			SuperVillain:ReversePoint(nametext, db.name.position, infoPanel, db.name.xOffset, db.name.yOffset)
+		end
+		frame:Tag(nametext, db.name.tags)
+	end
+
+	if(frame.Health and infoPanel.Health and db.health) then
+		local healthtext = infoPanel.Health
+		local point = db.health.position
+		healthtext:ClearAllPoints()
+		SuperVillain:ReversePoint(healthtext, point, infoPanel, db.health.xOffset, db.health.yOffset)
+		frame:Tag(healthtext, db.health.tags)
+	end
+
+	if(frame.Power and infoPanel.Power and db.power) then
+		local powertext = infoPanel.Power
+		if(infoPanel.Health) then
+			powertext:SetFont(infoPanel.Health:GetFont())
+		end
+		if db.power.tags and db.power.tags ~= '' then
+			local point = db.power.position
+			powertext:ClearAllPoints()
+			SuperVillain:ReversePoint(powertext, point, infoPanel, db.power.xOffset, db.power.yOffset)
+			frame:Tag(powertext, db.power.tags)
+
+			if db.power.attachTextToPower then
+				powertext:SetParent(frame.Power)
+			else
+				powertext:SetParent(infoPanel)
+			end
+		else
+			powertext:Hide()
+		end
+	end
+
+	if(infoPanel.Misc and db.misc) then
+		if(infoPanel.Health) then
+			infoPanel.Misc:SetFont(infoPanel.Health:GetFont())
+		end
+		frame:Tag(infoPanel.Misc, db.misc.tags)
 	end

 	--[[ HEALTH LAYOUT ]]--

 	do
 		local health = frame.Health;
-		if(db.health and (db.health.reversed ~= nil)) then
+		if(db.health and (db.health.reversed  ~= nil)) then
 			health.fillInverted = db.health.reversed;
 		else
 			health.fillInverted = false
 		end
-		health.Smooth = MOD.db.smoothbars;
-		if health.value then
-			local point = db.health.position
-			health.value:ClearAllPoints()
-			SuperVillain:ReversePoint(health.value, point, frame.InfoPanel, db.health.xOffset, db.health.yOffset)
-			frame:Tag(health.value, db.health.tags)
-		end
+
+		health.Smooth = self.db.smoothbars;
+
 		health.colorSmooth = nil;
 		health.colorHealth = nil;
 		health.colorClass = nil;
@@ -243,21 +255,21 @@ function MOD:RefreshUnitLayout(frame, template)
 		if(frame.HealPrediction) then
 			frame.HealPrediction["frequentUpdates"] = health.frequentUpdates
 		end
-		if(portraitOverlay and MOD.db.forceHealthColor) then
+		if(portraitOverlay and self.db.forceHealthColor) then
 			health.colorOverlay = true;
 		else
 			if(db.colorOverride and db.colorOverride == "FORCE_ON") then
-				health.colorClass=true;
-				health.colorReaction=true
+				health.colorClass = true;
+				health.colorReaction = true
 			elseif(db.colorOverride and db.colorOverride == "FORCE_OFF") then
-				if MOD.db.colorhealthbyvalue==true then
-					health.colorSmooth=true
+				if self.db.colorhealthbyvalue == true then
+					health.colorSmooth = true
 				else
-					health.colorHealth=true
+					health.colorHealth = true
 				end
 			else
-				if(not MOD.db.healthclass) then
-					if MOD.db.colorhealthbyvalue == true then
+				if(not self.db.healthclass) then
+					if self.db.colorhealthbyvalue == true then
 						health.colorSmooth = true
 					else
 						health.colorHealth = true
@@ -273,24 +285,10 @@ function MOD:RefreshUnitLayout(frame, template)
 		if db.health and db.health.orientation then
 			health:SetOrientation(db.health.orientation)
 		end
-		MOD:RefreshHealthBar(frame)
+		self:RefreshHealthBar(frame)

 	end

-	--[[ NAME LAYOUT ]]--
-
-	if frame.Name then
-		if db.name then
-			local name = frame.Name
-			local parent = frame.InfoPanel
-			if not db.power or not db.power.hideonnpc or db.power.tags == "" then
-				name:ClearAllPoints()
-				SuperVillain:ReversePoint(name, db.name.position, parent, db.name.xOffset, db.name.yOffset)
-			end
-			frame:Tag(name, db.name.tags)
-		end
-	end
-
 	--[[ POWER LAYOUT ]]--

 	do
@@ -300,27 +298,14 @@ function MOD:RefreshUnitLayout(frame, template)
 				if not frame:IsElementEnabled('Power')then
 					frame:EnableElement('Power')
 					power:Show()
-				end
-				power.Smooth = MOD.db.smoothbars;
-				if power.value then
-					if db.power.tags and db.power.tags ~= '' then
-						local point = db.power.position
-						power.value:ClearAllPoints()
-						SuperVillain:ReversePoint(power.value, point, frame.InfoPanel, db.power.xOffset, db.power.yOffset)
-						frame:Tag(power.value,db.power.tags)
-						if db.power.attachTextToPower then
-							power.value:SetParent(power)
-						else
-							power.value:SetParent(frame.InfoPanel)
-						end
-					else
-						power.value:Hide()
-					end
-				end
+				end
+
+				power.Smooth = self.db.smoothbars;
+
 				power.colorClass = nil;
 				power.colorReaction = nil;
 				power.colorPower = nil;
-				if MOD.db.powerclass then
+				if self.db.powerclass then
 					power.colorClass = true;
 					power.colorReaction = true
 				else
@@ -352,11 +337,14 @@ function MOD:RefreshUnitLayout(frame, template)
 			end
 			if db.power.enable then
 				frame:EnableElement('AltPowerBar')
+				if(infoPanel.Health) then
+					altPower.text:SetFont(infoPanel.Health:GetFont())
+				end
 				altPower.text:SetAlpha(1)
 				altPower:Point(TOP_ANCHOR2, frame, TOP_ANCHOR2, portraitWidth, -1)
 				altPower:Point(TOP_ANCHOR1, frame, TOP_ANCHOR1, (1 * MOD2), -1)
 				altPower:SetHeight(powerHeight)
-				altPower.Smooth = MOD.db.smoothbars;
+				altPower.Smooth = self.db.smoothbars;
 				altPower:HookScript("OnShow", Alt_OnShow)
 				altPower:HookScript("OnHide", Alt_OnHide)
 			else
@@ -537,7 +525,6 @@ function MOD:RefreshUnitLayout(frame, template)

 			if db.buffs.enable then
 				buffs:Show()
-				MOD:UpdateAuraIconSettings(buffs)
 			else
 				buffs:Hide()
 			end
@@ -570,7 +557,6 @@ function MOD:RefreshUnitLayout(frame, template)

 			if db.debuffs.enable then
 				debuffs:Show()
-				MOD:UpdateAuraIconSettings(debuffs)
 			else
 				debuffs:Hide()
 			end
@@ -583,7 +569,6 @@ function MOD:RefreshUnitLayout(frame, template)
 		local auraBar = frame.AuraBars;
 		if db.aurabar.enable then
 			if not frame:IsElementEnabled('AuraBars') then frame:EnableElement('AuraBars')end
-			auraBar.auraBarTexture = LSM:Fetch("statusbar", MOD.db.auraBarStatusbar);
 			auraBar:Show()
 			auraBar.friendlyAuraType = db.aurabar.friendlyAuraType;
 			auraBar.enemyAuraType = db.aurabar.enemyAuraType;
@@ -613,14 +598,14 @@ function MOD:RefreshUnitLayout(frame, template)
 			auraBar:SetSize(UNIT_WIDTH, db.aurabar.height)
 			auraBar:Point(anchorPoint..'LEFT', attachTo, relativePoint..'LEFT', 1, yOffset)
 			auraBar.buffColor = oUF_SuperVillain.colors.buff_bars
-			if MOD.db.auraBarByType then
+			if self.db.auraBarByType then
 				auraBar.debuffColor = nil;
 				auraBar.defaultDebuffColor = oUF_SuperVillain.colors.debuff_bars
 			else
 				auraBar.debuffColor = oUF_SuperVillain.colors.debuff_bars
 				auraBar.defaultDebuffColor = nil
 			end
-			MOD:SortAuraBars(auraBar, db.aurabar.sort)
+			self:SortAuraBars(auraBar, db.aurabar.sort)
 			auraBar:SetAnchors()
 		else
 			if frame:IsElementEnabled('AuraBars')then frame:DisableElement('AuraBars')auraBar:Hide()end
@@ -706,8 +691,8 @@ function MOD:RefreshUnitLayout(frame, template)
 	--[[ DEBUFF HIGHLIGHT LAYOUT ]]--

 	if frame.Afflicted then
-		if MOD.db.debuffHighlighting then
-			if(useSolidTexture[template]) then
+		if self.db.debuffHighlighting then
+			if(template ~= "player" and template ~= "target" and template ~= "focus") then
 				frame.Afflicted:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
 			end
 			frame:EnableElement('Afflicted')
@@ -719,7 +704,7 @@ function MOD:RefreshUnitLayout(frame, template)
 	--[[ RANGE CHECK LAYOUT ]]--

 	if frame.Range then
-		frame.Range.outsideAlpha = MOD.db.OORAlpha or 1;
+		frame.Range.outsideAlpha = self.db.OORAlpha or 1;
 		if db.rangeCheck then
 			if not frame:IsElementEnabled('Range')then
 				frame:EnableElement('Range')
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/basic/focus.lua b/Interface/AddOns/SVUI/packages/unit/frames/basic/focus.lua
index 61b67b7..67521d0 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/basic/focus.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/basic/focus.lua
@@ -28,10 +28,9 @@ BUILD FUNCTION
 ]]--
 function MOD.Construct:focus(frame)
 	MOD:SetActionPanel(frame, "focus")
-	frame.Health = MOD:CreateHealthBar(frame, true, true, "RIGHT")
+	frame.Health = MOD:CreateHealthBar(frame, true, true)
 	frame.Health.frequentUpdates = true;
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "LEFT")
-	frame.Name = MOD:CreateNameText(frame, "focus")
+	frame.Power = MOD:CreatePowerBar(frame, true)
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.Castbar = MOD:CreateCastbar(frame, false, L["Focus Castbar"])
 	frame.Castbar.SafeZone = nil;
@@ -57,6 +56,7 @@ function MOD.FrameUpdate:focus(unit, frame, db)
 	frame.db = db;
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
+	MOD:RefreshUnitMedia("focus")
 	frame.unit = unit;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	frame.colors = oUF_SuperVillain.colors;
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/basic/ft.lua b/Interface/AddOns/SVUI/packages/unit/frames/basic/ft.lua
index ecaf1e8..6a18eeb 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/basic/ft.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/basic/ft.lua
@@ -28,9 +28,8 @@ BUILD FUNCTION
 ]]--
 function MOD.Construct:focustarget(frame)
 	MOD:SetActionPanel(frame, "focustarget")
-	frame.Health = MOD:CreateHealthBar(frame, true, true, "RIGHT")
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "LEFT")
-	frame.Name = MOD:CreateNameText(frame, "focustarget")
+	frame.Health = MOD:CreateHealthBar(frame, true)
+	frame.Power = MOD:CreatePowerBar(frame, true)
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.RaidIcon = MOD:CreateRaidIcon(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
@@ -47,6 +46,7 @@ function MOD.FrameUpdate:focustarget(unit, frame, db)
 	frame.db = db;
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
+	MOD:RefreshUnitMedia("focustarget")
 	frame.unit = unit;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	frame.colors = oUF_SuperVillain.colors;
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/basic/pet.lua b/Interface/AddOns/SVUI/packages/unit/frames/basic/pet.lua
index 8dfbb9d..1cd5bca 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/basic/pet.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/basic/pet.lua
@@ -28,15 +28,11 @@ BUILD FUNCTION
 ]]--
 function MOD.Construct:pet(frame)
 	MOD:SetActionPanel(frame, "pet")
-	frame.Health = MOD:CreateHealthBar(frame, true, true)
+	frame.Health = MOD:CreateHealthBar(frame, true)
 	frame.Health.frequentUpdates = true;
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "LEFT")
+	frame.Power = MOD:CreatePowerBar(frame, true)
 	frame.Power.frequentUpdates = false;
 	MOD:CreatePortrait(frame, true)
-	frame.Name = MOD:CreateNameText(frame, "pet")
-	frame.Name:ClearAllPoints()
-	frame.Name:SetParent(frame.InfoPanel)
-	frame.Name:Point("CENTER", frame.InfoPanel, "CENTER")
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.RaidIcon = MOD:CreateRaidIcon(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
@@ -56,6 +52,7 @@ function MOD.FrameUpdate:pet(unit, frame, db)
 	frame.db = db;
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
+	MOD:RefreshUnitMedia("pet")
 	frame.unit = unit;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	frame.colors = oUF_SuperVillain.colors;
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/basic/player.lua b/Interface/AddOns/SVUI/packages/unit/frames/basic/player.lua
index d0b398c..131aaa7 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/basic/player.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/basic/player.lua
@@ -28,20 +28,10 @@ BUILD FUNCTION
 ]]--
 function MOD.Construct:player(frame)
 	MOD:SetActionPanel(frame, "player")
-	frame.Health = MOD:CreateHealthBar(frame, true, true)
-	frame.Health.frequentUpdates = true;
-	frame.Health.value:ClearAllPoints()
-	frame.Health.value:SetParent(frame.InfoPanel)
-	frame.Health.value:Point("RIGHT", frame.InfoPanel, "RIGHT")
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "LEFT")
-	frame.Power.frequentUpdates = true;
-	frame.Power.value:ClearAllPoints()
-	frame.Power.value:SetParent(frame.InfoPanel)
-	frame.Power.value:Point("LEFT", frame.InfoPanel, "LEFT")
-	frame.Name = MOD:CreateNameText(frame, "player")
-	frame.Name:ClearAllPoints()
-	frame.Name:SetParent(frame.InfoPanel)
-	frame.Name:Point("CENTER", frame.InfoPanel, "CENTER")
+	frame.Health = MOD:CreateHealthBar(frame, true)
+	frame.Health.frequentUpdates = true
+	frame.Power = MOD:CreatePowerBar(frame, true)
+	frame.Power.frequentUpdates = true
 	MOD:CreatePortrait(frame, false, true)
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
@@ -52,7 +42,7 @@ function MOD.Construct:player(frame)
 	frame.Resting = MOD:CreateRestingIndicator(frame)
 	frame.Combat = MOD:CreateCombatIndicator(frame)
 	frame.PvPText = frame.InfoPanel:CreateFontString(nil,'OVERLAY')
-	MOD:SetUnitFont(frame.PvPText)
+	frame.PvPText:SetFontTemplate(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
 	frame.Afflicted = MOD:CreateAfflicted(frame)
 	frame.HealPrediction = MOD:CreateHealPrediction(frame, true)
 	frame.AuraBars = MOD:CreateAuraBarHeader(frame, "player")
@@ -67,7 +57,6 @@ UPDATE
 ]]--
 function MOD.FrameUpdate:player(unit, frame, db)
 	frame.db = db;
-	local OFFSET = SuperVillain:Scale(1);
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
 	local USE_CLASSBAR = db.classbar.enable;
@@ -75,6 +64,7 @@ function MOD.FrameUpdate:player(unit, frame, db)
 	local classBarWidth = db.width * 0.4;
 	local healthPanel = frame.HealthPanel
 	local iconDB = db.icons
+	MOD:RefreshUnitMedia("player")
 	frame.unit = unit
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	frame.colors = oUF_SuperVillain.colors;
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/basic/pt.lua b/Interface/AddOns/SVUI/packages/unit/frames/basic/pt.lua
index 4f4fb2c..2ad61e5 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/basic/pt.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/basic/pt.lua
@@ -27,10 +27,9 @@ BUILD FUNCTION
 ##########################################################
 ]]--
 function MOD.Construct:pettarget(frame)
-	MOD:SetActionPanel(frame)
-	frame.Health = MOD:CreateHealthBar(frame, true, true, "RIGHT")
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "LEFT")
-	frame.Name = MOD:CreateNameText(frame, "pettarget")
+	MOD:SetActionPanel(frame, "pettarget")
+	frame.Health = MOD:CreateHealthBar(frame, true)
+	frame.Power = MOD:CreatePowerBar(frame, true)
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
 	frame.Range = { insideAlpha = 1, outsideAlpha = 1 }
@@ -46,6 +45,7 @@ function MOD.FrameUpdate:pettarget(unit, frame, db)
 	frame.db = db;
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
+	MOD:RefreshUnitMedia("pettarget")
 	frame.unit = unit;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	frame.colors = oUF_SuperVillain.colors;
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/basic/target.lua b/Interface/AddOns/SVUI/packages/unit/frames/basic/target.lua
index 0709f3e..c73bb8b 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/basic/target.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/basic/target.lua
@@ -28,27 +28,20 @@ BUILD FUNCTION
 ]]--
 function MOD.Construct:target(frame)
 	MOD:SetActionPanel(frame, "target")
-	frame.Health = MOD:CreateHealthBar(frame,true,true,true)
-	frame.Health.frequentUpdates=true;
-	frame.Health.value:ClearAllPoints()
-	frame.Health.value:SetParent(frame.InfoPanel)
-	frame.Health.value:Point('LEFT',frame.InfoPanel,'LEFT')
-	frame.Power = MOD:CreatePowerBar(frame,true,true,'RIGHT')
-	frame.Power.frequentUpdates=true;
-	frame.Power.value:ClearAllPoints()
-	frame.Power.value:SetParent(frame.InfoPanel)
-	frame.Power.value:Point('RIGHT',frame.InfoPanel,'RIGHT')
-	frame.Name = MOD:CreateNameText(frame,"target")
+	frame.Health = MOD:CreateHealthBar(frame, true, true)
+	frame.Health.frequentUpdates = true
+	frame.Power = MOD:CreatePowerBar(frame, true, true)
+	frame.Power.frequentUpdates = true
 	MOD:CreatePortrait(frame)
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
 	frame.Castbar = MOD:CreateCastbar(frame, true, L["Target Castbar"], true)
 	frame.RaidIcon = MOD:CreateRaidIcon(frame)
 	local isSmall = MOD.db.target.combobar.smallIcons
-	if(SuperVillain.class == 'ROGUE') then
-		frame.HyperCombo = MOD:CreateRogueCombobar(frame,isSmall)
-	elseif(SuperVillain.class == 'DRUID') then
-		frame.HyperCombo = MOD:CreateDruidCombobar(frame,isSmall)
+	if(SuperVillain.class == "ROGUE") then
+		frame.HyperCombo = MOD:CreateRogueCombobar(frame, isSmall)
+	elseif(SuperVillain.class == "DRUID") then
+		frame.HyperCombo = MOD:CreateDruidCombobar(frame, isSmall)
 	end
 	frame.HealPrediction = MOD:CreateHealPrediction(frame, true)
 	frame.Afflicted = MOD:CreateAfflicted(frame)
@@ -70,12 +63,12 @@ UPDATE
 ##########################################################
 ]]--
 function MOD.FrameUpdate:target(unit, frame, db)
-	frame.db = db;
-	local SPACER = SuperVillain:Scale(1);
+	frame.db = db
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
 	local USE_COMBOBAR = db.combobar.enable;
 	local comboBarHeight = db.combobar.height;
+	MOD:RefreshUnitMedia("target")
 	frame.unit = unit;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	frame.colors = oUF_SuperVillain.colors;
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/basic/tot.lua b/Interface/AddOns/SVUI/packages/unit/frames/basic/tot.lua
index 24dbd53..7c6bb92 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/basic/tot.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/basic/tot.lua
@@ -28,13 +28,9 @@ BUILD FUNCTION
 ]]--
 function MOD.Construct:targettarget(frame)
 	MOD:SetActionPanel(frame, "targettarget")
-	frame.Health = MOD:CreateHealthBar(frame, true, true)
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "LEFT")
+	frame.Health = MOD:CreateHealthBar(frame, true)
+	frame.Power = MOD:CreatePowerBar(frame, true)
 	MOD:CreatePortrait(frame, true)
-	frame.Name = MOD:CreateNameText(frame, "targettarget")
-	frame.Name:ClearAllPoints()
-	frame.Name:SetParent(frame.InfoPanel)
-	frame.Name:Point("CENTER", frame.InfoPanel, "CENTER")
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.RaidIcon = MOD:CreateRaidIcon(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
@@ -51,6 +47,7 @@ function MOD.FrameUpdate:targettarget(unit, frame, db)
 	frame.db = db;
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
+	MOD:RefreshUnitMedia("targettarget")
 	frame.unit = unit;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	frame.colors = oUF_SuperVillain.colors;
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/extra/arena.lua b/Interface/AddOns/SVUI/packages/unit/frames/extra/arena.lua
index f010073..405e995 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/extra/arena.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/extra/arena.lua
@@ -53,10 +53,9 @@ local function PrepFrame_OnUpdate(self, event, unit, arg)
 end

 function MOD.Construct:arena(frame)
-	MOD:SetActionPanel(frame)
-	frame.Health = MOD:CreateHealthBar(frame, true, true, true)
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "LEFT")
-	frame.Name = MOD:CreateNameText(frame, "arena")
+	MOD:SetActionPanel(frame, "arena")
+	frame.Health = MOD:CreateHealthBar(frame, true, true)
+	frame.Power = MOD:CreatePowerBar(frame, true)
 	MOD:CreatePortrait(frame)
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
@@ -84,7 +83,7 @@ function MOD.Construct:arena(frame)
 		frame.prepFrame.Icon:SetParent(frame.prepFrame.Icon.bg)
 		frame.prepFrame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
 		frame.prepFrame.Icon:FillInner(frame.prepFrame.Icon.bg)
-		frame.prepFrame.SpecClass = frame.prepFrame.Health:CreateFontString(nil, "OVERLAY")
+		frame.prepFrame.SpecClass = frame.prepFrame.Health:CreateFontString(nil, "OVERLAY", "NumberFont_Outline_Large")
 		frame.prepFrame.SpecClass:SetPoint("CENTER")
 		frame.prepFrame.unit = frame.unit;
 		frame.prepFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
@@ -92,8 +91,7 @@ function MOD.Construct:arena(frame)
 		frame.prepFrame:RegisterEvent("UNIT_NAME_UPDATE")
 		frame.prepFrame:RegisterEvent("ARENA_PREP_OPPONENT_SPECIALIZATIONS")
 		frame.prepFrame:SetScript("OnEvent", PrepFrame_OnUpdate)
-		MOD:SetUnitStatusbar(frame.prepFrame.Health)
-		MOD:SetUnitFont(frame.prepFrame.SpecClass)
+		frame.prepFrame.Health:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
 	end

 	local frameName = frame:GetName()
@@ -116,6 +114,7 @@ function MOD.FrameUpdate:arena(unit, frame, db)
 	local holder = _G["SVUI_Arena_MOVE"]
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
+	MOD:RefreshUnitMedia("arena")
 	frame.unit = unit
 	frame.colors = oUF_SuperVillain.colors;
 	frame:Size(UNIT_WIDTH, UNIT_HEIGHT)
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/extra/boss.lua b/Interface/AddOns/SVUI/packages/unit/frames/extra/boss.lua
index 11eef3b..1238d06 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/extra/boss.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/extra/boss.lua
@@ -28,10 +28,9 @@ BUILD FUNCTION
 ##########################################################
 ]]--
 function MOD.Construct:boss(frame)
-	MOD:SetActionPanel(frame)
-	frame.Health = MOD:CreateHealthBar(frame, true, true, true)
-	frame.Power = MOD:CreatePowerBar(frame, true, true, "RIGHT")
-	frame.Name = MOD:CreateNameText(frame, "boss")
+	MOD:SetActionPanel(frame, "boss")
+	frame.Health = MOD:CreateHealthBar(frame, true, true)
+	frame.Power = MOD:CreatePowerBar(frame, true, true)
 	MOD:CreatePortrait(frame)
 	frame.Buffs = MOD:CreateBuffs(frame)
 	frame.Debuffs = MOD:CreateDebuffs(frame)
@@ -62,6 +61,7 @@ function MOD.FrameUpdate:boss(unit, frame, db)
 	local holder = _G["SVUI_Boss_MOVE"]
 	local UNIT_WIDTH = db.width;
 	local UNIT_HEIGHT = db.height;
+	MOD:RefreshUnitMedia("boss")
 	frame.unit = unit;
 	frame.colors = oUF_SuperVillain.colors;
 	frame:Size(UNIT_WIDTH, UNIT_HEIGHT)
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/group/assist.lua b/Interface/AddOns/SVUI/packages/unit/frames/group/assist.lua
index c6ced42..2db3cfd 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/group/assist.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/group/assist.lua
@@ -31,9 +31,8 @@ BUILD FUNCTION
 function MOD.Construct:assist(...)
 	self:SetScript("OnEnter", UnitFrame_OnEnter)
 	self:SetScript("OnLeave", UnitFrame_OnLeave)
-	MOD:SetActionPanel(self)
+	MOD:SetActionPanel(self, "assist")
 	self.Health = MOD:CreateHealthBar(self, true)
-	self.Name = MOD:CreateNameText(self, "assist")
 	self.RaidIcon = MOD:CreateRaidIcon(self)
 	self.RaidIcon:SetPoint("BOTTOMRIGHT")
 	self.Range = { insideAlpha = 1, outsideAlpha = 1 }
@@ -71,6 +70,7 @@ function MOD.HeaderUpdate:assist(frame, db)
 end

 function MOD.FrameUpdate:assist(frame, db)
+	MOD:RefreshUnitMedia("assist")
 	frame.colors = oUF_SuperVillain.colors;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
 	if frame.isChild and frame.originalParent then
@@ -98,13 +98,11 @@ function MOD.FrameUpdate:assist(frame, db)
 	MOD:RefreshUnitLayout(frame, "assist")

 	do
-		local k = frame.Name;
-		k:Point("CENTER", frame.Health, "CENTER")
-		k:SetParent(frame.Health)
+		local nametext = frame.InfoPanel.Name;
 		if oUF_SuperVillain.colors.healthclass then
-			frame:Tag(k, "[name:10]")
+			frame:Tag(nametext, "[name:10]")
 		else
-			frame:Tag(k, "[name:color][name:10]")
+			frame:Tag(nametext, "[name:color][name:10]")
 		end
 	end
 	frame:UpdateAllElements()
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/group/party.lua b/Interface/AddOns/SVUI/packages/unit/frames/group/party.lua
index 811a761..4ca6c76 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/group/party.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/group/party.lua
@@ -54,21 +54,19 @@ BUILD FUNCTION
 ##########################################################
 ]]--
 function MOD.Construct:party(frame)
-	MOD:SetActionPanel(self)
+	MOD:SetActionPanel(self, "party")

-	self:SetScript('OnEnter', UnitFrame_OnEnter)
-	self:SetScript('OnLeave', UnitFrame_OnLeave)
+	self:SetScript("OnEnter", UnitFrame_OnEnter)
+	self:SetScript("OnLeave", UnitFrame_OnLeave)

 	if self.isChild then
 		self.Health = MOD:CreateHealthBar(self, true)
-		self.Name = MOD:CreateNameText(self, "party")
 		self.originalParent = self:GetParent()
 	else
-		self.Health = MOD:CreateHealthBar(self,true,true)
-		self.Power = MOD:CreatePowerBar(self,true,false,'LEFT')
-		self.Power.frequentUpdates = false;
-		self.Name = MOD:CreateNameText(self, "party")
-		MOD:CreatePortrait(self,true)
+		self.Health = MOD:CreateHealthBar(self, true)
+		self.Power = MOD:CreatePowerBar(self, true)
+		self.Power.frequentUpdates = false
+		MOD:CreatePortrait(self, true)
 		self.Buffs = MOD:CreateBuffs(self)
 		self.Debuffs = MOD:CreateDebuffs(self)
 		self.AuraWatch = MOD:CreateAuraWatch(self)
@@ -101,7 +99,7 @@ function MOD.Construct:party(frame)
 		tinsert(self.__elements, UpdateTargetGlow)
 		self:RegisterEvent("PLAYER_TARGET_CHANGED", UpdateTargetGlow)
 		self:RegisterEvent("PLAYER_ENTERING_WORLD", UpdateTargetGlow)
-		self:RegisterEvent('GROUP_ROSTER_UPDATE', UpdateTargetGlow)
+		self:RegisterEvent("GROUP_ROSTER_UPDATE", UpdateTargetGlow)
 	end

 	self.Range = { insideAlpha = 1, outsideAlpha = 1 }
@@ -154,7 +152,7 @@ end

 function MOD.FrameUpdate:party(frame,db)
 	frame.db = db;
-	local OFFSET = SuperVillain:Scale(1);
+	MOD:RefreshUnitMedia("party")
 	frame.colors = oUF_SuperVillain.colors;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and 'AnyDown' or 'AnyUp')
 	if frame.isChild then
@@ -185,14 +183,12 @@ function MOD.FrameUpdate:party(frame,db)
 			health.colorClass = true;
 			health.colorReaction = true;
 			health:ClearAllPoints()
-			health:Point("TOPRIGHT", frame, "TOPRIGHT", -OFFSET, -OFFSET)
-			health:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", OFFSET, OFFSET)
+			health:Point("TOPRIGHT", frame, "TOPRIGHT", -1, -1)
+			health:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", 1, 1)
 		end
 		do
-			local name=frame.Name;
-			name:ClearAllPoints()
-			name:SetPoint('CENTER', frame.Health, 'CENTER', 0, 0)
-			frame:Tag(name, altDB.tags)
+			local nametext = frame.InfoPanel.Name
+			frame:Tag(nametext, altDB.tags)
 		end
 	else
 		if not InCombatLockdown()then frame:Size(db.width,db.height) end
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/group/raid.lua b/Interface/AddOns/SVUI/packages/unit/frames/group/raid.lua
index 3c9d331..a6aab8d 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/group/raid.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/group/raid.lua
@@ -53,14 +53,14 @@ BUILD FUNCTION & UPDATE
 ##########################################################
 ]]--
 for i = 10, 40, 15 do
-    MOD.Construct["raid"..i] = function(self)
+    local raidGroupName = "raid"..i
+    MOD.Construct[raidGroupName] = function(self)
         self:SetScript("OnEnter", UnitFrame_OnEnter)
         self:SetScript("OnLeave", UnitFrame_OnLeave)
-        MOD:SetActionPanel(self)
-        self.Health = MOD:CreateHealthBar(self, true, true)
-        self.Power = MOD:CreatePowerBar(self, true, true, "LEFT")
-        self.Power.frequentUpdates = false;
-        self.Name = MOD:CreateNameText(self, "raid"..i)
+        MOD:SetActionPanel(self, raidGroupName)
+        self.Health = MOD:CreateHealthBar(self, true)
+        self.Power = MOD:CreatePowerBar(self, true)
+        self.Power.frequentUpdates = false
         self.Buffs = MOD:CreateBuffs(self)
         self.Debuffs = MOD:CreateDebuffs(self)
         self.AuraWatch = MOD:CreateAuraWatch(self)
@@ -99,7 +99,7 @@ for i = 10, 40, 15 do
         return frame
     end;

-    MOD.VisibilityUpdate["raid"..i] = function(self, event)
+    MOD.VisibilityUpdate[raidGroupName] = function(self, event)
         if (not self.db or (self.db and not SuperVillain.db.SVUnit.enable) or (MOD.db and not MOD.db.smartRaidFilter) or self.isForced) then return end;
         local instance, group = IsInInstance()
         local _, _, _, _, info, _, _ = GetInstanceInfo()
@@ -122,7 +122,7 @@ for i = 10, 40, 15 do
         end
     end;

-    MOD.HeaderUpdate["raid"..i] = function(_, unit, db)
+    MOD.HeaderUpdate[raidGroupName] = function(_, unit, db)
         local frame = unit:GetParent()
         frame.db = db;
         if not frame.positioned then
@@ -131,20 +131,21 @@ for i = 10, 40, 15 do
             SuperVillain:SetSVMovable(frame, frame:GetName().."_MOVE", L["Raid 1-"]..i..L[" Frames"], nil, nil, nil, "ALL, RAID"..i)
             frame:RegisterEvent("PLAYER_ENTERING_WORLD")
             frame:RegisterEvent("ZONE_CHANGED_NEW_AREA")
-            frame:SetScript("OnEvent", MOD.VisibilityUpdate["raid"..i])
+            frame:SetScript("OnEvent", MOD.VisibilityUpdate[raidGroupName])
             frame.positioned = true
         end;
-        MOD.VisibilityUpdate["raid"..i](frame)
+        MOD.VisibilityUpdate[raidGroupName](frame)
     end;

-    MOD.FrameUpdate["raid"..i] = function(_, frame, db)
+    MOD.FrameUpdate[raidGroupName] = function(_, frame, db)
         frame.db = db;
+        MOD:RefreshUnitMedia(raidGroupName)
         local rdSize = MOD.db.auraFontSize;
         local rdFont = LSM:Fetch("font", MOD.db.auraFont)
         frame.colors = oUF_SuperVillain.colors;
         frame:RegisterForClicks(MOD.db.fastClickTarget and"AnyDown"or"AnyUp")
         if not InCombatLockdown()then frame:Size(db.width, db.height)end;
-        MOD:RefreshUnitLayout(frame, "raid")
+        MOD:RefreshUnitLayout(frame, raidGroupName)
         do
             local rdBuffs = frame.RaidDebuffs;
             if db.rdebuffs.enable then
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/group/rpet.lua b/Interface/AddOns/SVUI/packages/unit/frames/group/rpet.lua
index 0d48f7f..7e88807 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/group/rpet.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/group/rpet.lua
@@ -73,16 +73,13 @@ BUILD FUNCTION
 function MOD.Construct:raidpet(frame)
 	self:SetScript("OnEnter", UnitFrame_OnEnter)
 	self:SetScript("OnLeave", UnitFrame_OnLeave)
-	MOD:SetActionPanel(self)
-	self.Health = MOD:CreateHealthBar(self, true, true)
-	self.Name = MOD:CreateNameText(self, "raidpet")
-	self.Buffs = MOD:CreateBuffs(self)
+	MOD:SetActionPanel(self, "raidpet")
+	self.Health = MOD:CreateHealthBar(self, true)
 	self.Debuffs = MOD:CreateDebuffs(self)
 	self.AuraWatch = MOD:CreateAuraWatch(self)
 	self.RaidDebuffs = MOD:CreateRaidDebuffs(self)
 	self.Afflicted = MOD:CreateAfflicted(self)
 	self.RaidIcon = MOD:CreateRaidIcon(self)
-	self.HealPrediction = MOD:CreateHealPrediction(self)
 	self.Range = { insideAlpha = 1, outsideAlpha = 1 }

 	local shadow = CreateFrame("Frame", nil, self)
@@ -150,6 +147,7 @@ end

 function MOD.FrameUpdate:raidpet(frame, db)
 	frame.db = db;
+	MOD:RefreshUnitMedia("raidpet")
     frame.colors = oUF_SuperVillain.colors;
     frame:RegisterForClicks(MOD.db.fastClickTarget and"AnyDown"or"AnyUp")
     if not InCombatLockdown()then frame:Size(db.width, db.height)end
diff --git a/Interface/AddOns/SVUI/packages/unit/frames/group/tank.lua b/Interface/AddOns/SVUI/packages/unit/frames/group/tank.lua
index 147382d..eafc40e 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames/group/tank.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames/group/tank.lua
@@ -31,9 +31,8 @@ BUILD FUNCTION
 function MOD.Construct:tank(...)
 	self:SetScript("OnEnter", UnitFrame_OnEnter)
 	self:SetScript("OnLeave", UnitFrame_OnLeave)
-	MOD:SetActionPanel(self)
+	MOD:SetActionPanel(self, "tank")
 	self.Health = MOD:CreateHealthBar(self, true)
-	self.Name = MOD:CreateNameText(self, "tank")
 	self.RaidIcon = MOD:CreateRaidIcon(self)
 	self.RaidIcon:SetPoint("BOTTOMRIGHT")
 	self.Range = { insideAlpha = 1, outsideAlpha = 1 }
@@ -71,6 +70,7 @@ function MOD.HeaderUpdate:tank(frame, db)
 end

 function MOD.FrameUpdate:tank(frame, db)
+	MOD:RefreshUnitMedia("tank")
 	frame.colors = oUF_SuperVillain.colors;
 	frame:RegisterForClicks(MOD.db.fastClickTarget and"AnyDown"or"AnyUp")
 	if frame.isChild and frame.originalParent then
@@ -98,13 +98,11 @@ function MOD.FrameUpdate:tank(frame, db)
 	MOD:RefreshUnitLayout(frame, "tank")

 	do
-		local k = frame.Name;
-		k:Point("CENTER", frame.Health, "CENTER")
-		k:SetParent(frame.Health)
+		local nametext = frame.InfoPanel.Name;
 		if oUF_SuperVillain.colors.healthclass then
-			frame:Tag(k, "[name:10]")
+			frame:Tag(nametext, "[name:10]")
 		else
-			frame:Tag(k, "[name:color][name:10]")
+			frame:Tag(nametext, "[name:color][name:10]")
 		end
 	end

diff --git a/Interface/AddOns/SVUI/system/classes/Database.lua b/Interface/AddOns/SVUI/system/classes/Database.lua
index 6eccc9a..04a583c 100644
--- a/Interface/AddOns/SVUI/system/classes/Database.lua
+++ b/Interface/AddOns/SVUI/system/classes/Database.lua
@@ -896,10 +896,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERRIGHT",
 				["xOffset"] = 0,
 				["yOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Number Font",
+				["reversed"] = false,
 				["fontSize"] = 11,
-				["fontOutline"] = "OUTLINE",
 			},
 			["power"] =
 			{
@@ -913,10 +911,8 @@ local DatabaseDefaults = {
 				["detachFromFrame"] = false,
 				["detachedWidth"] = 250,
 				["attachTextToPower"] = false,
-				["druidMana"] = true,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 11,
-				["fontOutline"] = "OUTLINE",
+				["druidMana"] = true,
+				["fontSize"] = 11,
 			},
 			["name"] =
 			{
@@ -1093,9 +1089,7 @@ local DatabaseDefaults = {
 				["xOffset"] = 0,
 				["yOffset"] = 0,
 				["reversed"] = true,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 11,
-				["fontOutline"] = "OUTLINE",
+				["fontSize"] = 11,
 			},
 			["power"] =
 			{
@@ -1106,10 +1100,8 @@ local DatabaseDefaults = {
 				["hideonnpc"] = true,
 				["xOffset"] = 0,
 				["yOffset"] = 0,
-				["attachTextToPower"] = false,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 11,
-				["fontOutline"] = "OUTLINE",
+				["attachTextToPower"] = false,
+				["fontSize"] = 11,
 			},
 			["name"] =
 			{
@@ -1319,10 +1311,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERRIGHT",
 				["xOffset"] = 0,
 				["yOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 9,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 9,
 			},
 			["power"] =
 			{
@@ -1332,10 +1322,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERLEFT",
 				["hideonnpc"] = false,
 				["xOffset"] = 0,
-				["yOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 9,
-				["fontOutline"] = "OUTLINE",
+				["yOffset"] = 0,
+				["fontSize"] = 9,
 			},
 			["name"] =
 			{
@@ -1484,10 +1472,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERRIGHT",
 				["xOffset"] = 0,
 				["yOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -1497,10 +1483,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERLEFT",
 				["hideonnpc"] = false,
 				["xOffset"] = 0,
-				["yOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["yOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -1691,10 +1675,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERRIGHT",
 				["xOffset"] = 0,
 				["yOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -1704,10 +1686,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERLEFT",
 				["hideonnpc"] = false,
 				["xOffset"] = 0,
-				["yOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["yOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -1846,10 +1826,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERRIGHT",
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -1859,10 +1837,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERLEFT",
 				["hideonnpc"] = false,
 				["yOffset"] = 0,
-				["xOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -1971,10 +1947,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERRIGHT",
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -1984,10 +1958,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERLEFT",
 				["hideonnpc"] = false,
 				["yOffset"] = 0,
-				["xOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -2114,10 +2086,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERTOPRIGHT",
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = true,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = true,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -2127,10 +2097,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERBOTTOMRIGHT",
 				["hideonnpc"] = false,
 				["yOffset"] = 7,
-				["xOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["portrait"] =
 			{
@@ -2248,10 +2216,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERTOPRIGHT",
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = true,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = true,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -2261,10 +2227,8 @@ local DatabaseDefaults = {
 				["position"] = "INNERBOTTOMRIGHT",
 				["hideonnpc"] = false,
 				["yOffset"] = 7,
-				["xOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -2437,10 +2401,8 @@ local DatabaseDefaults = {
 				["frequentUpdates"] = false,
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -2451,10 +2413,8 @@ local DatabaseDefaults = {
 				["position"] = "BOTTOMRIGHT",
 				["hideonnpc"] = false,
 				["yOffset"] = 0,
-				["xOffset"] = 0,
-				["font"] = "SVUI Number Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -2615,10 +2575,8 @@ local DatabaseDefaults = {
 				["frequentUpdates"] = false,
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -2629,10 +2587,8 @@ local DatabaseDefaults = {
 				["position"] = "BOTTOMRIGHT",
 				["hideonnpc"] = false,
 				["yOffset"] = 0,
-				["xOffset"] = 0,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -2768,10 +2724,8 @@ local DatabaseDefaults = {
 				["frequentUpdates"] = false,
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -2781,10 +2735,8 @@ local DatabaseDefaults = {
 				["position"] = "BOTTOMRIGHT",
 				["hideonnpc"] = false,
 				["yOffset"] = 0,
-				["xOffset"] = 0,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -2920,10 +2872,8 @@ local DatabaseDefaults = {
 				["frequentUpdates"] = false,
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["power"] =
 			{
@@ -2934,10 +2884,8 @@ local DatabaseDefaults = {
 				["position"] = "BOTTOMRIGHT",
 				["hideonnpc"] = false,
 				["yOffset"] = 0,
-				["xOffset"] = 0,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["xOffset"] = 0,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -3075,10 +3023,8 @@ local DatabaseDefaults = {
 				["frequentUpdates"] = false,
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -3187,10 +3133,8 @@ local DatabaseDefaults = {
 				["frequentUpdates"] = false,
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
@@ -3246,10 +3190,8 @@ local DatabaseDefaults = {
 				["frequentUpdates"] = false,
 				["yOffset"] = 0,
 				["xOffset"] = 0,
-				["reversed"] = false,
-				["font"] = "SVUI Default Font",
-				["fontSize"] = 10,
-				["fontOutline"] = "OUTLINE",
+				["reversed"] = false,
+				["fontSize"] = 10,
 			},
 			["name"] =
 			{
diff --git a/Interface/AddOns/SVUI/system/templates.lua b/Interface/AddOns/SVUI/system/templates.lua
index 5dfec85..56cc0bf 100644
--- a/Interface/AddOns/SVUI/system/templates.lua
+++ b/Interface/AddOns/SVUI/system/templates.lua
@@ -324,6 +324,29 @@ local _templates = {
         shadow = false,
         noupdate = false,
     },
+    ["Bar"] = {
+        backdrop = {
+            bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]],
+            edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+            tile = false,
+            tileSize = 0,
+            edgeSize = 1,
+            insets =
+            {
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = 0,
+            },
+        },
+        color = "transparent",
+        gradient = false,
+        texture = false,
+        texupdate = false,
+        padding = 1,
+        shadow = false,
+        noupdate = true,
+    },
     ["Slot"] = {
         backdrop = {
             bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]],
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua
index c813314..84ef4fb 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua
@@ -808,7 +808,7 @@ function ns:SetNameConfigGroup(updateFunction, unitName, count)
 				name = L["Fonts"],
 				set = function(key, value)
 					MOD:ChangeDBVar(value, key[#key], unitName, "name");
-					MOD:UpdateUnitFont(unitName)
+					MOD:RefreshUnitMedia(unitName, true)
 				end,
 				args = {
 					font = {
@@ -1541,7 +1541,7 @@ SuperVillain.Options.args.SVUnit = {
 					end,
 					set = function(key, value)
 						MOD:ChangeDBVar(value, key[#key]);
-						MOD:RefreshUnitTextures()
+						MOD:RefreshAllUnitMedia()
 					end,
 					args = {
 						smoothbars = {
@@ -1575,7 +1575,7 @@ SuperVillain.Options.args.SVUnit = {
 					name = L["Fonts"],
 					set = function(key, value)
 						MOD:ChangeDBVar(value, key[#key]);
-						MOD:RefreshUnitFonts()
+						MOD:RefreshAllUnitMedia()
 					end,
 					args = {
 						font = {
@@ -1613,7 +1613,7 @@ SuperVillain.Options.args.SVUnit = {
 							values = AceGUIWidgetLSMlists.font,
 							set = function(key, value)
 								MOD:ChangeDBVar(value, key[#key]);
-								MOD:RefreshUnitAuraFonts()
+								MOD:RefreshAllUnitMedia()
 							end,
 						},
 						auraFontOutline = {
@@ -1626,7 +1626,7 @@ SuperVillain.Options.args.SVUnit = {
 							},
 							set = function(key, value)
 								MOD:ChangeDBVar(value, key[#key]);
-								MOD:RefreshUnitAuraFonts();
+								MOD:RefreshAllUnitMedia()
 							end,
 						},
 						auraFontSize = {
@@ -1639,7 +1639,7 @@ SuperVillain.Options.args.SVUnit = {
 							step = 1,
 							set = function(key, value)
 								MOD:ChangeDBVar(value, key[#key]);
-								MOD:RefreshUnitAuraFonts()
+								MOD:RefreshAllUnitMedia()
 							end,
 						},
 					}