Code refactor, skills and inventory data

Leandro Silva [09-18-18 - 21:18]
Code refactor, skills and inventory data
Filename
LeoAltholic.lua
LeoAltholic.txt
LeoAltholic.xml
LeoAltholicUI.lua
Libs/LibFeedback/LibFeedback.txt
Libs/LibFeedback/feedback.lua
Libs/LibFeedback/libs/LibStub.lua
Libs/LibStub/LibStub.txt
Libs/LibStub/LibStub/LibStub.lua
diff --git a/LeoAltholic.lua b/LeoAltholic.lua
index bfe6582..b5e3015 100644
--- a/LeoAltholic.lua
+++ b/LeoAltholic.lua
@@ -2,7 +2,9 @@
 LeoAltholic = {}
 LeoAltholic.name = "LeoAltholic"
 LeoAltholic.displayName = "Leo's Altholic"
-LeoAltholic.version = "0.9.5"
+LeoAltholic.version = "0.9.6"
+LeoAltholic.chatPrefix = "|c39B027" .. LeoAltholic.name .. "|r: "
+LeoAltholic.timerQueue = {}

 LeoAltholic.maxTraits = select(3,GetSmithingResearchLineInfo(1,1))
 LeoAltholic.jewelryMaxTraits = select(3,GetSmithingResearchLineInfo(7,1))
@@ -15,46 +17,44 @@ function LeoAltholic.loadPlayerDataPart(skillType, baseElem)
     end
     local numSkillLines = GetNumSkillLines(skillType)
     for i = 1, numSkillLines do
-        local name, rank, discovered, skillLineId, advised, unlockText = GetSkillLineInfo(skillType,i)
+        local name, rank, discovered, lineId, advised, unlockText = GetSkillLineInfo(skillType,i)
         if name == nil then
             name = i;
         end
         if discovered then
-            baseElem[name]    = {}
-            local baseElemTable = baseElem[name]
-            local numAbilities = GetNumSkillAbilities(skillType, i)
+            baseElem[i]    = {}
+            local baseElemTable = baseElem[i]
+            local qty = GetNumSkillAbilities(skillType, i)
             baseElemTable.name = name
             baseElemTable.id = i
-            baseElemTable.numAbilities = numAbilities
+            baseElemTable.qty = qty
             baseElemTable.rank = rank
-            baseElemTable.skillLineId = skillLineId
-            LeoAltholic.loadPlayerTradeDetails( name, baseElem, baseElemTable, skillType, i, numAbilities )
+            baseElemTable.lineId = lineId
+
+            baseElemTable.list = {}
+
+            for aj = 1, qty do
+                local name2, icon, earnedRank, passive, ultimate, purchased, progressionIndex = GetSkillAbilityInfo(skillType, i, aj)
+                local currentUpgradeLevel, maxUpgradeLevel = GetSkillAbilityUpgradeInfo(skillType, i, aj)
+                --if type(currentUpgradeLevel) == "number" and currentUpgradeLevel > 0 then
+                if rank >= earnedRank then
+                    local _, _, nextUpgradeEarnedRank = GetSkillAbilityNextUpgradeInfo(skillType, i, aj)
+                    local plainName = zo_strformat(SI_ABILITY_NAME, name2)
+                    name2 = ZO_Skills_GenerateAbilityName(SI_ABILITY_NAME_AND_UPGRADE_LEVELS, name2, currentUpgradeLevel, maxUpgradeLevel, progressionIndex)
+                    baseElemTable.list[aj] = {}
+                    local selL = baseElemTable.list[aj]
+                    selL.plainName = plainName
+                    selL.name = name2
+                    selL.earnedRank = earnedRank or 0
+                    selL.level = currentUpgradeLevel
+                    selL.maxLevel = maxUpgradeLevel
+                    selL.nextUpgradeEarnedRank = nextUpgradeEarnedRank
+                end
+            end
         end
     end
 end

-function LeoAltholic.loadPlayerTradeDetails(parentName, parentTableElem, tradeTableElem, skillType, i, numAbilities )
-    parentTableElem[parentName].list  = {}
-    local selElemSubTable = parentTableElem[parentName].list
-    local skillIndex = i
-    for aj = 1, numAbilities do
-        local name, icon, earnedRank, passive, ultimate, purchased, progressionIndex = GetSkillAbilityInfo(skillType, i, aj)
-        local currentUpgradeLevel, maxUpgradeLevel = GetSkillAbilityUpgradeInfo(skillType, skillIndex, aj)
-        local _, _, nextUpgradeEarnedRank = GetSkillAbilityNextUpgradeInfo(skillType, skillIndex, aj)
-        local plainName = zo_strformat(SI_ABILITY_NAME, name)
-        name = ZO_Skills_GenerateAbilityName(SI_ABILITY_NAME_AND_UPGRADE_LEVELS, name, currentUpgradeLevel, maxUpgradeLevel, progressionIndex)
-        selElemSubTable[plainName] = {}
-        local selL = selElemSubTable[plainName]
-        selL.plainName = plainName
-        selL.name = name
-        selL.order = aj
-        selL.earnedRank = earnedRank
-        selL.currentUpgradeLevel = currentUpgradeLevel
-        selL.maxUpgradeLevel = maxUpgradeLevel
-        selL.nextUpgradeEarnedRank = nextUpgradeEarnedRank
-    end
-end
-
 function LeoAltholic.InitCharsList()
     if LeoAltholic.savedVariables.CharList == nil then LeoAltholic.savedVariables.CharList = {} end

@@ -76,6 +76,25 @@ function LeoAltholic.InitCharsList()
         end
     end

