Quantcast

5.4.15

Steven Jackson [01-03-15 - 22:47]
5.4.15
Filename
Interface/AddOns/SVUI/SVUI.toc
Interface/AddOns/SVUI/data/defaults.lua
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Afflicted/oUF_Afflicted.toc
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ArcaneCharge/oUF_ArcaneCharge.toc
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.toc
Interface/AddOns/SVUI/packages/bag/SVBag.lua
Interface/AddOns/SVUI/packages/unit/SVUnit.lua
Interface/AddOns/SVUI/packages/unit/elements/auras.lua
Interface/AddOns/SVUI/packages/unit/frames.lua
Interface/AddOns/SVUI/setup/installer.lua
Interface/AddOns/SVUI_ChatOMatic/Loader.lua
Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua
Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc
Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua
Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua
Interface/AddOns/SVUI_CraftOMatic/Loader.lua
Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc
Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc
Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
Interface/AddOns/SVUI_TrackOMatic/Loader.lua
Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua
Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc
Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua
diff --git a/Interface/AddOns/SVUI/SVUI.toc b/Interface/AddOns/SVUI/SVUI.toc
index 3a3d11c..a84b988 100644
--- a/Interface/AddOns/SVUI/SVUI.toc
+++ b/Interface/AddOns/SVUI/SVUI.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI|r
 ## Notes: Supervillain UI [|cff9911FFCore Framework|r].
 ## SavedVariables: SVUI_Global, SVUI_Errors
