Quantcast

4.9.9

Steven Jackson [10-11-14 - 21:44]
4.9.9
Filename
Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
Interface/AddOns/SVUI/packages/bag/SVBag.lua
Interface/AddOns/SVUI/packages/override/SVOverride.lua
Interface/AddOns/SVUI/packages/unit/SVUnit.lua
Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
Interface/AddOns/SVUI/scripts/mounts.lua
Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua
Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
Interface/BattlefieldFrame/Battleground-Alliance.blp
Interface/BattlefieldFrame/Battleground-Horde.blp
Interface/FriendsFrame/Battlenet-Battleneticon.blp
Interface/FriendsFrame/Battlenet-D3icon.blp
Interface/FriendsFrame/Battlenet-Sc2icon.blp
Interface/FriendsFrame/Battlenet-WTCGicon.blp
Interface/FriendsFrame/Battlenet-WoWicon.blp
Interface/FriendsFrame/TravelPass-Invite.blp
Interface/MINIMAP/TRACKING/BattleMaster.blp
Interface/PVPFrame/PVP-Currency-Alliance.blp
Interface/PVPFrame/PVP-Currency-Horde.blp
Interface/TARGETINGFRAME/UI-PVP-Alliance.blp
Interface/TARGETINGFRAME/UI-PVP-Horde.blp
Interface/TARGETINGFRAME/UI-StatusBar.blp
Interface/TARGETINGFRAME/UI-TargetingFrame-BarFill.blp
Interface/TARGETINGFRAME/UI-TargetingFrame-LevelBackground.blp
Interface/WorldStateFrame/AllianceIcon.blp
Interface/WorldStateFrame/HordeIcon.blp
diff --git a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
index f85d2b9..6664319 100644
--- a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
+++ b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
@@ -487,11 +487,6 @@ function lib:UpdateDatabase(event)
                 removedefaults(sv[k], src[k])
             end
         end
-        for k,v in pairs(CACHE_SV) do
-            if(k ~= "STORED") then
-                CACHE_SV[k] = nil
-            end
-        end
     elseif(event == "ACTIVE_TALENT_GROUP_CHANGED") then
         local LastKey = SOURCE_KEY
         if(PROFILE_SV.SAFEDATA and PROFILE_SV.SAFEDATA.dualSpecEnabled) then
diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
index 8a1e8cd..40c6d0d 100644
--- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua
+++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
@@ -73,6 +73,8 @@ local RefProfessionColors = {
 	[0x10000] = {222/255,13/255,65/255},
 	[0x100000] = {18/255,224/255,180/255}
 }