+    for _, char in pairs(LeoAltholic.GetCharacters()) do
+        if char.research[craftName] ~= nil then
+            research = {}
+            for _,craft in pairs(LeoAltholic.craftResearch) do
+                local craftName = GetCraftingSkillName(craft)
+                char.research[craft] = GetBonus(craft)
+                for line = 1, GetNumSmithingResearchLines(craft) do
+                    local lineName = GetSmithingResearchLineInfo(craft, line)
+                    char.research[craft][line] = {}
+                    for trait = 1, LeoAltholic.maxTraits do
+                        local traitType = GetSmithingResearchLineTraitInfo(craft, line, trait)
+                        local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
+                        char.research[craft][line][trait] = char.research[craftName][lineName][traitName]
+                    end
+                end
+            end
+        end
+    end
+
     LeoAltholic.CharName = GetUnitName("player")
     LeoAltholic.CharNum = 0
     local char = LeoAltholic.savedVariables.CharList[LeoAltholic.CharName] or {
@@ -182,21 +201,7 @@ function LeoAltholic.InitCharsList()
     local skillType = SKILL_TYPE_ARMOR
     char.skills.armor = {}
     local baseElem = char.skills.armor
-    local numSkillLines = GetNumSkillLines(skillType)
-    for i = 1, numSkillLines do
-        local name, rank, discovered, skillLineId, advised, unlockText = GetSkillLineInfo(skillType,i)
-        if name == nil then
-            name = i;
-        end
-        baseElem[name]  = {}
-        local baseElemTable = baseElem[name]
-        local numAbilities = GetNumSkillAbilities(skillType, i)
-        baseElemTable.name = name
-        baseElemTable.id = i
-        baseElemTable.numAbilities = numAbilities
-        baseElemTable.rank = rank
-        baseElemTable.skillLineId = skillLineId
-    end
+    LeoAltholic.loadPlayerDataPart(skillType,baseElem)

     --
     skillType = SKILL_TYPE_WORLD
@@ -236,63 +241,48 @@ function LeoAltholic.InitCharsList()

     skillType = SKILL_TYPE_TRADESKILL
     char.skills.craft = {}
-    local baseTableElem = char.skills.craft
-    numSkillLines = GetNumSkillLines(skillType)
-    for i = 1, numSkillLines do
-        local name, rank, discovered, skillLineId, advised, unlockText = GetSkillLineInfo(skillType,i)
-        if name == nil then
-            name = i;
-        end
-        baseTableElem[name]    = {}
-        local selElemTable = baseTableElem[name]
-        local numAbilities = GetNumSkillAbilities(skillType, i)
-        selElemTable.name = name
-        selElemTable.id = i
-        selElemTable.numAbilities = numAbilities
-        selElemTable.rank = rank
-        selElemTable.skillLineId = skillLineId
-        LeoAltholic.loadPlayerTradeDetails( name, baseTableElem, selElemTable, skillType, i, numAbilities )
-    end
+    baseElem = char.skills.craft
+    LeoAltholic.loadPlayerDataPart(skillType,baseElem)

     local function GetBonus(craft)
-        local skillType, skillId = GetCraftingSkillLineIndices(craft)
-        local _, rank = GetSkillLineInfo(skillType,skillId)
+        local skillType0, skillId = GetCraftingSkillLineIndices(craft)
+        local _, rank = GetSkillLineInfo(skillType0,skillId)
         return {rank = rank, max = GetMaxSimultaneousSmithingResearch(craft) or 1}
     end

     char.research = {}
     for _,craft in pairs(LeoAltholic.craftResearch) do
-        local craftName = GetCraftingSkillName(craft)
-        char.research[craftName] = GetBonus(craft)
+        --local craftName = GetCraftingSkillName(craft)
+        char.research[craft] = GetBonus(craft)
         for line = 1, GetNumSmithingResearchLines(craft) do
-            local lineName = GetSmithingResearchLineInfo(craft, line)
-            char.research[craftName][lineName] = {}
+            --local lineName = GetSmithingResearchLineInfo(craft, line)
+            char.research[craft][line] = {}
             for trait = 1, LeoAltholic.maxTraits do
                 local traitType = GetSmithingResearchLineTraitInfo(craft, line, trait)
-                local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
-                if not char.research[craftName][lineName][traitName] then
-                    char.research[craftName][lineName][traitName] = {}
+                --local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
+                if not char.research[craft][line][trait] then
+                    char.research[craft][line][trait] = {}
                 end
             end
         end
     end

     for _,craft in pairs(LeoAltholic.craftResearch) do
-        local craftName = GetCraftingSkillName(craft)
+        --local craftName = GetCraftingSkillName(craft)
         for line = 1, GetNumSmithingResearchLines(craft) do
-            local lineName = GetSmithingResearchLineInfo(craft, line)
+            --local lineName = GetSmithingResearchLineInfo(craft, line)
             for trait = 1, LeoAltholic.maxTraits do
                 local traitType, _, known = GetSmithingResearchLineTraitInfo(craft, line, trait)
-                local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
+                --local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
                 if known == false then
                     local _,remaining = GetSmithingResearchLineTraitTimes(craft,line,trait)
                     if remaining and remaining > 0 then
-                        char.research[craftName][lineName][traitName] = remaining + GetTimeStamp()
+                        char.research[craft][line][trait] = remaining + GetTimeStamp()
                     else
-                        char.research[craftName][lineName][traitName] = false
+                        char.research[craft][line][trait] = false
                     end
                 else
-                    char.research[craftName][lineName][traitName] = true
+                    char.research[craft][line][trait] = true
                 end
             end
         end
@@ -307,7 +297,6 @@ function LeoAltholic.InitCharsList()
     end

     for i = 1, GetNumChampionDisciplines() do
-        local dispName = GetChampionDisciplineName(i)
         local attribute = GetChampionDisciplineAttribute(i)
         char.champion[attribute].disciplines[i] = {
             spent = GetNumPointsSpentInChampionDiscipline(i),
@@ -315,8 +304,13 @@ function LeoAltholic.InitCharsList()
         }
         char.champion[attribute].spent = char.champion[attribute].spent + char.champion[attribute].disciplines[i].spent
         for j = 1, GetNumChampionDisciplineSkills(i) do
---            local skillName = GetChampionSkillName(i, j)
-            char.champion[attribute].disciplines[i].skills[j] = GetNumPointsSpentOnChampionSkill(i, j)
+            --local dispName = GetChampionDisciplineName(i)
+            --local skillName = GetChampionSkillName(i, j)
+            if WillChampionSkillBeUnlocked(i, j) then
+                char.champion[attribute].disciplines[i].skills[j] = true
+            else
+                char.champion[attribute].disciplines[i].skills[j] = GetNumPointsSpentOnChampionSkill(i, j)
+            end
         end
     end

@@ -335,6 +329,14 @@ function LeoAltholic.InitCharsList()
     char.inventory.telvar = GetCarriedCurrencyAmount(CURT_TELVAR_STONES)
     char.inventory.writVoucher = GetCarriedCurrencyAmount(CURT_WRIT_VOUCHERS)

+    --if not bag then bag = SHARED_INVENTORY:GenerateFullSlotData(nil,BAG_WORN,BAG_BACKPACK,BAG_BANK,BAG_SUBSCRIBER_BANK,BAG_VIRTUAL) end
+    local bag = SHARED_INVENTORY:GenerateFullSlotData(nil,BAG_WORN,BAG_BACKPACK)
+    char.inventory[BAG_WORN] = {}
+    char.inventory[BAG_BACKPACK] = {}
+    for _, data in pairs(bag) do
+        char.inventory[data.bagId][data.slotIndex] = GetItemLink(data.bagId, data.slotIndex)
+    end
+
     if char.stats == nil then char.stats = {} end

     LeoAltholic.savedVariables.CharList[LeoAltholic.CharName] = char
@@ -365,7 +367,61 @@ function LeoAltholic.GetCharacters()
     return playerLines
 end

+function LeoAltholic.ProcessQueue()
+    for x,data in pairs(LeoAltholic.timerQueue) do
+        if GetDiffBetweenTimeStamps(data.time, GetTimeStamp()) <= 0 then
+            d(LeoAltholic.chatPrefix .. data.info)
+            table.remove(LeoAltholic.timerQueue, x)
+        end
+    end
+end
+
+function LeoAltholic.GetTimer()
+    LeoAltholic.timerQueue = {}
+    local crafts = {CRAFTING_TYPE_BLACKSMITHING,CRAFTING_TYPE_CLOTHIER,CRAFTING_TYPE_WOODWORKING,CRAFTING_TYPE_JEWELRYCRAFTING}
+    for _, char in pairs(LeoAltholic.GetCharacters()) do
+        if GetDiffBetweenTimeStamps(char.attributes.riding.time - GetTimeStamp()) < 0 then
+            local data = {
+                id = '$M' .. char.bio.name,
+                info = zo_strformat('<<C:1>> has finished a mount training.', char.bio.name),
+                time = char.attributes.riding.time
+            }
+            table.insert(LeoAltholic.timerQueue, data)
+        end
+        for _,craft in pairs(crafts) do
+            local craftName = GetCraftingSkillName(craft)
+            for line = 1, GetNumSmithingResearchLines(craft) do
+                local lineName, lineIcon = GetSmithingResearchLineInfo(craft, line)
+                for trait = 1, LeoAltholic.maxTraits do
+                    local traitType = GetSmithingResearchLineTraitInfo(craft, line, trait)
+                    local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
+                    local traitData = char.research[craft][line][trait] or false
+                    if type(traitData) == 'number' then
+                        local data = {
+                            id = '$R' .. char.bio.name..craft..line..trait,
+                            info = zo_strformat(
+                                '<<C:1>> has finished a research: |c00FF00<<C:2>> <<C:3>>|r.',
+                                char.bio.name,
+                                GetString('SI_ITEMTRAITTYPE',traitType),
+                                lineName
+                            ),
+                            time = traitData
+                        }
+                        if GetDiffBetweenTimeStamps(traitData - GetTimeStamp()) < 0 then
+                            d(LeoAltholic.chatPrefix .. data.info)
+                        else
+                            table.insert(LeoAltholic.timerQueue, data)
+                        end
+                    end
+                end
+            end
+        end
+    end
+end
+
 function LeoAltholic:OnUpdate()
+    LeoAltholic.ProcessQueue()
+
     if LeoAltholic:isHidden() then
         return
     end
@@ -410,13 +466,13 @@ function LeoAltholic.formatNumber(amount)
 end

 function LeoAltholic.Initialize()
-    LeoAltholic.savedVariables = ZO_SavedVars:NewAccountWide("LeoAltholicSavedVariables", 1)
+    LeoAltholic.savedVariables = ZO_SavedVars:NewAccountWide("LeoAltholicSavedVariables", 2)

     local LibFeedback = LibStub:GetLibrary("LibFeedback")
     local showButton, feedbackWindow = LibFeedback:initializeFeedbackWindow(LeoAltholic,
         LeoAltholic.name,LeoAltholicWindow, "@LeandroSilva",
         {TOPRIGHT, LeoAltholicWindow, TOPRIGHT,-50,3},
-        {0,500,1000,10000},
+        {0,1000,10000,"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y9KM4PZU2UZ6A"},
         "If you found a bug, have a request or a suggestion, or simply wish to donate, send a mail.")
     LeoAltholic.feedback = feedbackWindow

@@ -425,6 +481,7 @@ function LeoAltholic.Initialize()
     LeoAltholic.InitCharsList()
     LeoAltholic.InitializeCharacterFrames()
     LeoAltholic.DisplayCharacterFrames()
+    LeoAltholic.GetTimer()

     SLASH_COMMANDS["/rr"] = function(cmd)
         ReloadUI()
@@ -466,7 +523,6 @@ end
 --SCENE_MANAGER:RegisterTopLevel(LeoAltholicWindow, false)
 EVENT_MANAGER:RegisterForEvent(LeoAltholic.name, EVENT_ADD_ON_LOADED, LeoAltholic.OnAddOnLoaded)
 EVENT_MANAGER:RegisterForEvent(LeoAltholic.name, EVENT_PLAYER_DEACTIVATED, LeoAltholic.OnPlayerDeactivated)
-EVENT_MANAGER:RegisterForUpdate(LeoAltholic.name, 5000, function(...) LeoAltholic:OnUpdate(...) end)
+EVENT_MANAGER:RegisterForUpdate(LeoAltholic.name, 5000, function() LeoAltholic.OnUpdate() end)
 EVENT_MANAGER:RegisterForEvent(LeoAltholic.name, EVENT_NEW_MOVEMENT_IN_UI_MODE, LeoAltholic.NewMovementInUIMode)
 CHAMPION_PERKS_SCENE:RegisterCallback('StateChange', LeoAltholic.OnChampionPerksSceneStateChange)
-
diff --git a/LeoAltholic.txt b/LeoAltholic.txt
index bdf2057..8bd5cc6 100644
--- a/LeoAltholic.txt
+++ b/LeoAltholic.txt
@@ -1,12 +1,9 @@
 ## Title: Leo's Altholic
 ## APIVersion: 100024
-## Version: 0.9.5
+## Version: 0.9.6
 ## Author: |c39B027@LeandroSilva|r
 ## SavedVariables: LeoAltholicSavedVariables
-## OptionalDependsOn: LibFeedback
-
-Libs/LibStub/LibStub.lua
-Libs/LibFeedback/feedback.lua
+## DependsOn: LibStub LibFeedback

 LeoAltholic.xml
 LeoAltholic.lua
diff --git a/LeoAltholic.xml b/LeoAltholic.xml
index 0323a77..cfa5e3e 100644
--- a/LeoAltholic.xml
+++ b/LeoAltholic.xml
@@ -1,5 +1,6 @@
 <GuiXml>
     <Controls>
+
         <TopLevelControl name="LeoAltholicWindow" mouseEnabled="true" movable="true" hidden="true" clampedToScreen="true">
             <Dimensions x="900" y="700" />
             <Anchor point="TOP" relativeTo="GuiRoot" relativePoint="CENTER" offsetY="100" />
@@ -227,5 +228,659 @@
             </Controls>
         </TopLevelControl>

+        <Control name="LeoAltholicBioRowTemplate" virtual="true" horizontalAlignment="LEFT" verticalAlignment="CENTER">
+            <Dimensions x="880" y="105"/>
+            <Controls>
+                <Backdrop name="$(parent)BG" centerColor="222222" edgeColor="444444" tier="LOW">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="2" offsetY="2"/>
+                    <Dimensions x="880" y="105"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+
+                <Label name="$(parent)Alliance" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="CENTER" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="10" offsetY="10"/>
+                    <Dimensions x="60" y="75"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, self.data) </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Label name="$(parent)Name" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="20"/>
+                    <Dimensions x="180" y="30"/>
+                </Label>
+
+                <Label name="$(parent)RaceClass" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="50"/>
+                    <Dimensions x="450" y="30"/>
+                </Label>
+
+                <Label name="$(parent)LevelLabel" text="Level" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="4"/>
+                    <Dimensions x="80" y="35"/>
+                </Label>
+
+                <Label name="$(parent)Level" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="340" offsetY="4"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+
+                <Label name="$(parent)AllianceRankLabel" text="Rank" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="34"/>
+                    <Dimensions x="80" y="35"/>
+                </Label>
+
+                <Label name="$(parent)AllianceRank" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="340" offsetY="34"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)BountyLabel" text="Bounty" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="64"/>
+                    <Dimensions x="80" y="35"/>
+                </Label>
+
+                <Label name="$(parent)Bounty" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="340" offsetY="64"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)AttributePointsLabel" text="Attribute Points" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="460" offsetY="4"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)AttributePoints" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="620" offsetY="4"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+
+                <Label name="$(parent)PlayedLabel" text="Played" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="460" offsetY="34"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)Played" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="620" offsetY="34"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+
+                <Label name="$(parent)RidingLabel" text="Riding" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="460" offsetY="64"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)Riding" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="620" offsetY="64"/>
+                    <Dimensions x="400" y="35"/>
+                </Label>
+            </Controls>
+        </Control>
+
+        <Control name="LeoAltholicStatsRowTemplate" virtual="true" horizontalAlignment="LEFT" verticalAlignment="CENTER">
+            <Dimensions x="880" y="105"/>
+            <Controls>
+                <Backdrop name="$(parent)BG" centerColor="222222" edgeColor="444444" tier="LOW">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="2" offsetY="2"/>
+                    <Dimensions x="880" y="105"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+
+                <Label name="$(parent)Alliance" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="CENTER" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="10" offsetY="10"/>
+                    <Dimensions x="60" y="75"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, self.data) </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Label name="$(parent)Name" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="20"/>
+                    <Dimensions x="180" y="30"/>
+                </Label>
+
+                <Label name="$(parent)RaceClass" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="50"/>
+                    <Dimensions x="450" y="30"/>
+                </Label>
+
+                <Label name="$(parent)AttributePointsLabel" text="Points" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="280" offsetY="4"/>
+                    <Dimensions x="80" y="35"/>
+                </Label>
+
+                <Label name="$(parent)AttributePoints" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="370" offsetY="4"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+
+                <Label name="$(parent)MaxAttributesLabel" text="Maximum" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="280" offsetY="34"/>
+                    <Dimensions x="80" y="35"/>
+                </Label>
+
+                <Label name="$(parent)MaxAttributes" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="370" offsetY="34"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)RecoveryAttributesLabel" text="Recovery" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="280" offsetY="64"/>
+                    <Dimensions x="80" y="35"/>
+                </Label>
+
+                <Label name="$(parent)RecoveryAttributes" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="370" offsetY="64"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)SpellPointsLabel" text="Spell Crit" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="490" offsetY="4"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)SpellPoints" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="650" offsetY="4"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+
+                <Label name="$(parent)WeaponPointsLabel" text="Weapon Crit" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="490" offsetY="34"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+                <Label name="$(parent)WeaponPoints" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="650" offsetY="34"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+
+            </Controls>
+        </Control>
+
+        <Control name="LeoAltholicSkillsRowTemplate" virtual="true" horizontalAlignment="LEFT" verticalAlignment="CENTER">
+            <Dimensions x="880" y="105"/>
+            <Controls>
+                <Backdrop name="$(parent)BG" centerColor="222222" edgeColor="444444" tier="LOW">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="2" offsetY="2"/>
+                    <Dimensions x="880" y="105"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+
+                <Label name="$(parent)Alliance" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="CENTER" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="10" offsetY="10"/>
+                    <Dimensions x="60" y="75"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, self.data) </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Label name="$(parent)Name" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="20"/>
+                    <Dimensions x="180" y="30"/>
+                </Label>
+
+                <Label name="$(parent)RaceClass" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="50"/>
+                    <Dimensions x="450" y="30"/>
+                </Label>
+
+            </Controls>
+        </Control>
+
+        <Control name="LeoAltholicChampionRowTemplate" virtual="true" horizontalAlignment="LEFT" verticalAlignment="CENTER">
+            <Dimensions x="880" y="135"/>
+            <Controls>
+                <Backdrop name="$(parent)BG" centerColor="222222" edgeColor="444444" tier="LOW">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="2" offsetY="2"/>
+                    <Dimensions x="880" y="135"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+
+                <Label name="$(parent)Alliance" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="CENTER" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="10" offsetY="10"/>
+                    <Dimensions x="60" y="75"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, self.data) </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Label name="$(parent)Name" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="20"/>
+                    <Dimensions x="180" y="30"/>
+                </Label>
+
+                <Label name="$(parent)RaceClass" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="50"/>
+                    <Dimensions x="450" y="30"/>
+                </Label>
+
+                <Button name="$(parent)HealthIcon" mouseEnabled="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="375" offsetY="10"/>
+                    <Dimensions x="25" y="25"/>
+                    <Controls>
+                        <Texture name="$(parent)Texture" textureFile="esoui/art/tutorial/champion_points_health_icon.dds">
+                            <Dimensions y="25" x="25"/>
+                            <Anchor point="128"/>
+                        </Texture>
+                    </Controls>
+                </Button>
+                <Label name="$(parent)Attribute1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="4"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc2Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="300" offsetY="34"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="34"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc3Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="300" offsetY="64"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="64"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc4Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="300" offsetY="94"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc4" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="94"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+
+                <Button name="$(parent)MagickaIcon" mouseEnabled="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="575" offsetY="10"/>
+                    <Dimensions x="25" y="25"/>
+                    <Controls>
+                        <Texture name="$(parent)Texture" textureFile="esoui/art/tutorial/champion_points_magicka_icon.dds">
+                            <Dimensions y="25" x="25"/>
+                            <Anchor point="128"/>
+                        </Texture>
+                    </Controls>
+                </Button>
+                <Label name="$(parent)Attribute2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="610" offsetY="4"/>
+                    <Dimensions x="120" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc5Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="480" offsetY="34"/>
+                    <Dimensions x="120" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc5" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="610" offsetY="34"/>
+                    <Dimensions x="120" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc6Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="480" offsetY="64"/>
+                    <Dimensions x="120" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc6" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="610" offsetY="64"/>
+                    <Dimensions x="120" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc7Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="480" offsetY="94"/>
+                    <Dimensions x="120" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc7" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="610" offsetY="94"/>
+                    <Dimensions x="120" y="35"/>
+                </Label>
+
+                <Button name="$(parent)StaminaIcon" mouseEnabled="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="775" offsetY="10"/>
+                    <Dimensions x="25" y="25"/>
+                    <Controls>
+                        <Texture name="$(parent)Texture" textureFile="esoui/art/tutorial/champion_points_stamina_icon.dds">
+                            <Dimensions y="25" x="25"/>
+                            <Anchor point="128"/>
+                        </Texture>
+                    </Controls>
+                </Button>
+                <Label name="$(parent)Attribute3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="810" offsetY="4"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc1Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="700" offsetY="34"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="810" offsetY="34"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc8Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="700" offsetY="64"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc8" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="810" offsetY="64"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc9Label" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="700" offsetY="94"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+                <Label name="$(parent)Disc9" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="810" offsetY="94"/>
+                    <Dimensions x="100" y="35"/>
+                </Label>
+
+            </Controls>
+        </Control>
+
+        <Control name="LeoAltholicInventoryRowTemplate" virtual="true" horizontalAlignment="LEFT" verticalAlignment="CENTER">
+            <Dimensions x="880" y="105"/>
+            <Controls>
+                <Backdrop name="$(parent)BG" centerColor="222222" edgeColor="444444" tier="LOW">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="2" offsetY="2"/>
+                    <Dimensions x="880" y="105"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+
+                <Label name="$(parent)Alliance" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="CENTER" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="10" offsetY="10"/>
+                    <Dimensions x="60" y="75"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, self.data) </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Label name="$(parent)Name" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="20"/>
+                    <Dimensions x="180" y="30"/>
+                </Label>
+
+                <Label name="$(parent)RaceClass" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="50"/>
+                    <Dimensions x="450" y="30"/>
+                </Label>
+
+                <Texture name="$(parent)BagIcon" textureFile="esoui/art/mainmenu/menubar_inventory_up.dds">
+                    <Dimensions y="30" x="30"/>
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="305" offsetY="4"/>
+                </Texture>
+                <Label name="$(parent)Bag" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="340" offsetY="4"/>
+                    <Dimensions x="50" y="35"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, "Bag space") </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Texture name="$(parent)SoulGemsIcon" textureFile="esoui/art/currency/currency_seedcrystal_16.dds">
+                    <Dimensions y="20" x="20"/>
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="310" offsetY="40"/>
+                </Texture>
+
+                <Label name="$(parent)SoulGems" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="340" offsetY="34"/>
+                    <Dimensions x="150" y="35"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, "Soul Gems") </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Texture name="$(parent)GoldIcon" textureFile="esoui/art/currency/currency_gold.dds">
+                    <Dimensions y="20" x="20"/>
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="310" offsetY="70"/>
+                </Texture>
+                <Label name="$(parent)Gold" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="340" offsetY="64"/>
+                    <Dimensions x="150" y="35"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, "Gold") </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Texture name="$(parent)APIcon" textureFile="esoui/art/currency/alliancepoints.dds">
+                    <Dimensions y="20" x="20"/>
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="450" offsetY="10"/>
+                </Texture>
+                <Label name="$(parent)AP" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="480" offsetY="4"/>
+                    <Dimensions x="50" y="35"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, "Alliance Points") </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Texture name="$(parent)TelVarIcon" textureFile="esoui/art/currency/currency_telvar.dds">
+                    <Dimensions y="25" x="25"/>
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="450" offsetY="36"/>
+                </Texture>
+                <Label name="$(parent)TelVar" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="480" offsetY="34"/>
+                    <Dimensions x="100" y="35"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, "Tel Var") </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Texture name="$(parent)WritIcon" textureFile="esoui/art/currency/currency_writvoucher.dds">
+                    <Dimensions y="25" x="25"/>
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="450" offsetY="66"/>
+                </Texture>
+                <Label name="$(parent)Writ" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="480" offsetY="64"/>
+                    <Dimensions x="100" y="35"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, "Writ Vouchers") </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Button name="$(parent)ListButton" clickSound="Click">
+                    <Anchor point="TOPRIGHT" relativeTo="$(parent)" relativePoint="TOPRIGHT" offsetX="-10" offsetY="35"/>
+                    <Dimensions x="40" y="40"/>
+                    <OnClicked> LeoAltholic.ShowInventoryUI() </OnClicked>
+                    <Textures normal="/esoui/art/buttons/large_rightarrow_up.dds" mouseOver="/esoui/art/buttons/large_rightarrow_over.dds" />
+                </Button>
+            </Controls>
+        </Control>
+
+        <Control name="LeoAltholicResearchRowTemplate" virtual="true" horizontalAlignment="LEFT" verticalAlignment="CENTER">
+            <Dimensions x="880" y="260"/>
+            <Controls>
+                <Backdrop name="$(parent)BG" centerColor="222222" edgeColor="444444" tier="LOW">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="2" offsetY="2"/>
+                    <Dimensions x="880" y="260"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+
+                <Label name="$(parent)Alliance" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="CENTER" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="10" offsetY="10"/>
+                    <Dimensions x="60" y="75"/>
+                    <OnMouseEnter> ZO_Tooltips_ShowTextTooltip(self, RIGHT, self.data) </OnMouseEnter>
+                    <OnMouseExit> ZO_Tooltips_HideTextTooltip() </OnMouseExit>
+                </Label>
+
+                <Label name="$(parent)Name" mouseEnabled="true" font="ZoFontWinH3" normalColor="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="20"/>
+                    <Dimensions x="180" y="30"/>
+                </Label>
+
+                <Label name="$(parent)RaceClass" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="80" offsetY="50"/>
+                    <Dimensions x="450" y="30"/>
+                </Label>
+
+                <Label name="$(parent)Craft1Label" text="Level" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="4"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft1Label1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="34"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft1Label2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="64"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft1Label3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="94"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="4"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft1Timer1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="34"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft1Timer2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="64"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft1Timer3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="94"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+
+                <Label name="$(parent)Craft2Label" text="Level" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="124"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft2Label1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="154"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft2Label2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="184"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft2Label3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="250" offsetY="214"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="124"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft2Timer1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="154"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft2Timer2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="184"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft2Timer3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="410" offsetY="214"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+
+                <Label name="$(parent)Craft6Label" text="Level" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="4"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft6Label1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="34"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft6Label2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="64"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft6Label3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="94"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft6" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="4"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft6Timer1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="34"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft6Timer2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="64"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft6Timer3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="94"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+
+                <Label name="$(parent)Craft7Label" text="Level" mouseEnabled="true" font="ZoFontGame" color="E8DFAF" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="124"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft7Label1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="154"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft7Label2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="184"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft7Label3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="RIGHT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="590" offsetY="214"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft7" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="124"/>
+                    <Dimensions x="50" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft7Timer1" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="154"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft7Timer2" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="184"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+                <Label name="$(parent)Craft7Timer3" mouseEnabled="true" font="ZoFontWinH4" color="ffffff" inheritAlpha="true" verticalAlignment="CENTER" horizontalAlignment="LEFT" resizeToFitDescendents="false">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="750" offsetY="214"/>
+                    <Dimensions x="150" y="35"/>
+                </Label>
+
+            </Controls>
+        </Control>
+
+        <TopLevelControl name="LeoAltholicInventoryWindow" mouseEnabled="true" movable="false" hidden="true" clampedToScreen="true">
+            <Dimensions x="300" y="700" />
+            <Anchor point="TOPLEFT" relativeTo="LeoAltholicWindow" relativePoint="TOPRIGHT" offsetX="4" offsetY="0" />
+
+            <Controls>
+                <Backdrop name="$(parent)BG" centerColor="000000" edgeColor="222222">
+                    <Anchor point="TOPLEFT" relativePoint="TOPLEFT" relativeTo="$(parent)"/>
+                    <Dimensions x="300" y="700"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+                <Backdrop name="$(parent)HeaderBG" centerColor="111111" edgeColor="222222">
+                    <Anchor point="TOPLEFT" relativePoint="TOPLEFT" relativeTo="$(parent)" offsetX="8" offsetY="5"/>
+                    <Dimensions x="292" y="40"/>
+                    <Edge edgeSize="1"/>
+                </Backdrop>
+                <Label name="$(parent)Title" text="Inventory List" color="39B027" font="ZoFontWinH3" wrapMode="ELLIPSIS"
+                       verticalAlignment="CENTER" mouseEnabled="true">
+                    <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="16" offsetY="10"/>
+                </Label>
+                <Button name="$(parent)Close" clickSound="Click">
+                    <Anchor point="TOPLEFT" relativePoint="TOPRIGHT" relativeTo="$(parent)BG" offsetX="-45" offsetY="4"/>
+                    <Dimensions x="40" y="40"/>
+                    <OnClicked> LeoAltholic.HideInventoryUI() </OnClicked>
+                    <Controls>
+                        <Backdrop name="$(parent)BG" centerColor="101010" edgeColor="202020">
+                            <AnchorFill/>
+                            <Edge edgeSize="1"/>
+                        </Backdrop>
+                        <Texture name="$(parent)Texture" textureFile="esoui/art/buttons/decline_up.dds">
+                            <Dimensions y="25" x="25"/>
+                            <Anchor point="128"/>
+                        </Texture>
+                    </Controls>
+                </Button>
+
+                <Backdrop name="$(parent)List" tier="1" centerColor="000000" edgeColor="202020" hidden="true" clampedToScreen="true" movable="false" mouseEnabled="true" inherits="ZO_ScrollContainerBase">
+                    <Anchor point="TOPLEFT" relativePoint="TOPLEFT" relativeTo="LeoAltholicWindow" offsetX="0" offsetY="52"/>
+                    <Dimensions x="200" y="450"/>
+                    <Edge edgeSize="1"/>
+                    <OnInitialized>ZO_Scroll_Initialize(self)</OnInitialized>
+                    <Controls>
+                        <Control name="$(parent)ScrollChild">
+                            <OnInitialized>self:SetParent(self:GetParent():GetNamedChild("Scroll"));self:SetAnchor(3,nil,3,0,0)</OnInitialized>
+                        </Control>
+                    </Controls>
+                </Backdrop>
+            </Controls>
+        </TopLevelControl>
+
     </Controls>
 </GuiXml>