diff --git a/Interface/AddOns/SVUI/data/defaults.lua b/Interface/AddOns/SVUI/data/defaults.lua
index bbdc2cd..1a8b1d5 100644
--- a/Interface/AddOns/SVUI/data/defaults.lua
+++ b/Interface/AddOns/SVUI/data/defaults.lua
@@ -807,7 +807,6 @@ SV.defaults["SVUnit"] = {
 		["enable"] = true,
 		["width"] = 215,
 		["height"] = 40,
-		["lowmana"] = 30,
 		["combatfade"] = false,
 		["predict"] = false,
 		["threatEnabled"] = true,
@@ -854,7 +853,6 @@ SV.defaults["SVUnit"] = {
 			["xOffset"] = 0,
 			["yOffset"] = 0,
 			["detachedWidth"] = 250,
-			["attachTextToPower"] = false,
 			["druidMana"] = true,
 			["fontSize"] = 11,
 			["classColor"] = false,
@@ -882,11 +880,10 @@ SV.defaults["SVUnit"] = {
 		["portrait"] =
 		{
 			["enable"] = true,
-			["width"] = 50,
-			["overlay"] = true,
+			["width"] = 50,
 			["camDistanceScale"] = 1.4,
 			["rotation"] = 0,
-			["style"] = "3D",
+			["style"] = "3DOVERLAY",
 		},
 		["buffs"] =
 		{
@@ -962,8 +959,7 @@ SV.defaults["SVUnit"] = {
 		},
 		["classbar"] =
 		{
-			["enable"] = true,
-			["slideLeft"] = true,
+			["enable"] = true,
 			["inset"] = "inset",
 			["height"] = 25,
 			["detachFromFrame"] = false,
@@ -1046,7 +1042,6 @@ SV.defaults["SVUnit"] = {
 			["hideonnpc"] = true,
 			["xOffset"] = 0,
 			["yOffset"] = 0,
-			["attachTextToPower"] = false,
 			["fontSize"] = 11,
 			["classColor"] = false,
 		},
@@ -1067,7 +1062,7 @@ SV.defaults["SVUnit"] = {
 			["overlay"] = true,
 			["rotation"] = 0,
 			["camDistanceScale"] = 1.4,
-			["style"] = "3D",
+			["style"] = "3DOVERLAY",
 		},
 		["buffs"] =
 		{
@@ -1301,7 +1296,7 @@ SV.defaults["SVUnit"] = {
 			["overlay"] = true,
 			["rotation"] = 0,
 			["camDistanceScale"] = 1,
-			["style"] = "3D",
+			["style"] = "3DOVERLAY",
 		},
 		["buffs"] =
 		{
@@ -1828,7 +1823,7 @@ SV.defaults["SVUnit"] = {
 			["overlay"] = true,
 			["rotation"] = 0,
 			["camDistanceScale"] = 1,
-			["style"] = "3D",
+			["style"] = "3DOVERLAY",
 		},
 		["buffs"] =
 		{
@@ -2087,7 +2082,7 @@ SV.defaults["SVUnit"] = {
 			["overlay"] = true,
 			["rotation"] = 0,
 			["camDistanceScale"] = 1,
-			["style"] = "3D",
+			["style"] = "3DOVERLAY",
 		},
 		["name"] =
 		{
@@ -2230,7 +2225,7 @@ SV.defaults["SVUnit"] = {
 			["overlay"] = true,
 			["rotation"] = 0,
 			["camDistanceScale"] = 1,
-			["style"] = "3D",
+			["style"] = "3DOVERLAY",
 		},
 		["buffs"] =
 		{
@@ -2483,7 +2478,7 @@ SV.defaults["SVUnit"] = {
 			["overlay"] = true,
 			["rotation"] = 0,
 			["camDistanceScale"] = 1,
-			["style"] = "3D",
+			["style"] = "3DOVERLAY",
 		},
 	},
 	["raid"] = {
diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
index 217c23c..5192212 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
@@ -2,7 +2,7 @@
 ## Title: oUF ActionPanel
 ## Notes: Adds a backing to all unit frames that provides many utilities.
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## X-Category: oUF
 ## Dependencies: oUF

diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Afflicted/oUF_Afflicted.toc b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Afflicted/oUF_Afflicted.toc
index de28291..e1856ba 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Afflicted/oUF_Afflicted.toc
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Afflicted/oUF_Afflicted.toc
@@ -2,7 +2,7 @@
 ## Title: oUF Afflicted
 ## Notes: Adds Custom Debuff Highlighting to oUF.
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## X-Category: oUF
 ## Dependencies: oUF

diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ArcaneCharge/oUF_ArcaneCharge.toc b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ArcaneCharge/oUF_ArcaneCharge.toc
index 4d33260..9f98003 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ArcaneCharge/oUF_ArcaneCharge.toc
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ArcaneCharge/oUF_ArcaneCharge.toc
@@ -2,7 +2,7 @@
 ## Title: oUF Arcane Charge
 ## Notes: Adds support for arcane charge indicators to oUF.
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Dependencies: oUF

 oUF_ArcaneCharge.lua
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.toc b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.toc
index 62f83be..7b7c819 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.toc
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.toc
@@ -2,7 +2,7 @@
 ## Title: oUF Combatant
 ## Notes: Adds PvP trinket status and spec icons to oUF frames.
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## X-Category: oUF
 ## Dependencies: oUF

diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
index 53467f7..147ffc7 100644
--- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua
+++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
@@ -81,17 +81,6 @@ local RefProfessionColors = {
 local BagFilters = CreateFrame("Frame", "SVUI_BagFilterMenu", UIParent);
 --[[
 ##########################################################
-UPVALUES
-##########################################################
-]]--
-local DIALOG_FONT = [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]];
-local DIALOG_FONTSIZE = 12;
-local DIALOG_FONTOUTLINE = "OUTLINE";
-local NUMBER_FONT = [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]];
-local NUMBER_FONTSIZE = 12;
-local NUMBER_FONTOUTLINE = "OUTLINE";
---[[
-##########################################################
 LOCAL FUNCTIONS
 ##########################################################
 ]]--
@@ -1800,15 +1789,6 @@ end
 BUILD FUNCTION / UPDATE
 ##########################################################
 ]]--
-function MOD:UpdateLocals()
-	DIALOG_FONT = LSM:Fetch("font", SV.db.font.bagdialog.file);
-	DIALOG_FONTSIZE = SV.db.font.bagdialog.size or 11;
-	DIALOG_FONTOUTLINE = SV.db.font.bagdialog.outline;
-	NUMBER_FONT = LSM:Fetch("font", SV.db.font.bagnumber.file);
-	NUMBER_FONTSIZE = SV.db.font.bagnumber.size;
-	NUMBER_FONTOUTLINE = SV.db.font.bagnumber.outline;
-end
-
 function MOD:ReLoad()
 	if not SV.db.SVBag.enable then return end
 	self:RefreshBagFrames()
diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
index 1959408..5ba5487 100644
--- a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
+++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
@@ -417,12 +417,12 @@ function MOD:RefreshUnitLayout(frame, template)
 	local PORTRAIT_STYLE = 'None';
 	if(db.portrait) then
 		PORTRAIT_ENABLED = (not GRID_MODE and db.portrait.enable);
-		PORTRAIT_OVERLAY = (not GRID_MODE and PORTRAIT_ENABLED and db.portrait.overlay);
+		PORTRAIT_STYLE = db.portrait.style;
+		PORTRAIT_OVERLAY = (not GRID_MODE and PORTRAIT_ENABLED and PORTRAIT_STYLE == '3DOVERLAY');
 		PORTRAIT_OVERLAY_ANIMATION = (PORTRAIT_OVERLAY) and SV.db.SVUnit.overlayAnimation or false;
 		if(PORTRAIT_ENABLED and (not PORTRAIT_OVERLAY)) then
 			PORTRAIT_WIDTH = ((db.portrait.width * TOP_MODIFIER) + (1 * TOP_MODIFIER));
 		end
-		PORTRAIT_STYLE = db.portrait.style;

 		if(frame.Portrait) then
 			frame.Portrait:Hide()
@@ -552,11 +552,6 @@ function MOD:RefreshUnitLayout(frame, template)
 				cY = db.power.yOffset
 				powertext:ClearAllPoints()
 				SV:SetReversePoint(powertext, point, TEXT_GRIP, cX, cY)
-				if db.power.attachTextToPower then
-					powertext:SetParent(POWER_GRIP)
-				else
-					powertext:SetParent(TEXT_GRIP)
-				end
 			end
 			frame:Tag(powertext, db.power.tags)
 		end
diff --git a/Interface/AddOns/SVUI/packages/unit/elements/auras.lua b/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
index 6598388..5540ec8 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
@@ -123,6 +123,8 @@ local Aura_UpdateTooltip = function(self)
 	GameTooltip:SetUnitAura(self.parent.__owner.unit, self:GetID(), self.filter)
 end

+local _hook_AuraBGBorderColor = function(self, ...) self.bg:SetBackdropBorderColor(...) end
+
 local CreateAuraIcon = function(icons, index)
 	local baseSize = icons.size or 16
 	local aura = CreateFrame("Button", nil, icons)
@@ -138,7 +140,7 @@ local CreateAuraIcon = function(icons, index)
 		tile = false,
 		tileSize = 0,
 		edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-        edgeSize = 2,
+        edgeSize = 1,
         insets = {
             left = 0,
             right = 0,
@@ -149,12 +151,37 @@ local CreateAuraIcon = function(icons, index)
     aura:SetBackdropColor(0, 0, 0, 0)
     aura:SetBackdropBorderColor(0, 0, 0)

+    local bg = CreateFrame("Frame", nil, aura)
+    bg:SetFrameStrata("BACKGROUND")
+    bg:SetFrameLevel(0)
+    bg:SetAllPointsOut(aura, 2, 2)
+    bg:SetBackdrop({
+    	bgFile = [[Interface\BUTTONS\WHITE8X8]],
+		tile = false,
+		tileSize = 0,
+		edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
+        edgeSize = 1,
+        insets = {
+            left = 1,
+            right = 1,
+            top = 1,
+            bottom = 1
+        }
+    })
+    bg:SetBackdropColor(0, 0, 0, 0)
+    bg:SetBackdropBorderColor(0, 0, 0, 0)
+    aura.bg = bg;
+
+    --hooksecurefunc(aura, "SetBackdropBorderColor", _hook_AuraBGBorderColor)
+
     local fontgroup = "unitauralarge";
     if(baseSize < 18) then
     	fontgroup = "unitaurasmall";
     elseif(baseSize < 24) then
     	fontgroup = "unitauramedium";
     end
+    --print(baseSize)
+    --print(fontgroup)

 	local cd = CreateFrame("Cooldown", nil, aura, "CooldownFrameTemplate");
 	cd:SetAllPointsIn(aura, 1, 1);
@@ -178,7 +205,7 @@ local CreateAuraIcon = function(icons, index)
     icon:SetTexCoord(0.1, 0.9, 0.1, 0.9);

 	local overlay = aura:CreateTexture(nil, "OVERLAY");
-	overlay:SetAllPoints(aura);
+	overlay:SetAllPointsIn(aura, 1, 1);
 	overlay:SetTexture(BASIC_TEXTURE);
 	overlay:SetVertexColor(0, 0, 0);
 	overlay:Hide();
@@ -259,21 +286,31 @@ local PostUpdateAuraIcon = function(self, unit, button, index, offset)
 	if button.isDebuff then
 		if(not isFriend and button.owner and button.owner ~= "player" and button.owner ~= "vehicle") then
 			button:SetBackdropBorderColor(0.9, 0.1, 0.1, 1)
+			button.bg:SetBackdropColor(1, 0, 0, 1)
+			button.bg:SetBackdropBorderColor(0, 0, 0, 1)
 			button.icon:SetDesaturated((unit and not unit:find('arena%d')) and true or false)
 		else
 			local color = DebuffTypeColor[dtype] or DebuffTypeColor.none
 			if (name == "Unstable Affliction" or name == "Vampiric Touch") and SV.class ~= "WARLOCK" then
 				button:SetBackdropBorderColor(0.05, 0.85, 0.94, 1)
+				button.bg:SetBackdropColor(0, 0.9, 1, 1)
+				button.bg:SetBackdropBorderColor(0, 0, 0, 1)
 			else
 				button:SetBackdropBorderColor(color.r * 0.6, color.g * 0.6, color.b * 0.6, 1)
+				button.bg:SetBackdropColor(color.r, color.g, color.b, 1)
+				button.bg:SetBackdropBorderColor(0, 0, 0, 1)
 			end
 			button.icon:SetDesaturated(false)
 		end
 	else
 		if (isStealable) and not isFriend then
 			button:SetBackdropBorderColor(0.92, 0.91, 0.55, 1)
+			button.bg:SetBackdropColor(1, 1, 0.5, 1)
+			button.bg:SetBackdropBorderColor(0, 0, 0, 1)
 		else
-			button:SetBackdropBorderColor(0, 0, 0, 1)
+			button:SetBackdropBorderColor(0, 0, 0, 1)
+			button.bg:SetBackdropColor(0, 0, 0, 0)
+			button.bg:SetBackdropBorderColor(0, 0, 0, 0)
 		end
 	end

diff --git a/Interface/AddOns/SVUI/packages/unit/frames.lua b/Interface/AddOns/SVUI/packages/unit/frames.lua
index 3554e06..c21e255 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames.lua
@@ -475,7 +475,7 @@ CONSTRUCTORS["targettarget"] = function(self, unit)
     self.Debuffs = MOD:CreateDebuffs(self, key)
     self.RaidIcon = MOD:CreateRaidIcon(self)
     self.Range = { insideAlpha = 1, outsideAlpha = 1 }
-    self:SetPointToScale("BOTTOM", SV.Screen, "BOTTOM", 0, 192)
+    self:SetPointToScale("BOTTOM", SV.Screen, "BOTTOM", 0, 182)
     SV.Mentalo:Add(self, L["TargetTarget Frame"])

     self.MediaUpdate = MOD.RefreshUnitMedia
diff --git a/Interface/AddOns/SVUI/setup/installer.lua b/Interface/AddOns/SVUI/setup/installer.lua
index e19b3b2..0444153 100644
--- a/Interface/AddOns/SVUI/setup/installer.lua
+++ b/Interface/AddOns/SVUI/setup/installer.lua
@@ -161,7 +161,7 @@ local function UFMoveBottomQuadrant(toggle)
 		anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278182"
 		anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278122"
 		--anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0181"
-		anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0198"
+		anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0182"
 		anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432"
 		anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495182"
 	elseif toggle == "shift" then
@@ -170,7 +170,7 @@ local function UFMoveBottomQuadrant(toggle)
 		anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278210"
 		anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278150"
 		--anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0209"
-		anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0226"
+		anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0210"
 		anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432"
 		anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495210"
 	elseif toggle == "minimal" then
diff --git a/Interface/AddOns/SVUI_ChatOMatic/Loader.lua b/Interface/AddOns/SVUI_ChatOMatic/Loader.lua
index 5a600c7..ad2d404 100644
--- a/Interface/AddOns/SVUI_ChatOMatic/Loader.lua
+++ b/Interface/AddOns/SVUI_ChatOMatic/Loader.lua
@@ -28,10 +28,12 @@ local AddonName, AddonObject = ...
 assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")

 AddonObject.defaults = {
-    ["saveChats"] = false,
-    ["service"] = true,
-    ["autoAnswer"] = false,
-    ["prefix"] = true
+    ["general"] = {
+        ["saveChats"] = false,
+        ["service"] = true,
+        ["autoAnswer"] = false,
+        ["prefix"] = true
+    }
 }

 local PLUGIN = LibSuperVillain("Registry"):NewPlugin(AddonName, AddonObject, "ChatOMatic_Profile", nil, "ChatOMatic_Cache")
@@ -47,30 +49,30 @@ SV.Options.args.plugins.args.pluginOptions.args[Schema].args["saveChats"] = {
     order = 2,
     name = "Save Chat History",
     type = "toggle",
-    get = function(key) return PLUGIN.db[key[#key]] end,
-    set = function(key,value) PLUGIN.db[key[#key]] = value end
+    get = function(key) return PLUGIN.db.general[key[#key]] end,
+    set = function(key,value) PLUGIN.db.general[key[#key]] = value end
 }

 SV.Options.args.plugins.args.pluginOptions.args[Schema].args["service"] = {
     order = 3,
     name = "Answering Service",
     type = "toggle",
-    get = function(key) return PLUGIN.db[key[#key]] end,
-    set = function(key,value) PLUGIN.db[key[#key]] = value end
+    get = function(key) return PLUGIN.db.general[key[#key]] end,
+    set = function(key,value) PLUGIN.db.general[key[#key]] = value end
 }

 SV.Options.args.plugins.args.pluginOptions.args[Schema].args["autoAnswer"] = {
     order = 4,
     name = "Auto Answer",
     type = "toggle",
-    get = function(key) return PLUGIN.db[key[#key]] end,
-    set = function(key,value) PLUGIN.db[key[#key]] = value end
+    get = function(key) return PLUGIN.db.general[key[#key]] end,
+    set = function(key,value) PLUGIN.db.general[key[#key]] = value end
 }

 SV.Options.args.plugins.args.pluginOptions.args[Schema].args["prefix"] = {
     order = 5,
     name = "Prefix Messages",
     type = "toggle",
-    get = function(key) return PLUGIN.db[key[#key]] end,
-    set = function(key,value) PLUGIN.db[key[#key]] = value end
+    get = function(key) return PLUGIN.db.general[key[#key]] end,
+    set = function(key,value) PLUGIN.db.general[key[#key]] = value end
 }
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua
index df4bfdd..b2017d5 100644
--- a/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua
+++ b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua
@@ -35,19 +35,19 @@ EVENTS
 ##########################################################
 ]]--
 function PLUGIN:CHAT_MSG_WHISPER(event, ...)
-	if(SV.db.SVChat.enable and self.db.saveChats) then
+	if(SV.db.SVChat.enable and self.db.general.saveChats) then
 		self:SAVE_CHAT_HISTORY(event, ...)
 	end
-	if(self.db.service) then
+	if(self.db.general.service) then
 		self:AUTO_MSG_WHISPER(event, ...)
 	end
 end

 function PLUGIN:CHAT_MSG_BN_WHISPER(event, ...)
-	if(SV.db.SVChat.enable and self.db.saveChats) then
+	if(SV.db.SVChat.enable and self.db.general.saveChats) then
 		self:SAVE_CHAT_HISTORY(event, ...)
 	end
-	if(self.db.service and self.ServiceEnabled) then
+	if(self.db.general.service and self.ServiceEnabled) then
 		self:AUTO_MSG_BN_WHISPER(event, ...)
 	end
 end
@@ -57,11 +57,11 @@ LOAD AND CONSTRUCT
 ##########################################################
 ]]--
 function PLUGIN:Load()
-	if(SV.db.SVChat.enable and self.db.saveChats) then
+	if(SV.db.SVChat.enable and self.db.general.saveChats) then
 		self:EnableChatHistory()
 	end

-	if(self.db.service) then
+	if(self.db.general.service) then
 		self:EnableAnsweringService()
 	end

diff --git a/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc
index 99d2507..77bd7a0 100644
--- a/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc
+++ b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI |r|cffFFEF00Chat-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFVarious Chat Gadgets|r]
 ## SavedVariables: ChatOMatic_Data
diff --git a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
index 9a470d8..5daf398 100644
--- a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
+++ b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
@@ -446,7 +446,7 @@ LOCAL FUNCTIONS
 ##########################################################
 ]]--
 local function ServiceMessage(msg)
-    local msgFrom = PLUGIN.db.prefix == true and "Minion Answering Service" or "";
+    local msgFrom = PLUGIN.db.general.prefix == true and "Minion Answering Service" or "";
     print("|cffffcc1a" .. msgFrom .. ":|r", msg)
 end

@@ -694,7 +694,7 @@ do
 		if(not outbound) then
 			outbound = PhraseSearch(sInput, mapkey, data)
 		end
-		if(PLUGIN.db.prefix == true) then
+		if(PLUGIN.db.general.prefix == true) then
 			return ("%s's Answering Service: %s"):format(PlayersName, outbound)
 		else
 			return outbound
@@ -737,7 +737,7 @@ function PLUGIN:AddCaller(caller)
 			btn.Text:SetText(caller);
 			PhoneLines[caller].Line = x
 			call_answered = true
-			if self.db.autoAnswer == true then
+			if self.db.general.autoAnswer == true then
 				PhoneLines[caller].InUse = true;
 				btn:SetPanelColor("green");
 				self.Docklet.DockButton:SetPanelColor("green");
@@ -938,7 +938,7 @@ function PLUGIN:EnableAnsweringService()
 	--self.Docklet:Hide()

 	local strMsg
-	if self.db.autoAnswer == true then
+	if self.db.general.autoAnswer == true then
 		strMsg = "The Henchmen Operators Are Screening Your Calls.."
 	else
 		strMsg = "The Henchmen Operators Are Standing By.."
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
index 32ca44d..24d8ae4 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
+++ b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI |r|cffFFEF00Config-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFConfig Options|r]
 ## RequiredDeps: SVUI
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua
index 52ec7ff..4158cf2 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua
@@ -96,14 +96,8 @@ SV.Options.args.SVBag = {
 							set = function(a,b) MOD:ChangeDBVar(b,a[#a]) MOD:RefreshBagFrames("BankFrame") end,
 							disabled = function()return SV.db.SVBag.alignToChat end
 						},
-						sortInverted = {
-							order = 3,
-							type = "toggle",
-							name = L["Sort Inverted"],
-							desc = L["Direction the bag sorting will use to allocate the items."]
-						},
 						bagWidth = {
-							order = 4,
+							order = 3,
 							type = "range",
 							name = L["Panel Width (Bags)"],
 							desc = L["Adjust the width of the bag frame."],
@@ -114,7 +108,7 @@ SV.Options.args.SVBag = {
 							disabled = function()return SV.db.SVBag.alignToChat end
 						},
 						bankWidth = {
-							order = 5,
+							order = 4,
 							type = "range",
 							name = L["Panel Width (Bank)"],
 							desc = L["Adjust the width of the bank frame."],
@@ -125,7 +119,7 @@ SV.Options.args.SVBag = {
 							disabled = function() return SV.db.SVBag.alignToChat end
 						},
 						currencyFormat = {
-							order = 6,
+							order = 5,
 							type = "select",
 							name = L["Currency Format"],
 							desc = L["The display format of the currency icons that get displayed below the main bag. (You have to be watching a currency for this to display)"],
@@ -135,6 +129,12 @@ SV.Options.args.SVBag = {
 							},
 							set = function(a,b)MOD:ChangeDBVar(b,a[#a]) MOD:RefreshTokens() end
 						},
+						sortInverted = {
+							order = 6,
+							type = "toggle",
+							name = L["Sort Inverted"],
+							desc = L["Direction the bag sorting will use to allocate the items."]
+						},
 						bagTools = {
 							order = 7,
 							type = "toggle",
@@ -177,7 +177,6 @@ SV.Options.args.SVBag = {
 									order = 2,
 									type = "range",
 									name = L["X Offset"],
-									width = "full",
 									min = -600,
 									max = 600,
 									step = 1,
@@ -186,7 +185,6 @@ SV.Options.args.SVBag = {
 									order = 3,
 									type = "range",
 									name = L["Y Offset"],
-									width = "full",
 									min = -600,
 									max = 600,
 									step = 1,
@@ -212,7 +210,6 @@ SV.Options.args.SVBag = {
 									order = 2,
 									type = "range",
 									name = L["X Offset"],
-									width = "full",
 									min = -600,
 									max = 600,
 									step = 1,
@@ -221,7 +218,6 @@ SV.Options.args.SVBag = {
 									order = 3,
 									type = "range",
 									name = L["Y Offset"],
-									width = "full",
 									min = -600,
 									max = 600,
 									step = 1,
@@ -242,7 +238,7 @@ SV.Options.args.SVBag = {
 						enable = {
 							order = 1,
 							type = "toggle",
-							name = L["Enable"],
+							name = L["Bags Bar Enabled"],
 							desc = L["Enable/Disable the Bag-Bar."],
 							get = function() return SV.db.SVBag.bagBar.enable end,
 							set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bagBar"); SV:StaticPopup_Show("RL_CLIENT")end
@@ -259,8 +255,14 @@ SV.Options.args.SVBag = {
 							desc = L["Show/Hide bag bar backdrop"],
 							type = "toggle"
 						},
-						size = {
+						spacer = {
 							order = 4,
+							name = "",
+							type = "description",
+							width = "full",
+						},
+						size = {
+							order = 5,
 							type = "range",
 							name = L["Button Size"],
 							desc = L["Set the size of your bag buttons."],
@@ -269,7 +271,7 @@ SV.Options.args.SVBag = {
 							step = 1
 						},
 						spacing = {
-							order = 5,
+							order = 6,
 							type = "range",
 							name = L["Button Spacing"],
 							desc = L["The spacing between buttons."],
@@ -278,7 +280,7 @@ SV.Options.args.SVBag = {
 							step = 1
 						},
 						sortDirection = {
-							order = 6,
+							order = 7,
 							type = "select",
 							name = L["Sort Direction"],
 							desc = L["The direction that the bag frames will grow from the anchor."],
@@ -288,7 +290,7 @@ SV.Options.args.SVBag = {
 							}
 						},
 						showBy = {
-							order = 7,
+							order = 8,
 							type = "select",
 							name = L["Bar Direction"],
 							desc = L["The direction that the bag frames be (Horizontal or Vertical)."],
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua
index a180d91..b550031 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua
@@ -310,7 +310,6 @@ local function GenerateFontGroup()
 						min = 6,
 						max = 22,
 						step = 1,
-						width = 'full',
 					},
 				}
 	    	}
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua
index 45678ea..c785ede 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua
@@ -52,6 +52,22 @@ local textStringFormats = {
 	["curmax"] = "Current - Maximum",
 	["curmax-percent"] = "Current - Maximum | %",
 }
+local FRAME_MAP = {
+	["player"] = "SVUI_Player",
+	["target"] = "SVUI_Target",
+	["targettarget"] = "SVUI_TargetTarget",
+	["pet"] = "SVUI_Pet",
+	["pettarget"] = "SVUI_PetTarget",
+	["focus"] = "SVUI_Focus",
+	["focustarget"] = "SVUI_FocusTarget",
+	--["boss"] = "SVUI_Boss",
+	--["arena"] = "SVUI_Arena",
+	--["party"] = "SVUI_Party",
+	--["raid"] = "SVUI_Raid",
+	--["raidpet"] = "SVUI_Raidpet",
+	--["tank"] = "SVUI_Tank",
+	--["assist"] = "SVUI_Assist",
+};
 --[[
 ##########################################################
 SET PACKAGE OPTIONS
@@ -439,53 +455,21 @@ function ns:SetHealthConfigGroup(partyRaid, updateFunction, unitName, count)
 		end,
 		args = {
 			commonGroup = {
-				order = 2,
+				order = 1,
 				type = "group",
 				guiInline = true,
 				name = L["Base Settings"],
 				args = {
-					configureButton = {
-						order = 1,
-						width = "full",
-						name = L["Coloring"],
-						type = "execute",
-						func = function() ACD:SelectGroup(SV.NameID, "SVUnit", "common", "allColorsGroup", "healthGroup") end
-					},
-					classColor = {
-						order = 2,
-						type = "toggle",
-						name = L["Class Health"],
-						desc = L["Color health by classcolor or reaction."],
-					},
-					valueColor = {
-						order = 3,
-						type = "toggle",
-						name = L["Health By Value"],
-						desc = L["Color health by amount remaining."],
-					},
-					classBackdrop = {
-						order = 4,
-						type = "toggle",
-						name = L["Class Backdrop"],
-						desc = L["Color the health backdrop by class or reaction."],
-					},
-					reversed = {
-						type = "toggle",
-						order = 5,
-						name = L["Reverse Fill"],
-						desc = L["Invert this bars fill direction"]
-					},
 					position = {
 						type = "select",
-						order = 6,
+						order = 1,
 						name = L["Text Position"],
 						desc = L["Set the anchor for this bars value text"],
 						values = SV.PointIndexes
 					},
 					xOffset = {
-						order = 7,
+						order = 2,
 						type = "range",
-						width = "full",
 						name = L["Text xOffset"],
 						desc = L["Offset position for text."],
 						min = -300,
@@ -493,19 +477,30 @@ function ns:SetHealthConfigGroup(partyRaid, updateFunction, unitName, count)
 						step = 1
 					},
 					yOffset = {
-						order = 8,
+						order = 3,
 						type = "range",
-						width = "full",
 						name = L["Text yOffset"],
 						desc = L["Offset position for text."],
 						min = -300,
 						max = 300,
 						step = 1
 					},
+					spacer1 = {
+						order = 4,
+						name = "",
+						type = "description",
+						width = "full",
+					},
+					reversed = {
+						type = "toggle",
+						order = 5,
+						name = L["Reverse Fill"],
+						desc = L["Invert this bars fill direction"]
+					},
 				}
 			},
 			formatGroup = {
-				order = 100,
+				order = 2,
 				type = "group",
 				guiInline = true,
 				name = L["Text Settings"],
@@ -540,19 +535,52 @@ function ns:SetHealthConfigGroup(partyRaid, updateFunction, unitName, count)
 						values = textStringFormats,
 					}
 				}
+			},
+			colorGroup = {
+				order = 3,
+				type = "group",
+				guiInline = true,
+				name = L["Color Settings"],
+				args = {
+					classColor = {
+						order = 1,
+						type = "toggle",
+						name = L["Class Health"],
+						desc = L["Color health by classcolor or reaction."],
+					},
+					valueColor = {
+						order = 2,
+						type = "toggle",
+						name = L["Health By Value"],
+						desc = L["Color health by amount remaining."],
+					},
+					classBackdrop = {
+						order = 3,
+						type = "toggle",
+						name = L["Class Backdrop"],
+						desc = L["Color the health backdrop by class or reaction."],
+					},
+					configureButton = {
+						order = 4,
+						name = L["Coloring"],
+						type = "execute",
+						width = 'full',
+						func = function() ACD:SelectGroup(SV.NameID, "SVUnit", "common", "allColorsGroup", "healthGroup") end
+					},
+				}
 			}
 		}
 	}
 	if partyRaid then
-		healthOptions.args.frequentUpdates = {
+		healthOptions.args.commonGroup.args.frequentUpdates = {
 			type = "toggle",
-			order = 1,
+			order = 6,
 			name = L["Frequent Updates"],
 			desc = L["Rapidly update the health, uses more memory and cpu. Only recommended for healing."]
 		}
-		healthOptions.args.orientation = {
+		healthOptions.args.commonGroup.args.orientation = {
 			type = "select",
-			order = 2,
+			order = 7,
 			name = L["Orientation"],
 			desc = L["Direction the health bar moves when gaining/losing health."],
 			values = {["HORIZONTAL"] = L["Horizontal"], ["VERTICAL"] = L["Vertical"]}
@@ -574,46 +602,23 @@ function ns:SetPowerConfigGroup(playerTarget, updateFunction, unitName, count)
 			updateFunction(MOD, unitName, count)
 		end,
 		args = {
-			enable = {type = "toggle", order = 1, name = L["Enable"]},
+			enable = {type = "toggle", order = 1, name = L["Power Bar Enabled"]},
 			commonGroup = {
 				order = 2,
 				type = "group",
 				guiInline = true,
 				name = L["Base Settings"],
-				args = {
-					configureButton = {
-						order = 1,
-						name = L["Coloring"],
-						width = "full",
-						type = "execute",
-						func = function()ACD:SelectGroup(SV.NameID, "SVUnit", "common", "allColorsGroup", "powerGroup")end
-					},
-					classColor = {
-						order = 2,
-						type = "toggle",
-						name = L["Class Power"],
-						desc = L["Color power by classcolor or reaction."],
-					},
+				args = {
 					position = {
 						type = "select",
-						order = 3,
+						order = 1,
 						name = L["Text Position"],
 						desc = L["Set the anchor for this bars value text"],
 						values = SV.PointIndexes
-					},
-					height = {
-						type = "range",
-						name = L["Height"],
-						order = 4,
-						width = "full",
-						min = 3,
-						max = 50,
-						step = 1
-					},
+					},
 					xOffset = {
-						order = 5,
+						order = 2,
 						type = "range",
-						width = "full",
 						name = L["Text xOffset"],
 						desc = L["Offset position for text."],
 						min = -300,
@@ -621,19 +626,26 @@ function ns:SetPowerConfigGroup(playerTarget, updateFunction, unitName, count)
 						step = 1
 					},
 					yOffset = {
-						order = 6,
+						order = 3,
 						type = "range",
-						width = "full",
 						name = L["Text yOffset"],
 						desc = L["Offset position for text."],
 						min = -300,
 						max = 300,
 						step = 1
-					},
+					},
+					height = {
+						type = "range",
+						name = L["Height"],
+						order = 4,
+						min = 3,
+						max = 50,
+						step = 1
+					},
 				}
 			},
 			formatGroup = {
-				order = 100,
+				order = 3,
 				type = "group",
 				guiInline = true,
 				name = L["Text Settings"],
@@ -684,25 +696,31 @@ function ns:SetPowerConfigGroup(playerTarget, updateFunction, unitName, count)
 						values = textStringFormats,
 					}
 				}
+			},
+			colorGroup = {
+				order = 4,
+				type = "group",
+				guiInline = true,
+				name = L["Color Settings"],
+				args = {
+					classColor = {
+						order = 1,
+						type = "toggle",
+						name = L["Class Power"],
+						desc = L["Color power by classcolor or reaction."],
+					},
+					configureButton = {
+						order = 2,
+						name = L["Coloring"],
+						type = "execute",
+						width = 'full',
+						func = function() ACD:SelectGroup(SV.NameID, "SVUnit", "common", "allColorsGroup", "powerGroup") end
+					},
+				}
 			}
 		}
 	}

-	if(playerTarget) then
-		powerOptions.args.formatGroup.args.attachTextToPower = {
-			type = "toggle",
-			order = 2,
-			name = L["Attach Text to Power"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["power"].attachTextToPower
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, "attachTextToPower", unitName, "power");
-				updateFunction(MOD, unitName, count)
-			end,
-		}
-	end
-
 	return powerOptions
 end

@@ -720,22 +738,21 @@ function ns:SetNameConfigGroup(updateFunction, unitName, count)
 		end,
 		args = {
 			commonGroup = {
-				order = 2,
+				order = 1,
 				type = "group",
 				guiInline = true,
 				name = L["Base Settings"],
 				args = {
 					position = {
 						type = "select",
-						order = 3,
+						order = 1,
 						name = L["Text Position"],
 						desc = L["Set the anchor for this units name text"],
 						values = SV.PointIndexes
 					},
 					xOffset = {
-						order = 6,
+						order = 2,
 						type = "range",
-						width = "full",
 						name = L["Text xOffset"],
 						desc = L["Offset position for text."],
 						min = -300,
@@ -743,9 +760,8 @@ function ns:SetNameConfigGroup(updateFunction, unitName, count)
 						step = 1
 					},
 					yOffset = {
-						order = 7,
-						type = "range",
-						width = "full",
+						order = 3,
+						type = "range",
 						name = L["Text yOffset"],
 						desc = L["Offset position for text."],
 						min = -300,
@@ -784,7 +800,6 @@ function ns:SetNameConfigGroup(updateFunction, unitName, count)
 						name = L["Font Size"],
 						desc = L["Set the font size."],
 						type = "range",
-						width = "full",
 						min = 6,
 						max = 22,
 						step = 1
@@ -829,7 +844,6 @@ function ns:SetNameConfigGroup(updateFunction, unitName, count)
 						name = L["Name Length"],
 						desc = L["TEXT_FORMAT_DESC"],
 						type = "range",
-						width = "full",
 						get = function() return SV.db.SVUnit[unitName]["formatting"].name_length end,
 						min = 1,
 						max = 30,
@@ -842,14 +856,7 @@ function ns:SetNameConfigGroup(updateFunction, unitName, count)
 	return k
 end

-local function getAvailablePortraitConfig(unit)
-	local db = SV.db.SVUnit[unit].portrait;
-	if db.overlay then
-		return {["3D"] = L["3D"]}
-	else
-		return {["2D"] = L["2D"], ["3D"] = L["3D"]}
-	end
-end
+local portraitStyles = {["2D"] = L["2D"], ["3D"] = L["3D"], ["3DOVERLAY"] = L["3D Overlay"]};

 function ns:SetPortraitConfigGroup(updateFunction, unitName, count)
 	local k = {
@@ -867,7 +874,7 @@ function ns:SetPortraitConfigGroup(updateFunction, unitName, count)
 			enable = {
 				type = "toggle",
 				order = 1,
-				name = L["Enable"]
+				name = L["Unit Portrait Enabled"]
 			},
 			styleGroup = {
 				order = 2,
@@ -880,24 +887,16 @@ function ns:SetPortraitConfigGroup(updateFunction, unitName, count)
 						type = "select",
 						name = L["Style"],
 						desc = L["Select the display method of the portrait. NOTE: if overlay is set then only 3D will be available"],
-						values = function() return getAvailablePortraitConfig(unitName) end
-					},
-					overlay = {
-						order = 2,
-						type = "toggle",
-						name = L["Overlay"],
-						desc = L["Overlay the healthbar"],
-						disabled = function() return SV.db.SVUnit[unitName]["portrait"].style == "2D" end
+						values = portraitStyles
 					},
 					width = {
-						order = 3,
+						order = 2,
 						type = "range",
-						width = "full",
 						name = L["Width"],
 						min = 15,
 						max = 150,
 						step = 1,
-						disabled = function() return SV.db.SVUnit[unitName]["portrait"].overlay == true end
+						disabled = function() return SV.db.SVUnit[unitName]["portrait"].style == "3DOVERLAY" end
 					}
 				}
 			},
@@ -964,10 +963,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -988,10 +988,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -1012,10 +1013,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -1036,10 +1038,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -1060,10 +1063,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -1084,10 +1088,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -1108,10 +1113,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -1132,10 +1138,11 @@ function ns:SetIconConfigGroup(updateFunction, unitName, count)
 			end,
 			args = {
 				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				spacer = { order = 3, name = "", type = "description", width = "full"},
+				size = {type = "range", name = L["Size"], order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], min = -300, max = 300, step = 1}
 			}
 		}
 		grouporder = grouporder + 1
@@ -1157,10 +1164,10 @@ local BoolFilters = {
 local function setAuraFilteringOptions(configTable, unitName, auraType, updateFunction, isPlayer)
 	if BoolFilters[unitName] then
 		configTable.filterGroup = {
-			order = 10,
+			order = 18,
 			guiInline = true,
 			type = "group",
-			name = L["Filter Options"],
+			name = L["Aura filtering..."],
 			args = {
 				filterWhiteList = {
 					order = 1,
@@ -1215,223 +1222,179 @@ local function setAuraFilteringOptions(configTable, unitName, auraType, updateFu
 					set = function(key, value) SV.db.SVUnit[unitName][auraType].filterRaid = value; updateFunction(MOD, unitName) end,
 					disabled = function() return SV.db.SVUnit[unitName][auraType].filterWhiteList end,
 				},
-				useFilter = {
-					order = 6,
-					type = "select",
-					name = L["Custom Filter"],
-					desc = L["Select a custom filter to include."],
-					values = function()
-						filterList = {}
-						filterList[""] = NONE;
-						for n in pairs(SV.filters.Custom) do
-							filterList[n] = n
-						end
-						return filterList
-					end,
-					get = function(key) return SV.db.SVUnit[unitName][auraType].useFilter end,
-					set = function(key, value) SV.db.SVUnit[unitName][auraType].useFilter = value; updateFunction(MOD, unitName) end,
-					disabled = function() return not SV.db.SVUnit.arena.pvp.enable end,
-				}
 			}
 		}
 	else
-		configTable.filterGroup = {
-			order = 10,
+		configTable.friendlyGroup = {
+			order = 18,
 			guiInline = true,
 			type = "group",
-			name = L["Filter Options"],
+			name = L["When the unit is friendly..."],
 			args = {
-				friendlyGroup = {
+				filterAll = {
 					order = 1,
-					guiInline = true,
-					type = "group",
-					name = L["When the unit is friendly..."],
-					args = {
-						filterAll = {
-							order = 1,
-							type = "toggle",
-							name = L["Hide All"],
-							desc = L["Don't display any " .. auraType .. "."],
-							get = function(key) return SV.db.SVUnit[unitName][auraType].filterAll.friendly end,
-							set = function(key, value)
-								SV.db.SVUnit[unitName][auraType].filterAll.friendly = value;
-								if(value) then
-									SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly = false;
-									SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = false;
-									SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = false;
-									SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = false;
-									if(SV.db.SVUnit[unitName][auraType].filterRaid) then
-										SV.db.SVUnit[unitName][auraType].filterRaid.friendly = false;
-									end
-								end
-								updateFunction(MOD, unitName)
-							end,
-						},
-						filterWhiteList = {
-							order = 2,
-							type = "toggle",
-							name = L["Only White Listed"],
-							desc = L["Only show auras that are on the whitelist."],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly end,
-							set = function(key, value)SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly = value; updateFunction(MOD, unitName) end,
-							set = function(key, value)
-								SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly = value;
-								if(value) then
-									SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = false;
-									SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = false;
-									SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = false;
-									if(SV.db.SVUnit[unitName][auraType].filterRaid) then
-										SV.db.SVUnit[unitName][auraType].filterRaid.friendly = false;
-									end
-								end
-								updateFunction(MOD, unitName)
-							end,
-							disabled = function()
-								return SV.db.SVUnit[unitName][auraType].filterAll.friendly
-							end,
-						},
-						filterPlayer = {
-							order = 3,
-							type = "toggle",
-							name = L["From You"],
-							desc = L["Only show auras that were cast by you."],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterPlayer.friendly end,
-							set = function(key, value)SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = value; updateFunction(MOD, unitName) end,
-							disabled = function()
-								return (SV.db.SVUnit[unitName][auraType].filterAll.friendly or SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly)
-							end,
-						},
-						filterDispellable = {
-							order = 4,
-							type = "toggle",
-							name = L["You Can Remove"],
-							desc = L["Only show auras that can be removed by you. (example: Purge, Dispel)"],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterDispellable.friendly end,
-							set = function(key, value)SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = value; updateFunction(MOD, unitName) end,
-							disabled = function()
-								return (SV.db.SVUnit[unitName][auraType].filterAll.friendly or SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly)
-							end,
-						},
-						filterInfinite = {
-							order = 5,
-							type = "toggle",
-							name = L["No Duration"],
-							desc = L["Don't display auras that have no duration."],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterInfinite.friendly end,
-							set = function(key, value)SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = value; updateFunction(MOD, unitName) end,
-							disabled = function()
-								return (SV.db.SVUnit[unitName][auraType].filterAll.friendly or SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly)
-							end,
-						},
-					},
+					type = "toggle",
+					name = L["Hide All"],
+					desc = L["Don't display any " .. auraType .. "."],
+					get = function(key) return SV.db.SVUnit[unitName][auraType].filterAll.friendly end,
+					set = function(key, value)
+						SV.db.SVUnit[unitName][auraType].filterAll.friendly = value;
+						if(value) then
+							SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly = false;
+							SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = false;
+							SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = false;
+							SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = false;
+							if(SV.db.SVUnit[unitName][auraType].filterRaid) then
+								SV.db.SVUnit[unitName][auraType].filterRaid.friendly = false;
+							end
+						end
+						updateFunction(MOD, unitName)
+					end,
 				},
-				enemyGroup = {
+				filterWhiteList = {
 					order = 2,
-					guiInline = true,
-					type = "group",
-					name = L["When the unit is hostile..."],
-					args = {
-						filterAll = {
-							order = 1,
-							type = "toggle",
-							name = L["Hide All"],
-							desc = L["Don't display any " .. auraType .. "."],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterAll.enemy end,
-							set = function(key, value)
-								SV.db.SVUnit[unitName][auraType].filterAll.enemy = value;
-								if(value) then
-									SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy = false;
-									SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = false;
-									SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = false;
-									SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = false;
-									if(SV.db.SVUnit[unitName][auraType].filterRaid) then
-										SV.db.SVUnit[unitName][auraType].filterRaid.enemy = false;
-									end
-								end
-								updateFunction(MOD, unitName)
-							end,
-						},
-						filterWhiteList = {
-							order = 2,
-							type = "toggle",
-							name = L["Only White Listed"],
-							desc = L["Only show auras that are on the whitelist."],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterPlayer.enemy end,
-							set = function(key, value)
-								SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy = value;
-								if(value) then
-									SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = false;
-									SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = false;
-									SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = false;
-									if(SV.db.SVUnit[unitName][auraType].filterRaid) then
-										SV.db.SVUnit[unitName][auraType].filterRaid.enemy = false;
-									end
-								end
-								updateFunction(MOD, unitName)
-							end,
-							disabled = function()
-								return SV.db.SVUnit[unitName][auraType].filterAll.enemy
-							end,
-						},
-						filterPlayer = {
-							order = 3,
-							type = "toggle",
-							name = L["From You"],
-							desc = L["Only show auras that were cast by you."],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterPlayer.enemy end,
-							set = function(key, value)SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = value; updateFunction(MOD, unitName) end,
-							disabled = function()
-								return (SV.db.SVUnit[unitName][auraType].filterAll.enemy or SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy)
-							end,
-						},
-						filterDispellable = {
-							order = 4,
-							type = "toggle",
-							name = L["You Can Remove"],
-							desc = L["Only show auras that can be removed by you. (example: Purge, Dispel)"],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterDispellable.enemy end,
-							set = function(key, value)SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = value; updateFunction(MOD, unitName) end,
-							disabled = function()
-								return (SV.db.SVUnit[unitName][auraType].filterAll.enemy or SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy)
-							end,
-						},
-						filterInfinite = {
-							order = 5,
-							type = "toggle",
-							name = L["No Duration"],
-							desc = L["Don't display auras that have no duration."],
-							get = function(key)return SV.db.SVUnit[unitName][auraType].filterInfinite.enemy end,
-							set = function(key, value)SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = value; updateFunction(MOD, unitName) end,
-							disabled = function()
-								return (SV.db.SVUnit[unitName][auraType].filterAll.enemy or SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy)
-							end,
-						},
-					},
+					type = "toggle",
+					name = L["Only White Listed"],
+					desc = L["Only show auras that are on the whitelist."],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly end,
+					set = function(key, value)SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly = value; updateFunction(MOD, unitName) end,
+					set = function(key, value)
+						SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly = value;
+						if(value) then
+							SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = false;
+							SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = false;
+							SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = false;
+							if(SV.db.SVUnit[unitName][auraType].filterRaid) then
+								SV.db.SVUnit[unitName][auraType].filterRaid.friendly = false;
+							end
+						end
+						updateFunction(MOD, unitName)
+					end,
+					disabled = function()
+						return SV.db.SVUnit[unitName][auraType].filterAll.friendly
+					end,
+				},
+				filterPlayer = {
+					order = 3,
+					type = "toggle",
+					name = L["From You"],
+					desc = L["Only show auras that were cast by you."],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterPlayer.friendly end,
+					set = function(key, value)SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = value; updateFunction(MOD, unitName) end,
+					disabled = function()
+						return (SV.db.SVUnit[unitName][auraType].filterAll.friendly or SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly)
+					end,
+				},
+				filterDispellable = {
+					order = 4,
+					type = "toggle",
+					name = L["You Can Remove"],
+					desc = L["Only show auras that can be removed by you. (example: Purge, Dispel)"],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterDispellable.friendly end,
+					set = function(key, value)SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = value; updateFunction(MOD, unitName) end,
+					disabled = function()
+						return (SV.db.SVUnit[unitName][auraType].filterAll.friendly or SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly)
+					end,
+				},
+				filterInfinite = {
+					order = 5,
+					type = "toggle",
+					name = L["No Duration"],
+					desc = L["Don't display auras that have no duration."],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterInfinite.friendly end,
+					set = function(key, value)SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = value; updateFunction(MOD, unitName) end,
+					disabled = function()
+						return (SV.db.SVUnit[unitName][auraType].filterAll.friendly or SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly)
+					end,
+				},
+			},
+		}
+		configTable.enemyGroup = {
+			order = 19,
+			guiInline = true,
+			type = "group",
+			name = L["When the unit is hostile..."],
+			args = {
+				filterAll = {
+					order = 1,
+					type = "toggle",
+					name = L["Hide All"],
+					desc = L["Don't display any " .. auraType .. "."],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterAll.enemy end,
+					set = function(key, value)
+						SV.db.SVUnit[unitName][auraType].filterAll.enemy = value;
+						if(value) then
+							SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy = false;
+							SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = false;
+							SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = false;
+							SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = false;
+							if(SV.db.SVUnit[unitName][auraType].filterRaid) then
+								SV.db.SVUnit[unitName][auraType].filterRaid.enemy = false;
+							end
+						end
+						updateFunction(MOD, unitName)
+					end,
+				},
+				filterWhiteList = {
+					order = 2,
+					type = "toggle",
+					name = L["Only White Listed"],
+					desc = L["Only show auras that are on the whitelist."],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterPlayer.enemy end,
+					set = function(key, value)
+						SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy = value;
+						if(value) then
+							SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = false;
+							SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = false;
+							SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = false;
+							if(SV.db.SVUnit[unitName][auraType].filterRaid) then
+								SV.db.SVUnit[unitName][auraType].filterRaid.enemy = false;
+							end
+						end
+						updateFunction(MOD, unitName)
+					end,
+					disabled = function()
+						return SV.db.SVUnit[unitName][auraType].filterAll.enemy
+					end,
 				},
-				useFilter = {
+				filterPlayer = {
 					order = 3,
-					type = "select",
-					name = L["Custom Filter"],
-					desc = L["Select a custom filter to include."],
-					values = function()
-						filterList = {}
-						filterList[""] = NONE;
-						for n in pairs(SV.filters.Custom) do
-							filterList[n] = n
-						end
-						return filterList
+					type = "toggle",
+					name = L["From You"],
+					desc = L["Only show auras that were cast by you."],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterPlayer.enemy end,
+					set = function(key, value)SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = value; updateFunction(MOD, unitName) end,
+					disabled = function()
+						return (SV.db.SVUnit[unitName][auraType].filterAll.enemy or SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy)
 					end,
-					get = function(key) return SV.db.SVUnit[unitName][auraType].useFilter end,
-					set = function(key, value) SV.db.SVUnit[unitName][auraType].useFilter = value; updateFunction(MOD, unitName) end,
+				},
+				filterDispellable = {
+					order = 4,
+					type = "toggle",
+					name = L["You Can Remove"],
+					desc = L["Only show auras that can be removed by you. (example: Purge, Dispel)"],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterDispellable.enemy end,
+					set = function(key, value)SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = value; updateFunction(MOD, unitName) end,
 					disabled = function()
 						return (SV.db.SVUnit[unitName][auraType].filterAll.enemy or SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy)
 					end,
-				}
-			}
+				},
+				filterInfinite = {
+					order = 5,
+					type = "toggle",
+					name = L["No Duration"],
+					desc = L["Don't display auras that have no duration."],
+					get = function(key)return SV.db.SVUnit[unitName][auraType].filterInfinite.enemy end,
+					set = function(key, value)SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = value; updateFunction(MOD, unitName) end,
+					disabled = function()
+						return (SV.db.SVUnit[unitName][auraType].filterAll.enemy or SV.db.SVUnit[unitName][auraType].filterWhiteList.enemy)
+					end,
+				},
+			},
 		}

 		if(SV.db.SVUnit[unitName][auraType].filterRaid) then
-			configTable.filterGroup.args.friendlyGroup.args.filterRaid = {
+			configTable.friendlyGroup.args.filterRaid = {
 				order = 6,
 				type = "toggle",
 				name = L["Consolidated Buffs"],
@@ -1442,7 +1405,7 @@ local function setAuraFilteringOptions(configTable, unitName, auraType, updateFu
 					return (SV.db.SVUnit[unitName][auraType].filterAll.friendly or SV.db.SVUnit[unitName][auraType].filterWhiteList.friendly)
 				end,
 			};
-			configTable.filterGroup.args.enemyGroup.args.filterRaid = {
+			configTable.enemyGroup.args.filterRaid = {
 				order = 6,
 				type = "toggle",
 				name = L["Consolidated Buffs"],
@@ -1460,6 +1423,14 @@ end
 function ns:SetAuraConfigGroup(isPlayer, auraType, unused, updateFunction, unitName, count)
 	local groupOrder = auraType == "buffs" and 600 or 700
 	local groupName = auraType == "buffs" and L["Buffs"] or L["Debuffs"]
+	local attachToValue, attachToName;
+	if auraType == "buffs"then
+		attachToValue = "DEBUFFS"
+		attachToName = L["Debuffs"]
+	else
+		attachToValue = "BUFFS"
+		attachToName = L["Buffs"]
+	end

 	local configTable = {
 		order = groupOrder,
@@ -1475,110 +1446,168 @@ function ns:SetAuraConfigGroup(isPlayer, auraType, unused, updateFunction, unitN
 		args = {
 			enable = {
 				type = "toggle",
-				order = 1,
-				name = L["Enable"]
-			},
-			commonGroup = {
 				order = 2,
-				guiInline = true,
-				type = "group",
-				name = L["Base Settings"],
-				args = {
-					verticalGrowth = {
-						type = "select",
-						order = 1,
-						name = L["Vertical Growth"],
-						desc = L["The vertical direction that the auras will position themselves"],
-						values = {UP = "UP", DOWN = "DOWN"}
-					},
-					horizontalGrowth = {
-						type = "select",
-						order = 2,
-						name = L["Horizontal Growth"],
-						desc = L["The horizontal direction that the auras will position themselves"],
-						values = {LEFT = "LEFT", RIGHT = "RIGHT"}
-					},
-					perrow = {
-						type = "range",
-						order = 3,
-						width = "full",
-						name = L["Per Row"],
-						min = 1,
-						max = 20,
-						step = 1
-					},
-					numrows = {
-						type = "range",
-						order = 4,
-						width = "full",
-						name = L["Num Rows"],
-						min = 1,
-						max = 4,
-						step = 1
-					},
-					sizeOverride = {
-						type = "range",
-						order = 5,
-						width = "full",
-						name = L["Size Override"],
-						desc = L["If not set to 0 then override the size of the aura icon to this."],
-						min = 0,
-						max = 60,
-						step = 1
-					},
-				}
+				name = L["Enable "..groupName]
 			},
-			positionGroup = {
+			attachTo1 = {
+				type = "toggle",
 				order = 3,
-				guiInline = true,
-				type = "group",
-				name = L["Position Settings"],
-				args = {
-					xOffset = {
-						order = 1,
-						type = "range",
-						name = L["xOffset"],
-						width = "full",
-						min = -60,
-						max = 60,
-						step = 1
-					},
-					yOffset = {
-						order = 2,
-						type = "range",
-						name = L["yOffset"],
-						width = "full",
-						min = -60,
-						max = 60,
-						step = 1
-					},
-					anchorPoint = {
-						type = "select",
-						order = 3,
-						name = L["Anchor Point"],
-						desc = L["What point to anchor to the frame you set to attach to."],
-						values = SV.PointIndexes
-					},
-				}
-			}
+				name = L["Attach To"] .. " " .. L["Frame"],
+				get = function(key)
+					return SV.db.SVUnit[unitName][auraType]["attachTo"] == "FRAME"
+				end,
+				set = function(key, value)
+					if(not value) then
+						MOD:ChangeDBVar(attachToValue, "attachTo", unitName, auraType)
+					else
+						MOD:ChangeDBVar("FRAME", "attachTo", unitName, auraType)
+					end
+					updateFunction(MOD, unitName, count)
+				end,
+			},
+			attachTo2 = {
+				type = "toggle",
+				order = 4,
+				name = L["Attach To"] .. " " .. attachToName,
+				get = function(key)
+					return SV.db.SVUnit[unitName][auraType]["attachTo"] == attachToValue
+				end,
+				set = function(key, value)
+					if(not value) then
+						MOD:ChangeDBVar("FRAME", "attachTo", unitName, auraType)
+					else
+						MOD:ChangeDBVar(attachToValue, "attachTo", unitName, auraType)
+					end
+					updateFunction(MOD, unitName, count)
+				end,
+			},
+			spacer1 = {
+				order = 5,
+				name = "",
+				type = "description",
+				width = "full",
+			},
+			anchorPoint = {
+				type = "select",
+				order = 6,
+				name = L["Anchor Point"],
+				desc = L["What point to anchor to the frame you set to attach to."],
+				values = SV.PointIndexes
+			},
+			verticalGrowth = {
+				type = "select",
+				order = 7,
+				name = L["Vertical Growth"],
+				desc = L["The vertical direction that the auras will position themselves"],
+				values = {UP = "UP", DOWN = "DOWN"}
+			},
+			horizontalGrowth = {
+				type = "select",
+				order = 8,
+				name = L["Horizontal Growth"],
+				desc = L["The horizontal direction that the auras will position themselves"],
+				values = {LEFT = "LEFT", RIGHT = "RIGHT"}
+			},
+			spacer2 = {
+				order = 9,
+				name = "",
+				type = "description",
+				width = "full",
+			},
+			perrow = {
+				type = "range",
+				order = 10,
+				name = L["Per Row"],
+				min = 1,
+				max = 20,
+				step = 1
+			},
+			numrows = {
+				type = "range",
+				order = 11,
+				name = L["Num Rows"],
+				min = 1,
+				max = 4,
+				step = 1
+			},
+			sizeOverride = {
+				type = "range",
+				order = 12,
+				name = L["Size Override"],
+				desc = L["If not set to 0 then override the size of the aura icon to this."],
+				min = 0,
+				max = 60,
+				step = 1
+			},
+			spacer3 = {
+				order = 13,
+				name = "",
+				type = "description",
+				width = "full",
+			},
+			xOffset = {
+				order = 14,
+				type = "range",
+				name = L["xOffset"],
+				min = -60,
+				max = 60,
+				step = 1
+			},
+			yOffset = {
+				order = 15,
+				type = "range",
+				name = L["yOffset"],
+				width = "fill",
+				min = -60,
+				max = 60,
+				step = 1
+			},
+			useFilter = {
+				order = 16,
+				type = "select",
+				name = L["Custom Filter"],
+				desc = L["Select a custom filter to include."],
+				values = function()
+					filterList = {}
+					filterList[""] = NONE;
+					for n in pairs(SV.filters.Custom) do
+						filterList[n] = n
+					end
+					return filterList
+				end,
+				get = function(key) return SV.db.SVUnit[unitName][auraType].useFilter end,
+				set = function(key, value) SV.db.SVUnit[unitName][auraType].useFilter = value; updateFunction(MOD, unitName) end,
+			},
+			spacer4 = {
+				order = 17,
+				name = "",
+				type = "description",
+				width = "full",
+			},
 		}
 	}

-	if auraType == "buffs"then
-		configTable.args.positionGroup.args.attachTo = {
-			type = "select",
-			order = 7,
-			name = L["Attach To"],
-			desc = L["What to attach the buff anchor frame to."],
-			values = {["FRAME"] = L["Frame"], ["DEBUFFS"] = L["Debuffs"]}
+	local unitGlobalName = FRAME_MAP[unitName];
+	if(unitGlobalName) then
+		configTable.args.showAuras = {
+			order = 0,
+			type = "execute",
+			name = L["Show Auras"],
+			func = function()
+				local unitframe = _G[unitGlobalName];
+				if unitframe.forceShowAuras then
+					unitframe.forceShowAuras = nil
+				else
+					unitframe.forceShowAuras = true
+				end
+				updateFunction(MOD, unitName, count)
+			end
 		}
-	else
-		configTable.args.positionGroup.args.attachTo = {
-			type = "select",
-			order = 7,
-			name = L["Attach To"],
-			desc = L["What to attach the buff anchor frame to."],
-			values = {["FRAME"] = L["Frame"], ["BUFFS"] = L["Buffs"]}
+		configTable.args.showAurasSpacer = {
+			order = 1,
+			name = "",
+			type = "description",
+			width = "full",
 		}
 	end

@@ -1604,7 +1633,7 @@ function ns:SetAurabarConfigGroup(isPlayer, updateFunction, unitName)
 			enable = {
 				type = "toggle",
 				order = 1,
-				name = L["Enable"]
+				name = L["Aura Bars Enabled"]
 			},
 			commonGroup = {
 				order = 2,
@@ -1621,31 +1650,29 @@ function ns:SetAurabarConfigGroup(isPlayer, updateFunction, unitName)
 						order = 2,
 						name = L["Coloring (Specific)"],
 						type = "execute", func = function() ns:SetToFilterConfig("AuraBars") end
-					},
-					anchorPoint = {
-						type = "select",
+					},
+					spacer = {
 						order = 3,
-						name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {["ABOVE"] = L["Above"], ["BELOW"] = L["Below"]}
-					},
+						name = "",
+						type = "description",
+						width = "full",
+					},
 					attachTo = {
 						type = "select",
 						order = 4,
 						name = L["Attach To"], desc = L["The object you want to attach to."],
 						values = {["FRAME"] = L["Frame"], ["DEBUFFS"] = L["Debuffs"], ["BUFFS"] = L["Buffs"]}
-					},
+					},
+					anchorPoint = {
+						type = "select",
+						order = 5,
+						name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {["ABOVE"] = L["Above"], ["BELOW"] = L["Below"]}
+					},
 					height = {
 						type = "range",
-						order = 5,
-						name = L["Height"], min = 6, max = 40, step = 1
-					},
-					statusbar = {
-						type = "select",
-						dialogControl = "LSM30_Statusbar",
 						order = 6,
-						name = L["StatusBar Texture"],
-						desc = L["Aurabar texture."],
-						values = AceGUIWidgetLSMlists.statusbar
-					}
+						name = L["Height"], min = 6, max = 40, step = 1
+					},
 				}
 			},
 			filterGroup = {
@@ -1773,7 +1800,6 @@ SV.Options.args.SVUnit = {
 									min = 0,
 									max = 1,
 									step = 0.01,
-									width = "full",
 									set = function(key, value)
 										MOD:ChangeDBVar(value, key[#key]);
 									end
@@ -1786,7 +1812,6 @@ SV.Options.args.SVUnit = {
 									min = 0,
 									max = 1,
 									step = 0.01,
-									width = "full",
 									set = function(key, value)
 										MOD:ChangeDBVar(value, key[#key]);
 									end
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua
index ba5c2a3..4fc8e22 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua
@@ -126,7 +126,7 @@ SV.Options.args.SVUnit.args.commonGroup.args.party = {
 									set = function(key, value)
 										MOD:ChangeDBVar(value, key[#key], "party", "grid");
 										MOD:SetGroupFrame("party", true);
-										SV.Options.args.SVUnit.args.commonGroup.args.party.args.tabGroups.args.general.args.layoutGroup.args.sizing = ns:SetSizeConfigGroup(value, "party");
+										SV.Options.args.SVUnit.args.commonGroup.args.party.args.general.args.layoutGroup.args.sizing = ns:SetSizeConfigGroup(value, "party");
 									end,
 								},
 								invertGroupingOrder = {
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua
index 31f49f9..dceadb9 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua
@@ -39,7 +39,7 @@ local _, ns = ...
 ##################################################################################################
 ##################################################################################################
 ]]
-SV.Options.args.SVUnit.args.commonGroup.args.player={
+SV.Options.args.SVUnit.args.commonGroup.args.player = {
 	name = L['Player'],
 	type = 'group',
 	order = 3,
@@ -84,23 +84,8 @@ SV.Options.args.SVUnit.args.commonGroup.args.player={
 					guiInline = true,
 					name = L["Base Settings"],
 					args = {
-						showAuras = {
-							order = 1,
-							type = "execute",
-							name = L["Show Auras"],
-							func = function()local U = SVUI_Player;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("player")end
-						},
-						lowmana = {
-							order = 2,
-							name = L["Low Mana Threshold"],
-							desc = L["When you mana falls below this point, text will flash on the player frame."],
-							type = "range",
-							min = 0,
-							max = 100,
-							step = 1
-						},
 						combatfade = {
-							order = 3,
+							order = 1,
 							name = L["Combat Fade"],
 							desc = L["Fade the unitframe when out of combat, not casting, no target exists."],
 							type = "toggle",
@@ -115,33 +100,25 @@ SV.Options.args.SVUnit.args.commonGroup.args.player={
 							end
 						},
 						predict = {
-							order = 4,
+							order = 2,
 							name = L["Heal Prediction"],
 							desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
 							type = "toggle"
 						},
-						hideonnpc = {
-							type = "toggle",
-							order = 5,
-							name = L["Text Toggle On NPC"],
-							desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-							get = function(l)return SV.db.SVUnit["player"]["power"].hideonnpc end,
-							set = function(l, m)SV.db.SVUnit["player"]["power"].hideonnpc = m;MOD:SetUnitFrame("player")end
-						},
 						threatEnabled = {
 							type = "toggle",
-							order = 6,
+							order = 3,
 							name = L["Show Threat"]
 						},
 						playerExpBar = {
-							order = 7,
+							order = 4,
 							name = "Playerframe Experience Bar",
 							desc = "Show player experience on power bar mouseover",
 							type = "toggle",
 							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player");SV:StaticPopup_Show("RL_CLIENT")end
 						},
 						playerRepBar = {
-							order = 8,
+							order = 5,
 							name = "Playerframe Reputation Bar",
 							desc = "Show player reputations on power bar mouseover",
 							type = "toggle",
@@ -237,66 +214,47 @@ SV.Options.args.SVUnit.args.commonGroup.args.player={
 				enable = {
 					type = "toggle",
 					order = 1,
-					name = L["Enable"]
+					name = L["Classbar Enabled"]
 				},
-				commonGroup = {
-					order = 2,
-					type = "group",
-					guiInline = true,
-					name = L["Base Settings"],
-					args = {
-						slideLeft = {
-							type = "toggle",
-							order = 1,
-							name = L["Slide Left"]
-						},
-						detachFromFrame = {
-							type = "toggle",
-							order = 2,
-							name = L["Detach From Frame"]
-						},
-						stagger = {
-							type = "toggle",
-							order = 3,
-							name = L["Stagger Bar"],
-							get = function(l)return SV.db.SVUnit["player"]["stagger"].enable end,
-							set = function(l, m)MOD:ChangeDBVar(m, "enable", "player", "stagger");MOD:SetUnitFrame("player")end,
-							disabled = SV.class ~= "MONK",
-						},
-						druidMana = {
-							type = "toggle",
-							order = 12,
-							name = L["Druid Mana"],
-							desc = L["Display druid mana bar when in cat or bear form and when mana is not 100%."],
-							get = function(key)
-								return SV.db.SVUnit["player"]["power"].druidMana
-							end,
-							set = function(key, value)
-								MOD:ChangeDBVar(value, "druidMana", "player", "power");
-								MOD:SetUnitFrame("player")
-							end,
-							disabled = SV.class ~= "DRUID",
-						}
-					}
+				detachFromFrame = {
+					type = "toggle",
+					order = 2,
+					name = L["Detach From Frame"]
+				},
+				height = {
+					type = "range",
+					order = 4,
+					name = L["Classbar Height (Size)"],
+					min = 15,
+					max = 45,
+					step = 1
 				},
-				sizeGroup = {
-					order = 3,
-					guiInline = true,
-					type = "group",
-					name = L["Size Settings"],
-					args = {
-						height = {
-							type = "range",
-							order = 4,
-							width = "full",
-							name = L["Size"],
-							min = 15,
-							max = 45,
-							step = 1
-						}
-					}
-				}
 			}
 		}
 	}
-}
\ No newline at end of file
+}
+
+if(SV.class == "MONK") then
+	SV.Options.args.SVUnit.args.commonGroup.args.player.args.classbar.args.stagger = {
+		type = "toggle",
+		order = 3,
+		name = L["Stagger Bar"],
+		get = function(l)return SV.db.SVUnit["player"]["stagger"].enable end,
+		set = function(l, m)MOD:ChangeDBVar(m, "enable", "player", "stagger");MOD:SetUnitFrame("player")end,
+	}
+end
+if(SV.class == "DRUID") then
+	SV.Options.args.SVUnit.args.commonGroup.args.player.args.classbar.args.druidMana = {
+		type = "toggle",
+		order = 3,
+		name = L["Druid Mana"],
+		desc = L["Display druid mana bar when in cat or bear form and when mana is not 100%."],
+		get = function(key)
+			return SV.db.SVUnit["player"]["power"].druidMana
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, "druidMana", "player", "power");
+			MOD:SetUnitFrame("player")
+		end,
+	}
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua
index a877c38..05f4b4c 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua
@@ -127,7 +127,7 @@ SV.Options.args.SVUnit.args.commonGroup.args["raid"] = {
 									set = function(key, value)
 										MOD:ChangeDBVar(value, key[#key], "raid", "grid");
 										MOD:SetGroupFrame("raid", true);
-										SV.Options.args.SVUnit.args.commonGroup.args.raid.args.tabGroups.args.general.args.layoutGroup.args.sizing = ns:SetSizeConfigGroup(value, "raid");
+										SV.Options.args.SVUnit.args.commonGroup.args.raid.args.general.args.layoutGroup.args.sizing = ns:SetSizeConfigGroup(value, "raid");
 									end,
 								},
 								showPlayer = {
@@ -503,7 +503,7 @@ SV.Options.args.SVUnit.args.commonGroup.args.raidpet = {
 									set = function(key, value)
 										MOD:ChangeDBVar(value, key[#key], "raidpet", "grid");
 										MOD:SetGroupFrame("raidpet", true);
-										SV.Options.args.SVUnit.args.commonGroup.args.raidpet.args.tabGroups.args.general.args.layoutGroup.args.sizing = ns:SetSizeConfigGroup(value, "raidpet");
+										SV.Options.args.SVUnit.args.commonGroup.args.raidpet.args.general.args.layoutGroup.args.sizing = ns:SetSizeConfigGroup(value, "raidpet");
 									end,
 								},
 								invertGroupingOrder = {
diff --git a/Interface/AddOns/SVUI_CraftOMatic/Loader.lua b/Interface/AddOns/SVUI_CraftOMatic/Loader.lua
index 9f22cf0..0ca38d4 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/Loader.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/Loader.lua
@@ -28,20 +28,22 @@ local AddonName, AddonObject = ...
 assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")

 AddonObject.defaults = {
-	["fontSize"] = 12,
-	["farming"] = {
-		["buttonsize"] = 35,
-		["buttonspacing"] = 3,
-		["onlyactive"] = false,
-		["droptools"] = true,
-		["toolbardirection"] = "HORIZONTAL",
-	},
-	["fishing"] = {
-		["autoequip"] = true,
-	},
-	["cooking"] = {
-		["autoequip"] = true,
-	},
+	["general"] = {
+		["fontSize"] = 12,
+		["farming"] = {
+			["buttonsize"] = 35,
+			["buttonspacing"] = 3,
+			["onlyactive"] = false,
+			["droptools"] = true,
+			["toolbardirection"] = "HORIZONTAL",
+		},
+		["fishing"] = {
+			["autoequip"] = true,
+		},
+		["cooking"] = {
+			["autoequip"] = true,
+		},
+	}
 }

 local PLUGIN = LibSuperVillain("Registry"):NewPlugin(AddonName, AddonObject, "CraftOMatic_Profile", nil, "CraftOMatic_Cache")
@@ -61,7 +63,7 @@ SV.Options.args.plugins.args.pluginOptions.args[Schema].args["fontSize"] = {
 	min = 6,
 	max = 22,
 	step = 1,
-    get = function(key) return PLUGIN.db[key[#key]] end,
+    get = function(key) return PLUGIN.db.general[key[#key]] end,
     set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
 }

@@ -76,7 +78,7 @@ SV.Options.args.plugins.args.pluginOptions.args[Schema].args["fishing"] = {
 			order = 1,
 			name = L['AutoEquip'],
 			desc = L['Enable/Disable automatically equipping fishing gear.'],
-			get = function(key)return PLUGIN.db.fishing[key[#key]] end,
+			get = function(key)return PLUGIN.db.general.fishing[key[#key]] end,
 			set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key], "fishing") end
 		}
 	}
@@ -93,7 +95,7 @@ SV.Options.args.plugins.args.pluginOptions.args[Schema].args["cooking"] = {
 			order = 1,
 			name = L['AutoEquip'],
 			desc = L['Enable/Disable automatically equipping cooking gear.'],
-			get = function(key)return PLUGIN.db.cooking[key[#key]]end,
+			get = function(key)return PLUGIN.db.general.cooking[key[#key]]end,
 			set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key], "cooking")end
 		}
 	}
@@ -104,8 +106,8 @@ SV.Options.args.plugins.args.pluginOptions.args[Schema].args["farming"] = {
 	type = "group",
 	name = L["Farming Mode Settings"],
 	guiInline = true,
-	get = function(key)return PLUGIN.db.farming[key[#key]]end,
-	set = function(key, value)PLUGIN.db.farming[key[#key]] = value end,
+	get = function(key)return PLUGIN.db.general.farming[key[#key]]end,
+	set = function(key, value)PLUGIN.db.general.farming[key[#key]] = value end,
 	args = {
 		buttonsize = {
 			type = 'range',
diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
index 0e4f6db..845f555 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
@@ -306,7 +306,7 @@ function PLUGIN:ChangeModeGear()
 end

 function PLUGIN:UpdateLogWindow()
- 	self.LogWindow:SetFont(SV.Media.font.dialog, self.db.fontSize, "OUTLINE")
+ 	self.LogWindow:SetFont(SV.Media.font.dialog, self.db.general.fontSize, "OUTLINE")
 end

 function PLUGIN:SKILL_LINES_CHANGED()
diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc
index 8b966ee..795ce94 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc
+++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI |r|cffFFEF00Craft-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFProfession Tools|r].
 ## SavedVariablesPerCharacter: CraftOMatic_Profile, CraftOMatic_Cache
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua b/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
index ca26aae..1a03a9f 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
@@ -193,7 +193,7 @@ CORE METHODS
 function PLUGIN.Cooking:Enable()
 	PLUGIN.Cooking:Update()
 	if(not PLUGIN.Docklet:IsShown()) then PLUGIN.Docklet.DockButton:Click() end
-	if(PLUGIN.db.cooking.autoequip) then
+	if(PLUGIN.db.general.cooking.autoequip) then
 		UpdateChefWear();
 	end
 	PlaySoundFile("Sound\\Spells\\Tradeskills\\CookingPrepareA.wav")
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua b/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
index ae7f86d..bc903a5 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
@@ -157,7 +157,7 @@ do
 		if(InCombatLockdown()) then return end
 		if(event == "ZONE_CHANGED") then
 			local inZone = InFarmZone()
-			if not inZone and PLUGIN.db.farming.droptools then
+			if not inZone and PLUGIN.db.general.farming.droptools then
 				for k, v in pairs(refTools) do
 					local container, slot = FindItemInBags(k)
 					if container and slot then
@@ -318,7 +318,7 @@ do
 			PLUGIN.TitleWindow:AddMessage("|cffffff11Loading Farm Tools...|r|cffff1111PLEASE WAIT|r")
 			PLUGIN.FarmLoadTimer = SV.Timers:ExecuteTimer(LoadFarmingModeTools, 5)
 		else
-			local horizontal = PLUGIN.db.farming.toolbardirection == 'HORIZONTAL'
+			local horizontal = PLUGIN.db.general.farming.toolbardirection == 'HORIZONTAL'

 			local seeds, farmtools, portals = {},{},{}

@@ -406,7 +406,7 @@ function PLUGIN.Farming:Disable()
 		DisableListener()
 		return
 	end
-	if PLUGIN.db.farming.droptools then
+	if PLUGIN.db.general.farming.droptools then
 		for k, v in pairs(refTools) do
 			local container, slot = FindItemInBags(k)
 			if container and slot then
@@ -425,8 +425,8 @@ CORE FUNCTIONS
 ##########################################################
 ]]--
 function PLUGIN:RefreshFarmingTools()
-	local count, horizontal = 0, self.db.farming.toolbardirection == 'HORIZONTAL'
-	local BUTTONSPACE = self.db.farming.buttonspacing or 2;
+	local count, horizontal = 0, self.db.general.farming.toolbardirection == 'HORIZONTAL'
+	local BUTTONSPACE = self.db.general.farming.buttonspacing or 2;
 	local lastBar;
 	if not FarmToolBar:IsShown() then
 		_G["FarmSeedBarAnchor"]:SetPoint("TOPLEFT", _G["FarmModeFrameSlots"], "TOPLEFT", 0, 0)
@@ -441,10 +441,10 @@ function PLUGIN:RefreshFarmingTools()
 			local BUTTONSIZE = seedBar.ButtonSize;
 			button:SetPointToScale("TOPLEFT", seedBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
 			button:SetSizeToScale(BUTTONSIZE,BUTTONSIZE)
-			if (not self.db.farming.onlyactive or (self.db.farming.onlyactive and button.items > 0)) then
+			if (not self.db.general.farming.onlyactive or (self.db.general.farming.onlyactive and button.items > 0)) then
 				button.icon:SetVertexColor(1,1,1)
 				count = count + 1
-			elseif (not self.db.farming.onlyactive and button.items <= 0) then
+			elseif (not self.db.general.farming.onlyactive and button.items <= 0) then
 				button:Show()
 				button.icon:SetVertexColor(0.25,0.25,0.25)
 				count = count + 1
@@ -452,7 +452,7 @@ function PLUGIN:RefreshFarmingTools()
 				button:Hide()
 			end
 		end
-		if(self.db.farming.onlyactive and not self.db.farming.undocked) then
+		if(self.db.general.farming.onlyactive and not self.db.general.farming.undocked) then
 			if count==0 then
 				seedBar:Hide()
 			else
@@ -474,11 +474,11 @@ function PLUGIN:RefreshFarmingTools()
 		local BUTTONSIZE = FarmToolBar.ButtonSize;
 		button:SetPointToScale("TOPLEFT", FarmToolBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
 		button:SetSizeToScale(BUTTONSIZE,BUTTONSIZE)
-		if (not self.db.farming.onlyactive or (self.db.farming.onlyactive and button.items > 0)) then
+		if (not self.db.general.farming.onlyactive or (self.db.general.farming.onlyactive and button.items > 0)) then
 			button:Show()
 			button.icon:SetVertexColor(1,1,1)
 			count = count + 1
-		elseif (not self.db.farming.onlyactive and button.items == 0) then
+		elseif (not self.db.general.farming.onlyactive and button.items == 0) then
 			button:Show()
 			button.icon:SetVertexColor(0.25,0.25,0.25)
 			count = count + 1
@@ -486,7 +486,7 @@ function PLUGIN:RefreshFarmingTools()
 			button:Hide()
 		end
 	end
-	if(self.db.farming.onlyactive and not self.db.farming.undocked) then
+	if(self.db.general.farming.onlyactive and not self.db.general.farming.undocked) then
 		if count==0 then
 			FarmToolBarAnchor:Hide()
 			FarmPortalBar:SetPoint("TOPLEFT", FarmModeFrameSlots, "TOPLEFT", 0, 0)
@@ -502,11 +502,11 @@ function PLUGIN:RefreshFarmingTools()
 		local BUTTONSIZE = FarmPortalBar.ButtonSize;
 		button:SetPointToScale("TOPLEFT", FarmPortalBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
 		button:SetSizeToScale(BUTTONSIZE,BUTTONSIZE)
-		if (not self.db.farming.onlyactive or (self.db.farming.onlyactive and button.items > 0)) then
+		if (not self.db.general.farming.onlyactive or (self.db.general.farming.onlyactive and button.items > 0)) then
 			button:Show()
 			button.icon:SetVertexColor(1,1,1)
 			count = count + 1
-		elseif (not self.db.farming.onlyactive and button.items == 0) then
+		elseif (not self.db.general.farming.onlyactive and button.items == 0) then
 			button:Show()
 			button.icon:SetVertexColor(0.25,0.25,0.25)
 			count = count + 1
@@ -514,7 +514,7 @@ function PLUGIN:RefreshFarmingTools()
 			button:Hide()
 		end
 	end
-	if(self.db.farming.onlyactive) then
+	if(self.db.general.farming.onlyactive) then
 		if count==0 then
 			FarmPortalBar:Hide()
 		else
@@ -524,13 +524,13 @@ function PLUGIN:RefreshFarmingTools()
 end

 function PLUGIN:PrepareFarmingTools()
-	local horizontal = self.db.farming.toolbardirection == "HORIZONTAL"
-	local BUTTONSPACE = self.db.farming.buttonspacing or 2;
+	local horizontal = self.db.general.farming.toolbardirection == "HORIZONTAL"
+	local BUTTONSPACE = self.db.general.farming.buttonspacing or 2;

 	ModeLogsFrame = self.LogWindow;
 	DockButton = self.Docklet.DockButton

-	if not self.db.farming.undocked then
+	if not self.db.general.farming.undocked then
 		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
 		local bdTex = SV.Media.bar.glow
 		local farmingDocklet = CreateFrame("ScrollFrame", "FarmModeFrame", ModeLogsFrame);
@@ -605,7 +605,7 @@ function PLUGIN:PrepareFarmingTools()

 		farmingDocklet:Hide()
 	else
-		local BUTTONSIZE = self.db.farming.buttonsize or 35;
+		local BUTTONSIZE = self.db.general.farming.buttonsize or 35;

 		-- SEEDS
 		local farmSeedBarAnchor = CreateFrame("Frame", "FarmSeedBarAnchor", UIParent)
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua b/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
index 1f8af1d..c0adf55 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
@@ -334,7 +334,7 @@ CORE METHODS
 function PLUGIN.Fishing:Enable()
 	PLUGIN:UpdateFishingMode()
 	if(not PLUGIN.Docklet:IsShown()) then PLUGIN.Docklet.DockButton:Click() end
-	UpdateFishingGear(PLUGIN.db.fishing.autoequip);
+	UpdateFishingGear(PLUGIN.db.general.fishing.autoequip);
 	PlaySoundFile("Sound\\Spells\\Tradeskills\\FishCast.wav")
 	PLUGIN.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
 	if(not IsSpellKnown(131474)) then
diff --git a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc
index f0817e4..16bc0cc 100644
--- a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc
+++ b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI |r|cffFFEF00Fight-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFPvP Tools|r].
 ## SavedVariablesPerCharacter: FightOMatic_Profile, FightOMatic_Cache
diff --git a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
index d66c77a..004f01b 100644
--- a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
+++ b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI |r|cffFFEF00Log-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFData Logging|r].
 ## SavedVariables: LogOMatic_Data
diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
index c485aae..7990cf3 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
@@ -221,13 +221,6 @@ function PLUGIN:PLAYER_ENTERING_WORLD(event, ...)
 				desc = L["Addon Styling"],
 				get = function(key) return PLUGIN:IsAddonReady(key[#key]) end,
 				set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key], "addons"); SV:StaticPopup_Show("RL_CLIENT") end,
-				disabled = function()
-					if addonName then
-						 return not PLUGIN.StyledAddons[addonName]
-					else
-						 return false
-					end
-				end
 			}
 		end
 		if(self.db.addons[addonName] == nil) then
diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
index 1b3d846..ecaf9f3 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
+++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch, Azilroka, Sortokk
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI |r|cffFFEF00Style-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFAddon Skins|r].
 ## SavedVariables: StyleOMatic_Global
diff --git a/Interface/AddOns/SVUI_TrackOMatic/Loader.lua b/Interface/AddOns/SVUI_TrackOMatic/Loader.lua
index 065760b..e44a29e 100644
--- a/Interface/AddOns/SVUI_TrackOMatic/Loader.lua
+++ b/Interface/AddOns/SVUI_TrackOMatic/Loader.lua
@@ -28,10 +28,12 @@ local AddonName, AddonObject = ...
 assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")

 AddonObject.defaults = {
-    ["size"] = 75,
-    ["fontSize"] = 12,
-    ["groups"] = true,
-    ["proximity"] = false,
+    ["general"] = {
+        ["size"] = 75,
+        ["fontSize"] = 12,
+        ["groups"] = true,
+        ["proximity"] = false,
+    }
 }

 local PLUGIN = LibSuperVillain("Registry"):NewPlugin(AddonName, AddonObject, "TrackOMatic_Profile", "TrackOMatic_Global")
@@ -48,17 +50,17 @@ SV.Options.args.plugins.args.pluginOptions.args[Schema].args["groups"] = {
     name = L["GPS"],
     desc = L["Use group frame GPS elements"],
     type = "toggle",
-    get = function(key) return PLUGIN.db[key[#key]] end,
-    set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); end
+    get = function(key) return PLUGIN.db.general.groups end,
+    set = function(key,value) PLUGIN.db.general.groups = value; end
 }

 SV.Options.args.plugins.args.pluginOptions.args[Schema].args["proximity"] = {
     order = 4,
     name = L["GPS Proximity"],
-    desc = L["Only point to closest low health unit"],
+    desc = L["Only point to closest low health unit (if one is in range)."],
     type = "toggle",
-    get = function(key) return PLUGIN.db[key[#key]] end,
-    set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); end
+    get = function(key) return PLUGIN.db.general.proximity end,
+    set = function(key,value) PLUGIN.db.general.proximity = value; end
 }

 SV.Options.args.plugins.args.pluginOptions.args[Schema].args["fontSize"] = {
@@ -69,6 +71,6 @@ SV.Options.args.plugins.args.pluginOptions.args[Schema].args["fontSize"] = {
     min = 6,
     max = 22,
     step = 1,
-    get = function(key) return PLUGIN.db[key[#key]] end,
-    set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); end
+    get = function(key) return PLUGIN.db.general.fontSize end,
+    set = function(key,value) PLUGIN.db.general.fontSize = value; end
 }
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua
index 5c2a6cb..df76873 100644
--- a/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua
+++ b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua
@@ -188,7 +188,7 @@ local QuestTracker_OnUpdate = function(self, elapsed)
                 self.questID = nil
                 self.throttle = 4
                 self.Arrow:SetAlpha(0)
-                self.BG:SetVertexColor(0.1,0.1,0.1)
+                self.BG:SetVertexColor(0.1,0.1,0.1,0)
             else
                 self.throttle = 0.02
                 local range = floor(distance)
@@ -197,15 +197,15 @@ local QuestTracker_OnUpdate = function(self, elapsed)
                     self.Arrow:SetAlpha(1)
                     self.BG:SetAlpha(1)
                     if(range > 100) then
-                        self.BG:SetVertexColor(0.8,0.1,0.1)
+                        self.BG:SetVertexColor(0.8,0.1,0.1,1)
                     elseif(range > 40) then
-                        self.BG:SetVertexColor(0.8,0.8,0.1)
+                        self.BG:SetVertexColor(0.8,0.8,0.1,1)
                     else
-                        self.BG:SetVertexColor(0.1,0.8,0.1)
+                        self.BG:SetVertexColor(0.1,0.8,0.1,1)
                     end
                     self.Range:SetText(range)
                 else
-                    self.BG:SetVertexColor(0.1,0.1,0.1)
+                    self.BG:SetVertexColor(0.1,0.1,0.1,0)
                     self.Arrow:SetAlpha(0)
                     self.BG:SetAlpha(0)
                     self.Range:SetText("")
@@ -237,8 +237,7 @@ end
 function SV:AddQuestCompass(parent, anchor, size)
     if anchor.Compass then return end
     local compass = CreateFrame("Frame", nil, parent)
-    compass:SetPoint("CENTER", anchor, "CENTER", 0, 0)
-    compass:SetSize(size, size)
+    compass:SetAllPoints(anchor)
     compass:SetFrameLevel(anchor:GetFrameLevel() + 99)
     compass.BG = compass:CreateTexture(nil, 'BACKGROUND')
     compass.BG:SetAllPointsIn(compass)
@@ -265,9 +264,9 @@ CORE
 ##########################################################
 ]]--
 function PLUGIN:ReLoad()
-    local frameSize = self.db.size or 70
+    local frameSize = self.db.general.size or 70
     local arrowSize = frameSize * 0.5
-    local fontSize = self.db.fontSize or 14
+    local fontSize = self.db.general.fontSize or 14
     local frame = _G["SVUI_UnitTrackingCompass"]

     frame:SetSize(frameSize, frameSize)
diff --git a/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc
index 1dbb5c5..a234f2b 100644
--- a/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc
+++ b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc
@@ -1,6 +1,6 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 5.4.1
+## Version: 5.4.15
 ## Title: |cffFF9900SVUI |r|cffFFEF00Track-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFRaid & Party Member Tracking|r].
 ## SavedVariables: TrackOMatic_Global
diff --git a/Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua b/Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua
index 04bcad1..b90f45d 100644
--- a/Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua
+++ b/Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua
@@ -181,7 +181,7 @@ end

 local RefreshGPS = function(self, frame, template)
     if(frame.GPS) then
-        local config = PLUGIN.db
+        local config = PLUGIN.db.general
         if(config.groups) then
             frame.GPS.OnlyProximity = config.proximity
             local actualSz = min(frame.GPS.DefaultSize, (frame:GetHeight() - 2))