+
+local BagFilters = CreateFrame("Frame", "SVUI_BagFilterMenu", UIParent);
 --[[
 ##########################################################
 LOCAL FUNCTIONS
@@ -185,6 +187,47 @@ local function BuildEquipmentMap()
 		end
 	end
 end
+
+local DD_OnClick = function(self)
+	SetBagSlotFlag(self.BagID, self.FilterID, not GetBagSlotFlag(self.BagID, self.FilterID))
+	self:GetParent():Hide()
+end
+
+local DDClear_OnClick = function(self)
+	for i = LE_BAG_FILTER_FLAG_EQUIPMENT, NUM_LE_BAG_FILTER_FLAGS do
+		SetBagSlotFlag(self.BagID, i, false)
+	end
+	self:GetParent():Hide()
+end
+
+local DD_OnEnter = function(self)
+	self.hoverTex:Show()
+end
+
+local DD_OnLeave = function(self)
+	self.hoverTex:Hide()
+end
+
+local function SetFilterMenu(self)
+	for i = LE_BAG_FILTER_FLAG_EQUIPMENT, NUM_LE_BAG_FILTER_FLAGS do
+		if(GetBagSlotFlag(self.id, i)) then
+			BagFilters.buttons[i].activeTex:Show()
+		else
+			BagFilters.buttons[i].activeTex:Hide()
+		end
+		BagFilters.buttons[i].BagID = self.id
+	end
+
+	BagFilters.buttons[NUM_LE_BAG_FILTER_FLAGS + 1].BagID = self.id
+
+	local maxHeight = ((NUM_LE_BAG_FILTER_FLAGS) * 16) + 30
+	local maxWidth = 135
+
+	BagFilters:SetSize(maxWidth, maxHeight)
+	BagFilters:ClearAllPoints()
+	BagFilters:SetPoint("TOPLEFT", self, "BOTTOMLEFT", 0, -8)
+	ToggleFrame(BagFilters)
+end
 --[[
 ##########################################################
 CORE FUNCTIONS
@@ -212,7 +255,7 @@ end

 local SlotUpdate = function(self, slotID)
 	if(not self[slotID]) then return end
-
+	--print(self[slotID]:GetName())
 	local bag = self:GetID();
 	local slot = self[slotID];
 	local bagType = self.bagFamily;
@@ -260,17 +303,26 @@ end

 local RefreshSlots = function(self)
 	local bagID = self:GetID()
-	if(not bagID or (not self.SlotUpdate)) then return end
+	if(not bagID) then return end
 	local maxcount = GetContainerNumSlots(bagID)
 	for slotID = 1, maxcount do
 		self:SlotUpdate(slotID)
 	end
 end

+local RefreshReagentSlots = function(self)
+	local bagID = self:GetID()
+	if(not bagID or (not self.SlotUpdate)) then return end
+	local maxcount = self.numSlots
+	for slotID = 1, maxcount do
+		self:SlotUpdate(slotID)
+	end
+end
+
 local BagMenu_OnEnter = function(self)
 	local parent = self.parent
 	if(not parent) then return end
-	for bagID, bag in ipairs(parent.Bags) do
+	for bagID, bag in pairs(parent.Bags) do
 		local numSlots = GetContainerNumSlots(bagID)
 		for slotID = 1, numSlots do
 			if bag[slotID] then
@@ -281,33 +333,51 @@ local BagMenu_OnEnter = function(self)
 				end
 			end
 		end
-	end
+	end
+
+	local numSlots = GetContainerNumSlots(parent.BaseID)
+	for slotID = 1, numSlots do
+		if parent.Bags[parent.BaseID][slotID] then
+			parent.Bags[parent.BaseID][slotID]:SetAlpha(0.1)
+		end
+	end
+
+	if(select(4, GetBuildInfo()) >= 60000) then GameTooltip:AppendText(" |cff00FF11[SHIFT-CLICK] To Set Filters|r") end
 end

 local BagMenu_OnLeave = function(self)
 	local parent = self.parent
 	if(not parent) then return end
-	for bagID, bag in ipairs(parent.Bags) do
+	for bagID, bag in pairs(parent.Bags) do
 		local numSlots = GetContainerNumSlots(bagID)
 		for slotID = 1, numSlots do
 			if bag[slotID] then
 				bag[slotID]:SetAlpha(1)
 			end
 		end
-	end
+	end
+
+	local numSlots = GetContainerNumSlots(parent.BaseID)
+	for slotID = 1, numSlots do
+		if parent.Bags[parent.BaseID][slotID] then
+			parent.Bags[parent.BaseID][slotID]:SetAlpha(1)
+		end
+	end
 end

 local BAG_FILTER_LABELS = _G.BAG_FILTER_LABELS;

 local BagMenu_OnClick = function(self)
 	if IsShiftKeyDown() then
-		print("Unavailable until WoD")
-		--SetBagSlotFlag(self.id, LE_BAG_FILTER_FLAG_EQUIPMENT, true)
+		SetFilterMenu(self);
+	elseif(BagFilters:IsShown()) then
+		ToggleFrame(BagFilters)
 	end
 end

 local ContainerFrame_UpdateCooldowns = function(self)
-	for bagID, bag in ipairs(self.Bags) do
+	if self.isReagent then return end
+	for bagID, bag in pairs(self.Bags) do
 		for slotID = 1, GetContainerNumSlots(bagID)do
 			local start, duration, enable = GetContainerItemCooldown(bagID, slotID)
 			if(bag[slotID]) then
@@ -323,7 +393,7 @@ local ContainerFrame_UpdateCooldowns = function(self)
 end

 local ContainerFrame_UpdateBags = function(self)
-	for bagID, bag in ipairs(self.Bags) do
+	for bagID, bag in pairs(self.Bags) do
 		bag:RefreshSlots()
 	end
 end
@@ -332,18 +402,19 @@ local ContainerFrame_UpdateLayout = function(self)
 	if SV.db.SVBag.enable ~= true then return; end

 	local isBank = self.isBank
-	local isReagent = self.isReagent
 	local containerName = self:GetName()
-	local buttonSpacing, numContainerRows = 8, 0;
+	local buttonSpacing = 8;
 	local containerWidth, numContainerColumns, buttonSize

+	local precount = 0;
+	for i, bagID in ipairs(self.BagIDs) do
+		local numSlots = GetContainerNumSlots(bagID);
+		precount = precount + (numSlots or 0);
+	end
+
 	if(SV.db.SVBag.alignToChat) then
 		containerWidth = (isBank and SV.db.SVDock.dockLeftWidth or SV.db.SVDock.dockRightWidth)
-		local precount, avg = 0, 0.08;
-		for i, bagID in ipairs(self.BagIDs) do
-			local numSlots = GetContainerNumSlots(bagID);
-			precount = precount + (numSlots or 0);
-		end
+		local avg = 0.08;
 		if(precount > 287) then
 			avg = 0.12
 		elseif(precount > 167) then
@@ -354,7 +425,6 @@ local ContainerFrame_UpdateLayout = function(self)
 			avg = 0.09
 		end

-		--local rowCalc = ceil(precount * avg);
 		numContainerColumns = avg * 100;

 		local unitSize = floor(containerWidth / numContainerColumns)
@@ -365,88 +435,95 @@ local ContainerFrame_UpdateLayout = function(self)
 		numContainerColumns = floor(containerWidth / (buttonSize + buttonSpacing));
 	end

+	local numContainerRows = ceil(precount / numContainerColumns)
+	local containerHeight = (((buttonSize + buttonSpacing) * numContainerRows) - buttonSpacing) + self.topOffset + self.bottomOffset
 	local holderWidth = ((buttonSize + buttonSpacing) * numContainerColumns) - buttonSpacing;
 	local bottomPadding = (containerWidth - holderWidth) * 0.5;
 	local lastButton, lastRowButton, globalName;
 	local numContainerSlots, fullContainerSlots = GetNumBankSlots();
 	local totalSlots = 0;

+	self.ButtonSize = buttonSize;
 	self.holderFrame:Width(holderWidth);

 	local menu = self.BagMenu

-	if(not isReagent)  then
-		for i, bagID in ipairs(self.BagIDs) do
-			if((not isBank and bagID <= 3) or (isBank and bagID ~= -1 and numContainerSlots >= 1 and not ((i - 1) > numContainerSlots))) then
-				menu:Size(((buttonSize + buttonSpacing) * (isBank and i - 1 or i)) + buttonSpacing, buttonSize + (buttonSpacing * 2))
-
-				local bagSlot;
-
-				if(not menu[i]) then
-					if isBank then
-						globalName = ("SVUI_BankBag%d"):format((bagID - 4));
-						bagSlot = CreateFrame("CheckButton", globalName, menu, "BankItemButtonBagTemplate")
-					else
-						globalName = ("SVUI_MainBag%dSlot"):format(bagID);
-						bagSlot = CreateFrame("CheckButton", globalName, menu, "BagSlotButtonTemplate")
-					end
-
-					bagSlot.parent = self;
-
-					bagSlot:SetNormalTexture("")
-					bagSlot:SetCheckedTexture("")
-					bagSlot:SetPushedTexture("")
-					bagSlot:SetScript("OnClick", nil)
-
-					local texName = ("%sIconTexture"):format(globalName)
-					bagSlot.iconTexture = _G[texName];
-					bagSlot.iconTexture:FillInner()
-					bagSlot.iconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-
-					bagSlot:HookScript("OnEnter", BagMenu_OnEnter)
-					bagSlot:HookScript("OnLeave", BagMenu_OnLeave)
+	for i, bagID in ipairs(self.BagIDs) do
+		if((not isBank and bagID <= 3) or (isBank and bagID ~= -1 and numContainerSlots >= 1 and not ((i - 1) > numContainerSlots))) then
+			menu:Size(((buttonSize + buttonSpacing) * (isBank and i - 1 or i)) + buttonSpacing, buttonSize + (buttonSpacing * 2))
+
+			local bagSlot;

-					if(not bagSlot.tooltipText) then
-						bagSlot.tooltipText = ""
-					end
+			if(not menu[i]) then
+				if isBank then
+					globalName = ("SVUI_BankBag%d"):format(bagID);
+					bagSlot = CreateFrame("CheckButton", globalName, menu, "BankItemButtonBagTemplate")
+				else
+					globalName = ("SVUI_MainBag%dSlot"):format(bagID);
+					bagSlot = CreateFrame("CheckButton", globalName, menu, "BagSlotButtonTemplate")
+				end

-					if(isBank) then
-						bagSlot:SetID(bagID)
-						bagSlot.id = bagID;
-					else
-						bagSlot:HookScript("OnClick", BagMenu_OnClick)
-						bagSlot.id = (bagID + 1);
-					end
+				bagSlot.parent = self;
+
+				bagSlot:SetNormalTexture("")
+				bagSlot:SetCheckedTexture("")
+				bagSlot:SetPushedTexture("")
+				bagSlot:SetScript("OnClick", nil)
+				bagSlot:RemoveTextures()
+				bagSlot:SetSlotTemplate(true, 2, 0, 0, true);
+
+				local texName = ("%sIconTexture"):format(globalName)
+				bagSlot.iconTexture = _G[texName];
+				bagSlot.iconTexture:FillInner()
+				bagSlot.iconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+
+				hooksecurefunc(bagSlot, "UpdateTooltip", BagMenu_OnEnter)
+				--bagSlot:HookScript("OnEnter", BagMenu_OnEnter)
+				bagSlot:HookScript("OnLeave", BagMenu_OnLeave)
+
+				if(not bagSlot.tooltipText) then
+					bagSlot.tooltipText = ""
+				end

-					menu[i] = bagSlot;
+				if(isBank) then
+					bagSlot:SetID(bagID)
+					bagSlot.id = bagID;
 				else
-					bagSlot = menu[i]
+					if(select(4, GetBuildInfo()) >= 60000) then bagSlot:HookScript("OnClick", BagMenu_OnClick) end
+					bagSlot.id = (bagID + 1);
 				end

-				bagSlot:Size(buttonSize)
-				bagSlot:ClearAllPoints()
+				menu[i] = bagSlot;
+			else
+				bagSlot = menu[i]
+			end

-				if(isBank) then
-					if(i == 2) then
-						bagSlot:SetPoint("BOTTOMLEFT", menu, "BOTTOMLEFT", buttonSpacing, buttonSpacing)
-					else
-						bagSlot:SetPoint("LEFT", menu[i - 1], "RIGHT", buttonSpacing, 0)
-					end
+			bagSlot:Size(buttonSize)
+			bagSlot:ClearAllPoints()

-					if(bagSlot.GetInventorySlot) then
-						BankFrameItemButton_Update(bagSlot)
-						BankFrameItemButton_UpdateLocked(bagSlot)
-					end
-				else
-					if(i == 1) then
-						bagSlot:SetPoint("BOTTOMLEFT", menu, "BOTTOMLEFT", buttonSpacing, buttonSpacing)
-					else
-						bagSlot:SetPoint("LEFT", menu[i - 1], "RIGHT", buttonSpacing, 0)
-					end
+			if(isBank) then
+				if(i == 2) then
+					bagSlot:SetPoint("BOTTOMLEFT", menu, "BOTTOMLEFT", buttonSpacing, buttonSpacing)
+				else
+					bagSlot:SetPoint("LEFT", menu[i - 1], "RIGHT", buttonSpacing, 0)
+				end
+
+				if(bagSlot.GetInventorySlot) then
+					BankFrameItemButton_Update(bagSlot)
+					BankFrameItemButton_UpdateLocked(bagSlot)
+				end
+			else
+				if(i == 1) then
+					bagSlot:SetPoint("BOTTOMLEFT", menu, "BOTTOMLEFT", buttonSpacing, buttonSpacing)
+				else
+					bagSlot:SetPoint("LEFT", menu[i - 1], "RIGHT", buttonSpacing, 0)
 				end
 			end
+		end
+
+		local numSlots = GetContainerNumSlots(bagID);

-			local numSlots = GetContainerNumSlots(bagID);
+		if numSlots > 0 then
 			local bagName = ("%sBag%d"):format(containerName, bagID)
 			local template = (bagID == -1) and "BankItemButtonGenericTemplate" or "ContainerFrameItemButtonTemplate"
 			local bag;
@@ -462,108 +539,135 @@ local ContainerFrame_UpdateLayout = function(self)
 				bag = self.Bags[bagID]
 			end

-			if numSlots > 0 then
-				local btype = select(2, GetContainerNumFreeSlots(bagID));
-				if RefProfessionColors[btype] then
-					local r, g, b = unpack(RefProfessionColors[btype]);
-					bag.bagFamily = {r, g, b};
-					bag:SetBackdropColor(r, g, b, 0.25)
-					bag:SetBackdropBorderColor(r, g, b, 1)
-				else
-					bag.bagFamily = false;
-				end
+			local btype = select(2, GetContainerNumFreeSlots(bagID));
+			if RefProfessionColors[btype] then
+				local r, g, b = unpack(RefProfessionColors[btype]);
+				bag.bagFamily = {r, g, b};
+				bag:SetBackdropColor(r, g, b, 0.25)
+				bag:SetBackdropBorderColor(r, g, b, 1)
+			else
+				bag.bagFamily = false;
+			end

-				for i = 1, MAX_CONTAINER_ITEMS do
-					if bag[i] then
-						bag[i]:Hide();
-					end
-				end
+			for i = 1, MAX_CONTAINER_ITEMS do
+				if bag[i] then
+					bag[i]:Hide();
+				end
+			end

-				for slotID = 1, numSlots do
-					local slot;
-					totalSlots = totalSlots + 1;
-
-					if not bag[slotID] then
-						local slotName = ("%sSlot%d"):format(bagName, slotID)
-						local newTexName = ("%sNewItemTexture"):format(slotName)
-						local iconName = ("%sIconTexture"):format(slotName)
-						local cdName = ("%sCooldown"):format(slotName)
-
-						slot = CreateFrame("CheckButton", slotName, bag, template);
-						slot:SetNormalTexture(nil);
-						slot:SetCheckedTexture(nil);
-						slot:SetSlotTemplate(true, 2, 0, 0, true);
-
-						if(_G[newTexName]) then
-							_G[newTexName]:Hide()
-						end
+			for slotID = 1, numSlots do
+				local slot;
+				totalSlots = totalSlots + 1;
+
+				if not bag[slotID] then
+					local slotName = ("%sSlot%d"):format(bagName, slotID)
+					local newTexName = ("%sNewItemTexture"):format(slotName)
+					local iconName = ("%sIconTexture"):format(slotName)
+					local cdName = ("%sCooldown"):format(slotName)
+
+					slot = CreateFrame("CheckButton", slotName, bag, template);
+					slot:SetNormalTexture("");
+					slot:SetCheckedTexture("");
+					slot:RemoveTextures()
+					slot:SetSlotTemplate(true, 2, 0, 0, true);
+
+					if(_G[newTexName]) then
+						_G[newTexName]:Hide()
+					end

-						slot.iconTexture = _G[iconName];
-						slot.iconTexture:FillInner(slot);
-						slot.iconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9);
-						slot.cooldown = _G[cdName];
+					slot.iconTexture = _G[iconName];
+					slot.iconTexture:FillInner(slot);
+					slot.iconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9);
+					slot.cooldown = _G[cdName];

-						SV.Timers:AddCooldown(slot.cooldown)
+					SV.Timers:AddCooldown(slot.cooldown)

-						bag[slotID] = slot
-					else
-						slot = bag[slotID]
-					end
+					bag[slotID] = slot
+				else
+					slot = bag[slotID]
+				end

-					slot:SetID(slotID);
-					slot:Size(buttonSize);
-					bag:SlotUpdate(slotID);
+				slot:SetID(slotID);
+				slot:Size(buttonSize);
+				bag:SlotUpdate(slotID);

-					if slot:GetPoint() then
-						slot:ClearAllPoints();
-					end
+				if slot:GetPoint() then
+					slot:ClearAllPoints();
+				end

-					if lastButton then
-						if((totalSlots - 1) % numContainerColumns == 0) then
-							slot:Point("TOP", lastRowButton, "BOTTOM", 0, -buttonSpacing);
-							numContainerRows = numContainerRows + 1;
-							lastRowButton = slot;
-						else
-							slot:Point("LEFT", lastButton, "RIGHT", buttonSpacing, 0);
-						end
-					else
-						slot:Point("TOPLEFT", self.holderFrame, "TOPLEFT");
-						numContainerRows = numContainerRows + 1;
+				if lastButton then
+					if((totalSlots - 1) % numContainerColumns == 0) then
+						slot:Point("TOP", lastRowButton, "BOTTOM", 0, -buttonSpacing);
 						lastRowButton = slot;
-					end
-
-					lastButton = slot;
-				end
-			else
-				if(menu[i] and menu[i].GetInventorySlot) then
-					BankFrameItemButton_Update(menu[i])
-					BankFrameItemButton_UpdateLocked(menu[i])
-				end
-				for i = 1, MAX_CONTAINER_ITEMS do
-					if(bag[i]) then
-						bag[i]:Hide();
+					else
+						slot:Point("LEFT", lastButton, "RIGHT", buttonSpacing, 0);
 					end
-				end
+				else
+					slot:Point("TOPLEFT", self.holderFrame, "TOPLEFT");
+					lastRowButton = slot;
+				end
+
+				lastButton = slot;
+			end
+		else
+			if(menu[i] and menu[i].GetInventorySlot) then
+				BankFrameItemButton_Update(menu[i])
+				BankFrameItemButton_UpdateLocked(menu[i])
 			end
+			for i = 1, MAX_CONTAINER_ITEMS do
+				if(bag[i]) then
+					bag[i]:Hide();
+				end
+			end
 		end
-	else
+	end
+
+	self:Size(containerWidth, containerHeight);
+end
+
+local ReagentFrame_UpdateLayout = function(self)
+	if SV.db.SVBag.enable ~= true or not _G.ReagentBankFrame then return; end
+
+	local ReagentBankFrame = _G.ReagentBankFrame;
+
+	local containerName = self:GetName()
+	local buttonSpacing = 8;
+	local preColumns = ReagentBankFrame.numColumn or 7
+	local preSubColumns = ReagentBankFrame.numSubColumn or 2
+	local numContainerColumns = preColumns * preSubColumns
+	local numContainerRows = ReagentBankFrame.numRow or 7
+	local buttonSize = SVUI_BankContainerFrame.ButtonSize
+	local containerWidth = (buttonSize + buttonSpacing) * numContainerColumns + buttonSpacing
+	local containerHeight = (((buttonSize + buttonSpacing) * numContainerRows) - buttonSpacing) + self.topOffset + self.bottomOffset
+	local maxCount = numContainerColumns * numContainerRows
+	local holderWidth = ((buttonSize + buttonSpacing) * numContainerColumns) - buttonSpacing;
+	local lastButton, lastRowButton;
+	local bagID = REAGENTBANK_CONTAINER;
+	local totalSlots = 0;
+
+	self.holderFrame:Width(holderWidth);
+
+	if(not IsReagentBankUnlocked()) then
+        local cost = GetReagentBankCost()
+        print(cost)
+    else
 		local bag;
-		local bagName = ("%sBag%d"):format(containerName, 1)
+		local bagName = ("%sBag%d"):format(containerName, bagID)

-		if not self.Bags[1] then
+		if not self.Bags[bagID] then
 			bag = CreateFrame("Frame", bagName, self);
-			bag:SetID(1);
-			bag.numSlots = numSlots;
+			bag:SetID(bagID);
+			bag.numSlots = maxCount;
 			bag.SlotUpdate = SlotUpdate;
-			bag.RefreshSlots = RefreshSlots;
-			self.Bags[1] = bag
+			bag.RefreshSlots = RefreshReagentSlots;
+			self.Bags[bagID] = bag
 		else
-			bag = self.Bags[1]
+			bag = self.Bags[bagID]
 		end

 		bag.bagFamily = false;

-		for slotID = 1, 98 do
+		for slotID = 1, maxCount do
 			local slot;
 			totalSlots = totalSlots + 1;

@@ -573,9 +677,10 @@ local ContainerFrame_UpdateLayout = function(self)
 				local iconName = ("%sIconTexture"):format(slotName)
 				local cdName = ("%sCooldown"):format(slotName)

-				slot = CreateFrame("CheckButton", slotName, bag, template);
+				slot = CreateFrame("CheckButton", slotName, bag, "ReagentBankItemButtonGenericTemplate");
 				slot:SetNormalTexture(nil);
 				slot:SetCheckedTexture(nil);
+				slot:RemoveTextures()
 				slot:SetSlotTemplate(true, 2, 0, 0, true);

 				if(_G[newTexName]) then
@@ -605,23 +710,23 @@ local ContainerFrame_UpdateLayout = function(self)
 			if lastButton then
 				if((totalSlots - 1) % numContainerColumns == 0) then
 					slot:Point("TOP", lastRowButton, "BOTTOM", 0, -buttonSpacing);
-					numContainerRows = numContainerRows + 1;
 					lastRowButton = slot;
 				else
 					slot:Point("LEFT", lastButton, "RIGHT", buttonSpacing, 0);
 				end
 			else
 				slot:Point("TOPLEFT", self.holderFrame, "TOPLEFT");
-				numContainerRows = numContainerRows + 1;
 				lastRowButton = slot;
 			end

-			lastButton = slot;
-		end
+			lastButton = slot;

+			BankFrameItemButton_Update(slot);
+			BankFrameItemButton_UpdateLocked(slot)
+		end
 	end

-	self:Size(containerWidth, (((buttonSize + buttonSpacing) * numContainerRows) - buttonSpacing) + self.topOffset + self.bottomOffset);
+	self:Size(containerWidth, containerHeight);
 end

 function MOD:RefreshBagFrames(frame)
@@ -928,12 +1033,13 @@ do
 	end

 	local Container_OnEvent = function(self, event, ...)
-		if(event == "ITEM_LOCK_CHANGED") then
+		if(event == "BAG_UPDATE" or event == "ITEM_LOCK_CHANGED") then
 			local bagID, slotID = ...
-			if(bagID and slotID and self.Bags[bagID] and self.Bags[bagID][slotID]) then
+			if(bagID and slotID and self.Bags[bagID]) then
 				self.Bags[bagID]:SlotUpdate(slotID)
 			end
-		elseif(event == "BAG_UPDATE" or event == "EQUIPMENT_SETS_CHANGED") then
+			self:RefreshBags()
+		elseif(event == "EQUIPMENT_SETS_CHANGED") then
 			BuildEquipmentMap()
 			for id, bag in ipairs(self.Bags) do
 				local numSlots = GetContainerNumSlots(id)
@@ -1077,7 +1183,6 @@ do

 	function MOD:MakeBags()
 		local bagName = "SVUI_ContainerFrame"
-		local uisCount = #UISpecialFrames + 1;
 		local bagsCount = #self.BagFrames + 1;
 		local frame = CreateFrame("Button", "SVUI_ContainerFrame", SV.UIParent)

@@ -1092,7 +1197,7 @@ do
 		frame:RegisterEvent("BAG_UPDATE")
 		frame:RegisterEvent("EQUIPMENT_SETS_CHANGED")
 		frame:RegisterEvent("PLAYERBANKSLOTS_CHANGED")
-		frame:RegisterEvent("PLAYERREAGENTBANKSLOTS_CHANGED")
+		--frame:RegisterEvent("PLAYERREAGENTBANKSLOTS_CHANGED")
 		frame:SetMovable(true)

 		frame:RegisterForDrag("LeftButton", "RightButton")
@@ -1111,12 +1216,21 @@ do
 		frame.bottomOffset = 32;
 		frame.topOffset = 65;
 		frame.BagIDs = {0, 1, 2, 3, 4}
+		frame.BaseID = 0
 		frame.Bags = {}
 		frame.closeButton = CreateFrame("Button", "SVUI_ContainerFrameCloseButton", frame, "UIPanelCloseButton")
 		frame.closeButton:Point("TOPRIGHT", -4, -4)
+
 		frame.holderFrame = CreateFrame("Frame", nil, frame)
 		frame.holderFrame:Point("TOP", frame, "TOP", 0, -frame.topOffset)
 		frame.holderFrame:Point("BOTTOM", frame, "BOTTOM", 0, frame.bottomOffset)
+
+		frame.Title = frame:CreateFontString()
+		frame.Title:SetFontObject(NumberFont_Outline_Large)
+		frame.Title:SetText(INVENTORY_TOOLTIP)
+		frame.Title:SetPoint("TOPLEFT", frame, "TOPLEFT", 2, -2)
+		frame.Title:SetTextColor(1,0.8,0)
+
 		frame.BagMenu = CreateFrame("Button", "SVUI_ContainerFrameBagMenu", frame)
 		frame.BagMenu:Point("BOTTOMLEFT", frame, "TOPLEFT", 0, 1)
 		frame.BagMenu:SetFixedPanelTemplate("Transparent")
@@ -1201,6 +1315,10 @@ do
 		frame.bagsButton:SetScript("OnEnter", Tooltip_Show)
 		frame.bagsButton:SetScript("OnLeave", Tooltip_Hide)
 		local BagBtn_OnClick = function()
+			PlaySound("igMainMenuOption");
+			if(BagFilters:IsShown()) then
+				ToggleFrame(BagFilters)
+			end
 			ToggleFrame(frame.BagMenu)
 		end
 		frame.bagsButton:SetScript("OnClick", BagBtn_OnClick)
@@ -1239,7 +1357,6 @@ do

 		frame:SetScript("OnHide", CloseAllBags)
 		SV:AddToDisplayAudit(frame)
-		--UISpecialFrames[uisCount] = "SVUI_ContainerFrame";

 		self.BagFrames[bagsCount] = frame
 		self.BagFrame = frame
@@ -1249,14 +1366,13 @@ do
 		-- Reagent Slots: 1 - 98
 		-- /script print(ReagentBankFrameItem1:GetInventorySlot())
 		local bagName = isReagent and "SVUI_ReagentContainerFrame" or "SVUI_BankContainerFrame"
-		local uisCount = #UISpecialFrames + 1;
 		local bagsCount = #self.BagFrames + 1;

 		local frame = CreateFrame("Button", bagName, isReagent and self.BankFrame or SV.UIParent)
 		frame:SetPanelTemplate(isReagent and "Action" or "Container")
 		frame:SetFrameStrata("HIGH")

-		frame.UpdateLayout = ContainerFrame_UpdateLayout;
+		frame.UpdateLayout = isReagent and ReagentFrame_UpdateLayout or ContainerFrame_UpdateLayout;
 		frame.RefreshBags = ContainerFrame_UpdateBags;
 		frame.RefreshCooldowns = ContainerFrame_UpdateCooldowns;

@@ -1265,7 +1381,7 @@ do
 		frame:RegisterEvent("BAG_UPDATE")
 		frame:RegisterEvent("EQUIPMENT_SETS_CHANGED")
 		frame:RegisterEvent("PLAYERBANKSLOTS_CHANGED")
-		frame:RegisterEvent("PLAYERREAGENTBANKSLOTS_CHANGED")
+		--frame:RegisterEvent("PLAYERREAGENTBANKSLOTS_CHANGED")

 		frame:SetMovable(true)
 		frame:RegisterForDrag("LeftButton", "RightButton")
@@ -1287,6 +1403,7 @@ do
 			frame.BagIDs = {}
 		else
 			frame.BagIDs = {-1, 5, 6, 7, 8, 9, 10, 11}
+			frame.BaseID = -1
 		end

 		frame.Bags = {}
@@ -1298,10 +1415,11 @@ do
 		frame.holderFrame:Point("TOP", frame, "TOP", 0, -frame.topOffset)
 		frame.holderFrame:Point("BOTTOM", frame, "BOTTOM", 0, frame.bottomOffset)

-		frame.BagMenu = CreateFrame("Button", bagName.."BagMenu", frame)
-		frame.BagMenu:Point("BOTTOMLEFT", frame, "TOPLEFT", 0, 1)
-		frame.BagMenu:SetFixedPanelTemplate("Transparent")
-		frame.BagMenu:Hide()
+		frame.Title = frame:CreateFontString()
+		frame.Title:SetFontObject(NumberFont_Outline_Large)
+		frame.Title:SetText(isReagent and REAGENT_BANK or BANK or "Bank")
+		frame.Title:SetPoint("TOPLEFT", frame, "TOPLEFT", 2, -2)
+		frame.Title:SetTextColor(1,0.8,0)

 		frame.sortButton = CreateFrame("Button", nil, frame)
 		frame.sortButton:Point("TOPRIGHT", frame, "TOP", 0, -10)
@@ -1325,23 +1443,26 @@ do
 		local Stack_OnClick = MOD:RunSortingProcess(MOD.Stack, "bank")
 		frame.stackButton:SetScript("OnClick", Stack_OnClick)

-		frame.transferButton = CreateFrame("Button", nil, frame)
-		frame.transferButton:Point("LEFT", frame.stackButton, "RIGHT", 10, 0)
-		frame.transferButton:Size(25, 25)
-		frame.transferButton:SetNormalTexture(ICON_TRANSFER)
-		StyleBagToolButton(frame.transferButton)
-		frame.transferButton.ttText = L["Stack Bank to Bags"]
-		frame.transferButton:SetScript("OnEnter", Tooltip_Show)
-		frame.transferButton:SetScript("OnLeave", Tooltip_Hide)
-		local Transfer_OnClick = MOD:RunSortingProcess(MOD.Transfer, "bank bags")
-		frame.transferButton:SetScript("OnClick", Transfer_OnClick)
-
+		if(not isReagent) then
+			frame.BagMenu = CreateFrame("Button", bagName.."BagMenu", frame)
+			frame.BagMenu:Point("BOTTOMLEFT", frame, "TOPLEFT", 0, 1)
+			frame.BagMenu:SetFixedPanelTemplate("Transparent")
+			frame.BagMenu:Hide()
+
+			frame.transferButton = CreateFrame("Button", nil, frame)
+			frame.transferButton:Point("LEFT", frame.stackButton, "RIGHT", 10, 0)
+			frame.transferButton:Size(25, 25)
+			frame.transferButton:SetNormalTexture(ICON_TRANSFER)
+			StyleBagToolButton(frame.transferButton)
+			frame.transferButton.ttText = L["Stack Bank to Bags"]
+			frame.transferButton:SetScript("OnEnter", Tooltip_Show)
+			frame.transferButton:SetScript("OnLeave", Tooltip_Hide)
+			local Transfer_OnClick = MOD:RunSortingProcess(MOD.Transfer, "bank bags")
+			frame.transferButton:SetScript("OnClick", Transfer_OnClick)

-		SV:AddToDisplayAudit(frame)
-		--UISpecialFrames[uisCount] = bagName;
-		self.BagFrames[bagsCount] = frame
+			SV:AddToDisplayAudit(frame)
+			self.BagFrames[bagsCount] = frame

-		if(not isReagent) then
 			frame.bagsButton = CreateFrame("Button", nil, frame)
 			frame.bagsButton:Point("RIGHT", frame.sortButton, "LEFT", -10, 0)
 			frame.bagsButton:Size(25, 25)
@@ -1351,6 +1472,10 @@ do
 			frame.bagsButton:SetScript("OnEnter", Tooltip_Show)
 			frame.bagsButton:SetScript("OnLeave", Tooltip_Hide)
 			local BagBtn_OnClick = function()
+				PlaySound("igMainMenuOption");
+				if(BagFilters:IsShown()) then
+					ToggleFrame(BagFilters)
+				end
 				local numSlots, _ = GetNumBankSlots()
 				if numSlots  >= 1 then
 					ToggleFrame(frame.BagMenu)
@@ -1370,6 +1495,7 @@ do
 			frame.purchaseBagButton:SetScript("OnEnter", Tooltip_Show)
 			frame.purchaseBagButton:SetScript("OnLeave", Tooltip_Hide)
 			local PurchaseBtn_OnClick = function()
+				PlaySound("igMainMenuOption");
 				local _, full = GetNumBankSlots()
 				if not full then
 					SV:StaticPopup_Show("BUY_BANK_SLOT")
@@ -1389,6 +1515,7 @@ do
 				frame.swapButton:SetScript("OnEnter", Tooltip_Show)
 				frame.swapButton:SetScript("OnLeave", Tooltip_Hide)
 				frame.swapButton:SetScript("OnClick", function()
+					PlaySound("igMainMenuOption");
 					if(_G["SVUI_ReagentContainerFrame"]:IsShown()) then
 						_G["SVUI_ReagentContainerFrame"]:Hide()
 					else
@@ -1399,6 +1526,17 @@ do
 			frame:SetScript("OnHide", CloseBankFrame)
 			self.BankFrame = frame
 		else
+			--DepositReagentBank()
+			frame.transferButton = CreateFrame("Button", nil, frame)
+			frame.transferButton:Point("LEFT", frame.stackButton, "RIGHT", 10, 0)
+			frame.transferButton:Size(25, 25)
+			frame.transferButton:SetNormalTexture(ICON_TRANSFER)
+			StyleBagToolButton(frame.transferButton)
+			frame.transferButton.ttText = L["Deposit All Reagents"]
+			frame.transferButton:SetScript("OnEnter", Tooltip_Show)
+			frame.transferButton:SetScript("OnLeave", Tooltip_Hide)
+			frame.transferButton:SetScript("OnClick", DepositReagentBank)
+
 			frame:SetPoint("TOPLEFT", self.BankFrame, "TOPRIGHT", 2, 0)
 			self.ReagentFrame = frame
 		end
@@ -1561,6 +1699,87 @@ function MOD:Load()
 	self:ModifyBags()
 	self.BagFrame:UpdateLayout()

+	BagFilters:SetParent(SV.UIParent)
+	BagFilters:SetPanelTemplate("Default")
+	BagFilters.buttons = {}
+	BagFilters:SetFrameStrata("DIALOG")
+	BagFilters:SetClampedToScreen(true)
+
+	if(select(4, GetBuildInfo()) >= 60000) then
+
+		for i = LE_BAG_FILTER_FLAG_EQUIPMENT, NUM_LE_BAG_FILTER_FLAGS do
+			BagFilters.buttons[i] = CreateFrame("Button", nil, BagFilters)
+
+			BagFilters.buttons[i].hoverTex = BagFilters.buttons[i]:CreateTexture(nil, 'OVERLAY')
+			BagFilters.buttons[i].hoverTex:SetAllPoints()
+			BagFilters.buttons[i].hoverTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
+			BagFilters.buttons[i].hoverTex:SetBlendMode("ADD")
+			BagFilters.buttons[i].hoverTex:Hide()
+
+			BagFilters.buttons[i].activeTex = BagFilters.buttons[i]:CreateTexture(nil, 'OVERLAY')
+			BagFilters.buttons[i].activeTex:SetAllPoints()
+			BagFilters.buttons[i].activeTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
+			BagFilters.buttons[i].activeTex:SetVertexColor(0,0.7,0)
+			BagFilters.buttons[i].activeTex:SetBlendMode("ADD")
+			BagFilters.buttons[i].activeTex:Hide()
+
+			BagFilters.buttons[i].text = BagFilters.buttons[i]:CreateFontString(nil, 'BORDER')
+			BagFilters.buttons[i].text:SetAllPoints()
+			BagFilters.buttons[i].text:SetFont(SV.Media.font.roboto,12,"OUTLINE")
+			BagFilters.buttons[i].text:SetJustifyH("LEFT")
+			BagFilters.buttons[i].text:SetText(BAG_FILTER_LABELS[i])
+
+			BagFilters.buttons[i]:SetScript("OnEnter", DD_OnEnter)
+			BagFilters.buttons[i]:SetScript("OnLeave", DD_OnLeave)
+
+			BagFilters.buttons[i]:SetHeight(16)
+			BagFilters.buttons[i]:SetWidth(115)
+
+			BagFilters.buttons[i].FilterID = i
+			BagFilters.buttons[i]:SetScript("OnClick", DD_OnClick)
+
+			if i == LE_BAG_FILTER_FLAG_EQUIPMENT then
+				BagFilters.buttons[i]:SetPoint("TOPLEFT", BagFilters, "TOPLEFT", 10, -10)
+			else
+				BagFilters.buttons[i]:SetPoint("TOPLEFT", BagFilters.buttons[i - 1], "BOTTOMLEFT", 0, 0)
+			end
+
+			BagFilters.buttons[i]:Show()
+		end
+
+		local clearID = NUM_LE_BAG_FILTER_FLAGS + 1
+
+		BagFilters.buttons[clearID] = CreateFrame("Button", nil, BagFilters)
+
+		BagFilters.buttons[clearID].hoverTex = BagFilters.buttons[clearID]:CreateTexture(nil, 'OVERLAY')
+		BagFilters.buttons[clearID].hoverTex:SetAllPoints()
+		BagFilters.buttons[clearID].hoverTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
+		BagFilters.buttons[clearID].hoverTex:SetBlendMode("ADD")
+		BagFilters.buttons[clearID].hoverTex:Hide()
+
+		BagFilters.buttons[clearID].text = BagFilters.buttons[clearID]:CreateFontString(nil, 'BORDER')
+		BagFilters.buttons[clearID].text:SetAllPoints()
+		BagFilters.buttons[clearID].text:SetFont(SV.Media.font.roboto,12,"OUTLINE")
+		BagFilters.buttons[clearID].text:SetJustifyH("LEFT")
+		BagFilters.buttons[clearID].text:SetText(CLEAR_ALL .. " " .. FILTERS)
+
+		BagFilters.buttons[clearID]:SetScript("OnEnter", DD_OnEnter)
+		BagFilters.buttons[clearID]:SetScript("OnLeave", DD_OnLeave)
+
+		BagFilters.buttons[clearID]:SetHeight(16)
+		BagFilters.buttons[clearID]:SetWidth(115)
+
+		BagFilters.buttons[clearID].FilterID = 0
+		BagFilters.buttons[clearID]:SetScript("OnClick", DDClear_OnClick)
+
+		BagFilters.buttons[clearID]:SetPoint("TOPLEFT", BagFilters.buttons[NUM_LE_BAG_FILTER_FLAGS], "BOTTOMLEFT", 0, -10)
+
+		BagFilters.buttons[clearID]:Show()
+	end
+
+	BagFilters:Hide()
+	SV:AddToDisplayAudit(BagFilters)
+
 	BankFrame:UnregisterAllEvents()
 	for i = 1, NUM_CONTAINER_FRAMES do
 		local frame = _G["ContainerFrame"..i]
@@ -1583,7 +1802,7 @@ function MOD:Load()
 	self:RegisterEvent("PLAYER_ENTERING_WORLD")
 	self:RegisterEvent("PLAYER_TRADE_MONEY", "UpdateGoldText")
 	self:RegisterEvent("TRADE_MONEY_CHANGED", "UpdateGoldText")
-	if(SV.GameVersion >= 60000) then self:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED"); end
+	self:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED")

 	StackSplitFrame:SetFrameStrata("DIALOG")

diff --git a/Interface/AddOns/SVUI/packages/override/SVOverride.lua b/Interface/AddOns/SVUI/packages/override/SVOverride.lua
index 58f5e6b..ecd51cf 100644
--- a/Interface/AddOns/SVUI/packages/override/SVOverride.lua
+++ b/Interface/AddOns/SVUI/packages/override/SVOverride.lua
@@ -1067,7 +1067,6 @@ function MOD:Load()
 	SV.Mentalo:Add(SVUI_LootFrameHolder, L["Loot Frame"], nil, nil, nil, nil, "SVUI_LootFrame");
 	SV:AddToDisplayAudit(SVUI_LootFrame);
 	SVUI_LootFrame:Hide();
-	--tinsert(UISpecialFrames, "SVUI_LootFrame");

 	UIParent:UnregisterEvent("LOOT_BIND_CONFIRM")
 	UIParent:UnregisterEvent("CONFIRM_DISENCHANT_ROLL")
diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
index 5c97e27..a084307 100644
--- a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
+++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
@@ -875,15 +875,19 @@ function MOD:RefreshUnitLayout(frame, template)
 		else
 			castbar.SafeZone = nil;
 			castbar.LatencyTexture:Hide()
-		end
+		end
+
+		if castbar.Grip then
+			castbar.Grip:Width(castHeight + 2)
+			castbar.Grip:Height(castHeight + 2)
+		end
+
 		if castbar.Icon then
 			if db.castbar.icon then
-				castbar.Icon.bg:Width(castHeight + 2)
-				castbar.Icon.bg:Height(castHeight + 2)
-				castbar.Icon.bg:Show()
-			else
-				castbar.Icon.bg:Hide()
-				castbar.Icon = nil
+				castbar.Grip.Icon:SetAllPoints(castbar.Grip)
+				castbar.Grip.Icon:Show()
+			else
+				castbar.Grip.Icon:Hide()
 			end
 		end

diff --git a/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua b/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
index 7722dd6..f0d1e4d 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
@@ -512,25 +512,32 @@ function MOD:CreateCastbar(frame, reversed, moverName, ryu, useFader, isBoss)
 	local cbName = frame:GetName().."Castbar"
 	local castbarHolder = CreateFrame("Frame", cbName, castbar)

-	local iconHolder = CreateFrame("Frame", nil, castbar)
+	local grip = CreateFrame("Frame", nil, castbar)
+	grip:SetFrameStrata("HIGH")
+
+	local iconHolder = CreateFrame("Frame", nil, grip)
 	iconHolder:SetFixedPanelTemplate("Inset", false)
-	iconHolder:SetFrameStrata("HIGH")
+	grip.Icon = iconHolder
+
 	local buttonIcon = iconHolder:CreateTexture(nil, "BORDER")
 	buttonIcon:FillInner()
 	buttonIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	buttonIcon.bg = iconHolder;
 	castbar.Icon = buttonIcon;
+
 	local shieldIcon = iconHolder:CreateTexture(nil, "ARTWORK")
-	shieldIcon:Point("TOPLEFT",buttonIcon,"TOPLEFT",-7,7)
-	shieldIcon:Point("BOTTOMRIGHT",buttonIcon,"BOTTOMRIGHT",7,-8)
+	shieldIcon:Point("TOPLEFT", buttonIcon, "TOPLEFT", -7, 7)
+	shieldIcon:Point("BOTTOMRIGHT", buttonIcon, "BOTTOMRIGHT", 7, -8)
 	shieldIcon:SetTexture("Interface\\Addons\\SVUI\\assets\\artwork\\Unitframe\\Castbar\\SHIELD")
 	castbar.Shield = shieldIcon;

-	castbar.Time = iconHolder:CreateFontString(nil, "OVERLAY")
+	castbar.Time = grip:CreateFontString(nil, "OVERLAY")
 	castbar.Time:SetDrawLayer("OVERLAY", 7)
-	castbar.Text = iconHolder:CreateFontString(nil, "OVERLAY")
+
+	castbar.Text = grip:CreateFontString(nil, "OVERLAY")
 	castbar.Text:SetDrawLayer("OVERLAY", 7)

+	castbar.Grip = grip
+

 	local bgFrame = CreateFrame("Frame", nil, castbar)
 	local hadouken = CreateFrame("Frame", nil, castbar)
@@ -591,7 +598,7 @@ function MOD:CreateCastbar(frame, reversed, moverName, ryu, useFader, isBoss)
 			SV.Animate:Sprite(hadouken[2],false,false,true)

 			castbar:Point("BOTTOMLEFT", castbarHolder, "BOTTOMLEFT", 1, 1)
-			iconHolder:Point("LEFT", castbar, "RIGHT", 4, 0)
+			grip:Point("LEFT", castbar, "RIGHT", 4, 0)

 			castbar.Time:Point("RIGHT", castbar, "LEFT", -4, 0)
 			castbar.Time:SetJustifyH("CENTER")
@@ -627,13 +634,13 @@ function MOD:CreateCastbar(frame, reversed, moverName, ryu, useFader, isBoss)
 			SV.Animate:Sprite(hadouken[2],false,false,true)

 			castbar:Point("BOTTOMRIGHT", castbarHolder, "BOTTOMRIGHT", -1, 1)
-			iconHolder:Point("RIGHT", castbar, "LEFT", -4, 0)
+			grip:Point("RIGHT", castbar, "LEFT", -4, 0)

 			castbar.Time:Point("LEFT", castbar, "RIGHT", 4, 0)
 			castbar.Time:SetJustifyH("CENTER")
 		end

-		-- castbar.Time:Point("CENTER", iconHolder, "CENTER", 0, 0)
+		-- castbar.Time:Point("CENTER", grip, "CENTER", 0, 0)
 		-- castbar.Time:SetJustifyH("CENTER")

 		castbar.Text:SetPoint("CENTER", castbar, "CENTER", 0, 0)
@@ -664,9 +671,9 @@ function MOD:CreateCastbar(frame, reversed, moverName, ryu, useFader, isBoss)

 		if reversed then
 			castbar:SetReverseFill(true)
-			iconHolder:Point("LEFT", castbar, "RIGHT", 6, 0)
+			grip:Point("LEFT", castbar, "RIGHT", 6, 0)
 		else
-			iconHolder:Point("RIGHT", castbar, "LEFT", -6, 0)
+			grip:Point("RIGHT", castbar, "LEFT", -6, 0)
 		end
 	end

diff --git a/Interface/AddOns/SVUI/scripts/mounts.lua b/Interface/AddOns/SVUI/scripts/mounts.lua
index 29c56e2..7b9d1c2 100644
--- a/Interface/AddOns/SVUI/scripts/mounts.lua
+++ b/Interface/AddOns/SVUI/scripts/mounts.lua
@@ -45,7 +45,7 @@ local NewHook = hooksecurefunc;
 local CountMounts, MountInfo, RandomMount, MountUp, UnMount;

 local MountListener = CreateFrame("Frame");
-MountListener.favorites = 0
+MountListener.favorites = false
 --[[
 ##########################################################
 LOCAL FUNCTIONS
@@ -56,10 +56,10 @@ if(select(4, GetBuildInfo()) >= 60000) then
 		return C_MountJournal.GetNumMounts()
 	end
 	function MountInfo(index)
-		return C_MountJournal.GetMountInfo(index)
+		return true, C_MountJournal.GetMountInfo(index)
 	end
 	function RandomMount()
-		if(MountListener.favorites > 0) then
+		if(MountListener.favorites) then
 			return 0
 		end
 		maxMounts = C_MountJournal.GetNumMounts()
@@ -82,7 +82,7 @@ else
 		return random(1, maxMounts)
 	end
 	function MountUp(index)
-		index = index or random(1, maxMounts)
+		index = index or RandomMount()
 		return CallCompanion("MOUNT", index)
 	end
 	UnMount = Dismount
@@ -108,45 +108,50 @@ local function UpdateMountCheckboxes(button, index)
 			if(SV.cache.Mounts.types["GROUND"] ~= index) then
 				SV.cache.Mounts.types["GROUND"] = index
 			end
-			bar["GROUND"]:SetChecked(1)
+			bar["GROUND"]:SetChecked(true)
 		else
-			bar["GROUND"]:SetChecked(0)
+			bar["GROUND"]:SetChecked(false)
 		end

 		if(SV.cache.Mounts.names["FLYING"] == creatureName) then
 			if(SV.cache.Mounts.types["FLYING"] ~= index) then
 				SV.cache.Mounts.types["FLYING"] = index
 			end
-			bar["FLYING"]:SetChecked(1)
+			bar["FLYING"]:SetChecked(true)
 		else
-			bar["FLYING"]:SetChecked(0)
+			bar["FLYING"]:SetChecked(false)
 		end

 		if(SV.cache.Mounts.names["SWIMMING"] == creatureName) then
 			if(SV.cache.Mounts.types["SWIMMING"] ~= index) then
 				SV.cache.Mounts.types["SWIMMING"] = index
 			end
-			bar["SWIMMING"]:SetChecked(1)
+			bar["SWIMMING"]:SetChecked(true)
 		else
-			bar["SWIMMING"]:SetChecked(0)
+			bar["SWIMMING"]:SetChecked(false)
 		end

 		if(SV.cache.Mounts.names["SPECIAL"] == creatureName) then
 			if(SV.cache.Mounts.types["SPECIAL"] ~= index) then
 				SV.cache.Mounts.types["SPECIAL"] = index
 			end
-			bar["SPECIAL"]:SetChecked(1)
+			bar["SPECIAL"]:SetChecked(true)
 		else
-			bar["SPECIAL"]:SetChecked(0)
+			bar["SPECIAL"]:SetChecked(false)
 		end
 	end
 end

 local function UpdateMountsCache()
-	if(not MountJournal or not MountJournal.cachedMounts) then return end
+	if(not MountJournal) then return end
 	local num = CountMounts()
+	MountListener.favorites = false
+
 	for index = 1, num, 1 do
-		local _, info, id = MountInfo(index)
+		local _, info, id, _, _, _, _, _, favorite = MountInfo(index)
+		if(favorite == true) then
+			MountListener.favorites = true
+		end
 		if(SV.cache.Mounts.names["GROUND"] == info) then
 			if(SV.cache.Mounts.types["GROUND"] ~= index) then
 				SV.cache.Mounts.types["GROUND"] = index
@@ -171,7 +176,7 @@ local function UpdateMountsCache()
 end

 local function Update_MountCheckButtons()
-	if(not MountJournal or not MountJournal.cachedMounts) then return end
+	if(not MountJournal or (MountJournal and not MountJournal.cachedMounts)) then return end
 	local count = #MountJournal.cachedMounts
 	if(type(count) ~= "number") then return end
 	local scrollFrame = MountJournal.ListScrollFrame;
@@ -233,7 +238,7 @@ local CheckButton_OnClick = function(self)
 	local key = self.key

 	if(index) then
-		if(self:GetChecked() == 1) then
+		if(self:GetChecked() == true) then
 			SV.cache.Mounts.types[key] = index
 			SV.cache.Mounts.names[key] = name
 		else
@@ -318,7 +323,7 @@ local function SetMountCheckButtons()
 	    buttonBar["GROUND"]:SetPanelColor(0.2, 0.7, 0.1, 0.15)
 	    buttonBar["GROUND"]:GetCheckedTexture():SetVertexColor(0.2, 0.7, 0.1, 1)
 	    buttonBar["GROUND"].key = "GROUND"
-		buttonBar["GROUND"]:SetChecked(0)
+		buttonBar["GROUND"]:SetChecked(false)
 		buttonBar["GROUND"]:SetScript("OnClick", CheckButton_OnClick)
 		buttonBar["GROUND"]:SetScript("OnEnter", CheckButton_OnEnter)
 		buttonBar["GROUND"]:SetScript("OnLeave", CheckButton_OnLeave)
@@ -331,7 +336,7 @@ local function SetMountCheckButtons()
 	    buttonBar["FLYING"]:SetPanelColor(1, 1, 0.2, 0.15)
 	    buttonBar["FLYING"]:GetCheckedTexture():SetVertexColor(1, 1, 0.2, 1)
 	    buttonBar["FLYING"].key = "FLYING"
-		buttonBar["FLYING"]:SetChecked(0)
+		buttonBar["FLYING"]:SetChecked(false)
 		buttonBar["FLYING"]:SetScript("OnClick", CheckButton_OnClick)
 		buttonBar["FLYING"]:SetScript("OnEnter", CheckButton_OnEnter)
 		buttonBar["FLYING"]:SetScript("OnLeave", CheckButton_OnLeave)
@@ -344,7 +349,7 @@ local function SetMountCheckButtons()
 	    buttonBar["SWIMMING"]:SetPanelColor(0.2, 0.42, 0.76, 0.15)
 	    buttonBar["SWIMMING"]:GetCheckedTexture():SetVertexColor(0.2, 0.42, 0.76, 1)
 	    buttonBar["SWIMMING"].key = "SWIMMING"
-		buttonBar["SWIMMING"]:SetChecked(0)
+		buttonBar["SWIMMING"]:SetChecked(false)
 		buttonBar["SWIMMING"]:SetScript("OnClick", CheckButton_OnClick)
 		buttonBar["SWIMMING"]:SetScript("OnEnter", CheckButton_OnEnter)
 		buttonBar["SWIMMING"]:SetScript("OnLeave", CheckButton_OnLeave)
@@ -357,7 +362,7 @@ local function SetMountCheckButtons()
 	    buttonBar["SPECIAL"]:SetPanelColor(0.7, 0.1, 0.1, 0.15)
 	    buttonBar["SPECIAL"]:GetCheckedTexture():SetVertexColor(0.7, 0.1, 0.1, 1)
 	    buttonBar["SPECIAL"].key = "SPECIAL"
-		buttonBar["SPECIAL"]:SetChecked(0)
+		buttonBar["SPECIAL"]:SetChecked(false)
 		buttonBar["SPECIAL"]:SetScript("OnClick", CheckButton_OnClick)
 		buttonBar["SPECIAL"]:SetScript("OnEnter", CheckButton_OnEnter)
 		buttonBar["SPECIAL"]:SetScript("OnLeave", CheckButton_OnLeave)
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
index db76226..5a09b33 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
@@ -836,35 +836,40 @@ SV.Options.args.common = {
 	}
 };

-local q, r, dnt = "", "", "";
+local q, r, community, dnt = "", "", "", "";
 local s = "\n";
 local p = "\n"..format("|cff4f4f4f%s|r", "---------------------------------------------");
-local t = {"Munglunch", "Elv", "Tukz", "Azilroka", "Sortokk", "AlleyKat", "Quokka", "Haleth", "P3lim", "Haste", "Totalpackage", "Kryso", "Thepilli"};
-local u = {"Wowinterface Community", "Doonga - (The man who keeps me busy)", "Judicate", "Cazart506", "Movster", "MuffinMonster", "Joelsoul", "Trendkill09", "Luamar", "Zharooz", "Lyn3x5", "Madh4tt3r", "Xarioth", "Sinnisterr", "Melonmaniac", "Hojowameeat", "Xandeca", "Bkan", "Daigan - (My current 2nd in command)", "AtomicKiller", "Meljen", "Moondoggy", "Stormblade", "Schreibstift", "Anj", "Risien", "Penguinsane", "Cromax", "Nitro_Turtle", "Shinzou", "Autolykus", "Taotao"};
+local t = {"Munglunch", "Elv", "Tukz", "Azilroka", "Sortokk", "Kkthnx", "AlleyKat", "Quokka", "Haleth", "P3lim", "Haste", "Totalpackage", "Kryso", "Thepilli"};
+local u = {"Sinnisterr - (My wife, the MOST ruthless Warlock you will ever meet)", "Doonga - (The man who keeps me busy)", "Daigan - (My current 2nd in command)", "Penguinsane - (Tester extraordinaire)", "FaolanKing - (King of the bug report portal)"};
 local v = {"Movster", "Cazart506", "FaolanKing", "Doonga", "Other Silent Partners.. (Let me know if I have forgotten you)"};
+local w = {"Wowinterface Community", "Judicate", "Cazart506", "Movster", "MuffinMonster", "Joelsoul", "Trendkill09", "Luamar", "Zharooz", "Lyn3x5", "Madh4tt3r", "Xarioth", "Melonmaniac", "Hojowameeat", "Xandeca", "Bkan", "AtomicKiller", "Meljen", "Moondoggy", "Stormblade", "Schreibstift", "Anj", "Risien", "Cromax", "Nitro_Turtle", "Shinzou", "Autolykus", "Taotao"};
 local credit_header = format("|cffff9900%s|r", "SUPERVILLAIN CREDITS:")..p;
 local credit_sub = format("|cffff9900%s|r", "CREATED BY:").."  Munglunch"..p;
-local credit_sub2 = format("|cffff9900%s|r", "USING ORIGINAL CODE BY:").."  Elv, Tukz, Azilroka, Sortokk"..p;
-local special_thanks = format("|cffff9900%s|r", "A VERY SPECIAL THANKS TO:  ")..format("|cffffff00%s|r", "Movster").."  ..who inspired me to bring this project back to life!"..p;
-local coding = format("|cff3399ff%s|r", L['CODE MONKEYS  (aka ORIGINAL AUTHORS):'])..p;
-local testing = format("|cffaa33ff%s|r", L['PERFECTIONISTS  (aka TESTERS):'])..p;
+local credit_sub2 = format("|cffff9900%s|r", "CODE GRANTS BY:").."  Elv, Tukz, Azilroka, Sortokk"..p;
+local special_thanks = format("|cffff9900%s|r", "SPECIAL THANKS TO:  ")..format("|cfff81422%s|r |cff2288cc(@WowInterface.com)|r", "Cairenn").."  ..the most patient and accomodating person I know!\n\n"..format("|cffff9900%s|r", "A VERY SPECIAL THANKS TO:  ")..format("|cffffff00%s|r", "Movster").."  ..who inspired me to bring this project back to life!"..p;
+local coding = format("|cff3399ff%s|r", L['CODE MONKEYS  (aka CONTRIBUTORS):'])..p;
+local testing = format("|cffaa33ff%s|r", L['PERFECTIONISTS  (aka CORE TESTING TEAM):'])..p;
+local testing2 = format("|cffaa33ff%s|r", L['MINIONS  (aka COMMUNITY TESTERS):'])..p;
 local doners = format("|cff99ff33%s|r", L['KINGPINS  (aka INVESTORS):'])..p;
 local music = format("|cff00ccff%s|r", 'Theme Song By: Fingathing [taken from the song: SuperHero Music]');

-tsort(t, function(o,n) return o < n end)
 for _, x in pairs(t) do
 	q = q..s..x
+end
+
+for _, x in pairs(u) do
+	r = r..s..x
 end
-tsort(u, function(o,n) return o < n end)
-for _, y in pairs(u) do
-	r = r..s..y
+
+for _, x in pairs(v) do
+	dnt = dnt..s..x
 end
-tsort(u, function(o,n) return o < n end)
-for _, z in pairs(v) do
-	dnt = dnt..s..z
+
+for _, x in pairs(w) do
+	community = community..s..x
 end

-local creditsString = credit_header..'\n'..credit_sub..'\n'..credit_sub2..'\n'..special_thanks..'\n\n'..coding..q..'\n\n'..testing..r..'\n\n'..doners..dnt..'\n\n'..music..'\n\n';
+local creditsString = credit_header..'\n'..credit_sub..'\n'..credit_sub2..'\n'..special_thanks..'\n\n'..coding..q..'\n\n'..testing..r..'\n\n'..testing2..community..'\n\n'..doners..dnt..'\n\n'..music..'\n\n';

 SV.Options.args.credits = {
 	type = "group",
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
index c34500a..02e3b07 100644
--- a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
@@ -440,8 +440,6 @@ function PLUGIN:LoadArchaeologyMode()

 	for i = 1, 12 do
 		local bar = CreateFrame("StatusBar", nil, ArchCrafting)
-		local race = bar:CreateFontString()
-		local progress = bar:CreateFontString()
 		local solve = CreateFrame("Button", nil, bar, "SecureHandlerClickTemplate")
 		local yOffset;

@@ -459,12 +457,14 @@ function PLUGIN:LoadArchaeologyMode()

 		local sOffset = SV.Scale(1)
 		-- Race Text
+		local race = bar:CreateFontString()
 		race:SetFontObject(NumberFont_Outline_Large)
 		race:SetText(RACE)
 		race:SetPoint("TOPLEFT", bar, "TOPLEFT", sOffset, -sOffset)
 		race:SetTextColor(1,0.8,0)

 		-- Progress Text
+		local progress = bar:CreateFontString()
 		progress:SetFont(SV.Media.font.roboto, 11, "OUTLINE")
 		progress:SetText("")
 		progress:SetPoint("BOTTOMRIGHT", bar, "BOTTOMRIGHT", -sOffset, sOffset)
diff --git a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
index a6fee08..a55841e 100644
--- a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
+++ b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
@@ -69,52 +69,52 @@ LOCAL FUNCTIONS
 ]]--
 local RefreshLoggedSlot = function(self, slotID, save)
 	if(not self[slotID]) then return end
-	local bag = self:GetID()
-	local slot, _ = self[slotID], nil;
+	--print(self[slotID]:GetName())
+	local bag = self:GetID();
+	local slot = self[slotID];
 	local bagType = self.bagFamily;
-	local texture, count, locked = GetContainerItemInfo(bag, slotID)
-	local itemLink = GetContainerItemLink(bag, slotID);
-	local key;
+
 	slot:Show()
-	slot.name, slot.rarity = nil, nil;
-	local start, duration, enable = GetContainerItemCooldown(bag, slotID)
-	CooldownFrame_SetTimer(slot.cooldown, start, duration, enable)
-	if duration > 0 and enable == 0 then
+
+	local texture, count, locked, rarity = GetContainerItemInfo(bag, slotID);
+	local start, duration, enable = GetContainerItemCooldown(bag, slotID);
+	local itemLink = GetContainerItemLink(bag, slotID);
+
+	CooldownFrame_SetTimer(slot.cooldown, start, duration, enable);
+
+	if(duration > 0 and enable == 0) then
 		SetItemButtonTextureVertexColor(slot, 0.4, 0.4, 0.4)
 	else
 		SetItemButtonTextureVertexColor(slot, 1, 1, 1)
-	end
-	if bagType then
+	end
+
+	if(bagType) then
 		local r, g, b = bagType[1], bagType[2], bagType[3];
 		slot:SetBackdropColor(r, g, b, 0.5)
 		slot:SetBackdropBorderColor(r, g, b, 1)
-	elseif itemLink then
-		local class, subclass, maxStack;
-		key, _, slot.rarity, _, _, class, subclass, maxStack = GetItemInfo(itemLink)
-		slot.name = key
-		local z, A, C = GetContainerItemQuestInfo(bag, slotID)
-		if A and not isActive then
-			slot:SetBackdropBorderColor(1.0, 0.3, 0.3)
-		elseif A or z then
-			slot:SetBackdropBorderColor(1.0, 0.3, 0.3)
-		elseif slot.rarity and slot.rarity>1 then
-			local D, E, F = GetItemQualityColor(slot.rarity)
-			slot:SetBackdropBorderColor(D, E, F)
+	elseif(itemLink) then
+		local key, _, rarity, _, _, class, subclass, maxStack = GetItemInfo(itemLink)
+		if(rarity and rarity > 1) then
+			local r, g, b = GetItemQualityColor(rarity)
+			slot:SetBackdropBorderColor(r, g, b)
 		else
 			slot:SetBackdropBorderColor(0, 0, 0)
 		end
-		if (key and save) then
+
+		if(key and save) then
 			local id = GetContainerItemID(bag,slotID)
 			if id ~= 6948 then PLUGIN.myStash[bag][key] = GetItemCount(id,true) end
 		end
 	else
 		slot:SetBackdropBorderColor(0, 0, 0)
-	end
-	if C_NewItems.IsNewItem(bag, slotID)then
+	end
+
+	if(C_NewItems.IsNewItem(bag, slotID)) then
 		ActionButton_ShowOverlayGlow(slot)
 	else
 		ActionButton_HideOverlayGlow(slot)
-	end
+	end
+
 	SetItemButtonTexture(slot, texture)
 	SetItemButtonCount(slot, count)
 	SetItemButtonDesaturated(slot, locked, 0.5, 0.5, 0.5)
@@ -130,7 +130,7 @@ local RefreshLoggedSlots = function(self, bagID, save)
 end

 local RefreshLoggedBags = function(self)
-	for id,bag in ipairs(self.Bags)do
+	for id,bag in pairs(self.Bags)do
 		if PLUGIN.myStash[id] then
 			twipe(PLUGIN.myStash[id])
 		else
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua
index 6069bbc..dcb5f09 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua
@@ -209,15 +209,21 @@ local function AchievementStyle()
 	AchievementFrameComparisonSummaryFriendStatusBar.text:SetPoint("CENTER")
 	AchievementFrameComparisonHeader:Point("BOTTOMRIGHT", AchievementFrameComparison, "TOPRIGHT", 45, -20)

-	for f = 1, 10 do
-		local d = _G["AchievementFrameSummaryCategoriesCategory"..f]
-		local i = _G["AchievementFrameSummaryCategoriesCategory"..f.."Button"]
-		local j = _G["AchievementFrameSummaryCategoriesCategory"..f.."ButtonHighlight"]
-		BarStyleHelper(d)
-		i:RemoveTextures()
-		j:RemoveTextures()
-		_G[j:GetName().."Middle"]:SetTexture(1, 1, 1, 0.3)
-		_G[j:GetName().."Middle"]:SetAllPoints(d)
+	for i = 1, 12 do
+		local categoryName = ("AchievementFrameSummaryCategoriesCategory%d"):format(i)
+		if(_G[categoryName]) then
+			if _G[categoryName.."Button"] then
+				_G[categoryName.."Button"]:RemoveTextures()
+			end
+			local hlName = categoryName.."ButtonHighlight"
+			local highlight = _G[hlName]
+			if(highlight) then
+				highlight:RemoveTextures()
+				_G[hlName.."Middle"]:SetTexture(1, 1, 1, 0.3)
+				_G[hlName.."Middle"]:SetAllPoints(categoryName)
+			end
+			BarStyleHelper(_G[categoryName])
+		end
 	end

 	AchievementFrame:HookScript("OnShow", function(self)
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua
index d4695d4..7924b6b 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua
@@ -110,18 +110,29 @@ local function PetJournalStyle()
 	MountJournal.MountDisplay.ShadowOverlay:RemoveTextures()
 	MountJournal.MountCount:RemoveTextures()
 	MountJournalListScrollFrame:RemoveTextures()
+	MountJournalMountButton:RemoveTextures()
 	MountJournalMountButton:SetButtonTemplate()
 	MountJournalSearchBox:SetEditboxTemplate()

 	STYLE:ApplyScrollFrameStyle(MountJournalListScrollFrameScrollBar)
 	MountJournal.MountDisplay:SetFixedPanelTemplate("ModelComic")

-	for i = 1, #MountJournal.ListScrollFrame.buttons do
-		local button = _G["MountJournalListScrollFrameButton"..i]
+	local buttons = MountJournal.ListScrollFrame.buttons
+	for i = 1, #buttons do
+		local button = buttons[i]
 		if(button) then
 			STYLE:ApplyItemButtonStyle(button, nil, true, true)
 			local bar = _G["SVUI_MountSelectBar"..i]
 			if(bar) then bar:SetParent(button.Panel) end
+			if(SV.GameVersion >= 60000) then
+				if(button.favorite) then
+					local fg = CreateFrame("Frame", nil, button)
+					fg:SetSize(40,40)
+					fg:SetPoint("TOPLEFT", button, "TOPLEFT", -1, 1)
+					fg:SetFrameLevel(button:GetFrameLevel() + 30)
+					button.favorite:SetParent(fg)
+				end
+			end
 		end
 	end

@@ -216,19 +227,23 @@ local function PetJournalStyle()
 	PetJournalPetCardPetInfo.levelBG:SetAlpha(0)
 	PetJournalPetCardPetInfoIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
 	STYLE:ApplyItemButtonStyle(PetJournalPetCardPetInfo, nil, true, true)
+
 	local fg = CreateFrame("Frame", nil, PetJournalPetCardPetInfo)
 	fg:SetSize(40,40)
 	fg:SetPoint("TOPLEFT", PetJournalPetCardPetInfo, "TOPLEFT", -1, 1)
 	fg:SetFrameLevel(PetJournalPetCardPetInfo:GetFrameLevel() + 30)
+
 	PetJournalPetCardPetInfo.favorite:SetParent(fg)
 	PetJournalPetCardPetInfo.Panel:WrapOuter(PetJournalPetCardPetInfoIcon)
 	PetJournalPetCardPetInfoIcon:SetParent(PetJournalPetCardPetInfo.Panel)
 	PetJournalPetCardPetInfo.level:SetParent(PetJournalPetCardPetInfo.Panel)
+
 	local R = PetJournalPrimaryAbilityTooltip;R.Background:SetTexture(0,0,0,0)
 	if R.Delimiter1 then
 		R.Delimiter1:SetTexture(0,0,0,0)
 		R.Delimiter2:SetTexture(0,0,0,0)
-	end
+	end
+
 	R.BorderTop:SetTexture(0,0,0,0)
 	R.BorderTopLeft:SetTexture(0,0,0,0)
 	R.BorderTopRight:SetTexture(0,0,0,0)
@@ -238,6 +253,7 @@ local function PetJournalStyle()
 	R.BorderBottomRight:SetTexture(0,0,0,0)
 	R.BorderBottomLeft:SetTexture(0,0,0,0)
 	R:SetFixedPanelTemplate("Transparent", true)
+
 	for b = 1, 6 do
 		local S = _G['PetJournalPetCardSpell'..b]
 		S:SetFrameLevel(S:GetFrameLevel() + 2)
@@ -246,7 +262,8 @@ local function PetJournalStyle()
 		S.Panel:SetAllPoints()
 		S.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
 		S.icon:FillInner(S.Panel)
-	end
+	end
+
 	PetJournalPetCardHealthFrame.healthBar:RemoveTextures()
 	PetJournalPetCardHealthFrame.healthBar:SetPanelTemplate('Default')
 	PetJournalPetCardHealthFrame.healthBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
@@ -259,9 +276,18 @@ local function PetJournalStyle()
 		ToyBox:RemoveTextures()
 		ToyBoxProgressBar:SetPanelTemplate("Bar", true)
 		ToyBoxSearchBox:SetEditboxTemplate()
+		ToyBoxFilterButton:RemoveTextures()
 		ToyBoxFilterButton:SetButtonTemplate()
-		STYLE:ApplyDropdownStyle(ToyBoxFilterDropDown)
-		ToyBoxIconsFrame:SetBasicPanel()
+		ToyBoxIconsFrame:RemoveTextures()
+		ToyBoxIconsFrame:SetFixedPanelTemplate('ModelComic')
+
+		MountJournalFilterButton:RemoveTextures()
+		MountJournalFilterButton:SetButtonTemplate()
+
+		MountJournal.SummonRandomFavoriteButton:RemoveTextures()
+		MountJournal.SummonRandomFavoriteButton:SetSlotTemplate(true, 2, 0, 0, true)
+		MountJournal.SummonRandomFavoriteButton.texture:SetTexture([[Interface\ICONS\ACHIEVEMENT_GUILDPERK_MOUNTUP]])
+		MountJournal.SummonRandomFavoriteButton.texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)

 		for i = 1, 18 do
 			local gName = ("ToySpellButton%d"):format(i)
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua
index 60bc03b..068ca9f 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua
@@ -176,7 +176,9 @@ local function TalentFrameStyle()
 		PlayerSpecTab1:Point(d, x, f, -1, h)
 	end)

-	for i = 1, MAX_NUM_TALENT_TIERS do
+	local maxTiers = (SV.GameVersion >= 60000) and MAX_TALENT_TIERS or MAX_NUM_TALENT_TIERS
+
+	for i = 1, maxTiers do
 		local gName = ("PlayerTalentFrameTalentsTalentRow%d"):format(i)
 		local rowFrame = _G[gName]
 		if(rowFrame) then
@@ -191,14 +193,14 @@ local function TalentFrameStyle()
 			for z = 1, NUM_TALENT_COLUMNS do
 				local talentItem = _G[("%sTalent%d"):format(gName, z)]
 				if(talentItem) then
-					STYLE:ApplyItemButtonStyle(talentItem, false, true)
+					STYLE:ApplyItemButtonStyle(talentItem)
 				end
 			end
 		end
 	end

 	hooksecurefunc("TalentFrame_Update", function()
-		for i = 1, MAX_NUM_TALENT_TIERS do
+		for i = 1, maxTiers do
 			local gName = ("PlayerTalentFrameTalentsTalentRow%d"):format(i)

 			for z = 1, NUM_TALENT_COLUMNS do
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
index 6c6b599..268fa0d 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
@@ -186,7 +186,7 @@ function STYLE:ApplyItemButtonStyle(frame, adjust, shrink, noScript)
 		if shrink then
 			frame:SetPanelTemplate("Button", true, 1, -2, -2)
 		else
-			frame:SetFixedPanelTemplate("Button")
+			frame:SetPanelTemplate("Button", true, 1, -1, -1)
 		end
 	end

diff --git a/Interface/BattlefieldFrame/Battleground-Alliance.blp b/Interface/BattlefieldFrame/Battleground-Alliance.blp
index 9c11a82..6000090 100644
Binary files a/Interface/BattlefieldFrame/Battleground-Alliance.blp and b/Interface/BattlefieldFrame/Battleground-Alliance.blp differ
diff --git a/Interface/BattlefieldFrame/Battleground-Horde.blp b/Interface/BattlefieldFrame/Battleground-Horde.blp
index 5a5db15..5532ffc 100644
Binary files a/Interface/BattlefieldFrame/Battleground-Horde.blp and b/Interface/BattlefieldFrame/Battleground-Horde.blp differ
diff --git a/Interface/FriendsFrame/Battlenet-Battleneticon.blp b/Interface/FriendsFrame/Battlenet-Battleneticon.blp
new file mode 100644
index 0000000..c45609b
Binary files /dev/null and b/Interface/FriendsFrame/Battlenet-Battleneticon.blp differ
diff --git a/Interface/FriendsFrame/Battlenet-D3icon.blp b/Interface/FriendsFrame/Battlenet-D3icon.blp
new file mode 100644
index 0000000..e0698a9
Binary files /dev/null and b/Interface/FriendsFrame/Battlenet-D3icon.blp differ
diff --git a/Interface/FriendsFrame/Battlenet-Sc2icon.blp b/Interface/FriendsFrame/Battlenet-Sc2icon.blp
new file mode 100644
index 0000000..f7c6232
Binary files /dev/null and b/Interface/FriendsFrame/Battlenet-Sc2icon.blp differ
diff --git a/Interface/FriendsFrame/Battlenet-WTCGicon.blp b/Interface/FriendsFrame/Battlenet-WTCGicon.blp
new file mode 100644
index 0000000..8b7084e
Binary files /dev/null and b/Interface/FriendsFrame/Battlenet-WTCGicon.blp differ
diff --git a/Interface/FriendsFrame/Battlenet-WoWicon.blp b/Interface/FriendsFrame/Battlenet-WoWicon.blp
new file mode 100644
index 0000000..0022ecd
Binary files /dev/null and b/Interface/FriendsFrame/Battlenet-WoWicon.blp differ
diff --git a/Interface/FriendsFrame/TravelPass-Invite.blp b/Interface/FriendsFrame/TravelPass-Invite.blp
new file mode 100644
index 0000000..88dd31c
Binary files /dev/null and b/Interface/FriendsFrame/TravelPass-Invite.blp differ
diff --git a/Interface/MINIMAP/TRACKING/BattleMaster.blp b/Interface/MINIMAP/TRACKING/BattleMaster.blp
index 4a9be08..aadc6e2 100644
Binary files a/Interface/MINIMAP/TRACKING/BattleMaster.blp and b/Interface/MINIMAP/TRACKING/BattleMaster.blp differ
diff --git a/Interface/PVPFrame/PVP-Currency-Alliance.blp b/Interface/PVPFrame/PVP-Currency-Alliance.blp
index 25c67e5..6000090 100644
Binary files a/Interface/PVPFrame/PVP-Currency-Alliance.blp and b/Interface/PVPFrame/PVP-Currency-Alliance.blp differ
diff --git a/Interface/PVPFrame/PVP-Currency-Horde.blp b/Interface/PVPFrame/PVP-Currency-Horde.blp
index 8d8603f..5532ffc 100644
Binary files a/Interface/PVPFrame/PVP-Currency-Horde.blp and b/Interface/PVPFrame/PVP-Currency-Horde.blp differ
diff --git a/Interface/TARGETINGFRAME/UI-PVP-Alliance.blp b/Interface/TARGETINGFRAME/UI-PVP-Alliance.blp
new file mode 100644
index 0000000..ee0ff56
Binary files /dev/null and b/Interface/TARGETINGFRAME/UI-PVP-Alliance.blp differ
diff --git a/Interface/TARGETINGFRAME/UI-PVP-Horde.blp b/Interface/TARGETINGFRAME/UI-PVP-Horde.blp
new file mode 100644
index 0000000..e229b9d
Binary files /dev/null and b/Interface/TARGETINGFRAME/UI-PVP-Horde.blp differ
diff --git a/Interface/TARGETINGFRAME/UI-StatusBar.blp b/Interface/TARGETINGFRAME/UI-StatusBar.blp
new file mode 100644
index 0000000..6556b55
Binary files /dev/null and b/Interface/TARGETINGFRAME/UI-StatusBar.blp differ
diff --git a/Interface/TARGETINGFRAME/UI-TargetingFrame-BarFill.blp b/Interface/TARGETINGFRAME/UI-TargetingFrame-BarFill.blp
new file mode 100644
index 0000000..6556b55
Binary files /dev/null and b/Interface/TARGETINGFRAME/UI-TargetingFrame-BarFill.blp differ
diff --git a/Interface/TARGETINGFRAME/UI-TargetingFrame-LevelBackground.blp b/Interface/TARGETINGFRAME/UI-TargetingFrame-LevelBackground.blp
new file mode 100644
index 0000000..6556b55
Binary files /dev/null and b/Interface/TARGETINGFRAME/UI-TargetingFrame-LevelBackground.blp differ
diff --git a/Interface/WorldStateFrame/AllianceIcon.blp b/Interface/WorldStateFrame/AllianceIcon.blp
index 40a4c94..6000090 100644
Binary files a/Interface/WorldStateFrame/AllianceIcon.blp and b/Interface/WorldStateFrame/AllianceIcon.blp differ
diff --git a/Interface/WorldStateFrame/HordeIcon.blp b/Interface/WorldStateFrame/HordeIcon.blp
index 18e88e1..5532ffc 100644
Binary files a/Interface/WorldStateFrame/HordeIcon.blp and b/Interface/WorldStateFrame/HordeIcon.blp differ