diff --git a/LeoAltholicUI.lua b/LeoAltholicUI.lua
index a198efb..06e4152 100644
--- a/LeoAltholicUI.lua
+++ b/LeoAltholicUI.lua
@@ -21,6 +21,16 @@ function LeoAltholic.RestorePosition()
     LeoAltholicWindow:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, left, top)
 end

+function LeoAltholic.ShowInventoryUI()
+    SCENE_MANAGER:ShowTopLevel(LeoAltholicInventoryWindow)
+    LeoAltholicInventoryWindow:SetHidden(false)
+end
+
+function LeoAltholic.HideInventoryUI()
+    SCENE_MANAGER:HideTopLevel(LeoAltholicInventoryWindow)
+    LeoAltholicInventoryWindow:SetHidden(true)
+end
+
 function LeoAltholic.ShowUI()
     SCENE_MANAGER:ShowTopLevel(LeoAltholicWindow)
     LeoAltholicWindow:SetHidden(false)
@@ -50,583 +60,54 @@ function LeoAltholic.ShowTab(tab)
         control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindow' .. panel .. 'Panel')
         control:SetHidden(true)
     end
-    local control = WINDOW_MANAGER:GetControlByName("LeoAltholicWindow" .. tab .. "Panel")
+    control = WINDOW_MANAGER:GetControlByName("LeoAltholicWindow" .. tab .. "Panel")
     control:SetHidden(false)
 end

 function LeoAltholic.InitializeCharacterFrames()
     for x,char in pairs(LeoAltholic.GetCharacters()) do
-        local backgroundColor = {0.13,0.13,0.13,1 }
-        if char.bio.name == LeoAltholic.CharName then
-            backgroundColor = {0.18,0.18,0.18,1 }
-        end
-
-        local frame = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_CharacterFrame'..x,LeoAltholicWindowBioPanelScrollChild,CT_CONTROL)
-        frame:SetAnchor(TOPLEFT,LeoAltholicWindowBioPanelScrollChild,TOPLEFT,0,(x - 1) * 109)
-
-        local bg = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'BG',frame,CT_BACKDROP)
-        bg:SetAnchor(TOPLEFT,frame,TOPLEFT,2,2)
-        bg:SetDimensions(898,105)
-        bg:SetCenterColor(unpack(backgroundColor))
-        bg:SetEdgeColor(0.22,0.22,0.22,1)
-        bg:SetEdgeTexture('',1,1,1)
-
-        local btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'Alliance',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,10,35)
-        btn:SetDimensions(60,90)
-        btn:SetHorizontalAlignment(1)
-        btn:SetVerticalAlignment(0)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'Name',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,20)
-        btn:SetDimensions(180,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'RaceClass',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,50)
-        btn:SetDimensions(450,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'LevelLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,250,4)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Level: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'Level',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,340,4)
-        btn:SetDimensions(50,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'AllianceRankLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,250,34)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Rank: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'AllianceRank',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,340,34)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'BountyLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,250,64)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Bounty: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'Bounty',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,340,64)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'AttributePointsLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,500,4)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Attribute Points: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'AttributePoints',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,660,4)
-        btn:SetDimensions(50,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'PlayedLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,500,34)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Played: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'Played',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,660,34)
-        btn:SetDimensions(100,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'RidingLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,500,64)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Riding: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowBioPanel_Character'..x..'Riding',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,660,64)
-        btn:SetDimensions(400,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        frame = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_CharacterFrame'..x,LeoAltholicWindowStatsPanelScrollChild,CT_CONTROL)
-        frame:SetAnchor(TOPLEFT,LeoAltholicWindowStatsPanelScrollChild,TOPLEFT,0,(x - 1) * 109)
-
-        bg = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'BG',frame,CT_BACKDROP)
-        bg:SetAnchor(TOPLEFT,frame,TOPLEFT,2,2)
-        bg:SetDimensions(898,105)
-        bg:SetCenterColor(unpack(backgroundColor))
-        bg:SetEdgeColor(0.22,0.22,0.22,1)
-        bg:SetEdgeTexture('',1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'Alliance',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,10,35)
-        btn:SetDimensions(60,90)
-        btn:SetHorizontalAlignment(1)
-        btn:SetVerticalAlignment(0)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'Name',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,20)
-        btn:SetDimensions(180,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'RaceClass',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,50)
-        btn:SetDimensions(450,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'AttributePointsLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,240,4)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Points: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'AttributePoints',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,400,4)
-        btn:SetDimensions(100,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'MaxAttributesLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,240,34)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Maximum: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'MaxAttributes',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,400,34)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'RecoveryAttributesLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,240,64)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Recovery: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'RecoveryAttributes',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,400,64)
-        btn:SetDimensions(150,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'SpellPointsLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,540,4)
-        btn:SetDimensions(140,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Spell Crit: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'SpellPoints',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,690,4)
-        btn:SetDimensions(100,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'WeaponPointsLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,540,34)
-        btn:SetDimensions(140,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("Weapon Crit: ")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowStatsPanel_Character'..x..'WeaponPoints',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,690,34)
-        btn:SetDimensions(100,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-
-        frame = WINDOW_MANAGER:CreateControl('LeoAltholicWindowSkillsPanel_CharacterFrame'..x,LeoAltholicWindowSkillsPanelScrollChild,CT_CONTROL)
-        frame:SetAnchor(TOPLEFT,LeoAltholicWindowSkillsPanelScrollChild,TOPLEFT,0,(x - 1) * 109)
-
-        bg = WINDOW_MANAGER:CreateControl('LeoAltholicWindowSkillsPanel_Character'..x..'BG',frame,CT_BACKDROP)
-        bg:SetAnchor(TOPLEFT,frame,TOPLEFT,2,2)
-        bg:SetDimensions(898,105)
-        bg:SetCenterColor(unpack(backgroundColor))
-        bg:SetEdgeColor(0.22,0.22,0.22,1)
-        bg:SetEdgeTexture('',1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowSkillsPanel_Character'..x..'Alliance',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,10,35)
-        btn:SetDimensions(60,90)
-        btn:SetHorizontalAlignment(1)
-        btn:SetVerticalAlignment(0)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowSkillsPanel_Character'..x..'Name',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,20)
-        btn:SetDimensions(180,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowSkillsPanel_Character'..x..'RaceClass',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,50)
-        btn:SetDimensions(450,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-
-        frame = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_CharacterFrame'..x,LeoAltholicWindowChampionPanelScrollChild,CT_CONTROL)
-        frame:SetAnchor(TOPLEFT,LeoAltholicWindowChampionPanelScrollChild,TOPLEFT,0,(x - 1) * 139)
-
-        bg = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..'BG',frame,CT_BACKDROP)
-        bg:SetAnchor(TOPLEFT,frame,TOPLEFT,2,2)
-        bg:SetDimensions(898,135)
-        bg:SetCenterColor(unpack(backgroundColor))
-        bg:SetEdgeColor(0.22,0.22,0.22,1)
-        bg:SetEdgeTexture('',1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..'Alliance',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,10,35)
-        btn:SetDimensions(60,90)
-        btn:SetHorizontalAlignment(1)
-        btn:SetVerticalAlignment(0)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..'Name',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,20)
-        btn:SetDimensions(180,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..'RaceClass',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,50)
-        btn:SetDimensions(450,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-
-        local col = {}
-        col[ATTRIBUTE_MAGICKA] = 240
-        col[ATTRIBUTE_HEALTH] = 440
-        col[ATTRIBUTE_STAMINA] = 640

-        for _, attribute in ipairs({ATTRIBUTE_MAGICKA, ATTRIBUTE_HEALTH, ATTRIBUTE_STAMINA}) do
-            btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..attribute..'Label',frame,CT_BUTTON)
-            btn:SetAnchor(TOPLEFT,frame,TOPLEFT,col[attribute],4)
-            btn:SetDimensions(150,35)
-            btn:SetHorizontalAlignment(2)
-            btn:SetVerticalAlignment(1)
-            btn:SetFont('ZoFontWinH4')
-            btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-            if attribute == ATTRIBUTE_MAGICKA then
-                btn:SetText("|t24:24:esoui/art/tutorial/champion_points_magicka_icon.dds|t")
-            elseif attribute == ATTRIBUTE_HEALTH then
-                btn:SetText("|t24:24:esoui/art/tutorial/champion_points_health_icon.dds|t")
-            elseif attribute == ATTRIBUTE_STAMINA then
-                btn:SetText("|t24:24:esoui/art/tutorial/champion_points_stamina_icon.dds|t")
+        for _,panel in ipairs(LeoAltholic.panelList) do
+            local sc = WINDOW_MANAGER:GetControlByName("LeoAltholicWindow"..panel.."PanelScrollChild")
+            local row = CreateControlFromVirtual("LeoAltholic"..panel.."Row" .. x, sc, "LeoAltholic"..panel.."RowTemplate")
+            row:SetHidden(false)
+            local anchorY = 109;
+            if panel == "Champion" then
+                anchorY = 139
+            elseif panel == "Research" then
+                anchorY = 262
+            end
+            row:SetAnchor(TOPLEFT,sc,TOPLEFT,0,(x - 1) * anchorY)
+            if char.bio.name == LeoAltholic.CharName then
+                local control = row:GetNamedChild("BG")
+                control:SetCenterColor(unpack({0.2,0.2,0.2,1 }))
+                control:SetEdgeColor(0.22,0.77,0.22,1)
             end

-            btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..attribute,frame,CT_BUTTON)
-            btn:SetAnchor(TOPLEFT,frame,TOPLEFT,col[attribute] + 160,4)
-            btn:SetDimensions(100,35)
-            btn:SetHorizontalAlignment(0)
-            btn:SetVerticalAlignment(1)
-            btn:SetFont('ZoFontWinH4')
-            btn:SetNormalFontColor(1,1,1,1)
-
-            local row = 34
-            for i = 1, GetNumChampionDisciplines() do
-                local dAttribute = GetChampionDisciplineAttribute(i)
-                if dAttribute == attribute then
+            if panel == "Champion" then
+                for i = 1, GetNumChampionDisciplines() do
                     local dispName = GetChampionDisciplineName(i)
-
-                    btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..i..'DiscLabel',frame,CT_BUTTON)
-                    btn:SetAnchor(TOPLEFT,frame,TOPLEFT,col[attribute],row)
-                    btn:SetDimensions(150,35)
-                    btn:SetHorizontalAlignment(2)
-                    btn:SetVerticalAlignment(1)
-                    btn:SetFont('ZoFontWinH4')
-                    btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-                    btn:SetText(dispName)
-
-                    btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowChampionPanel_Character'..x..i..'Disc',frame,CT_BUTTON)
-                    btn:SetAnchor(TOPLEFT,frame,TOPLEFT,col[attribute] + 160,row)
-                    btn:SetDimensions(100,35)
-                    btn:SetHorizontalAlignment(0)
-                    btn:SetVerticalAlignment(1)
-                    btn:SetFont('ZoFontWinH4')
-                    btn:SetNormalFontColor(1,1,1,1)
-
-                    row = row + 30
+                    local dAttribute = GetChampionDisciplineAttribute(i)
+                    local label = row:GetNamedChild("Disc"..i.."Label")
+                    label:SetText(dispName)
+                    label:SetHandler('OnMouseEnter', function(self) LeoAltholic.TooltipChampionSkill(self, true, x, dAttribute, i) end)
+                    label:SetHandler('OnMouseExit', function(self) LeoAltholic.TooltipChampionSkill(self, false) end)
+                end
+            elseif panel == "Research" then
+                for _,craft in pairs(LeoAltholic.craftResearch) do
+                    local label = row:GetNamedChild("Craft"..craft.."Label")
+                    label:SetText(GetCraftingSkillName(craft))
                 end
             end
         end


+        --[[

-        frame = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_CharacterFrame'..x,LeoAltholicWindowInventoryPanelScrollChild,CT_CONTROL)
-        frame:SetAnchor(TOPLEFT,LeoAltholicWindowInventoryPanelScrollChild,TOPLEFT,0,(x - 1) * 109)
-
-        bg = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'BG',frame,CT_BACKDROP)
-        bg:SetAnchor(TOPLEFT,frame,TOPLEFT,2,2)
-        bg:SetDimensions(898,105)
-        bg:SetCenterColor(unpack(backgroundColor))
-        bg:SetEdgeColor(0.22,0.22,0.22,1)
-        bg:SetEdgeTexture('',1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'Alliance',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,10,35)
-        btn:SetDimensions(60,90)
-        btn:SetHorizontalAlignment(1)
-        btn:SetVerticalAlignment(0)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'Name',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,20)
-        btn:SetDimensions(180,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'RaceClass',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,50)
-        btn:SetDimensions(450,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'BagLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,250,4)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("|t30:30:esoui/art/mainmenu/menubar_inventory_up.dds|t")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'Bag',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,340,4)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'SoulGemsLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,250,34)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("|t20:20:esoui/art/currency/currency_seedcrystal_16.dds|t")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'SoulGems',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,340,34)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'GoldLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,250,64)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("|t20:20:esoui/art/currency/currency_gold.dds|t")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'Gold',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,340,64)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'APLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,400,4)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("|t24:24:esoui/art/currency/alliancepoints.dds|t")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'AP',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,490,4)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'TelVarLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,400,34)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("|t24:24:esoui/art/currency/currency_telvar.dds|t")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'TelVar',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,490,34)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'WritLabel',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,400,64)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(2)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-        btn:SetText("|t24:24:esoui/art/currency/currency_writvoucher.dds|t")
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowInventoryPanel_Character'..x..'Writ',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,490,64)
-        btn:SetDimensions(80,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(1,1,1,1)
-
-
-        frame = WINDOW_MANAGER:CreateControl('LeoAltholicWindowResearchPanel_CharacterFrame'..x,LeoAltholicWindowResearchPanelScrollChild,CT_CONTROL)
         frame:SetAnchor(TOPLEFT,LeoAltholicWindowResearchPanelScrollChild,TOPLEFT,0,(x - 1) * 259)

-        bg = WINDOW_MANAGER:CreateControl('LeoAltholicWindowResearchPanel_Character'..x..'BG',frame,CT_BACKDROP)
-        bg:SetAnchor(TOPLEFT,frame,TOPLEFT,2,2)
-        bg:SetDimensions(898,255)
-        bg:SetCenterColor(unpack(backgroundColor))
-        bg:SetEdgeColor(0.22,0.22,0.22,1)
-        bg:SetEdgeTexture('',1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowResearchPanel_Character'..x..'Alliance',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,10,35)
-        btn:SetDimensions(60,90)
-        btn:SetHorizontalAlignment(1)
-        btn:SetVerticalAlignment(0)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowResearchPanel_Character'..x..'Name',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,20)
-        btn:SetDimensions(180,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH3')
-        btn:SetNormalFontColor(1,1,1,1)
-
-        btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowResearchPanel_Character'..x..'RaceClass',frame,CT_BUTTON)
-        btn:SetAnchor(TOPLEFT,frame,TOPLEFT,80,50)
-        btn:SetDimensions(450,35)
-        btn:SetHorizontalAlignment(0)
-        btn:SetVerticalAlignment(1)
-        btn:SetFont('ZoFontWinH4')
-        btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-
         local crafts = {"Blacksmithing", "Clothing", "Woodworking", "Jewelry Crafting" }
         for index,craft in ipairs(crafts) do
-            local anchorX = 280 + ((1-(index%2)) * 330)
-            local anchorY = 4 + ((math.floor(index/3)) * 120)
-            btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowResearchPanel_Character'..x..craft..'Label',frame,CT_BUTTON)
-            btn:SetAnchor(TOPLEFT, frame, TOPLEFT, anchorX, anchorY)
-            btn:SetDimensions(150,35)
-            btn:SetHorizontalAlignment(0)
-            btn:SetVerticalAlignment(1)
-            btn:SetFont('ZoFontWinH4')
-            btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())
-            btn:SetText(craft)

             for i = 1, 3 do
                 btn = WINDOW_MANAGER:CreateControl('LeoAltholicWindowResearchPanel_Character'..x..craft..i,frame,CT_BUTTON)
@@ -655,98 +136,136 @@ function LeoAltholic.InitializeCharacterFrames()
             btn:SetNormalFontColor(ZO_NORMAL_TEXT:UnpackRGBA())

         end
+        ]]

     end
 end

 function LeoAltholic.GetTime(seconds)
     if seconds and seconds > 0 then
-        seconds = tostring(ZO_FormatTime(seconds,TIME_FORMAT_STYLE_COLONS,TIME_FORMAT_PRECISION_SECONDS))
-        local ts,endtime,y={},'',0
-        for x in string.gmatch(seconds,'%d+') do ts[y] = x; y = y + 1; end
-        if y == 4 then
-            if tonumber(ts[1]) < 10 then ts[1] = '0'..ts[1] end
-            endtime = ts[0]..'d '..ts[1]..':'..ts[2]..'h'
-        end
-        if y == 3 then
-            if tonumber(ts[0]) < 10 then ts[0] = '0'..ts[0] end
-            endtime = ts[0]..':'..ts[1]..'h'
+        --seconds = tostring(ZO_FormatTime(seconds,TIME_FORMAT_STYLE_COLONS,TIME_FORMAT_PRECISION_SECONDS))
+        local ss = seconds % 60
+        local mm = math.floor(seconds / 60)
+        local hh = math.floor(mm / 60)
+        mm = mm % 60
+        local dn = math.floor(hh / 24)
+        local result = ''
+        if dn > 0 then result = tostring(dn) .. "d " .. tostring (hh - (dn*24)) .. "h"
+        elseif hh > 0 then result = tostring (hh) .. "h " .. tostring (mm) .. "m"
+        elseif mm > 0 then result = mm .. "m " .. ss .. "s"
         end
-        if y == 2 then endtime = ts[0]..'min' end
-        return endtime
+        return result
     else return '|cFF4020finished|r' end
 end

+function LeoAltholic.TooltipChampionSkill(control, visible, charId, attribute, discipline)
+
+    if visible then
+        if not parent then parent = control end
+
+        control.text = InformationTooltip
+        InitializeTooltip(control.text,control,2,1,0,8)
+
+        local char = LeoAltholic.GetCharacters()[charId]
+        local added = false
+        for j = 1, GetNumChampionDisciplineSkills(discipline) do
+            local skillName = GetChampionSkillName(discipline, j)
+            local points = char.champion[attribute].disciplines[discipline].skills[j]
+            if type(points) == 'number' and points > 0 then
+                control.text:AddLine("|cE8DFAF" .. skillName .. "|r " .. points)
+                added = true
+            elseif points == true then
+                control.text:AddLine("|cE8DFAF" .. skillName .. "|r |c21A121unlocked|r")
+                added = true
+            end
+        end
+        if added then
+            control.text:SetHidden(false)
+        else
+            control.text:SetHidden(true)
+        end
+    else
+        ClearTooltip(control.text)
+        control.text:SetHidden(true)
+        control.text = nil
+    end
+end
+
 function LeoAltholic.DisplayCharacterFrames()
     local control
     for _,panel in ipairs(LeoAltholic.panelList) do
         control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindow' .. panel .. 'PanelScrollChild')
         control:SetHeight(#LeoAltholic.GetCharacters() * 110)
     end
+    control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowChampionPanelScrollChild')
+    control:SetHeight(#LeoAltholic.GetCharacters() * 140)
     control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowResearchPanelScrollChild')
     control:SetHeight(#LeoAltholic.GetCharacters() * 260)

     for x,char in pairs(LeoAltholic.GetCharacters()) do

         for _,panel in ipairs(LeoAltholic.panelList) do
-            control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindow' .. panel .. 'Panel_Character'..x..'Alliance')
+            local row = WINDOW_MANAGER:GetControlByName('LeoAltholic' .. panel .. 'Row'..x)
+
+            control = row:GetNamedChild("Alliance")
             local icon = ZO_GetAllianceIcon(char.bio.alliance.id)
             control:SetText("|cF1FF77|t50:90:" .. icon .. "|t|r ")
-            control:SetMouseEnabled(true)
-            control:SetHandler('OnMouseEnter', function(self) ZO_Tooltips_ShowTextTooltip(self, RIGHT, char.bio.alliance.name) end)
-            control:SetHandler("OnMouseExit", function () ZO_Tooltips_HideTextTooltip() end)
+            control.data = char.bio.alliance.name

-            control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindow' .. panel .. 'Panel_Character'..x..'Name')
+            control = row:GetNamedChild("Name")
             control:SetText(char.bio.name)

-            control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindow' .. panel .. 'Panel_Character'..x..'RaceClass')
+            control = row:GetNamedChild("RaceClass")
             control:SetText(char.bio.race .. " " .. char.bio.class)
         end

-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowBioPanel_Character'..x..'Level')
+        local row = WINDOW_MANAGER:GetControlByName('LeoAltholicBioRow'..x)
+
+        control = row:GetNamedChild("Level")
         if char.bio.isChampion then
             control:SetText("|t24:24:esoui/art/champion/champion_icon.dds|t" .. char.bio.championPoints)
         else
             control:SetText(char.bio.level)
         end

-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowBioPanel_Character'..x..'AllianceRank')
+        control = row:GetNamedChild("AllianceRank")
         control:SetText(GetAvARankName(char.bio.gender, char.bio.alliance.rank))
-
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowBioPanel_Character'..x..'AttributePoints')
+        control = row:GetNamedChild("AttributePoints")
         control:SetText(char.attributes.unspent)
-
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowBioPanel_Character'..x..'Played')
+        control = row:GetNamedChild("Played")
         control:SetText(LeoAltholic.GetTime(char.secondsPlayed))
-
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowBioPanel_Character'..x..'Bounty')
+        control = row:GetNamedChild("Bounty")
         control:SetText(char.bounty .. " |t14:14:esoui/art/currency/currency_gold.dds|t")

         local riding = '|t20:20:esoui/art/mounts/ridingskill_speed.dds|t ' .. char.attributes.riding.speed .. '%' ..
                 ' |t20:20:esoui/art/mounts/ridingskill_stamina.dds|t ' .. char.attributes.riding.stamina ..
                 ' |t20:20:esoui/art/mounts/ridingskill_capacity.dds|t ' .. char.attributes.riding.capacity ..
                 ' |t22:22:esoui/art/miscellaneous/timer_32.dds|t ' .. LeoAltholic.GetTime(char.attributes.riding.time - GetTimeStamp())
-
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowBioPanel_Character'..x..'Riding')
+        control = row:GetNamedChild("Riding")
         control:SetText(riding)

-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowStatsPanel_Character'..x..'AttributePoints')
+
+
+        row = WINDOW_MANAGER:GetControlByName('LeoAltholicStatsRow'..x)
+
+        control = row:GetNamedChild("AttributePoints")
         control:SetText("|c596cfd" .. char.attributes.magicka.points .. "|r / |cCB110E" .. char.attributes.health.points .. "|r / |c21A121" .. char.attributes.stamina.points .. "|r")

-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowStatsPanel_Character'..x..'MaxAttributes')
+        control = row:GetNamedChild("MaxAttributes")
         control:SetText("|c596cfd" .. char.attributes.magicka.max .. "|r / |cCB110E" .. char.attributes.health.max .. "|r / |c21A121" .. char.attributes.stamina.max .. "|r")

-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowStatsPanel_Character'..x..'RecoveryAttributes')
+        control = row:GetNamedChild("RecoveryAttributes")
         control:SetText("|c596cfd" .. char.attributes.magicka.recovery .. "|r / |cCB110E" .. char.attributes.health.recovery .. "|r / |c21A121" .. char.attributes.stamina.recovery .. "|r")

-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowStatsPanel_Character'..x..'SpellPoints')
+        control = row:GetNamedChild("SpellPoints")
         control:SetText(string.format("%.1f%%", char.attributes.spell.criticalChance))

-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowStatsPanel_Character'..x..'WeaponPoints')
+        control = row:GetNamedChild("WeaponPoints")
         control:SetText(string.format("%.1f%%", char.attributes.weapon.criticalChance))

+        row = WINDOW_MANAGER:GetControlByName('LeoAltholicChampionRow'..x)
         for _, attribute in ipairs({ATTRIBUTE_MAGICKA, ATTRIBUTE_HEALTH, ATTRIBUTE_STAMINA}) do
-            control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowChampionPanel_Character'..x..attribute)
+            control = row:GetNamedChild("Attribute" .. attribute)
             local total = char.champion[attribute].spent + char.champion[attribute].unspent
             local color = '|c21A121'
             if char.champion[attribute].unspent > 0 then
@@ -754,57 +273,60 @@ function LeoAltholic.DisplayCharacterFrames()
             end
             control:SetText(color .. char.champion[attribute].spent .. '/' .. total .. '|r')
         end
+
         for i = 1, GetNumChampionDisciplines() do
             local dAttribute = GetChampionDisciplineAttribute(i)
-            control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowChampionPanel_Character'..x..i..'Disc')
+            control = row:GetNamedChild("Disc" .. i)
             control:SetText(char.champion[dAttribute].disciplines[i].spent)
         end

+        row = WINDOW_MANAGER:GetControlByName('LeoAltholicInventoryRow'..x)
         local color = '|c21A121'
         if char.inventory.free <= 25 then color = '|c596cfd' end
         if char.inventory.free <= 10 then color = '|cCB110E' end
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowInventoryPanel_Character'..x..'Bag')
+        control = row:GetNamedChild("Bag")
         control:SetText(color .. char.inventory.used .. "|r / " .. char.inventory.size)
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowInventoryPanel_Character'..x..'SoulGems')
+        control = row:GetNamedChild("SoulGems")
         control:SetText("|c21A121" .. char.inventory.soulGemFilled .. '|r / ' .. char.inventory.soulGemEmpty)
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowInventoryPanel_Character'..x..'Gold')
+        control = row:GetNamedChild("Gold")
         control:SetText(LeoAltholic.formatNumber(char.inventory.gold))
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowInventoryPanel_Character'..x..'AP')
+        control = row:GetNamedChild("AP")
         control:SetText(LeoAltholic.formatNumber(char.inventory.ap))
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowInventoryPanel_Character'..x..'TelVar')
+        control = row:GetNamedChild("TelVar")
         control:SetText(LeoAltholic.formatNumber(char.inventory.telvar))
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowInventoryPanel_Character'..x..'Writ')
+        control = row:GetNamedChild("Writ")
         control:SetText(LeoAltholic.formatNumber(char.inventory.writVoucher))

+        row = WINDOW_MANAGER:GetControlByName('LeoAltholicResearchRow'..x)
         for _,craft in pairs(LeoAltholic.craftResearch) do
             local i = 1
             local researching = 0
-            local craftName = GetCraftingSkillName(craft)
             for line = 1, GetNumSmithingResearchLines(craft) do
                 local lineName, lineIcon = GetSmithingResearchLineInfo(craft, line)
                 for trait = 1, LeoAltholic.maxTraits do
                     local traitType = GetSmithingResearchLineTraitInfo(craft, line, trait)
                     local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
-                    local traitData = char.research[craftName][lineName][traitName]
+                    local traitData = char.research[craft][line][trait]
                     if type(traitData) == 'number' then
-                        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowResearchPanel_Character'..x..craftName..i)
+                        control = row:GetNamedChild("Craft"..craft.."Label"..i)
                         control:SetText(' |t28:28:'..lineIcon..'|t  ' .. traitName)
                         control:SetHandler('OnMouseEnter', function(self) ZO_Tooltips_ShowTextTooltip(self, TOP, lineName) end)
                         control:SetHandler("OnMouseExit", function () ZO_Tooltips_HideTextTooltip() end)
-                        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowResearchPanel_Character'..x..craftName..i.."Timer")
+                        control = row:GetNamedChild("Craft"..craft.."Timer"..i)
                         control:SetText(LeoAltholic.GetTime(traitData - GetTimeStamp()))
                         i = i + 1
                         researching = researching + 1
                     end
                 end
             end
-            control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowResearchPanel_Character'..x..craftName..'Count')
-            local color = '|c21A121'
-            if researching < char.research[craftName].max then
+            control = row:GetNamedChild("Craft"..craft)
+            color = '|c21A121'
+            if researching < char.research[craft].max then
                 color = '|cCB110E'
             end
-            control:SetText(color .. researching .. '/' .. char.research[craftName].max .. '|r')
+            control:SetText(color .. researching .. '/' .. char.research[craft].max .. '|r')
         end
+
     end
 end

@@ -820,20 +342,18 @@ function LeoAltholic:OnUpdate()
                 ' |t20:20:esoui/art/mounts/ridingskill_stamina.dds|t ' .. char.attributes.riding.stamina ..
                 ' |t20:20:esoui/art/mounts/ridingskill_capacity.dds|t ' .. char.attributes.riding.capacity ..
                 ' |t22:22:esoui/art/miscellaneous/timer_32.dds|t ' .. LeoAltholic.GetTime(char.attributes.riding.time - GetTimeStamp())
-        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowBioPanel_Character'..x..'Riding')
+        local row = WINDOW_MANAGER:GetControlByName('LeoAltholicBioRow'..x)
+        control = row:GetNamedChild('Riding')
         control:SetText(riding)

+        row = WINDOW_MANAGER:GetControlByName('LeoAltholicResearchRow'..x)
         for _,craft in pairs(LeoAltholic.craftResearch) do
             local i = 1
-            local craftName = GetCraftingSkillName(craft)
             for line = 1, GetNumSmithingResearchLines(craft) do
-                local lineName, lineIcon = GetSmithingResearchLineInfo(craft, line)
                 for trait = 1, LeoAltholic.maxTraits do
-                    local traitType = GetSmithingResearchLineTraitInfo(craft, line, trait)
-                    local traitName = GetString('SI_ITEMTRAITTYPE',traitType)
-                    local traitData = char.research[craftName][lineName][traitName]
+                    local traitData = char.research[craft][line][trait]
                     if type(traitData) == 'number' then
-                        control = WINDOW_MANAGER:GetControlByName('LeoAltholicWindowResearchPanel_Character'..x..craftName..i.."Timer")
+                        control = row:GetNamedChild("Craft"..craft.."Timer"..i)
                         control:SetText(LeoAltholic.GetTime(traitData - GetTimeStamp()))
                         i = i + 1
                     end
@@ -841,7 +361,6 @@ function LeoAltholic:OnUpdate()
             end
         end
     end
-
 end

 ZO_CreateStringId('SI_BINDING_NAME_LEOALTHOLIC_TOGGLE_WINDOW', "Show/Hide Main Window")
diff --git a/Libs/LibFeedback/LibFeedback.txt b/Libs/LibFeedback/LibFeedback.txt
deleted file mode 100755
index 42cde9a..0000000
--- a/Libs/LibFeedback/LibFeedback.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-## Title: LibFeedback
-## Author: Dolgubon
-## APIVersion: 100024 100025
-## Version: 1.1
-## Description: This is a library which allows Addon Authors to easily add a feedback window to their addon
-## DependsOn: LibStub
-
-## This Add-On is not created by, affiliated with or sponsored by ZeniMax Media Inc. or its affiliates. The Elder Scrolls® and related logos are registered trademarks or trademarks of ZeniMax Media Inc. in the United States and/or other countries. All rights reserved.
-
-libs/LibStub.lua
-feedback.lua
diff --git a/Libs/LibFeedback/feedback.lua b/Libs/LibFeedback/feedback.lua
deleted file mode 100755
index 127b173..0000000
--- a/Libs/LibFeedback/feedback.lua
+++ /dev/null
@@ -1,250 +0,0 @@
--- Modified by Dolgubon based off code from Master Merchant with permission
--- Master Merchant was written by Dan Stone (aka @khaibit) / Chris Lasswell (aka @Philgo68)
-
---[[
-
-Use:
-
-local LibFeedback = LibStub:GetLibrary('LibFeedback')
--- The button is returned so you can modify the button if needed
--- ExampleAddonNameSpace.feedbackButton = LibFeedback:initializeFeedbackWindow(
-ExampleAddonNameSpace, -- namespace of the addon
-"Example Addon", -- The title string for the feedback window and the mails it sends
-parentControl, -- The parent control to anchor the feedback button(s) + label(s) to
-"@AddonAuthor", -- If this parameter is no table: [1st parameter] like desribed below:
-                    -- The destination for feedback (0 gold attachment) and donation mails, valid for all servers
-                -- If this parameter is a table:
-                -- Example: { addonVars.addonAuthorDisplayNameEU, addonVars.addonAuthorDisplayNameNA, addonVars.addonAuthorDisplayNamePTS },
-                    -- [1st parameter]Addon author name or character name at the EU Megaserver
-                    -- [2nd parameter]Addon author name or character name at the NA Megaserver
-                    -- [3rd parameter]Addon author name or character name at the PTS (Testserver)
-{TOPLEFT, owningWindow, TOPLEFT, x, y}, -- The position of the mail button icon. owningWindow: Parent control for the button. x and y: Integer values for the offsets
-{0,5000,50000, "https://www.genericexampleurl.com/somemoregenericiness"} -- The button info:
-            -- Can theoretically do any number of options, it *should* handle them
-            -- If this parameter is no table: [1st parameter] like desribed below:
-                -- If 0: Will not attach any gold, and will say 'Send Note'
-                -- If non zero: Will auto attach that amount of gold
-                -- If URL: Will show a dialog box and ask the user if they want to go to the URL.
-            -- If this parameter is a table:
-                -- Example: [index]= {[1st parameter]            [2nd parameter]                                 [3rd parameter] },
-                --            [1] = { 0,                         localization.feedbackSendNote,                  false },    -- Send ingame mail
-                --            [2] = { 10000,                     localization.feedbackSendGold,                  true },     -- Send 10000 gold
-                --            [3] = { addonVars.authorPortal,    localization.feedbackOpenAddonAuthorWebsite,    false },    -- Open URL
-                --            [4] = { addonVars.FAQwebsite,      localization.feedbackOpenAddonFAQ,              false }     -- Open URL
-                -- [1st parameter]Integer. When >0: Gold value to send/Integer. Gold will only be send if 3rd parameter is true. / When Integer==0: Show the 2nd parameter string as button text and send ingame mail. / When String <> "": Show the 2nd parameter string as button text and open the URL from 1st parameter in Webbrowser
-                -- [2nd parameter]String to show as button text.
-                -- [3rd parameter]Boolean send gold. True: Send mail with attached gold value from 1st parameter/False: Send normal mail without gold attached
-
-"If you found a bug, have a request or a suggestion, or simply wish to donate, send a mail.", -- Will be displayed as a message below the title.
-600, -- The default width of the feedback window. If more than 4 buttons this should be increased.
-150  -- The default height of the feedback window
-150, -- The default width of the feedback window's buttons
-28   -- The default height of the feedback window's buttons
-)
-]]
-
-
-local libLoaded
-local LIB_NAME, VERSION = "LibFeedback", 1.1
-local LibFeedback, oldminor = LibStub:NewLibrary(LIB_NAME, VERSION)
-if not LibFeedback then return end
-LibFeedback.debug = false
-
-local function SendNote(self)
-
-	local p = self.parent
-	if type(self.amount)=="string" then
-		RequestOpenUnsafeURL(self.amount)
-	else
-		p.parentControl:SetHidden(true)
-		p:SetHidden(true)
-		SCENE_MANAGER:Show('mailSend')
-		zo_callLater(function()
-			ZO_MailSendToField:SetText(p.mailDestination)
-			ZO_MailSendSubjectField:SetText(p.parentAddonName)
-			QueueMoneyAttachment(self.amount)
-			ZO_MailSendBodyField:TakeFocus() end, 200)
-	end
-end
-
-local function createFeedbackButton(name, owningWindow, feedbackWindowButtonWidth, feedbackWindowButtonHeight)
-	local button = WINDOW_MANAGER:CreateControlFromVirtual(name, owningWindow, "ZO_DefaultButton")
-	local b = button
-	b:SetDimensions(feedbackWindowButtonWidth, feedbackWindowButtonHeight)
-	b:SetHandler("OnClicked",function()SendNote(b) end)
-	b:SetAnchor(BOTTOMLEFT,owningWindow, BOTTOMLEFT,5,5)
-	return button
-end
-
-local function createShowFeedbackWindow(owningWindow)
-	local showButton = WINDOW_MANAGER:CreateControl(owningWindow:GetName().."ShowFeedbackWindowButton", owningWindow, CT_BUTTON)
-	local b = showButton
-	b:SetDimensions(34, 34)
-	b:SetNormalTexture("ESOUI/art/chatwindow/chat_mail_up.dds")
-	b:SetMouseOverTexture("ESOUI/art/chatwindow/chat_mail_over.dds")
-	b:SetHandler("OnClicked", function(self) self.feedbackWindow:ToggleHidden() end )
-	return showButton
-end
-
-local function createFeedbackWindow(owningWindow, messageText, feedbackWindowWidth, feedbackWindowHeight)
-	local feedbackWindow = WINDOW_MANAGER:CreateTopLevelWindow(owningWindow:GetName().."FeedbackWindow")
-	local c = feedbackWindow
-	c:SetDimensions(feedbackWindowWidth, feedbackWindowHeight)
-	c:SetMouseEnabled(true)
-	c:SetClampedToScreen(true)
-	c:SetMovable(true)
-
-	WINDOW_MANAGER:CreateControlFromVirtual(c:GetName().."BG", c, "ZO_DefaultBackdrop"):SetAnchorFill(c)
-	local l = WINDOW_MANAGER:CreateControl(c:GetName().."Label", c, CT_LABEL)
-	l:SetFont("ZoFontGame")
-	l:SetAnchor(TOP, c,TOP0, 0, 5)
-	l:SetHorizontalAlignment(TEXT_ALIGN_CENTER)
-	l:SetColor(0.83, 0.76, 0.16)
-	local b = WINDOW_MANAGER:CreateControl(c:GetName().."Close", c, CT_BUTTON)
-	b:SetAnchor(CENTER, c, TOPRIGHT, -20, 20)
-	b:SetDimensions(48, 48)
-	b:SetNormalTexture("/esoui/art/hud/radialicon_cancel_up.dds")
-	b:SetMouseOverTexture("/esoui/art/hud/radialicon_cancel_over.dds")
-	b:SetHandler("OnClicked", function(self) self:GetParent():SetHidden(true) end)
-	local n = WINDOW_MANAGER:CreateControl(c:GetName().."Note", c, CT_LABEL)
-    n:SetAnchor(TOPLEFT, c, TOPLEFT, 10, 30)
-    n:SetDimensions(feedbackWindowWidth - 20, feedbackWindowHeight - 30)
-    n:SetText(messageText)
-    --n:SetAnchorFill()
-	n:SetColor(1, 1, 1)
-	n:SetFont("ZoFontGame")
-	n:SetHorizontalAlignment(TEXT_ALIGN_CENTER)
-	return feedbackWindow
-end
-
-function LibFeedback:initializeFeedbackWindow(parentAddonNameSpace, parentAddonName, parentControl, mailDestination,  mailButtonPosition, buttonInfo,  messageText, feedbackWindowWidth, feedbackWindowHeight, feedbackWindowButtonWidth, feedbackWindowButtonHeight)
-	-- Create Default settings
-	if parentAddonNameSpace == nil or parentAddonNameSpace == "" then
-		d("|cFF0000[LibFeedback] - ERROR:|r Obligatory addon namespace is missing!")
-		return nil
-	end
-	if parentControl == nil or parentControl.GetName == nil then
-		d("|cFF0000[LibFeedback] - ERROR:|r Parent control not found for addon namespace: \"|cFFFFFF" .. tostring(parentAddonName) .. "|r\"")
-		return nil
-	end
-
-	if mailButtonPosition == nil or mailButtonPosition[2] == nil then
-		d("|cFF0000[LibFeedback] - ERROR:|r Mail button data is missing for addon namespace: \"|cFFFFFF" .. tostring(parentAddonName) .. "|r\"")
-		return nil
-	end
-    feedbackWindowHeight = feedbackWindowHeight or 150
-    feedbackWindowWidth = feedbackWindowWidth or 600
-    feedbackWindowButtonWidth = feedbackWindowButtonWidth or 150
-    feedbackWindowButtonHeight = feedbackWindowButtonHeight or 28
-
-	local feedbackWindow = createFeedbackWindow(parentControl, messageText, feedbackWindowWidth, feedbackWindowHeight)
-	parentAddonNameSpace.feedbackWindow = feedbackWindow
-	feedbackWindow.parentControl = parentControl
-	if type(mailDestination) == "table" then
-		--Get the current server and get the email address from the appropriate index of mailDestination[] then
-		--1: EU, 2: NA, 3: PTS
-		local mailAtServer = ""
-		local world = GetWorldName()
-		if world == 'PTS' then
-		    mailAtServer = mailDestination[3] or mailDestination[1] or mailDestination[2]
-		elseif world == 'EU Megaserver' then
-		    mailAtServer = mailDestination[1]
-		else
-		    mailAtServer = mailDestination[2]
-		end
-		-- No destination sepcified for this server, so exit.
-		if not mailAtServer then
-			return
-		end
-		feedbackWindow.mailDestination = mailAtServer
-    else
-	    feedbackWindow.mailDestination = mailDestination
-    end
-	feedbackWindow.parentAddonName = parentAddonName
-
-	feedbackWindow:SetAnchor(TOPLEFT,parentControl, TOPLEFT, 0,0)
-	feedbackWindow:SetHidden(true)
-
-	feedbackWindow:SetDimensions(math.max(#buttonInfo*feedbackWindowHeight, feedbackWindowWidth) , feedbackWindowHeight)
-	feedbackWindow:GetNamedChild("Label"):SetText(parentAddonName)
-
-	local buttons = {}
-	for i = 1, #buttonInfo do
-
-		buttons[#buttons+1] =  createFeedbackButton(feedbackWindow:GetName().."Button"..#buttons, feedbackWindow, feedbackWindowButtonWidth, feedbackWindowButtonHeight)
-		buttons[i]:SetAnchor(BOTTOM, feedbackWindow, BOTTOMLEFT, (i-1)*feedbackWindowHeight+70,-10)
-        local buttonData = buttonInfo[i]
-        if buttonData ~= nil then
-            local amount
-            buttons[i].SendNote = SendNote
-            buttons[i].parent = feedbackWindow
-
-            local buttonText = ""
-            local isButtonInfoDeep = (type(buttonData) == "table") or false
-            if isButtonInfoDeep then
-                if buttonData[2] == nil then buttonData[2] = "n/a" end -- Button text
-                buttonData[3] = buttonData[3] or false -- Send gold
-            end
-            local isString = (not isButtonInfoDeep and (type(buttonData) == "string") or (isButtonInfoDeep and type(buttonData[1]) == "string")) or false
-            local sendGold = (not isButtonInfoDeep and (type(buttonData) == "number" and buttonData > 0) or (isButtonInfoDeep and buttonData[3])) or false
-
-            if LibFeedback.debug then
-                d(zo_strformat("|cFF0000[LibFeedback]|r <<1>> - Button <<2>>: isButtonInfoDeep: <<3>>, isString: <<4>>, sendGold: <<5>>,", tostring(parentAddonName), tostring(i), tostring(isButtonInfoDeep), tostring(isString), tostring(sendGold)))
-                if isButtonInfoDeep then
-                    d(zo_strformat("> Param1: <<1>>, Param2: <<2>>, Param3: <<3>>,", tostring(buttonData[1]), tostring(buttonData[2]), tostring(buttonData[3])))
-                else
-                    d(zo_strformat("> Value: <<1>>", tostring(buttonData)))
-                end
-            end
-
-            --Send gold via mail
-            if sendGold then
-                if isButtonInfoDeep then
-                    buttonText = zo_strformat(buttonData[2], buttonData[1])
-                    amount = buttonData[1]
-                else
-                    buttonText = "Send "..tostring(buttonData).." gold"
-                    amount = buttonData
-                end
-            else
-                --Open URL
-                if isString then
-                    if isButtonInfoDeep then
-                        buttonText = buttonData[2]
-                        amount = buttonData[1]
-                    else
-                        buttonText = "Send $$"
-                        amount = buttonData
-                    end
-                --Show a text and open mail
-                else
-                    if isButtonInfoDeep then
-                        if buttonData[1] == 0 or  buttonData[1] == "" then
-                            buttonText = buttonData[2]
-                            amount = buttonData[1]
-                        end
-                    else
-                        if buttonData == 0 or  buttonData == "" then
-                            buttonText = "Send note"
-                            amount = buttonData
-                        end
-                    end
-                end
-            end
-            buttons[i].amount = amount
-            buttons[i]:SetText(buttonText)
-        end
-	end
-	local showButton = createShowFeedbackWindow(parentControl)
-
-	showButton.feedbackWindow = feedbackWindow
-	showButton:SetAnchor(unpack(mailButtonPosition))
-	showButton:SetDimensions(40,40)
-
-	return showButton, feedbackWindow
-end
-
-function LibFeedback:setDebug(debugValue)
-    debugValue = debugValue or false
-    LibFeedback.debug = debugValue
-end
diff --git a/Libs/LibFeedback/libs/LibStub.lua b/Libs/LibFeedback/libs/LibStub.lua
deleted file mode 100755
index 0e6bf67..0000000
--- a/Libs/LibFeedback/libs/LibStub.lua
+++ /dev/null
@@ -1,38 +0,0 @@
--- LibStub is a simple versioning stub meant for use in Libraries.  http://www.wowace.com/wiki/LibStub for more info
--- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
--- LibStub developed for World of Warcraft by above members of the WowAce community.
--- Ported to Elder Scrolls Online by Seerah
-
-local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 4
-local LibStub = _G[LIBSTUB_MAJOR]
-
-local strformat = string.format
-if not LibStub or LibStub.minor < LIBSTUB_MINOR then
-	LibStub = LibStub or {libs = {}, minors = {} }
-	_G[LIBSTUB_MAJOR] = LibStub
-	LibStub.minor = LIBSTUB_MINOR
-
-	function LibStub:NewLibrary(major, minor)
-		assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
-		if type(minor) ~= "number" then
-			minor = assert(tonumber(zo_strmatch(minor, "%d+%.?%d*")), "Minor version must either be a number or contain a number.")
-		end
-
-		local oldminor = self.minors[major]
-		if oldminor and oldminor >= minor then return nil end
-		self.minors[major], self.libs[major] = minor, self.libs[major] or {}
-		return self.libs[major], oldminor
-	end
-
-	function LibStub:GetLibrary(major, silent)
-		if not self.libs[major] and not silent then
-			error(strformat("Cannot find a library instance of %q.", tostring(major)), 2)
-		end
-		return self.libs[major], self.minors[major]
-	end
-
-	function LibStub:IterateLibraries() return pairs(self.libs) end
-	setmetatable(LibStub, { __call = LibStub.GetLibrary })
-end
-
-LibStub.SILENT = true
\ No newline at end of file
diff --git a/Libs/LibStub/LibStub.txt b/Libs/LibStub/LibStub.txt
deleted file mode 100644
index 479f598..0000000
--- a/Libs/LibStub/LibStub.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-## APIVersion: 100007
-## Title: LibStub
-## Description: Universal Library Stub
-## Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, ported to ESO by Seerah
-## Version: 1.0 r4
-
-LibStub\LibStub.lua
\ No newline at end of file
diff --git a/Libs/LibStub/LibStub/LibStub.lua b/Libs/LibStub/LibStub/LibStub.lua
deleted file mode 100644
index 0e6bf67..0000000
--- a/Libs/LibStub/LibStub/LibStub.lua
+++ /dev/null
@@ -1,38 +0,0 @@
--- LibStub is a simple versioning stub meant for use in Libraries.  http://www.wowace.com/wiki/LibStub for more info
--- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
--- LibStub developed for World of Warcraft by above members of the WowAce community.
--- Ported to Elder Scrolls Online by Seerah
-
-local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 4
-local LibStub = _G[LIBSTUB_MAJOR]
-
-local strformat = string.format
-if not LibStub or LibStub.minor < LIBSTUB_MINOR then
-	LibStub = LibStub or {libs = {}, minors = {} }
-	_G[LIBSTUB_MAJOR] = LibStub
-	LibStub.minor = LIBSTUB_MINOR
-
-	function LibStub:NewLibrary(major, minor)
-		assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
-		if type(minor) ~= "number" then
-			minor = assert(tonumber(zo_strmatch(minor, "%d+%.?%d*")), "Minor version must either be a number or contain a number.")
-		end
-
-		local oldminor = self.minors[major]
-		if oldminor and oldminor >= minor then return nil end
-		self.minors[major], self.libs[major] = minor, self.libs[major] or {}
-		return self.libs[major], oldminor
-	end
-
-	function LibStub:GetLibrary(major, silent)
-		if not self.libs[major] and not silent then
-			error(strformat("Cannot find a library instance of %q.", tostring(major)), 2)
-		end
-		return self.libs[major], self.minors[major]
-	end
-
-	function LibStub:IterateLibraries() return pairs(self.libs) end
-	setmetatable(LibStub, { __call = LibStub.GetLibrary })
-end
-
-LibStub.SILENT = true
\ No newline at end of file