Quantcast

update to 4.8.9

Steven Jackson [10-05-14 - 22:41]
update to 4.8.9
Filename
Interface/AddOns/SVUI/License.txt
Interface/AddOns/SVUI/SVUI.lua
Interface/AddOns/SVUI/SVUI.toc
Interface/AddOns/SVUI/SVUI.xml
Interface/AddOns/SVUI/assets/artwork/Icons/CLOSE-BUTTON.blp
Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-DOWN.blp
Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-LEFT.blp
Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-RIGHT.blp
Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-UP.blp
Interface/AddOns/SVUI/docs/configs.lua
Interface/AddOns/SVUI/docs/schema.lua
Interface/AddOns/SVUI/language/chinese_ui.lua
Interface/AddOns/SVUI/language/english_ui.lua
Interface/AddOns/SVUI/language/french_ui.lua
Interface/AddOns/SVUI/language/german_ui.lua
Interface/AddOns/SVUI/language/italian_ui.lua
Interface/AddOns/SVUI/language/korean_ui.lua
Interface/AddOns/SVUI/language/portuguese_ui.lua
Interface/AddOns/SVUI/language/russian_ui.lua
Interface/AddOns/SVUI/language/spanish_ui.lua
Interface/AddOns/SVUI/language/taiwanese_ui.lua
Interface/AddOns/SVUI/libs/LibLocale-1.0/LibLocale-1.0.lua
Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
Interface/AddOns/SVUI/libs/LibSystemRegistry-1.0/LibSystemRegistry-1.0.lua
Interface/AddOns/SVUI/libs/libs.xml
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Afflicted/oUF_Afflicted.toc
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ArcaneCharge/oUF_ArcaneCharge.toc
Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_Combatant/oUF_Combatant.toc
Interface/AddOns/SVUI/packages/actionbar/KeyBind.lua
Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
Interface/AddOns/SVUI/packages/aura/SVAura.lua
Interface/AddOns/SVUI/packages/bag/SVBag.lua
Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
Interface/AddOns/SVUI/packages/bag/tools/sorting.lua
Interface/AddOns/SVUI/packages/chat/SVChat.lua
Interface/AddOns/SVUI/packages/dock/SVDock.lua
Interface/AddOns/SVUI/packages/gear/SVGear.lua
Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
Interface/AddOns/SVUI/packages/map/SVMap.lua
Interface/AddOns/SVUI/packages/override/SVOverride.lua
Interface/AddOns/SVUI/packages/plates/SVPlate.lua
Interface/AddOns/SVUI/packages/stats/SVStats.lua
Interface/AddOns/SVUI/packages/stats/stats/bags.lua
Interface/AddOns/SVUI/packages/stats/stats/cta.lua
Interface/AddOns/SVUI/packages/stats/stats/dps.lua
Interface/AddOns/SVUI/packages/stats/stats/durability.lua
Interface/AddOns/SVUI/packages/stats/stats/experience.lua
Interface/AddOns/SVUI/packages/stats/stats/friends.lua
Interface/AddOns/SVUI/packages/stats/stats/gold.lua
Interface/AddOns/SVUI/packages/stats/stats/guild.lua
Interface/AddOns/SVUI/packages/stats/stats/hps.lua
Interface/AddOns/SVUI/packages/stats/stats/reputation.lua
Interface/AddOns/SVUI/packages/stats/stats/system.lua
Interface/AddOns/SVUI/packages/stats/stats/time.lua
Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
Interface/AddOns/SVUI/packages/tip/SVTip.lua
Interface/AddOns/SVUI/packages/unit/SVUnit.lua
Interface/AddOns/SVUI/packages/unit/SVUnit.xml
Interface/AddOns/SVUI/packages/unit/config.lua
Interface/AddOns/SVUI/packages/unit/elements/auras.lua
Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
Interface/AddOns/SVUI/packages/unit/elements/essentials.lua
Interface/AddOns/SVUI/packages/unit/elements/misc.lua
Interface/AddOns/SVUI/packages/unit/elements/tags.lua
Interface/AddOns/SVUI/packages/unit/frames.lua
Interface/AddOns/SVUI/packages/unit/resources/deathknight.lua
Interface/AddOns/SVUI/packages/unit/resources/druid.lua
Interface/AddOns/SVUI/packages/unit/resources/hunter.lua
Interface/AddOns/SVUI/packages/unit/resources/mage.lua
Interface/AddOns/SVUI/packages/unit/resources/monk.lua
Interface/AddOns/SVUI/packages/unit/resources/paladin.lua
Interface/AddOns/SVUI/packages/unit/resources/priest.lua
Interface/AddOns/SVUI/packages/unit/resources/rogue.lua
Interface/AddOns/SVUI/packages/unit/resources/shaman.lua
Interface/AddOns/SVUI/packages/unit/resources/warlock.lua
Interface/AddOns/SVUI/packages/unit/resources/warrior.lua
Interface/AddOns/SVUI/scripts/comix.lua
Interface/AddOns/SVUI/scripts/ego.lua
Interface/AddOns/SVUI/scripts/misc.lua
Interface/AddOns/SVUI/scripts/mounts.lua
Interface/AddOns/SVUI/scripts/questwatch.lua
Interface/AddOns/SVUI/scripts/raid.lua
Interface/AddOns/SVUI/scripts/reactions.lua
Interface/AddOns/SVUI/scripts/spellbind.lua
Interface/AddOns/SVUI/setup/configs.lua
Interface/AddOns/SVUI/setup/installer.lua
Interface/AddOns/SVUI/setup/presets.lua
Interface/AddOns/SVUI/system/alerts.lua
Interface/AddOns/SVUI/system/animate.lua
Interface/AddOns/SVUI/system/common.lua
Interface/AddOns/SVUI/system/database.lua
Interface/AddOns/SVUI/system/load.lua
Interface/AddOns/SVUI/system/media.lua
Interface/AddOns/SVUI/system/mentalo.lua
Interface/AddOns/SVUI/system/mentalo.xml
Interface/AddOns/SVUI/system/moveable.lua
Interface/AddOns/SVUI/system/setup.lua
Interface/AddOns/SVUI/system/slash.lua
Interface/AddOns/SVUI/system/timers.lua
Interface/AddOns/SVUI/system/utilities.lua
Interface/AddOns/SVUI/system/visibility.lua
Interface/AddOns/SVUI/xml/system.xml
Interface/AddOns/SVUI/xml/utility.xml
Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.lua
Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.toc
Interface/AddOns/SVUI_AnsweringService/artwork/DOCK-CALL.blp
Interface/AddOns/SVUI_ArtOfWar/Bindings.xml
Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.lua
Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.toc
Interface/AddOns/SVUI_ArtOfWar/artwork/DOCK-PVP.blp
Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INCOMING.blp
Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INFO.blp
Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-RADIO.blp
Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SAFE.blp
Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SCANNER.blp
Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-UTILITIES.blp
Interface/AddOns/SVUI_ChatOMatic/License.txt
Interface/AddOns/SVUI_ChatOMatic/Loader.lua
Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua
Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc
Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.xml
Interface/AddOns/SVUI_ChatOMatic/artwork/DOCK-CALL.blp
Interface/AddOns/SVUI_ChatOMatic/components/_load.xml
Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
Interface/AddOns/SVUI_ChatOMatic/components/chat_history.lua
Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.xml
Interface/AddOns/SVUI_ConfigOMatic/_load.xml
Interface/AddOns/SVUI_ConfigOMatic/components/_load.xml
Interface/AddOns/SVUI_ConfigOMatic/components/aura.lua
Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua
Interface/AddOns/SVUI_ConfigOMatic/components/bar.lua
Interface/AddOns/SVUI_ConfigOMatic/components/chat.lua
Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua
Interface/AddOns/SVUI_ConfigOMatic/components/filter.lua
Interface/AddOns/SVUI_ConfigOMatic/components/henchmen.lua
Interface/AddOns/SVUI_ConfigOMatic/components/map.lua
Interface/AddOns/SVUI_ConfigOMatic/components/plate.lua
Interface/AddOns/SVUI_ConfigOMatic/components/profiles.lua
Interface/AddOns/SVUI_ConfigOMatic/components/stat.lua
Interface/AddOns/SVUI_ConfigOMatic/components/tip.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/_load.xml
Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/focus.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/grid.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/other.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/pet.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua
Interface/AddOns/SVUI_ConfigOMatic/components/units/target.lua
Interface/AddOns/SVUI_ConfigOMatic/language/generic.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/_load.xml
Interface/AddOns/SVUI_ConfigOMatic/modules/art.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/aura.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/bag.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/bar.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/dock.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/dynamic.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/henchmen.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/map.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/mode.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/plate.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/profiles.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/stat.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/tip.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/_load.xml
Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/focus.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/grid.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/other.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/party.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/pet.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/player.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/raid.lua
Interface/AddOns/SVUI_ConfigOMatic/modules/units/target.lua
Interface/AddOns/SVUI_CraftOMatic/Bindings.xml
Interface/AddOns/SVUI_CraftOMatic/License.txt
Interface/AddOns/SVUI_CraftOMatic/Loader.lua
Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc
Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.xml
Interface/AddOns/SVUI_CraftOMatic/artwork/DOCK-LABORER.blp
Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-COOKING.blp
Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FARMING.blp
Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FISHING.blp
Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-SURVEY.blp
Interface/AddOns/SVUI_CraftOMatic/components/_load.xml
Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
Interface/AddOns/SVUI_FightOMatic/Bindings.xml
Interface/AddOns/SVUI_FightOMatic/License.txt
Interface/AddOns/SVUI_FightOMatic/Loader.lua
Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua
Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc
Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.xml
Interface/AddOns/SVUI_FightOMatic/artwork/DOCK-PVP.blp
Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INCOMING.blp
Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INFO.blp
Interface/AddOns/SVUI_FightOMatic/artwork/PVP-RADIO.blp
Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SAFE.blp
Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SCANNER.blp
Interface/AddOns/SVUI_FightOMatic/artwork/PVP-UTILITIES.blp
Interface/AddOns/SVUI_FightOMatic/components/_load.xml
Interface/AddOns/SVUI_Laborer/Bindings.xml
Interface/AddOns/SVUI_Laborer/SVUI_Laborer.lua
Interface/AddOns/SVUI_Laborer/SVUI_Laborer.toc
Interface/AddOns/SVUI_Laborer/SVUI_Laborer.xml
Interface/AddOns/SVUI_Laborer/artwork/DOCK-LABORER.blp
Interface/AddOns/SVUI_Laborer/artwork/LABORER-COOKING.blp
Interface/AddOns/SVUI_Laborer/artwork/LABORER-FARMING.blp
Interface/AddOns/SVUI_Laborer/artwork/LABORER-FISHING.blp
Interface/AddOns/SVUI_Laborer/artwork/LABORER-SURVEY.blp
Interface/AddOns/SVUI_Laborer/modes/archaeology.lua
Interface/AddOns/SVUI_Laborer/modes/cooking.lua
Interface/AddOns/SVUI_Laborer/modes/farming.lua
Interface/AddOns/SVUI_Laborer/modes/fishing.lua
Interface/AddOns/SVUI_LogOMatic/Loader.lua
Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.xml
Interface/AddOns/SVUI_StyleOMatic/License.txt
Interface/AddOns/SVUI_StyleOMatic/Loader.lua
Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.xml
Interface/AddOns/SVUI_StyleOMatic/addons/_load.xml
Interface/AddOns/SVUI_StyleOMatic/addons/achievement.lua
Interface/AddOns/SVUI_StyleOMatic/addons/alert.lua
Interface/AddOns/SVUI_StyleOMatic/addons/archeology.lua
Interface/AddOns/SVUI_StyleOMatic/addons/auctionhouse.lua
Interface/AddOns/SVUI_StyleOMatic/addons/barbershop.lua
Interface/AddOns/SVUI_StyleOMatic/addons/battlefield.lua
Interface/AddOns/SVUI_StyleOMatic/addons/blackmarket.lua
Interface/AddOns/SVUI_StyleOMatic/addons/calendar.lua
Interface/AddOns/SVUI_StyleOMatic/addons/challenges.lua
Interface/AddOns/SVUI_StyleOMatic/addons/character.lua
Interface/AddOns/SVUI_StyleOMatic/addons/chat.lua
Interface/AddOns/SVUI_StyleOMatic/addons/dressup.lua
Interface/AddOns/SVUI_StyleOMatic/addons/encounterjournal.lua
Interface/AddOns/SVUI_StyleOMatic/addons/friends.lua
Interface/AddOns/SVUI_StyleOMatic/addons/gossip.lua
Interface/AddOns/SVUI_StyleOMatic/addons/guild.lua
Interface/AddOns/SVUI_StyleOMatic/addons/help.lua
Interface/AddOns/SVUI_StyleOMatic/addons/inspect.lua
Interface/AddOns/SVUI_StyleOMatic/addons/itemsocketing.lua
Interface/AddOns/SVUI_StyleOMatic/addons/itemupgrade.lua
Interface/AddOns/SVUI_StyleOMatic/addons/keybinding.lua
Interface/AddOns/SVUI_StyleOMatic/addons/lfd.lua
Interface/AddOns/SVUI_StyleOMatic/addons/loothistory.lua
Interface/AddOns/SVUI_StyleOMatic/addons/lossofcontrol.lua
Interface/AddOns/SVUI_StyleOMatic/addons/macro.lua
Interface/AddOns/SVUI_StyleOMatic/addons/mailbox.lua
Interface/AddOns/SVUI_StyleOMatic/addons/merchant.lua
Interface/AddOns/SVUI_StyleOMatic/addons/petbattle.lua
Interface/AddOns/SVUI_StyleOMatic/addons/petition.lua
Interface/AddOns/SVUI_StyleOMatic/addons/petjournal.lua
Interface/AddOns/SVUI_StyleOMatic/addons/petstable.lua
Interface/AddOns/SVUI_StyleOMatic/addons/pvp.lua
Interface/AddOns/SVUI_StyleOMatic/addons/quest.lua
Interface/AddOns/SVUI_StyleOMatic/addons/raid.lua
Interface/AddOns/SVUI_StyleOMatic/addons/reforging.lua
Interface/AddOns/SVUI_StyleOMatic/addons/spellbook.lua
Interface/AddOns/SVUI_StyleOMatic/addons/store.lua
Interface/AddOns/SVUI_StyleOMatic/addons/supervillain.lua
Interface/AddOns/SVUI_StyleOMatic/addons/system.lua
Interface/AddOns/SVUI_StyleOMatic/addons/tabard.lua
Interface/AddOns/SVUI_StyleOMatic/addons/talents.lua
Interface/AddOns/SVUI_StyleOMatic/addons/taxi.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/ACP.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AdiBags.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Altoholic.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AtlasLoot.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AuctionLite.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/BigWigs.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Bugsack.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Clique.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Cooline.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DBM.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DXE.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/LightHeaded.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Mogit.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Omen.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Outfitter.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Postal.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Quartz.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Recount.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/SexyCooldown.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Skada.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TinyDPS.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TomTom.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TradeSkillDW.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/VEM.lua
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/_load.xml
Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/alDamageMeter.lua
Interface/AddOns/SVUI_StyleOMatic/addons/timemanager.lua
Interface/AddOns/SVUI_StyleOMatic/addons/trade.lua
Interface/AddOns/SVUI_StyleOMatic/addons/tradeskill.lua
Interface/AddOns/SVUI_StyleOMatic/addons/trainer.lua
Interface/AddOns/SVUI_StyleOMatic/addons/transmog.lua
Interface/AddOns/SVUI_StyleOMatic/addons/voidstorage.lua
Interface/AddOns/SVUI_StyleOMatic/addons/worldmap.lua
Interface/AddOns/SVUI_StyleOMatic/addons/worldstate.lua
Interface/AddOns/SVUI_StyleOMatic/common/methods.lua
Interface/AddOns/SVUI_StyleOMatic/components/_load.xml
Interface/AddOns/SVUI_StyleOMatic/components/addons/ACP.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Ace3.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/AdiBags.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Altoholic.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/AtlasLoot.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/AuctionLite.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/BigWigs.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Bugsack.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Clique.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Cooline.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/DBM.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/DXE.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/LightHeaded.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Mogit.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Outfitter.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Postal.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Quartz.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/SexyCooldown.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/TomTom.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/TradeSkillDW.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/VEM.lua
Interface/AddOns/SVUI_StyleOMatic/components/addons/_load.xml
Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/_load.xml
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/archeology.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/auctionhouse.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/barbershop.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/battlefield.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/blackmarket.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/calendar.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/challenges.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/dressup.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/friends.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/gossip.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/guild.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/help.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/inspect.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemsocketing.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemupgrade.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/keybinding.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lfd.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/loothistory.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lossofcontrol.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/macro.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/mailbox.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/merchant.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petbattle.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petition.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petstable.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/pvp.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/raid.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/reforging.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/spellbook.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/store.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tabard.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/taxi.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/timemanager.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trade.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tradeskill.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trainer.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/transmog.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/voidstorage.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldmap.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldstate.lua
Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
Interface/AddOns/SVUI_TrackOMatic/Bindings.xml
Interface/AddOns/SVUI_TrackOMatic/License.txt
Interface/AddOns/SVUI_TrackOMatic/Loader.lua
Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua
Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc
Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.xml
Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-ARROW.blp
Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BG.blp
Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BORDER.blp
Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-RADAR.blp
Interface/AddOns/SVUI_TrackOMatic/artwork/GPS-ARROW.blp
Interface/AddOns/SVUI_TrackOMatic/components/_load.xml
Interface/AddOns/SVUI_TrackOMatic/components/triangulate.lua
Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua
Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.lua
Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.toc
Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.xml
Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-ARROW.blp
Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BG.blp
Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BORDER.blp
Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-RADAR.blp
Interface/AddOns/SVUI_TrackingDevice/artwork/GPS-ARROW.blp
Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.lua
Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.toc
diff --git a/Interface/AddOns/SVUI/License.txt b/Interface/AddOns/SVUI/License.txt
index a1eb750..5bd9961 100644
--- a/Interface/AddOns/SVUI/License.txt
+++ b/Interface/AddOns/SVUI/License.txt
@@ -35,4 +35,4 @@ the copyright holders.
 You can write Munglunch at Wowinterface.com for reporting abuse / bugs.

 You can contact Tukz or Elv at Tukui.org for details regarding
-grants allowed for this license.
\ No newline at end of file
+grants allowed for their respective licenses.
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/SVUI.lua b/Interface/AddOns/SVUI/SVUI.lua
index cd0fdcb..1112741 100644
--- a/Interface/AddOns/SVUI/SVUI.lua
+++ b/Interface/AddOns/SVUI/SVUI.lua
@@ -39,6 +39,7 @@ local tostring      = _G.tostring;
 local error         = _G.error;
 local getmetatable  = _G.getmetatable;
 local setmetatable  = _G.setmetatable;
+local assert        = assert;
 local string    = _G.string;
 local math      = _G.math;
 local table     = _G.table;
@@ -52,55 +53,18 @@ local twipe, tsort, tconcat = table.wipe, table.sort, table.concat;

 --[[ GET THE REGISTRY LIB ]]--

-local LibRegistry = LibStub("LibSystemRegistry-1.0")
+local SVLib = LibSuperVillain;

 --[[ LOCALS ]]--

 local callbacks = {};
 local numCallbacks = 0;
-local playerClass = select(2,UnitClass("player"));
+local playerClass = select(2, UnitClass("player"));

 local actualWidth, actualHeight = UIParent:GetSize()

---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-
-function enforce(condition, ...)
-   if not condition then
-      if next({...}) then
-         local fn = function (...) return(string.format(...)) end
-         local s,r = pcall(fn, ...)
-         if s then
-            error("Error!: " .. r, 2)
-         end
-      end
-      error("Error!", 2)
-   end
-end
-local assert = enforce;
-
 --[[ CLASS COLOR LOCALS ]]--

-local function formatValueString(text)
-    if "string" == type(text) then
-        text = gsub(text,"\n","\\n")
-        if match(gsub(text,"[^'\"]",""),'^"+$') then
-            return "'"..text.."'";
-        else
-            return '"'..gsub(text,'"','\\"')..'"';
-        end
-    else
-        return tostring(text);
-    end
-end
-
-local function formatKeyString(text)
-    if "string"==type(text) and match(text,"^[_%a][_%a%d]*$") then
-        return text;
-    else
-        return "["..formatValueString(text).."]";
-    end
-end
-
 local function RegisterCallback(self, m, h)
     assert(type(m) == "string" or type(m) == "function", "Bad argument #1 to :RegisterCallback (string or function expected)")
     if type(m) == "string" then
@@ -178,77 +142,44 @@ do
     classes = nil
 end

---[[ APPENDED LUA METHODS ]]--
-
-function math.parsefloat(value,decimal)
-    if decimal and decimal > 0 then
-        local calc1 = 10 ^ decimal;
-        local calc2 = (value * calc1) + 0.5;
-        return floor(calc2) / calc1
-    end
-    return floor(value + 0.5)
-end
+--[[ CORE ENGINE CONSTRUCT ]]--

-function table.dump(targetTable)
-    local dumpTable = {};
-    local dumpCheck = {};
-    for key,value in ipairs(targetTable) do
-        tinsert(dumpTable, formatValueString(value));
-        dumpCheck[key] = true;
-    end
-    for key,value in pairs(targetTable) do
-        if not dumpCheck[key] then
-            tinsert(dumpTable, "\n    "..formatKeyString(key).." = "..formatValueString(value));
-        end
-    end
-    local output = tconcat(dumpTable, ", ");
-    return "{ "..output.." }";
-end
+local messagePattern = "|cffFF2F00%s:|r";
+local debugPattern = "|cffFF2F00%s|r [|cff992FFF%s|r]|cffFF2F00:|r";
+local errorPattern = "|cffff0000Error -- |r|cffff9900Required addon '|r|cffffff00%s|r|cffff9900' is %s.|r"

-function table.copy(targetTable,deepCopy,mergeTable)
-    mergeTable = mergeTable or {};
-    if targetTable==nil then return nil end
-    if mergeTable[targetTable] then return mergeTable[targetTable] end
-    local replacementTable = {}
-    for key,value in pairs(targetTable)do
-        if deepCopy and type(value) == "table" then
-            replacementTable[key] = table.copy(value, deepCopy, mergeTable)
-        else
-            replacementTable[key] = value
-        end
-    end
-    setmetatable(replacementTable, table.copy(getmetatable(targetTable), deepCopy, mergeTable))
-    mergeTable[targetTable] = replacementTable;
-    return replacementTable
+local function _sendmessage(msg, prefix)
+    if(type(msg) == "table") then
+         msg = tostring(msg)
+    end
+    if(not msg) then return end
+    if(prefix) then
+        local outbound = ("%s %s"):format(prefix, msg);
+        print(outbound)
+    else
+        print(msg)
+    end
 end

-function string.trim(this)
-    return this:find('^%s*$') and '' or this:match('^%s*(.*%S)')
-end
+local Core_DeadFunction = function() return end

-function string.color(this, color)
-    return ("|cff%s%s|r"):format(color, this)
+local Core_StaticPopup_Show = function(self, arg)
+    if arg == "ADDON_ACTION_FORBIDDEN" then
+        StaticPopup_Hide(arg)
+    end
 end

-function string.link(this, prefix, text, color)
-    text = tostring(text)
-    local colorstring = tostring(this):color(color or "ffffff")
-    return ("|H%s:%s|h%s|h"):format(prefix, text, colorstring)
+local Core_Debugger = function(self, msg)
+    if(not self.DebugMode) then return end
+    local outbound = (debugPattern):format(self.NameID, "DEBUG")
+    _sendmessage(msg, outbound)
 end

-function string.explode(str, delim)
-   local res = { }
-   local pattern = string.format("([^%s]+)%s()", delim, delim)
-   while (true) do
-      line, pos = str:match(pattern, pos)
-      if line == nil then break end
-      table.insert(res, line)
-   end
-   return res
+local Core_AddonMessage = function(self, msg)
+    local outbound = (messagePattern):format(self.NameID)
+    _sendmessage(msg, outbound)
 end

---[[ CORE ENGINE CONSTRUCT ]]--
-
 local Core_ResetAllUI = function(self, confirmed)
     if InCombatLockdown()then
         SendAddonMessage(ERR_NOT_IN_COMBAT)
@@ -270,8 +201,14 @@ local Core_ResetUI = function(self, confirmed)
         self:StaticPopup_Show('RESETMOVERS_CHECK')
         return
     end
-    self:ResetMovables()
-end
+    self.Mentalo:Reset()
+end
+
+local Core_ImportProfile = function(self, key)
+    self.SystemAlert["COPY_PROFILE_PROMPT"].text = "Are you sure you want to copy the profile '" .. key .. "'?"
+    self.SystemAlert["COPY_PROFILE_PROMPT"].OnAccept = function() SVLib:ImportDatabase(key) end
+    self:StaticPopup_Show("COPY_PROFILE_PROMPT")
+end

 local Core_ToggleConfig = function(self)
     if InCombatLockdown() then
@@ -279,22 +216,23 @@ local Core_ToggleConfig = function(self)
         self.UIParent:RegisterEvent('PLAYER_REGEN_ENABLED')
         return
     end
-    if not IsAddOnLoaded("SVUI_ConfigOMatic") then
-        local _,_,_,_,_,state = GetAddOnInfo("SVUI_ConfigOMatic")
+    if not IsAddOnLoaded(self.ConfigID) then
+        local _,_,_,_,_,state = GetAddOnInfo(self.ConfigID)
         if state ~= "MISSING" and state ~= "DISABLED" then
-            LoadAddOn("SVUI_ConfigOMatic")
-            local config_version = GetAddOnMetadata("SVUI_ConfigOMatic", "Version")
+            LoadAddOn(self.ConfigID)
+            local config_version = GetAddOnMetadata(self.ConfigID, "Version")
             if(tonumber(config_version) < 4) then
                 self:StaticPopup_Show("CLIENT_UPDATE_REQUEST")
             end
-        else
-            self:AddonMessage("|cffff0000Error -- Addon 'SVUI_ConfigOMatic' not found or is disabled.|r")
+        else
+            local errorMessage = (errorPattern):format(self.ConfigID, state)
+            self:AddonMessage(errorMessage)
             return
         end
     end
     local aceConfig = LibStub("AceConfigDialog-3.0")
-    local switch = not aceConfig.OpenFrames["SVUI"] and "Open" or "Close"
-    aceConfig[switch](aceConfig, "SVUI")
+    local switch = not aceConfig.OpenFrames[self.NameID] and "Open" or "Close"
+    aceConfig[switch](aceConfig, self.NameID)
     GameTooltip:Hide()
 end

@@ -319,13 +257,13 @@ end

 --[[ INITIALIZE THE CORE OBJECT ]]--

-local SVUI = LibRegistry:InitializeCore()
+-- We have to send the names of our three SavedVariables files since the WoW API
+-- has no method for parsing them in LUA.
+local SVUI = SVLib:NewCore("SVUI_Global", "SVUI_Profile", "SVUI_Cache")
+
+SVUI.ConfigID           = "SVUI_ConfigOMatic";

-SVUI.Snap               = {}
 SVUI.Media              = {}
-SVUI.DisplayAudit       = {}
-SVUI.DynamicOptions     = {}
-SVUI.Dispellable        = {}

 SVUI.class              = playerClass
 SVUI.ClassRole          = ""
@@ -337,10 +275,15 @@ SVUI.ActualWidth        = actualWidth
 SVUI.yScreenArea        = (actualHeight * 0.33)
 SVUI.xScreenArea        = (actualWidth * 0.33)

+SVUI.fubar              = Core_DeadFunction
 SVUI.ResetAllUI         = Core_ResetAllUI
 SVUI.ResetUI            = Core_ResetUI
 SVUI.ToggleConfig       = Core_ToggleConfig
 SVUI.TaintHandler       = Core_TaintHandler
+SVUI.ImportProfile      = Core_ImportProfile
+SVUI.AddonMessage       = Core_AddonMessage
+SVUI.Debugger           = Core_Debugger
+SVUI.StaticPopup_Show   = Core_StaticPopup_Show

 --[[ UTILITY FRAMES ]]--

@@ -348,7 +291,6 @@ SVUI.UIParent = CreateFrame("Frame", "SVUIParent", UIParent);
 SVUI.UIParent:SetFrameLevel(UIParent:GetFrameLevel());
 SVUI.UIParent:SetPoint("CENTER", UIParent, "CENTER");
 SVUI.UIParent:SetSize(UIParent:GetSize());
-SVUI.Snap[1] = SVUI.UIParent;

 SVUI.Cloaked = CreateFrame("Frame", nil, UIParent);
 SVUI.Cloaked:Hide();
@@ -381,7 +323,7 @@ SVUI.Options = {
                                 active = {
                                     order = 1,
                                     type = "description",
-                                    name = function() return LibRegistry:GetPlugins() end
+                                    name = function() return SVLib:GetPlugins() end
                                 }
                             }
                         },
diff --git a/Interface/AddOns/SVUI/SVUI.toc b/Interface/AddOns/SVUI/SVUI.toc
index 4e786df..4e5264d 100644
--- a/Interface/AddOns/SVUI/SVUI.toc
+++ b/Interface/AddOns/SVUI/SVUI.toc
@@ -1,11 +1,13 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 4.4
+## Version: 4.8
 ## Title: |cffFF9900SVUI|r
 ## Notes: Supervillain UI [|cff9911FFCore Framework|r].
 ## SavedVariables: SVUI_Global
 ## SavedVariablesPerCharacter: SVUI_Profile, SVUI_Cache
 ## OptionalDeps: Blizzard_DebugTools, Blizzard_PetJournal, SharedMedia
+## X-SVUI-Header: SuperVillain UI
+## X-SVUI-Schema: Core
 ## X-oUF: oUF_Villain
 ## X-Notes: Special thanks to Elv and Tukz for their incredible work.
 ## X-Email: munglunch@gmail.com
diff --git a/Interface/AddOns/SVUI/SVUI.xml b/Interface/AddOns/SVUI/SVUI.xml
index 3c8071d..4a6cce4 100644
--- a/Interface/AddOns/SVUI/SVUI.xml
+++ b/Interface/AddOns/SVUI/SVUI.xml
@@ -1,9 +1,6 @@
 <Ui xmlns="http://www.blizzard.com/wow/ui/">

     <Include file="libs\libs.xml"/>
-    <Include file="xml\system.xml"/>
-
-    <Script file="SVUI.lua"/>

     <Script file="language\english_ui.lua"/>
     <Script file="language\italian_ui.lua"/>
@@ -16,7 +13,14 @@
     <Script file="language\chinese_ui.lua"/>
     <Script file="language\portuguese_ui.lua"/>

-    <Script file="system\database.lua"/>
+    <Include file="xml\system.xml"/>
+
+    <Script file="SVUI.lua"/>
+
+    <Script file="setup\configs.lua"/>
+    <Script file="setup\installer.lua"/>
+    <Script file="setup\presets.lua"/>
+
     <Script file="system\media.lua"/>
     <Script file="system\utilities.lua"/>
     <Script file="system\animate.lua"/>
@@ -25,18 +29,18 @@
     <Script file="system\timers.lua"/>
     <Script file="system\slash.lua"/>
     <Script file="system\alerts.lua"/>
-    <Include file="system\mentalo.xml"/>
-    <Script file="system\setup.lua"/>
+    <Script file="system\moveable.lua"/>
+    <Script file="system\mentalo.lua"/>

     <Include file="packages\stats\SVStats.xml"/>
     <Script file="packages\dock\SVDock.lua"/>
     <Include file="packages\aura\SVAura.xml"/>
+    <Script file="packages\map\SVMap.lua"/>
     <Include file="packages\plates\SVPlate.xml"/>
     <Script file="packages\tip\SVTip.lua"/>
     <Script file="packages\actionbar\SVBar.lua"/>
     <Script file="packages\actionbar\KeyBind.lua"/>
     <Include file="packages\unit\SVUnit.xml"/>
-    <Script file="packages\map\SVMap.lua"/>
     <Script file="packages\chat\SVChat.lua"/>
     <Include file="packages\bag\SVBag.xml"/>
     <Script file="packages\override\SVOverride.lua"/>
@@ -50,6 +54,7 @@
     <Script file="scripts\raid.lua"/>
     <Script file="scripts\reactions.lua"/>
     <Script file="scripts\spellbind.lua"/>
+    <Script file="scripts\ego.lua"/>

     <Script file="system\load.lua"/>
 </Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/assets/artwork/Icons/CLOSE-BUTTON.blp b/Interface/AddOns/SVUI/assets/artwork/Icons/CLOSE-BUTTON.blp
index faf517b..ba31237 100644
Binary files a/Interface/AddOns/SVUI/assets/artwork/Icons/CLOSE-BUTTON.blp and b/Interface/AddOns/SVUI/assets/artwork/Icons/CLOSE-BUTTON.blp differ
diff --git a/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-DOWN.blp b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-DOWN.blp
new file mode 100644
index 0000000..6ffc37a
Binary files /dev/null and b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-DOWN.blp differ
diff --git a/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-LEFT.blp b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-LEFT.blp
new file mode 100644
index 0000000..4b2dd74
Binary files /dev/null and b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-LEFT.blp differ
diff --git a/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-RIGHT.blp b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-RIGHT.blp
new file mode 100644
index 0000000..c078623
Binary files /dev/null and b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-RIGHT.blp differ
diff --git a/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-UP.blp b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-UP.blp
new file mode 100644
index 0000000..721bb76
Binary files /dev/null and b/Interface/AddOns/SVUI/assets/artwork/Icons/MOVE-UP.blp differ
diff --git a/Interface/AddOns/SVUI/docs/configs.lua b/Interface/AddOns/SVUI/docs/configs.lua
new file mode 100644
index 0000000..b2409d8
--- /dev/null
+++ b/Interface/AddOns/SVUI/docs/configs.lua
@@ -0,0 +1,66 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+  /$$$$$$   /$$$$$$  /$$   /$$ /$$$$$$$$/$$$$$$  /$$$$$$   /$$$$$$           #
+ /$$__  $$ /$$__  $$| $$$ | $$| $$_____/_  $$_/ /$$__  $$ /$$__  $$          #
+| $$  \__/| $$  \ $$| $$$$| $$| $$       | $$  | $$  \__/| $$  \__/          #
+| $$      | $$  | $$| $$ $$ $$| $$$$$    | $$  | $$ /$$$$|  $$$$$$           #
+| $$      | $$  | $$| $$  $$$$| $$__/    | $$  | $$|_  $$ \____  $$          #
+| $$    $$| $$  | $$| $$\  $$$| $$       | $$  | $$  \ $$ /$$  \ $$          #
+|  $$$$$$/|  $$$$$$/| $$ \  $$| $$      /$$$$$$|  $$$$$$/|  $$$$$$/          #
+ \______/  \______/ |__/  \__/|__/     |______/ \______/  \______/           #
+##############################################################################
+]]--
+
+--[[
+
+    The "configs" property is the default (also the backup) of ALL usable database entries.
+    When the addon core is initialized, a "db" property is created using a copy of "configs".
+
+    When configs are set under their own index (ie.. SV.configs["Shiznit"]) AND a module (package, plugin ...etc)
+    has a schema (see NOTE) of the same name, then that index is used to set
+    the module's own "db" property using a pointer reference linking to the core database location.
+
+    Package configs should be set in the primary config file (configs/configs.lua) since they are
+    treated and loaded as internal entities.
+
+    For new packages (not already defined in my default configs) you will need to know the
+    associated schema name specific to that package.
+
+    Just add the new package configs to the BOTTOM of the config file like this:
+
+]]--
+
+-- SV and SV.configs will have already been defined
+local Schema = "SumFukinPackage"
+SV.configs[Schema] = { SumFukinValue = true }
+
+--[[
+
+    When adding plugins to the collective, be sure to set respective entries BEFORE loading,
+    as the same process takes place for externally connected addons.
+
+    Plugin configs can be set like this:
+
+]]--
+
+local SV = _G["SVUI"]
+local Schema = _G["SumFukinPlugin"].Schema -- Get the already assigned schema name
+SV.configs[Schema] = { SumFukinValue = true }
+
+--[[
+
+    NOTE: Schema and Modules are explained in their respective documents
+
+]]--
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/docs/schema.lua b/Interface/AddOns/SVUI/docs/schema.lua
new file mode 100644
index 0000000..61dffa4
--- /dev/null
+++ b/Interface/AddOns/SVUI/docs/schema.lua
@@ -0,0 +1,116 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+  /$$$$$$   /$$$$$$  /$$   /$$ /$$$$$$$$ /$$      /$$  /$$$$$$               #
+ /$$__  $$ /$$__  $$| $$  | $$| $$_____/| $$$    /$$$ /$$__  $$              #
+| $$  \__/| $$  \__/| $$  | $$| $$      | $$$$  /$$$$| $$  \ $$              #
+|  $$$$$$ | $$      | $$$$$$$$| $$$$$   | $$ $$/$$ $$| $$$$$$$$              #
+ \____  $$| $$      | $$__  $$| $$__/   | $$  $$$| $$| $$__  $$              #
+ /$$  \ $$| $$    $$| $$  | $$| $$      | $$\  $ | $$| $$  | $$              #
+|  $$$$$$/|  $$$$$$/| $$  | $$| $$$$$$$$| $$ \/  | $$| $$  | $$              #
+ \______/  \______/ |__/  |__/|________/|__/     |__/|__/  |__/              #
+##############################################################################
+]]--
+
+--[[
+
+    Schema is a property and concept used to help dynamically define database indexes.
+    The main purpose for its creation was to provide a way to generate useable config
+    variables for any plugin, including those that are LoadOnDemand!
+
+    To the best of my knowledge, this has never been done before (/flex)!
+
+    The schema convention is utilized by the "LibSuperVillain" library to ensure
+    proper organization of our various addon configs (see NOTE)
+
+    For Packages:
+
+    You have to define the modules schema when you send its object to the library
+
+    Here is an example:
+
+]]--
+
+local lib = LibSuperVillain
+local PKG = {};
+
+--Here you would build your package object, then...
+
+lib:NewPackage(PKG, "SumFukinPackage")
+
+--So now you can get the schema name like this:
+
+local Schema = PKG.Schema
+
+--[[
+
+    For Plugins:
+
+    You will set the schema in the plugins .toc file using meta-data fields
+    prefixed with "X" to indicate its a custom entry, the SuperVillain indicator "SVUI",
+    and finally the type of entry it is
+
+    (there are two possibilities at the time of this writing. "Header" and "Schema")
+
+    so it will end up looking like this:
+    X-SVUI-Header
+
+    or this:
+    X-SVUI-Schema
+
+    Your toc should end up looking something like this:
+
+    ~(SumFukinPlugin.toc)
+
+    ## Interface: 60000
+    ## Author: SumFukinDude
+    ## Version: 1.0
+    ## X-SVUI-Header: Some Fukin Addon
+    ## X-SVUI-Schema: SumFukinSchema
+
+
+    Having defined and initialized all requirements at this point, your database will now
+    have named references linking to this object by schema.
+]]--
+
+--[[
+
+    LoadOnDemand:
+
+    When schema is defined for plugins that are NOT loaded by default, the library will
+    be able to parse all toc files that contain an "X-SVUI-Schema" property and generate
+    a database entry as well as a config option so that we can manipulate that plugin and
+    save our changes.
+
+    The benefit here is this:
+
+    Let's use SVUI_CraftOMatic for example. If by default this LOD addon is Disabled, we can't read
+    on any lua code inside the addon. This prevents the ability to set config variables and therefore
+    build config options. Before we would have had to add a button to allow the player to click and "Enable" it.
+    This is fine but what if we also want to make the choice to keep it enabled every time we log in?
+    That would not have worked since your options would not be loaded UNTIL you clicked the enable button!
+    Using schema however, we can still create our configs
+    AND set the data entry from saved variables (if they exist in the file)
+    which allows our core to not only detect its existence but also see if it was previously enabled
+    and if so then go ahead and load/enable the addon.
+
+    BOOM!!
+
+]]--
+
+--[[
+
+    NOTE: Configs and Modules are explained in their respective documents
+
+]]--
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/language/chinese_ui.lua b/Interface/AddOns/SVUI/language/chinese_ui.lua
index 2360e49..6ce4bc7 100644
--- a/Interface/AddOns/SVUI/language/chinese_ui.lua
+++ b/Interface/AddOns/SVUI/language/chinese_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("zhCN");
+local L = LibSuperVillain:Lang("zhCN");
 if not L then return end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
diff --git a/Interface/AddOns/SVUI/language/english_ui.lua b/Interface/AddOns/SVUI/language/english_ui.lua
index 424a8d4..fdff64a 100644
--- a/Interface/AddOns/SVUI/language/english_ui.lua
+++ b/Interface/AddOns/SVUI/language/english_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("enUS", true);
+local L = LibSuperVillain:Lang("enUS", true);
 if not L then return; end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -373,8 +372,8 @@ L["FadeIn Delay"]=true;
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]=true;
 L["Minimap Button Bar"]=true;
 L["Style Buttons"]=true;
-L["SVStyle the minimap buttons in SV UI style."]=true;
-L["Style Style"]=true;
+L["Customize the minimap buttons in SVUI style."]=true;
+L["SVUI Style"]=true;
 L["Change settings for how the minimap buttons are styled."]=true;
 L["The size of the minimap buttons."]=true;
 L["No Anchor Bar"]=true;
diff --git a/Interface/AddOns/SVUI/language/french_ui.lua b/Interface/AddOns/SVUI/language/french_ui.lua
index 7e0c622..5767ed6 100644
--- a/Interface/AddOns/SVUI/language/french_ui.lua
+++ b/Interface/AddOns/SVUI/language/french_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("frFR");
+local L = LibSuperVillain:Lang("frFR");
 if not L then return; end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -469,8 +468,8 @@ L["Hide minimap while in combat."]="Cacher la minicarte quand vous êtes en comb
 L["FadeIn Delay"]="Délais d'estompage"
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]="Le temps à attendre avant que la minicarte s'estompe avec que le combat ait commencé. (0 = désactié)"
 L["Style Buttons"]="Boutons Style"
-L["SVStyle the minimap buttons in SV UI style."]="Habillez les boutons de la minicarte avec le style SVUI."
-L["Style Style"]="Style Style"
+L["Customize the minimap buttons in SVUI style."]="Habillez les boutons de la minicarte avec le style SVUI."
+L["SVUI Style"]="SVUI Style"
 L["Change settings for how the minimap buttons are styled."]="Change les réglages pour comment sont habillés les boutons."
 L["The size of the minimap buttons."]="Taille des boutons de la minicarte."
 L["No Anchor Bar"]="Ne pas ancré à une Barre"
diff --git a/Interface/AddOns/SVUI/language/german_ui.lua b/Interface/AddOns/SVUI/language/german_ui.lua
index 479db1c..1b597e7 100644
--- a/Interface/AddOns/SVUI/language/german_ui.lua
+++ b/Interface/AddOns/SVUI/language/german_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("deDE");
+local L = LibSuperVillain:Lang("deDE");
 if not L then return end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -468,8 +467,8 @@ L["Hide minimap while in combat."]="Ausblenden der Minimap während des Kampfes.
 L["FadeIn Delay"]="Einblendungsverzögerung"
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]="Die Zeit vor dem wieder Einblenden der Minimap nach dem Kampf. (0 = deaktiviert)"
 L["Style Buttons"]="Style Buttons"
-L["SVStyle the minimap buttons in SV UI style."]='Stylene die Minimap-Buttons im SVUI-Stil.'
-L["Style Style"]="Style Stil"
+L["Customize the minimap buttons in SVUI style."]='Stylene die Minimap-Buttons im SVUI-Stil.'
+L["SVUI Style"]="Style Stil"
 L["Change settings for how the minimap buttons are styled."]="Ändern der Einstellungen, wie die Minimap-Buttons gestylent werden."
 L["The size of the minimap buttons."]="Die Größe der Minimap-Buttons."
 L["No Anchor Bar"]="Keine Ankerleiste"
diff --git a/Interface/AddOns/SVUI/language/italian_ui.lua b/Interface/AddOns/SVUI/language/italian_ui.lua
index 2b7f338..09c14a2 100644
--- a/Interface/AddOns/SVUI/language/italian_ui.lua
+++ b/Interface/AddOns/SVUI/language/italian_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("itIT");
+local L = LibSuperVillain:Lang("itIT");
 if not L then return; end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -470,8 +469,8 @@ L["FadeIn Delay"]=true;
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]=true;
 L["Minimap Button Bar"]=true;
 L["Style Buttons"]=true;
-L["SVStyle the minimap buttons in SV UI style."]=true;
-L["Style Style"]=true;
+L["Customize the minimap buttons in SVUI style."]=true;
+L["SVUI Style"]=true;
 L["Change settings for how the minimap buttons are styled."]=true;
 L["The size of the minimap buttons."]=true;
 L["No Anchor Bar"]=true;
diff --git a/Interface/AddOns/SVUI/language/korean_ui.lua b/Interface/AddOns/SVUI/language/korean_ui.lua
index b6d555c..5fb983b 100644
--- a/Interface/AddOns/SVUI/language/korean_ui.lua
+++ b/Interface/AddOns/SVUI/language/korean_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("koKR");
+local L = LibSuperVillain:Lang("koKR");
 if not L then return; end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -470,8 +469,8 @@ L["FadeIn Delay"]=true;
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]=true;
 L["Minimap Button Bar"]=true;
 L["Style Buttons"]=true;
-L["SVStyle the minimap buttons in SV UI style."]=true;
-L["Style Style"]=true;
+L["Customize the minimap buttons in SVUI style."]=true;
+L["SVUI Style"]=true;
 L["Change settings for how the minimap buttons are styled."]=true;
 L["The size of the minimap buttons."]=true;
 L["No Anchor Bar"]=true;
diff --git a/Interface/AddOns/SVUI/language/portuguese_ui.lua b/Interface/AddOns/SVUI/language/portuguese_ui.lua
index 44d9bff..2b55f4c 100644
--- a/Interface/AddOns/SVUI/language/portuguese_ui.lua
+++ b/Interface/AddOns/SVUI/language/portuguese_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("ptBR");
+local L = LibSuperVillain:Lang("ptBR");
 if not L then return; end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -469,8 +468,8 @@ L["Hide minimap while in combat."]=true;
 L["FadeIn Delay"]=true;
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]=true;
 L["Style Buttons"]="Customizar Botões"
-L["SVStyle the minimap buttons in SV UI style."]="Customiza os botões do minimapa no estilo do SV UI."
-L["Style Style"]="Estilo de Customização"
+L["Customize the minimap buttons in SVUI style."]="Customiza os botões do minimapa no estilo do SVUI."
+L["SVUI Style"]="Estilo de Customização"
 L["Change settings for how the minimap buttons are styled."]="Mudar definições de como os botões do minimapa são customizados."
 L["The size of the minimap buttons."]="O tamanho dos botões do minimapa."
 L["No Anchor Bar"]="Sem Ancora de Barra"
diff --git a/Interface/AddOns/SVUI/language/russian_ui.lua b/Interface/AddOns/SVUI/language/russian_ui.lua
index 882b3bb..78a0df3 100644
--- a/Interface/AddOns/SVUI/language/russian_ui.lua
+++ b/Interface/AddOns/SVUI/language/russian_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("ruRU");
+local L = LibSuperVillain:Lang("ruRU");
 if not L then return; end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -470,8 +469,8 @@ L["FadeIn Delay"]=true;
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]=true;
 L["Minimap Button Bar"]=true;
 L["Style Buttons"]=true;
-L["SVStyle the minimap buttons in SV UI style."]=true;
-L["Style Style"]=true;
+L["Customize the minimap buttons in SVUI style."]=true;
+L["SVUI Style"]=true;
 L["Change settings for how the minimap buttons are styled."]=true;
 L["The size of the minimap buttons."]=true;
 L["No Anchor Bar"]=true;
diff --git a/Interface/AddOns/SVUI/language/spanish_ui.lua b/Interface/AddOns/SVUI/language/spanish_ui.lua
index 7766dd4..64a3e0c 100644
--- a/Interface/AddOns/SVUI/language/spanish_ui.lua
+++ b/Interface/AddOns/SVUI/language/spanish_ui.lua
@@ -1,7 +1,6 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("esES");
+local L = LibSuperVillain:Lang("esES");
 if not L then
-	L = LibLocale:SetLocaleData("esMX")
+	L = LibSuperVillain:Lang("esMX")
 end
 if not L then return; end
 --[[REACTION TEXTS]]--
@@ -473,8 +472,8 @@ L["FadeIn Delay"]=true;
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]=true;
 L["Minimap Button Bar"]=true;
 L["Style Buttons"]=true;
-L["SVStyle the minimap buttons in SV UI style."]=true;
-L["Style Style"]=true;
+L["Customize the minimap buttons in SVUI style."]=true;
+L["SVUI Style"]=true;
 L["Change settings for how the minimap buttons are styled."]=true;
 L["The size of the minimap buttons."]=true;
 L["No Anchor Bar"]=true;
diff --git a/Interface/AddOns/SVUI/language/taiwanese_ui.lua b/Interface/AddOns/SVUI/language/taiwanese_ui.lua
index 8048d63..759aebe 100644
--- a/Interface/AddOns/SVUI/language/taiwanese_ui.lua
+++ b/Interface/AddOns/SVUI/language/taiwanese_ui.lua
@@ -1,5 +1,4 @@
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale:SetLocaleData("zhTW");
+local L = LibSuperVillain:Lang("zhTW");
 if not L then return; end
 --[[REACTION TEXTS]]--
 L[" is drinking."] = true;
@@ -470,8 +469,8 @@ L["FadeIn Delay"]="隱藏延遲"
 L["The time to wait before fading the minimap back in after combat hide. (0 = Disabled)"]="戰鬥開始後隱藏小地圖前的延遲時間 (0=停用)"
 L["Minimap Button Bar"]="小地圖按鈕整合列"
 L["Style Buttons"]="美化按鈕"
-L["SVStyle the minimap buttons in SV UI style."]="將小地圖圖標美化成SVUI風格."
-L["Style Style"]="美化風格"
+L["Customize the minimap buttons in SVUI style."]="將小地圖圖標美化成SVUI風格."
+L["SVUI Style"]="美化風格"
 L["Change settings for how the minimap buttons are styled."]="改變美化設定."
 L["The size of the minimap buttons."]="小地圖圖標尺寸."
 L["No Anchor Bar"]="沒有錨點"
diff --git a/Interface/AddOns/SVUI/libs/LibLocale-1.0/LibLocale-1.0.lua b/Interface/AddOns/SVUI/libs/LibLocale-1.0/LibLocale-1.0.lua
deleted file mode 100644
index a64ec44..0000000
--- a/Interface/AddOns/SVUI/libs/LibLocale-1.0/LibLocale-1.0.lua
+++ /dev/null
@@ -1,66 +0,0 @@
---[[ GLOBALS ]]--
-
-local _G 						= _G;
-local rawset        			= _G.rawset;
-local rawget        			= _G.rawget;
-local getmetatable  			= _G.getmetatable;
-local setmetatable  			= _G.setmetatable;
-
-local MAJOR, MINOR = "LibLocale", 1
-local LibLocale = _G[MAJOR]
-
-if not LibLocale or LibLocale.minor < MINOR then
-    LibLocale = LibLocale or {}
-    _G[MAJOR] = LibLocale
-    LibLocale.minor = MINOR
-
-    local rootstring = function(self) return self.___addonName end
-
-    local failsafe = function() assert(false) end
-
-    local metaread = {
-        __index = function(self, key)
-            rawset(self, key, key)
-            return key
-        end
-    }
-
-    local activeLocale
-
-    local defaultwrite = setmetatable({}, {
-        __newindex = function(self, key, value)
-            if not rawget(activeLocale, key) then
-                rawset(activeLocale, key, value == true and key or value)
-            end
-        end,
-        __index = failsafe
-    })
-
-    local metawrite = setmetatable({}, {
-        __newindex = function(self, key, value)
-            rawset(activeLocale, key, value == true and key or value)
-        end,
-        __index = failsafe
-    })
-
-    local Localization = setmetatable({}, metaread);
-
-    function LibLocale:SetLocaleData(locale, isDefault)
-        local gameLocale = GetLocale()
-        if gameLocale == "enGB" then gameLocale = "enUS" end
-
-        activeLocale = Localization
-
-        if isDefault then
-            return defaultwrite
-        elseif(locale == GAME_LOCALE or locale == gameLocale) then
-            return metawrite
-        end
-    end
-
-    function LibLocale:GetLocaleData()
-        return Localization
-    end
-
-    setmetatable(LibLocale, { __call = LibLocale.GetLocaleData })
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
new file mode 100644
index 0000000..3c27e64
--- /dev/null
+++ b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
@@ -0,0 +1,1158 @@
+--[[
+  /$$$$$$  /$$   /$$ /$$$$$$$  /$$$$$$$$ /$$$$$$$
+ /$$__  $$| $$  | $$| $$__  $$| $$_____/| $$__  $$
+| $$  \__/| $$  | $$| $$  \ $$| $$      | $$  \ $$
+|  $$$$$$ | $$  | $$| $$$$$$$/| $$$$$   | $$$$$$$/
+ \____  $$| $$  | $$| $$____/ | $$__/   | $$__  $$
+ /$$  \ $$| $$  | $$| $$      | $$      | $$  \ $$
+|  $$$$$$/|  $$$$$$/| $$      | $$$$$$$$| $$  | $$
+ \______/  \______/ |__/      |________/|__/  |__/
+ /$$    /$$ /$$$$$$ /$$       /$$        /$$$$$$  /$$$$$$ /$$   /$$
+| $$   | $$|_  $$_/| $$      | $$       /$$__  $$|_  $$_/| $$$ | $$
+| $$   | $$  | $$  | $$      | $$      | $$  \ $$  | $$  | $$$$| $$
+|  $$ / $$/  | $$  | $$      | $$      | $$$$$$$$  | $$  | $$ $$ $$
+ \  $$ $$/   | $$  | $$      | $$      | $$__  $$  | $$  | $$  $$$$
+  \  $$$/    | $$  | $$      | $$      | $$  | $$  | $$  | $$\  $$$
+   \  $/    /$$$$$$| $$$$$$$$| $$$$$$$$| $$  | $$ /$$$$$$| $$ \  $$
+    \_/    |______/|________/|________/|__/  |__/|______/|__/  \__/
+
+
+LibSuperVillain is a library used to manage localization, packages, scripts and data embedded
+into the SVUI core addon.
+
+It's main purpose is to keep all methods and logic needed to properly keep
+core add-ins functioning outside of the core object.
+--]]
+
+--[[ LOCALIZED GLOBALS ]]--
+local _G            = getfenv(0);
+--LUA
+local unpack        = _G.unpack;
+local select        = _G.select;
+local pairs         = _G.pairs;
+local type          = _G.type;
+local rawset        = _G.rawset;
+local rawget        = _G.rawget;
+local tostring      = _G.tostring;
+local error         = _G.error;
+local next          = _G.next;
+local pcall         = _G.pcall;
+local getmetatable  = _G.getmetatable;
+local setmetatable  = _G.setmetatable;
+local assert        = _G.assert;
+--BLIZZARD
+local tinsert       = _G.tinsert;
+local tremove       = _G.tremove;
+local twipe         = _G.wipe;
+--STRING
+local string        = _G.string;
+local upper         = string.upper;
+local format        = string.format;
+local find          = string.find;
+local match         = string.match;
+local gsub          = string.gsub;
+--MATH
+local math          = _G.math;
+local floor         = math.floor
+--TABLE
+local table         = _G.table;
+local tsort         = table.sort;
+local tconcat       = table.concat;
+
+--[[ LIB CONSTRUCT ]]--
+local lib = _G["LibSuperVillain"]
+if not lib then
+    _G["LibSuperVillain"] = {}
+    lib = _G["LibSuperVillain"]
+end
+
+--[[ ADDON DATA ]]--
+
+local CoreName, CoreObject  = ...
+local AddonVersion          = GetAddOnMetadata(..., "Version");
+local SchemaFromMeta        = "X-" .. CoreName .. "-Schema";
+local HeaderFromMeta        = "X-" .. CoreName .. "-Header";
+local InterfaceVersion      = select(4, GetBuildInfo());
+
+--[[ COMMON LOCAL VARS ]]--
+
+local GLOBAL_FILENAME       = CoreName.."_Global";
+local PROFILE_FILENAME      = CoreName.."_Profile";
+local CACHE_FILENAME        = CoreName.."_Cache";
+local SOURCE_KEY            = 1;
+local GLOBAL_SV, PROFILE_SV, CACHE_SV, PLUGINS, MODULES;
+local PluginString = ""
+local AllowedIndexes, LoadOnDemand = {},{};
+local Callbacks, ScriptQueue = {},{};
+
+local playerClass = select(2,UnitClass("player"));
+
+local INFO_FORMAT = "|cffFFFF00%s|r\n        |cff33FF00Version: %s|r |cff0099FFby %s|r";
+
+if GetLocale() == "ruRU" then
+    INFO_FORMAT = "|cffFFFF00%s|r\n        |cff33FF00Версия: %s|r |cff0099FFот %s|r";
+end
+
+--[[ LIB EVENT LISTENER ]]--
+
+lib.EventManager = CreateFrame("Frame", nil)
+
+--[[ COMMON META METHODS ]]--
+
+local rootstring = function(self) return self.NameID end
+
+--[[ CUSTOM LUA METHODS ]]--
+
+--LOCAL HELPERS
+local function formatValueString(text)
+    if "string" == type(text) then
+        text = gsub(text,"\n","\\n")
+        if match(gsub(text,"[^'\"]",""),'^"+$') then
+            return "'"..text.."'";
+        else
+            return '"'..gsub(text,'"','\\"')..'"';
+        end
+    else
+        return tostring(text);
+    end
+end
+
+local function formatKeyString(text)
+    if "string"==type(text) and match(text,"^[_%a][_%a%d]*$") then
+        return text;
+    else
+        return "["..formatValueString(text).."]";
+    end
+end
+
+--APPENDED METHODS
+function table.dump(targetTable)
+    local dumpTable = {};
+    local dumpCheck = {};
+    for key,value in ipairs(targetTable) do
+        tinsert(dumpTable, formatValueString(value));
+        dumpCheck[key] = true;
+    end
+    for key,value in pairs(targetTable) do
+        if not dumpCheck[key] then
+            tinsert(dumpTable, "\n    "..formatKeyString(key).." = "..formatValueString(value));
+        end
+    end
+    local output = tconcat(dumpTable, ", ");
+    return "{ "..output.." }";
+end
+
+function math.parsefloat(value,decimal)
+    if decimal and decimal > 0 then
+        local calc1 = 10 ^ decimal;
+        local calc2 = (value * calc1) + 0.5;
+        return floor(calc2) / calc1
+    end
+    return floor(value + 0.5)
+end
+
+function table.copy(targetTable,deepCopy,mergeTable)
+    mergeTable = mergeTable or {};
+    if targetTable==nil then return nil end
+    if mergeTable[targetTable] then return mergeTable[targetTable] end
+    local replacementTable = {}
+    for key,value in pairs(targetTable)do
+        if deepCopy and type(value) == "table" then
+            replacementTable[key] = table.copy(value, deepCopy, mergeTable)
+        else
+            replacementTable[key] = value
+        end
+    end
+    setmetatable(replacementTable, table.copy(getmetatable(targetTable), deepCopy, mergeTable))
+    mergeTable[targetTable] = replacementTable;
+    return replacementTable
+end
+
+function string.trim(this)
+    return find(this, '^%s*$') and '' or match(this, '^%s*(.*%S)')
+end
+
+function string.color(this, color)
+    return format("|cff%s%s|r", color, this)
+end
+
+function string.link(this, prefix, text, color)
+    text = tostring(text)
+    local colorstring = tostring(this):color(color or "ffffff")
+    return format("|H%s:%s|h%s|h", prefix, text, colorstring)
+end
+
+function string.explode(str, delim)
+   local res = { }
+   local pattern = format("([^%s]+)%s()", delim, delim)
+   while (true) do
+      line, pos = match(str, pattern, pos)
+      if line == nil then break end
+      tinsert(res, line)
+   end
+   return res
+end
+
+--[[
+ /$$       /$$                               /$$            /$$
+| $$      |__/                              |__/           | $$
+| $$       /$$ /$$$$$$$   /$$$$$$  /$$   /$$ /$$  /$$$$$$$/$$$$$$
+| $$      | $$| $$__  $$ /$$__  $$| $$  | $$| $$ /$$_____/_  $$_/
+| $$      | $$| $$  \ $$| $$  \ $$| $$  | $$| $$|  $$$$$$  | $$
+| $$      | $$| $$  | $$| $$  | $$| $$  | $$| $$ \____  $$ | $$ /$$
+| $$$$$$$$| $$| $$  | $$|  $$$$$$$|  $$$$$$/| $$ /$$$$$$$/ |  $$$$/
+|________/|__/|__/  |__/ \____  $$ \______/ |__/|_______/   \___/
+                         /$$  \ $$
+                        |  $$$$$$/
+                        \______/
+
+Linguist is a simple localization component. Seriously, thats it!
+--]]
+
+--LINGUIST HELPERS
+local activeLocale
+
+local failsafe = function() assert(false) end
+
+--LINGUIST META METHODS
+local metaread = {
+    __index = function(self, key)
+        rawset(self, key, key)
+        return key
+    end
+}
+
+local defaultwrite = setmetatable({}, {
+    __newindex = function(self, key, value)
+        if not rawget(activeLocale, key) then
+            rawset(activeLocale, key, value == true and key or value)
+        end
+    end,
+    __index = failsafe
+})
+
+local metawrite = setmetatable({}, {
+    __newindex = function(self, key, value)
+        rawset(activeLocale, key, value == true and key or value)
+    end,
+    __index = failsafe
+})
+
+--LINGUIST STORAGE
+lib.Localization = setmetatable({}, metaread);
+
+--LINGUIST PUBLIC METHOD
+function lib:Lang(locale, isDefault)
+    if(not locale) then
+        return self.Localization
+    else
+        local gameLocale = GetLocale()
+        if gameLocale == "enGB" then gameLocale = "enUS" end
+
+        activeLocale = self.Localization
+
+        if isDefault then
+            return defaultwrite
+        elseif(locale == GAME_LOCALE or locale == gameLocale) then
+            return metawrite
+        end
+    end
+end
+
+--[[
+ /$$$$$$$             /$$              /$$
+| $$__  $$           | $$             | $$
+| $$  \ $$ /$$$$$$  /$$$$$$   /$$$$$$ | $$$$$$$  /$$$$$$   /$$$$$$$  /$$$$$$
+| $$  | $$|____  $$|_  $$_/  |____  $$| $$__  $$|____  $$ /$$_____/ /$$__  $$
+| $$  | $$ /$$$$$$$  | $$     /$$$$$$$| $$  \ $$ /$$$$$$$|  $$$$$$ | $$$$$$$$
+| $$  | $$/$$__  $$  | $$ /$$/$$__  $$| $$  | $$/$$__  $$ \____  $$| $$_____/
+| $$$$$$$/  $$$$$$$  |  $$$$/  $$$$$$$| $$$$$$$/  $$$$$$$ /$$$$$$$/|  $$$$$$$
+|_______/ \_______/   \___/  \_______/|_______/ \_______/|_______/  \_______/
+
+
+DataBase is a component used to create and manage SVUI data objects.
+
+It's main purpose is to keep all methods and logic needed to properly maintain
+valid data outside of the core object.
+--]]
+
+--DATABASE LOCAL HELPERS
+local function tablecopy(d, s, debug)
+    if(debug) then
+        print(debug)
+        assert(type(s) == "table", "tablecopy ERROR: source (" .. debug .. ") is not a table")
+        assert(type(d) == "table", "tablecopy ERROR: destination (" .. debug .. ") is not a table")
+    end
+    if(type(s) ~= "table") then return end
+    if(type(d) ~= "table") then return end
+    for k, v in pairs(s) do
+        local saved = rawget(d, k)
+        if type(v) == "table" then
+            if not saved then rawset(d, k, {}) end
+            tablecopy(d[k], v)
+        elseif(saved == nil or (saved and type(saved) ~= type(v))) then
+            rawset(d, k, v)
+        end
+    end
+end
+
+local function tablesplice(targetTable, mergeTable)
+    if type(targetTable) ~= "table" then targetTable = {} end
+
+    if type(mergeTable) == 'table' then
+        for key,val in pairs(mergeTable) do
+            if type(val) == "table" then
+                val = tablesplice(targetTable[key], val)
+            end
+            targetTable[key] = val
+        end
+    end
+    return targetTable
+end
+
+local function importdata(s, d)
+    if type(d) ~= "table" then d = {} end
+    if type(s) == "table" then
+        for k,v in pairs(s) do
+            if type(v) == "table" then
+                v = importdata(v, d[k])
+            end
+            d[k] = v
+        end
+    end
+    return d
+end
+
+local function removedefaults(db, src, nometa)
+    if(type(src) ~= "table") then
+        if(db == src) then db = nil end
+        return
+    end
+    if(not nometa) then
+        setmetatable(db, nil)
+    end
+    for k,v in pairs(src) do
+        if type(v) == "table" and type(db[k]) == "table" then
+            removedefaults(db[k], v, nometa)
+            if next(db[k]) == nil then
+                db[k] = nil
+            end
+        else
+            if db[k] == v then
+                db[k] = nil
+            end
+        end
+    end
+end
+
+--DATABASE META METHODS
+local meta_database = {
+  __index = function(t, k)
+    if(not k or k == "") then return end
+    local sv = rawget(t, "data")
+    local dv = rawget(t, "defaults")
+    local src = dv and dv[k]
+
+    if(src ~= nil) then
+        if(type(src) == "table") then
+          if(sv[k] == nil or (sv[k] ~= nil and type(sv[k]) ~= "table")) then sv[k] = {} end
+          tablecopy(sv[k], src)
+        else
+          if(sv[k] == nil or (sv[k] ~= nil and type(sv[k]) ~= type(src))) then sv[k] = src end
+        end
+    end
+
+    rawset(t, k, sv[k])
+    return rawget(t, k)
+  end,
+}
+
+local meta_cache = {
+  __index = function(t, k)
+    if(not k or k == "") then return end
+    local sv = rawget(t, "data")
+    if(not sv[k]) then sv[k] = {} end
+    rawset(t, k, sv[k])
+    return rawget(t, k)
+  end,
+}
+
+--DATABASE PUBLIC METHODS
+function lib:Remove(key)
+    if(GLOBAL_SV.profiles[key]) then GLOBAL_SV.profiles[key] = nil end
+    if(GLOBAL_SV.cache[key]) then GLOBAL_SV.cache[key] = nil end
+    twipe(GLOBAL_SV.profileKeys)
+    for k,v in pairs(GLOBAL_SV.profiles) do
+        GLOBAL_SV.profileKeys[k] = k
+    end
+    for k,v in pairs(GLOBAL_SV.cache) do
+        GLOBAL_SV.profileKeys[k] = k
+    end
+end
+
+function lib:GetProfiles()
+    local list = GLOBAL_SV.profileKeys or {}
+    return list
+end
+
+function lib:CheckProfiles()
+    local hasProfile = false
+    local list = GLOBAL_SV.profileKeys or {}
+    for key,_ in pairs(list) do
+        hasProfile = true
+    end
+    return hasProfile
+end
+
+function lib:ImportDatabase(key)
+    if(not GLOBAL_SV.profiles[key]) then GLOBAL_SV.profiles[key] = {} end;
+    PROFILE_SV.STORED[SOURCE_KEY] = GLOBAL_SV.profiles[key]
+
+    if(not GLOBAL_SV.cache[key]) then GLOBAL_SV.cache[key] = {} end;
+    CACHE_SV.STORED[SOURCE_KEY] = GLOBAL_SV.cache[key]
+
+    ReloadUI()
+end
+
+function lib:ExportDatabase(key)
+    local export, saved
+
+    if(not GLOBAL_SV.profiles[key]) then GLOBAL_SV.profiles[key] = {} end;
+    export = rawget(CoreObject.db, "data");
+    saved = GLOBAL_SV.profiles[key];
+    tablecopy(saved, export);
+
+    if not GLOBAL_SV.cache[key] then GLOBAL_SV.cache[key] = {} end
+    export = rawget(CoreObject.cache, "data")
+    saved = GLOBAL_SV.cache[key]
+    tablecopy(saved, export);
+
+
+    twipe(GLOBAL_SV.profileKeys)
+    for k,v in pairs(GLOBAL_SV.profiles) do
+        GLOBAL_SV.profileKeys[k] = k
+    end
+    for k,v in pairs(GLOBAL_SV.cache) do
+        GLOBAL_SV.profileKeys[k] = k
+    end
+end
+
+function lib:WipeDatabase()
+    for k,v in pairs(PROFILE_SV.STORED[SOURCE_KEY]) do
+        PROFILE_SV.STORED[SOURCE_KEY][k] = nil
+    end
+end
+
+function lib:WipeCache(index)
+    if(index) then
+        CACHE_SV.STORED[SOURCE_KEY][index] = nil
+    else
+        for k,v in pairs(CACHE_SV.STORED[SOURCE_KEY]) do
+            CACHE_SV.STORED[SOURCE_KEY][k] = nil
+        end
+    end
+end
+
+function lib:WipeGlobal()
+    for k,v in pairs(GLOBAL_SV) do
+        GLOBAL_SV[k] = nil
+    end
+end
+
+function lib:UpdateDatabase(event)
+    if event == "PLAYER_LOGOUT" then
+        local sv = rawget(CoreObject.db, "data")
+        local src = rawget(CoreObject.db, "defaults")
+        for k,v in pairs(sv) do
+            if(not src[k]) then
+                sv[k] = nil
+            elseif(src[k] ~= nil and (not LoadOnDemand[k])) then
+                removedefaults(sv[k], src[k])
+            end
+        end
+        for k,v in pairs(CACHE_SV) do
+            if(k ~= "STORED") then
+                CACHE_SV[k] = nil
+            end
+        end
+    elseif(event == "ACTIVE_TALENT_GROUP_CHANGED") then
+        local LastKey = SOURCE_KEY
+        if(PROFILE_SV.SAFEDATA and PROFILE_SV.SAFEDATA.dualSpecEnabled) then
+            SOURCE_KEY = GetSpecialization()
+            self.EventManager:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
+
+            if(not SOURCE_KEY) then
+                SOURCE_KEY = 1
+            end
+
+            if(LastKey ~= SOURCE_KEY) then
+                --construct core dataset
+                local db           = setmetatable({}, meta_database)
+                db.data            = PROFILE_SV.STORED[SOURCE_KEY]
+                db.defaults        = CoreObject.configs
+                CoreObject.db      = db
+
+                local cache        = setmetatable({}, meta_cache)
+                cache.data         = CACHE_SV.STORED[SOURCE_KEY]
+                CoreObject.cache   = cache
+
+                if(CoreObject.ReLoad) then
+                    CoreObject:ReLoad()
+                end
+
+                self:RefreshAll()
+            end
+        else
+            SOURCE_KEY = 1
+            self.EventManager:UnregisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
+        end
+    end
+end
+
+function lib:GetSafeData(index)
+    if(index) then
+        return PROFILE_SV.SAFEDATA[index]
+    else
+        return PROFILE_SV.SAFEDATA
+    end
+end
+
+function lib:SaveSafeData(index, value)
+    PROFILE_SV.SAFEDATA[index] = value
+end
+
+function lib:CheckData(schema, key)
+    local file = PROFILE_SV.STORED[SOURCE_KEY][schema]
+    print("______" .. schema .. ".db[" .. key .. "]_____")
+    print(file[key])
+    print("______SAVED_____")
+end
+
+function lib:NewGlobal(index)
+    index = index or CoreObject.Schema
+    if(not GLOBAL_SV[index]) then
+        GLOBAL_SV[index] = {}
+    end
+    return GLOBAL_SV[index]
+end
+
+--[[
+ /$$$$$$$                      /$$            /$$
+| $$__  $$                    |__/           | $$
+| $$  \ $$  /$$$$$$   /$$$$$$  /$$  /$$$$$$$/$$$$$$    /$$$$$$  /$$   /$$
+| $$$$$$$/ /$$__  $$ /$$__  $$| $$ /$$_____/_  $$_/   /$$__  $$| $$  | $$
+| $$__  $$| $$$$$$$$| $$  \ $$| $$|  $$$$$$  | $$    | $$  \__/| $$  | $$
+| $$  \ $$| $$_____/| $$  | $$| $$ \____  $$ | $$ /$$| $$      | $$  | $$
+| $$  | $$|  $$$$$$$|  $$$$$$$| $$ /$$$$$$$/ |  $$$$/| $$      |  $$$$$$$
+|__/  |__/ \_______/ \____  $$|__/|_______/   \___/  |__/       \____  $$
+                     /$$  \ $$                                  /$$  | $$
+                    |  $$$$$$/                                 |  $$$$$$/
+                     \______/                                   \______/
+
+Registry is a component used to manage packages and scripts embedded
+into the SVUI core addon.
+
+It's main purpose is to keep all methods and logic needed to properly keep
+core add-ins functioning outside of the core object.
+--]]
+
+--REGISTRY LOCAL HELPERS
+local changeDBVar = function(self, value, key, sub1, sub2, sub3)
+    local db = CoreObject.db[self.Schema]
+    if((sub1 and sub2 and sub3) and (db[sub1] and db[sub1][sub2] and db[sub1][sub2][sub3])) then
+        db[sub1][sub2][sub3][key] = value
+    elseif((sub1 and sub2) and (db[sub1] and db[sub1][sub2])) then
+        db[sub1][sub2][key] = value
+    elseif(sub1 and db[sub1]) then
+        db[sub1][key] = value
+    else
+        db[key] = value
+    end
+
+    if(self.UpdateLocals) then
+        self:UpdateLocals()
+    end
+end
+
+local innerOnEvent = function(self, event, ...)
+    local obj = self.module
+    if self[event] and type(self[event]) == "function" then
+        self[event](obj, event, ...)
+    end
+end
+
+local registerEvent = function(self, eventname, eventfunc)
+    if not self.___eventframe then
+        self.___eventframe = CreateFrame("Frame", nil)
+        self.___eventframe.module = self
+        self.___eventframe:SetScript("OnEvent", innerOnEvent)
+    end
+
+    if(not self.___eventframe[eventname]) then
+        local fn = eventfunc
+        if type(eventfunc) == "string" then
+            fn = self[eventfunc]
+        elseif(not fn and self[eventname]) then
+            fn = self[eventname]
+        end
+        self.___eventframe[eventname] = fn
+    end
+
+    self.___eventframe:RegisterEvent(eventname)
+end
+
+local unregisterEvent = function(self, event, ...)
+    if(self.___eventframe) then
+        self.___eventframe:UnregisterEvent(event)
+    end
+end
+
+local innerOnUpdate = function(self, elapsed)
+    if self.elapsed and self.elapsed > (self.throttle) then
+        local obj = self.module
+        local callbacks = self.callbacks
+
+        for name, fn in pairs(callbacks) do
+            local _, error = pcall(fn, obj)
+            if(error and CoreObject.Debugging) then
+                print(error)
+            end
+        end
+
+        self.elapsed = 0
+    else
+        self.elapsed = (self.elapsed or 0) + elapsed
+    end
+end
+
+local registerUpdate = function(self, updatefunc, throttle)
+    if not self.___updateframe then
+        self.___updateframe = CreateFrame("Frame", nil);
+        self.___updateframe.module = self;
+        self.___updateframe.callbacks = {};
+        self.___updateframe.elapsed = 0;
+        self.___updateframe.throttle = throttle or 0.2;
+    end
+
+    if(updatefunc and type(updatefunc) == "string" and self[updatefunc]) then
+        self.___updateframe.callbacks[updatefunc] = self[updatefunc]
+    end
+
+    self.___updateframe:SetScript("OnUpdate", innerOnUpdate)
+end
+
+local unregisterUpdate = function(self, updatefunc)
+    if(updatefunc and type(updatefunc) == "string" and self.___updateframe.callbacks[updatefunc]) then
+        self.___updateframe.callbacks[updatefunc] = nil
+        if(#self.___updateframe.callbacks == 0) then
+            self.___updateframe:SetScript("OnUpdate", nil)
+        end
+    else
+        self.___updateframe:SetScript("OnUpdate", nil)
+    end
+end
+
+local function SetPluginString(addonName)
+    local author = GetAddOnMetadata(addonName, "Author") or "Unknown"
+    local name = GetAddOnMetadata(addonName, "Title") or addonName
+    local version = GetAddOnMetadata(addonName, "Version") or "???"
+    return INFO_FORMAT:format(name, version, author)
+end
+
+--REGISTRY PUBLIC METHODS
+
+function lib:RunCallbacks()
+    for i=1, #Callbacks do
+        local fn = Callbacks[i]
+        if(fn and type(fn) == "function") then
+            fn()
+        end
+    end
+end
+
+function lib:RefreshModule(schema)
+    local obj = CoreObject[schema]
+    if obj and obj.ReLoad then
+        obj:ReLoad()
+    end
+end
+
+function lib:RefreshPlugin(schema)
+    local obj = _G[schema]
+    if obj and obj.ReLoad then
+        obj:ReLoad()
+    end
+end
+
+function lib:RefreshAll()
+    for _,schema in pairs(MODULES) do
+        local obj = CoreObject[schema]
+        if obj and obj.ReLoad then
+            obj:ReLoad()
+        end
+    end
+
+    for _,schema in pairs(PLUGINS) do
+        local obj = _G[schema]
+        if obj and obj.ReLoad then
+            obj:ReLoad()
+        end
+    end
+end
+
+function lib:GetModuletable()
+    return MODULES
+end
+
+function lib:GetPlugins()
+    return PluginString
+end
+
+function lib:CheckDualProfile()
+    return PROFILE_SV.SAFEDATA.dualSpecEnabled
+end
+
+function lib:ToggleDualProfile(enabled)
+    PROFILE_SV.SAFEDATA.dualSpecEnabled = enabled
+    if(enabled) then
+        self.EventManager:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
+        self:UpdateDatabase()
+    else
+        self.EventManager:UnregisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
+    end
+end
+
+function lib:LoadQueuedModules()
+    if MODULES then
+        for i=1,#MODULES do
+            local schema = MODULES[i]
+            local obj = CoreObject[schema]
+            if obj and not obj.initialized then
+                local halt = false
+                local data = CoreObject.db[schema]
+                if(data and data.incompatible) then
+                    for addon,_ in pairs(data.incompatible) do
+                        if IsAddOnLoaded(addon) then halt = true end
+                    end
+                end
+                if(obj.Load and (not halt)) then
+                    obj:Load()
+                    obj.initialized = true
+                end
+            end
+        end
+    end
+end
+
+function lib:LoadQueuedPlugins()
+    if PLUGINS then
+        for i=1,#PLUGINS do
+            local schema = PLUGINS[i]
+            local obj = _G[schema]
+            if obj and not obj.initialized then
+                local halt = false
+                local data = CoreObject.db[schema]
+                if(data and data.incompatible) then
+                    for addon,_ in pairs(data.incompatible) do
+                        if IsAddOnLoaded(addon) then halt = true end
+                    end
+                end
+                if(obj.Load and (not halt)) then
+                    obj:Load()
+                    obj.initialized = true
+                end
+            end
+        end
+    end
+end
+
+--[[ CONSTRUCTORS ]]--
+
+function lib:NewPlugin(addonName, addonObject)
+    local version   = GetAddOnMetadata(addonName, "Version")
+    local header    = GetAddOnMetadata(addonName, HeaderFromMeta)
+    local schema    = GetAddOnMetadata(addonName, SchemaFromMeta)
+    local lod       = IsAddOnLoadOnDemand(addonName)
+
+    local addonmeta = {}
+    local oldmeta = getmetatable(addonObject)
+    if oldmeta then
+        for k, v in pairs(oldmeta) do addonmeta[k] = v end
+    end
+    addonmeta.__tostring = rootstring
+    setmetatable( addonObject, addonmeta )
+
+    addonObject.Version             = version
+    addonObject.NameID              = addonName
+    addonObject.TitleID             = header
+    addonObject.Schema              = schema
+    addonObject.LoD                 = lod
+    addonObject.initialized         = false
+    addonObject.CombatLocked        = false
+    addonObject.ChangeDBVar         = changeDBVar
+    addonObject.RegisterEvent       = registerEvent
+    addonObject.UnregisterEvent     = unregisterEvent
+    addonObject.RegisterUpdate      = registerUpdate
+    addonObject.UnregisterUpdate    = unregisterUpdate
+
+    if(IsAddOnLoaded(addonName) and not lod) then
+        CoreObject.Options.args.plugins.args.pluginOptions.args[schema] = {
+            type = "group",
+            name = header,
+            childGroups = "tree",
+            args = {
+                enable = {
+                    order = 1,
+                    type = "toggle",
+                    name = "Enable",
+                    get = function()
+                        return CoreObject.db[schema].enable
+                    end,
+                    set = function(key, value)
+                        addonObject:ChangeDBVar(value, "enable");
+                        CoreObject:StaticPopup_Show("RL_CLIENT")
+                    end,
+                }
+            }
+        }
+    end
+
+    _G[schema] = addonObject
+
+    if(not PLUGINS) then PLUGINS = {} end
+
+    PLUGINS[#PLUGINS+1] = schema
+    AllowedIndexes[schema] = schema
+
+    local infoString = SetPluginString(addonName)
+    local oldString = PluginString
+    PluginString = ("%s%s\n"):format(oldString, infoString)
+
+    return addonObject
+end
+
+local function NewLoadOnDemand(addonName, schema, header)
+    LoadOnDemand[schema] = addonName;
+    PROFILE_SV.SAFEDATA[schema] = PROFILE_SV.SAFEDATA[schema] or {["enable"] = false}
+    CoreObject.configs[schema] = {["enable"] = false}
+    CoreObject.Options.args.plugins.args.pluginOptions.args[schema] = {
+        type = "group",
+        name = header,
+        childGroups = "tree",
+        args = {
+            enable = {
+                order = 1,
+                type = "execute",
+                width = "full",
+                name = function()
+                    local nameString = "Disable"
+                    if(not IsAddOnLoaded(addonName)) then
+                        nameString = "Enable"
+                    end
+                    return nameString
+                end,
+                func = function()
+                    if(not IsAddOnLoaded(addonName)) then
+                        local loaded, reason = LoadAddOn(addonName)
+                        PROFILE_SV.SAFEDATA[schema].enable = true
+                        lib:LoadQueuedPlugins()
+                    else
+                        PROFILE_SV.SAFEDATA[schema].enable = false
+                        CoreObject:StaticPopup_Show("RL_CLIENT")
+                    end
+                end,
+            }
+        }
+    }
+end
+
+local function SanitizeStorage(data)
+    for k,v in pairs(data) do
+        if(k == "STORED" or k == "SAFEDATA" or k == "LAYOUT") then
+            data[k] = nil
+        end
+    end
+end
+
+--DATABASE EVENT HANDLER
+local DataBase_OnEvent = function(self, event)
+    if(event == "PLAYER_LOGOUT" or event == "ACTIVE_TALENT_GROUP_CHANGED") then
+        lib:UpdateDatabase(event)
+    end
+end
+
+-- CORE OBJECT CONSTRUCT
+local Core_NewCallback = function(self, fn)
+    if(fn and type(fn) == "function") then
+        Callbacks[#Callbacks+1] = fn
+    end
+end
+
+local Core_NewScript = function(self, fn)
+    if(fn and type(fn) == "function") then
+        ScriptQueue[#ScriptQueue+1] = fn
+    end
+end
+
+local Core_NewPackage = function(self, schema, header)
+    if(self[schema]) then return end
+
+    if(not MODULES) then MODULES = {} end
+    MODULES[#MODULES+1] = schema
+
+    AllowedIndexes[schema] = schema
+
+    local addonName = ("SVUI [%s]"):format(schema)
+
+    local obj = {
+        NameID              = addonName,
+        TitleID             = header,
+        Schema              = schema,
+        initialized         = false,
+        CombatLocked        = false,
+        ChangeDBVar         = changeDBVar,
+        RegisterEvent       = registerEvent,
+        UnregisterEvent     = unregisterEvent,
+        RegisterUpdate      = registerUpdate,
+        UnregisterUpdate    = unregisterUpdate
+    }
+
+    local addonmeta = {}
+    local oldmeta = getmetatable(obj)
+    if oldmeta then
+        for k, v in pairs(oldmeta) do addonmeta[k] = v end
+    end
+    addonmeta.__tostring = rootstring
+    setmetatable( obj, addonmeta )
+
+    self[schema] = obj
+
+    return self[schema]
+end
+
+local Core_ResetData = function(self, sub, sub2)
+    local data = self.db
+    local sv = rawget(data, "data")
+    local src = rawget(data, "defaults")
+    local targetData
+    if(sub2 and sv and sv[sub]) then
+        targetData = sv[sub][sub2]
+    elseif(sub and sv) then
+        targetData = sv[sub]
+    else
+        targetData = sv
+    end
+    if(targetData) then
+        for k,v in pairs(targetData) do
+            targetData[k] = nil
+        end
+    else
+        sv = {}
+    end
+    tablecopy(sv, src)
+end
+
+function lib:NewCore(gfile, pfile, cfile)
+    --meta assurance
+    local mt = {};
+    local old = getmetatable(CoreObject);
+    if old then
+        for k, v in pairs(old) do mt[k] = v end
+    end
+    mt.__tostring = rootstring;
+    setmetatable(CoreObject, mt);
+
+    --database
+    GLOBAL_FILENAME = gfile or GLOBAL_FILENAME
+    PROFILE_FILENAME = pfile or PROFILE_FILENAME
+    CACHE_FILENAME  = cfile or CACHE_FILENAME
+
+    --events
+    if(not self.EventManager.Initialized) then
+        self.EventManager:RegisterEvent("PLAYER_LOGOUT")
+        self.EventManager:SetScript("OnEvent", DataBase_OnEvent)
+        self.EventManager.Initialized = true
+    end
+
+    --internals
+    CoreObject.NameID       = CoreName;
+    CoreObject.Version      = AddonVersion;
+    CoreObject.GameVersion  = tonumber(InterfaceVersion);
+    CoreObject.DebugMode    = false;
+    CoreObject.Schema       = GetAddOnMetadata(CoreName, SchemaFromMeta);
+    CoreObject.TitleID      = GetAddOnMetadata(CoreName, HeaderFromMeta);
+    CoreObject.NewCallback  = Core_NewCallback
+    CoreObject.NewScript    = Core_NewScript
+    CoreObject.NewPackage   = Core_NewPackage
+    CoreObject.ResetData    = Core_ResetData
+    CoreObject.db           = tablesplice(CoreObject.configs, {})
+    CoreObject.L            = self:Lang()
+
+    --set global
+    _G[CoreName] = CoreObject;
+
+    return _G[CoreName]
+end
+
+-- INITIALIZE AND LAUNCH
+
+function lib:Initialize()
+    local coreSchema = CoreObject.Schema
+    --GLOBAL SAVED VARIABLES
+    if not _G[GLOBAL_FILENAME] then _G[GLOBAL_FILENAME] = {} end
+    GLOBAL_SV = _G[GLOBAL_FILENAME]
+
+    if(GLOBAL_SV.profileKeys) then
+      twipe(GLOBAL_SV.profileKeys)
+    else
+      GLOBAL_SV.profileKeys = {}
+    end
+
+    GLOBAL_SV.profiles = GLOBAL_SV.profiles or {}
+    for k,v in pairs(GLOBAL_SV.profiles) do
+        GLOBAL_SV.profileKeys[k] = k
+    end
+
+    GLOBAL_SV.cache = GLOBAL_SV.cache or {}
+    for k,v in pairs(GLOBAL_SV.cache) do
+        GLOBAL_SV.profileKeys[k] = k
+    end
+
+    --CACHE SAVED VARIABLES
+    if not _G[CACHE_FILENAME] then _G[CACHE_FILENAME] = {} end
+    CACHE_SV = _G[CACHE_FILENAME]
+    if(not CACHE_SV.STORED) then
+        CACHE_SV.STORED = {}
+        CACHE_SV.STORED[1] = {}
+        CACHE_SV.STORED[2] = {}
+        CACHE_SV.STORED[3] = {}
+        if playerClass == "DRUID" then
+            CACHE_SV.STORED[4] = {}
+        end
+        for k,v in pairs(CACHE_SV) do
+            if(k ~= "STORED") then
+                CACHE_SV.STORED[1][k] = v
+            end
+        end
+    end
+
+    --PROFILE SAVED VARIABLES
+    if not _G[PROFILE_FILENAME] then _G[PROFILE_FILENAME] = {} end
+    PROFILE_SV = _G[PROFILE_FILENAME]
+    PROFILE_SV.SAFEDATA = PROFILE_SV.SAFEDATA or {dualSpecEnabled = false}
+
+    if(PROFILE_SV.SAFEDATA and PROFILE_SV.SAFEDATA.dualSpecEnabled) then
+        SOURCE_KEY = GetSpecialization() or 1
+        self.EventManager:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
+    else
+        SOURCE_KEY = 1
+        self.EventManager:UnregisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
+    end
+
+    if(not PROFILE_SV.STORED) then
+        PROFILE_SV.STORED = {}
+        PROFILE_SV.STORED[1] = {}
+        PROFILE_SV.STORED[1][coreSchema] = {}
+        PROFILE_SV.STORED[2] = {}
+        PROFILE_SV.STORED[2][coreSchema] = {}
+        PROFILE_SV.STORED[3] = {}
+        PROFILE_SV.STORED[3][coreSchema] = {}
+        if playerClass == "DRUID" then
+            PROFILE_SV.STORED[4] = {}
+            PROFILE_SV.STORED[4][coreSchema] = {}
+        end
+
+        --Attempt to copy any prior variables, even outdated
+        if(PROFILE_SV.system or (MODULES[1] and PROFILE_SV[MODULES[1]])) then
+            for k,v in pairs(PROFILE_SV) do
+                if(k == "system") then
+                    tablecopy(v, PROFILE_SV.STORED[1][coreSchema])
+                elseif(k == "media" or k == "filter") then
+                    PROFILE_SV.STORED[1][coreSchema][k] = v
+                elseif(AllowedIndexes[k]) then
+                    PROFILE_SV.STORED[1][k] = v
+                end
+            end
+        end
+    else
+        PROFILE_SV.STORED[1] = PROFILE_SV.STORED[1] or {}
+        PROFILE_SV.STORED[1][coreSchema] = PROFILE_SV.STORED[1][coreSchema] or {}
+        SanitizeStorage(PROFILE_SV.STORED[1])
+
+        PROFILE_SV.STORED[2] = PROFILE_SV.STORED[2] or {}
+        PROFILE_SV.STORED[2][coreSchema] = PROFILE_SV.STORED[2][coreSchema] or {}
+        SanitizeStorage(PROFILE_SV.STORED[2])
+
+        PROFILE_SV.STORED[3] = PROFILE_SV.STORED[3] or {}
+        PROFILE_SV.STORED[3][coreSchema] = PROFILE_SV.STORED[3][coreSchema] or {}
+        SanitizeStorage(PROFILE_SV.STORED[3])
+
+        if playerClass == "DRUID" then
+            PROFILE_SV.STORED[4] = PROFILE_SV.STORED[4] or {}
+            PROFILE_SV.STORED[4][coreSchema] = PROFILE_SV.STORED[4][coreSchema] or {}
+            SanitizeStorage(PROFILE_SV.STORED[4])
+        elseif PROFILE_SV.STORED[4] then
+            PROFILE_SV.STORED[4] = nil
+        end
+
+    end
+
+    for k,v in pairs(PROFILE_SV) do
+        if(k ~= "STORED" and k ~= "SAFEDATA") then
+            PROFILE_SV[k] = nil
+        end
+    end
+
+    --construct core dataset
+    local db           = setmetatable({}, meta_database)
+    db.data            = PROFILE_SV.STORED[SOURCE_KEY]
+    db.defaults        = CoreObject.configs
+    CoreObject.db      = db
+
+    local cache        = setmetatable({}, meta_cache)
+    cache.data         = CACHE_SV.STORED[SOURCE_KEY]
+    CoreObject.cache   = cache
+
+    --check for LOD plugins
+    local addonCount = GetNumAddOns()
+
+    for i = 1, addonCount do
+        local addonName, _, _, _, _, reason = GetAddOnInfo(i)
+        local lod = IsAddOnLoadOnDemand(i)
+        local header = GetAddOnMetadata(i, HeaderFromMeta)
+        local schema = GetAddOnMetadata(i, SchemaFromMeta)
+
+        if(lod and schema) then
+            NewLoadOnDemand(addonName, schema, header)
+        end
+    end
+end
+
+function lib:Launch()
+    if LoadOnDemand then
+        for schema,name in pairs(LoadOnDemand) do
+            local db = PROFILE_SV.SAFEDATA[schema]
+            if(db and (db.enable or db.enable ~= false)) then
+                CoreObject.db[schema].enable = PROFILE_SV.SAFEDATA[schema].enable
+                if(not IsAddOnLoaded(name)) then
+                    local loaded, reason = LoadAddOn(name)
+                end
+                EnableAddOn(name)
+            end
+        end
+    end
+
+    self:LoadQueuedModules()
+    self:LoadQueuedPlugins()
+
+    if ScriptQueue then
+        for i=1, #ScriptQueue do
+            local fn = ScriptQueue[i]
+            if(fn and type(fn) == "function") then
+                fn()
+            end
+        end
+
+        ScriptQueue = nil
+    end
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/libs/LibSystemRegistry-1.0/LibSystemRegistry-1.0.lua b/Interface/AddOns/SVUI/libs/LibSystemRegistry-1.0/LibSystemRegistry-1.0.lua
deleted file mode 100644
index d20005d..0000000
--- a/Interface/AddOns/SVUI/libs/LibSystemRegistry-1.0/LibSystemRegistry-1.0.lua
+++ /dev/null
@@ -1,555 +0,0 @@
-local AddonName, AddonCore = ...
-local MAJOR, MINOR = "LibSystemRegistry-1.0", 1
-local lib = LibStub:NewLibrary(MAJOR, MINOR)
-
-if not lib then return end
-
---[[ GLOBALS ]]--
-
-local _G 						= _G;
-local unpack        			= _G.unpack;
-local select        			= _G.select;
-local pairs         			= _G.pairs;
-local type          			= _G.type;
-local rawset        			= _G.rawset;
-local rawget        			= _G.rawget;
-local tostring      			= _G.tostring;
-local error         			= _G.error;
-local getmetatable  			= _G.getmetatable;
-local setmetatable  			= _G.setmetatable;
-local string    				= _G.string;
-local math      				= _G.math;
-local table     				= _G.table;
-local tinsert                   = _G.tinsert;
-local tremove                   = _G.tremove;
-
-local upper 					= string.upper;
-local format, find, match, gsub = string.format, string.find, string.match, string.gsub;
-local floor 					= math.floor
-local twipe, tsort, tconcat 	= table.wipe, table.sort, table.concat;
-
---[[ LOCAL VARS ]]--
-local AddonVersion = GetAddOnMetadata(..., "Version");
-local clientVersion, internalVersion, releaseDate, uiVersion = GetBuildInfo();
-
-local PluginString = ""
-local PluginList, Modules, LoadOnDemand, Callbacks, ModuleQueue, ScriptQueue = {},{},{},{},{},{};
-
-local INFO_FORMAT = "|cffFFFF00%s|r\n        |cff33FF00Version: %s|r |cff0099FFby %s|r";
-
-if GetLocale() == "ruRU" then
-    INFO_FORMAT = "|cffFFFF00%s|r\n        |cff33FF00Версия: %s|r |cff0099FFот %s|r";
-end
-
-local schemaHeader = "X-" .. AddonName .. "-Schema";
-local messagePattern = "|cffFF2F00%s:|r";
-local debugPattern = "|cffFF2F00%s|r [|cff992FFF%s|r]|cffFF2F00:|r";
-
---[[ META METHODS ]]--
-
-local rootstring = function(self) return self.___addonName end
-
---[[ REGISTRY CONSTRUCT ]]--
-
-local changeDBVar = function(self, value, key, sub1, sub2, sub3)
-    local schema = self.___schema
-    local config = AddonCore.db[schema]
-
-    if((sub1 and sub2 and sub3) and (config[sub1] and config[sub1][sub2] and config[sub1][sub2][sub3])) then
-        AddonCore.db[schema][sub1][sub2][sub3][key] = value
-    elseif((sub1 and sub2) and (config[sub1] and config[sub1][sub2])) then
-        AddonCore.db[schema][sub1][sub2][key] = value
-    elseif(sub1 and config[sub1]) then
-        AddonCore.db[schema][sub1][key] = value
-    else
-        AddonCore.db[schema][key] = value
-    end
-
-    self.db = AddonCore.db[schema]
-
-    if(self.UpdateLocals) then
-        self:UpdateLocals()
-    end
-end
-
-local innerOnEvent = function(self, event, ...)
-    local obj = self.module
-    if self[event] and type(self[event]) == "function" then
-        self[event](obj, event, ...)
-    end
-end
-
-local registerEvent = function(self, eventname, eventfunc)
-    if not self.___eventframe then
-        self.___eventframe = CreateFrame("Frame", nil)
-        self.___eventframe.module = self
-        self.___eventframe:SetScript("OnEvent", innerOnEvent)
-    end
-
-    if(not self.___eventframe[eventname]) then
-        local fn = eventfunc
-        if type(eventfunc) == "string" then
-            fn = self[eventfunc]
-        elseif(not fn and self[eventname]) then
-            fn = self[eventname]
-        end
-        self.___eventframe[eventname] = fn
-    end
-
-    self.___eventframe:RegisterEvent(eventname)
-end
-
-local unregisterEvent = function(self, event, ...)
-    if(self.___eventframe) then
-        self.___eventframe:UnregisterEvent(event)
-    end
-end
-
-local innerOnUpdate = function(self, elapsed)
-    if self.elapsed and self.elapsed > (self.throttle) then
-        local obj = self.module
-        local callbacks = self.callbacks
-
-        for name, fn in pairs(callbacks) do
-            local _, error = pcall(fn, obj)
-            if(error and AddonCore.Debugging) then
-                print(error)
-            end
-        end
-
-        self.elapsed = 0
-    else
-        self.elapsed = (self.elapsed or 0) + elapsed
-    end
-end
-
-local registerUpdate = function(self, updatefunc, throttle)
-    if not self.___updateframe then
-        self.___updateframe = CreateFrame("Frame", nil);
-        self.___updateframe.module = self;
-        self.___updateframe.callbacks = {};
-        self.___updateframe.elapsed = 0;
-        self.___updateframe.throttle = throttle or 0.2;
-    end
-
-    if(updatefunc and type(updatefunc) == "string" and self[updatefunc]) then
-        self.___updateframe.callbacks[updatefunc] = self[updatefunc]
-    end
-
-    self.___updateframe:SetScript("OnUpdate", innerOnUpdate)
-end
-
-local unregisterUpdate = function(self, updatefunc)
-    if(updatefunc and type(updatefunc) == "string" and self.___updateframe.callbacks[updatefunc]) then
-        self.___updateframe.callbacks[updatefunc] = nil
-        if(#self.___updateframe.callbacks == 0) then
-            self.___updateframe:SetScript("OnUpdate", nil)
-        end
-    else
-        self.___updateframe:SetScript("OnUpdate", nil)
-    end
-end
-
-local add_OptionsIndex = function(self, index, data)
-    local addonName = self.___addonName
-    local schema = self.___schema
-    local header = GetAddOnMetadata(addonName, "X-SVUI-Header")
-
-    AddonCore.Options.args.plugins.args.pluginOptions.args[schema].args[index] = data
-end
-
-local function SetPluginString(addonName)
-    local author = GetAddOnMetadata(addonName, "Author") or "Unknown"
-    local name = GetAddOnMetadata(addonName, "Title") or addonName
-    local version = GetAddOnMetadata(addonName, "Version") or "???"
-    return INFO_FORMAT:format(name, version, author)
-end
-
-local function SetInternalModule(obj, schema)
-    local addonmeta = {}
-    local oldmeta = getmetatable(obj)
-    if oldmeta then
-        for k, v in pairs(oldmeta) do addonmeta[k] = v end
-    end
-    addonmeta.__tostring = rootstring
-    setmetatable( obj, addonmeta )
-
-    local addonName = ("SVUI [%s]"):format(schema)
-
-    obj.___addonName = addonName
-    obj.___schema = schema
-
-    obj.initialized = false
-    obj.CombatLocked = false
-    obj.ChangeDBVar = changeDBVar
-    obj.RegisterEvent = registerEvent
-    obj.UnregisterEvent = unregisterEvent
-    obj.RegisterUpdate = registerUpdate
-    obj.UnregisterUpdate = unregisterUpdate
-
-    return obj
-end
-
-local function SetExternalModule(obj, schema, addonName, header, lod)
-    local addonmeta = {}
-    local oldmeta = getmetatable(obj)
-    if oldmeta then
-        for k, v in pairs(oldmeta) do addonmeta[k] = v end
-    end
-    addonmeta.__tostring = rootstring
-    setmetatable( obj, addonmeta )
-
-    obj.___addonName = addonName
-    obj.___schema = schema
-    obj.___header = header
-    obj.___lod = lod
-
-    obj.initialized = false
-    obj.CombatLocked = false
-    obj.ChangeDBVar = changeDBVar
-    obj.RegisterEvent = registerEvent
-    obj.UnregisterEvent = unregisterEvent
-    obj.RegisterUpdate = registerUpdate
-    obj.UnregisterUpdate = unregisterUpdate
-    obj.AddOption = add_OptionsIndex
-
-    if(lod) then
-        -- print("PLUGIN: " .. addonName)
-        AddonCore.Options.args.plugins.args.pluginOptions.args[schema] = {
-            type = "group",
-            name = header,
-            childGroups = "tree",
-            args = {
-                enable = {
-                    order = 1,
-                    type = "execute",
-                    width = "full",
-                    name = function()
-                        local nameString = "Disable"
-                        if(not IsAddOnLoaded(addonName)) then
-                            nameString = "Enable"
-                        end
-                        return nameString
-                    end,
-                    func = function()
-                        if(not IsAddOnLoaded(addonName)) then
-                            local loaded, reason = LoadAddOn(addonName)
-                            AddonCore:UpdateDatabase()
-                            obj:ChangeDBVar(true, "enable")
-                        else
-                            obj:ChangeDBVar(false, "enable")
-                            AddonCore:StaticPopup_Show("RL_CLIENT")
-                        end
-                    end,
-                }
-            }
-        }
-    else
-        AddonCore.Options.args.plugins.args.pluginOptions.args[schema] = {
-            type = "group",
-            name = header,
-            childGroups = "tree",
-            args = {
-                enable = {
-                    order = 1,
-                    type = "toggle",
-                    name = "Enable",
-                    get = function() return obj.db.enable end,
-                    set = function(key, value) obj:ChangeDBVar(value, "enable"); AddonCore:StaticPopup_Show("RL_CLIENT") end,
-                }
-            }
-        }
-    end
-
-    return obj
-end
-
---[[ PUBLIC METHODS ]]--
-
-function lib:NewCallback(fn)
-    if(fn and type(fn) == "function") then
-        Callbacks[#Callbacks+1] = fn
-    end
-end
-
-function lib:NewScript(fn)
-    if(fn and type(fn) == "function") then
-        ScriptQueue[#ScriptQueue+1] = fn
-    end
-end
-
-function lib:NewPackage(obj, schema)
-    if(AddonCore[schema]) then return end
-
-    ModuleQueue[#ModuleQueue+1] = schema
-    Modules[#Modules+1] = schema
-
-    AddonCore[schema] = SetInternalModule(obj, schema)
-
-    if(AddonCore.AddonLaunched) then
-        if(AddonCore[schema].Load) then
-            AddonCore[schema]:Load()
-        end
-    end
-end
-
-function lib:NewPlugin(obj)
-    local coreName = AddonCore.___addonName
-    local addonName = obj.___addonName
-
-    if(addonName and addonName ~= coreName) then
-        local schema = GetAddOnMetadata(addonName, "X-SVUI-Schema");
-        local header = GetAddOnMetadata(addonName, "X-SVUI-Header");
-        local lod = IsAddOnLoadOnDemand(addonName)
-        if(not schema) then return end
-
-        ModuleQueue[#ModuleQueue+1] = schema
-        Modules[#Modules+1] = schema
-
-        local infoString = SetPluginString(addonName)
-        local oldString = PluginString
-
-        PluginList[addonName] = infoString
-        PluginString = ("%s%s\n"):format(oldString, infoString)
-
-        AddonCore[schema] = SetExternalModule(obj, schema, addonName, header, lod)
-
-        if(AddonCore.AddonLaunched and AddonCore[schema].Load) then
-            AddonCore[schema]:Load()
-            --print(schema)
-        end
-    end
-end
-
-function lib:NewAddon(addonName, schema, header)
-    LoadOnDemand[addonName] = schema;
-
-    AddonCore.Options.args.plugins.args.pluginOptions.args[schema] = {
-        type = "group",
-        name = header,
-        childGroups = "tree",
-        args = {
-            enable = {
-                order = 1,
-                type = "execute",
-                width = "full",
-                name = function()
-                    local nameString = "Disable"
-                    if(not IsAddOnLoaded(addonName)) then
-                        nameString = "Enable"
-                    end
-                    return nameString
-                end,
-                func = function()
-                    if(not IsAddOnLoaded(addonName)) then
-                        local loaded, reason = LoadAddOn(addonName)
-                        AddonCore:UpdateDatabase()
-                        AddonCore.db[schema].enable = true
-                        self:LoadPackages()
-                    else
-                        AddonCore.db[schema].enable = false
-                        AddonCore:StaticPopup_Show("RL_CLIENT")
-                    end
-                end,
-            }
-        }
-    }
-end
-
-function lib:FindAddons()
-    local addonCount = GetNumAddOns()
-    for i = 1, addonCount do
-        local addonName, _, _, _, _, reason = GetAddOnInfo(i)
-        local lod = IsAddOnLoadOnDemand(i)
-        local header = GetAddOnMetadata(i, "X-SVUI-Header")
-        local schema = GetAddOnMetadata(i, "X-SVUI-Schema")
-
-        if(lod and schema) then
-            self:NewAddon(addonName, schema, header)
-        end
-    end
-end
-
-function lib:RunCallbacks()
-    for i=1, #Callbacks do
-        local fn = Callbacks[i]
-        if(fn and type(fn) == "function") then
-            fn()
-        end
-    end
-end
-
-function lib:Update(name, dataOnly)
-    local obj = AddonCore[name]
-    if obj then
-        if AddonCore.db[name] then
-            obj.db = AddonCore.db[name]
-        end
-        if obj.ReLoad and not dataOnly then
-            obj:ReLoad()
-        end
-    end
-end
-
-function lib:UpdateAll()
-    for _,name in pairs(Modules) do
-        local obj = AddonCore[name]
-
-        if AddonCore.db[name] then
-            obj.db = AddonCore.db[name]
-        end
-
-        if obj and obj.ReLoad then
-            obj:ReLoad()
-        end
-    end
-end
-
-function lib:LoadRegisteredAddons()
-    for name,schema in pairs(LoadOnDemand) do
-        local config = AddonCore.db[schema]
-        if(config and (config.enable or config.enable ~= false)) then
-            if(not IsAddOnLoaded(name)) then
-                local loaded, reason = LoadAddOn(name)
-            end
-            EnableAddOn(name)
-        end
-    end
-end
-
-function lib:LoadPackages()
-    if not ModuleQueue then return end
-
-    for i=1,#ModuleQueue do
-        local name = ModuleQueue[i]
-        local obj = AddonCore[name]
-        if obj and not obj.initialized then
-            if AddonCore.db[name] then
-                obj.db = AddonCore.db[name]
-            end
-
-            if obj.Load then
-                local halt = false
-                if(obj.db.incompatible) then
-                    for addon,_ in pairs(obj.db.incompatible) do
-                        if IsAddOnLoaded(addon) then halt = true end
-                    end
-                end
-                if(not halt) then
-                    obj:Load()
-                    obj.Load = nil
-                    --print(name)
-                end
-            end
-            obj.initialized = true;
-        end
-    end
-
-    twipe(ModuleQueue)
-
-    if not ScriptQueue then return end
-    for i=1, #ScriptQueue do
-        local fn = ScriptQueue[i]
-        if(fn and type(fn) == "function") then
-            fn()
-        end
-    end
-
-    ScriptQueue = nil
-end
-
-function lib:NewPrototype(name)
-    local version = GetAddOnMetadata(name, "Version")
-    local schema = GetAddOnMetadata(name, schemaHeader)
-
-    AddonCore.private[schema] = {["enable"] = false}
-
-    local obj = {
-        ___addonName = name,
-        ___version = version,
-        ___schema = schema
-    }
-
-    local mt = {}
-    local old = getmetatable(obj)
-    if old then
-        for k, v in pairs(old) do mt[k] = v end
-    end
-    mt.__tostring = rootstring
-    setmetatable(obj, mt)
-    return obj
-end
-
-function lib:GetPlugins(tableList)
-    if(tableList and tableList ~= false) then
-        return PluginList
-    end
-    return PluginString
-end
-
---[[ CONSTRUCTORS ]]--
-
-local Core_DeadFunction = function() return end
-
-local Core_StaticPopup_Show = function(self, arg)
-    if arg == "ADDON_ACTION_FORBIDDEN" then
-        StaticPopup_Hide(arg)
-    end
-end
-
-local function _sendmessage(msg, prefix)
-    if(type(msg) == "table") then
-        msg = tostring(msg)
-    end
-
-    if(not msg) then return end
-
-    if(prefix) then
-        local outbound = ("%s %s"):format(prefix, msg);
-        print(outbound)
-    else
-        print(msg)
-    end
-end
-
-local Core_Debugger = function(self, msg)
-    if(not self.___debugging) then return end
-    local outbound = (debugPattern):format(self.___addonName, "DEBUG")
-    _sendmessage(msg, outbound)
-end
-
-local Core_AddonMessage = function(self, msg)
-    local outbound = (messagePattern):format(self.___addonName)
-    _sendmessage(msg, outbound)
-end
-
-function lib:InitializeCore()
-    local obj = {};
-    --internals
-    AddonCore.___addonName        = AddonName;
-    AddonCore.___version          = AddonVersion;
-    AddonCore.___interface        = tonumber(uiVersion);
-    AddonCore.___debugging        = false;
-    --tables
-    AddonCore.db                  = {};
-    AddonCore.private             = {};
-    AddonCore.public              = { profiles = {}, profileKeys = {} };
-    --functions
-    AddonCore.fubar               = Core_DeadFunction;
-    AddonCore.AddonMessage        = Core_AddonMessage;
-    AddonCore.Debugger            = Core_Debugger;
-    AddonCore.StaticPopup_Show    = Core_StaticPopup_Show;
-
-    local mt = {};
-    local old = getmetatable(AddonCore);
-    if old then
-        for k, v in pairs(old) do mt[k] = v end
-    end
-    mt.__tostring = rootstring;
-    setmetatable(AddonCore, mt);
-
-    --set global
-    _G[AddonName] = AddonCore;
-
-    return AddonCore
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/libs/libs.xml b/Interface/AddOns/SVUI/libs/libs.xml
index 0e8898e..bc724e1 100644
--- a/Interface/AddOns/SVUI/libs/libs.xml
+++ b/Interface/AddOns/SVUI/libs/libs.xml
@@ -1,7 +1,6 @@
 <Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file="LibSuperVillain-1.0\LibSuperVillain-1.0.lua"/>
 	<Script file="LibStub\LibStub.lua"/>
-	<Script file="LibLocale-1.0\LibLocale-1.0.lua"/>
-	<Script file="LibSystemRegistry-1.0\LibSystemRegistry-1.0.lua"/>
     <Script file="CallbackHandler-1.0\CallbackHandler-1.0.lua"/>
     <Script file="LibSharedMedia-3.0\LibSharedMedia-3.0.lua"/>
     <Script file="LibActionButton-1.0\LibActionButton-1.0.lua"/>
diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
index 28b273d..5517fa0 100644
--- a/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
+++ b/Interface/AddOns/SVUI/libs/oUF_Villain/Plugins/oUF_ActionPanel/oUF_ActionPanel.toc
@@ -2,7 +2,7 @@
 ## Title: oUF ActionPanel
 ## Notes: Adds a backing to all unit frames that provides many utilities.
 ## Author: Munglunch
-## Version: 4.4
+## Version: 4.8
 ## X-Category: oUF
 ## Dependencies: oUF

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

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

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

diff --git a/Interface/AddOns/SVUI/packages/actionbar/KeyBind.lua b/Interface/AddOns/SVUI/packages/actionbar/KeyBind.lua
index 1588aef..a37c248 100644
--- a/Interface/AddOns/SVUI/packages/actionbar/KeyBind.lua
+++ b/Interface/AddOns/SVUI/packages/actionbar/KeyBind.lua
@@ -36,8 +36,8 @@ local tonumber = tonumber;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local MOD = SV.SVBar;

 local _G = getfenv(0);
diff --git a/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua b/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
index 6bccfd8..35531aa 100644
--- a/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
+++ b/Interface/AddOns/SVUI/packages/actionbar/SVBar.lua
@@ -33,12 +33,11 @@ local ceil = math.ceil;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
-local CONFIGS = SV.private
-local MOD = {};
+
+local MOD = SV:NewPackage("SVBar", L["ActionBars"]);
 MOD.ButtonCache = {};
 --[[
 ##########################################################
@@ -104,8 +103,8 @@ end
 local function RefreshMicrobar()
 	if not SVUI_MicroBar then return end
 	local lastParent = SVUI_MicroBar;
-	local buttonSize =  MOD.db.Micro.buttonsize or 30;
-	local spacing =  MOD.db.Micro.buttonspacing or 1;
+	local buttonSize =  SV.db.SVBar.Micro.buttonsize or 30;
+	local spacing =  SV.db.SVBar.Micro.buttonspacing or 1;
 	local barWidth = (buttonSize + spacing) * 13;
 	SVUI_MicroBar_MOVE:Size(barWidth, buttonSize + 6)
 	SVUI_MicroBar:SetAllPoints(SVUI_MicroBar_MOVE)
@@ -115,7 +114,7 @@ local function RefreshMicrobar()
 		if(button) then
 			button:ClearAllPoints()
 			button:Size(buttonSize, buttonSize + 28)
-			button._fade = MOD.db.Micro.mouseover
+			button._fade = SV.db.SVBar.Micro.mouseover
 			if lastParent == SVUI_MicroBar then
 				button:SetPoint("BOTTOMLEFT",lastParent,"BOTTOMLEFT",1,1)
 			else
@@ -187,7 +186,7 @@ local MicroButton_OnLeave = function(self)
 end

 local MicroButton_OnUpdate = function()
-	if(not MOD.db.Micro.mouseover) then
+	if(not SV.db.SVBar.Micro.mouseover) then
 		SVUI_MicroBar:SetAlpha(1)
 		SVUI_MicroBar.screenMarker:SetAlpha(0)
 	else
@@ -262,7 +261,7 @@ end
 local function SaveActionButton(parent)
 	local button = parent:GetName()
 	local cooldown = _G[button.."Cooldown"]
-	cooldown.SizeOverride = MOD.db.cooldownSize
+	cooldown.SizeOverride = SV.db.SVBar.cooldownSize
 	MOD:FixKeybindText(parent)
 	if not MOD.ButtonCache[parent] then
 		SV.Timers:AddCooldown(cooldown)
@@ -339,7 +338,7 @@ local function ModifyActionButton(parent)
 	local pushed = parent:GetPushedTexture()
 	local checked = parent:GetCheckedTexture()
 	if cooldown then
-		cooldown.SizeOverride = MOD.db.cooldownSize
+		cooldown.SizeOverride = SV.db.SVBar.cooldownSize
 		--cooldown:SetAlpha(0)
 	end
 	if highlight then
@@ -369,7 +368,7 @@ local function ModifyActionButton(parent)
 		count:ClearAllPoints()
 		count:SetPoint("BOTTOMRIGHT",1,1)
 		count:SetShadowOffset(1,-1)
-		count:SetFontTemplate(LSM:Fetch("font",MOD.db.countFont),MOD.db.countFontSize,MOD.db.countFontOutline)
+		count:SetFontTemplate(LSM:Fetch("font",SV.db.SVBar.countFont),SV.db.SVBar.countFontSize,SV.db.SVBar.countFontOutline)
 	end
 	if icon then
 		icon:SetTexCoord(.1,.9,.1,.9)
@@ -377,10 +376,10 @@ local function ModifyActionButton(parent)
 		icon:FillInner()
 	end
 	if shine then shine:SetAllPoints()end
-	if MOD.db.hotkeytext then
+	if SV.db.SVBar.hotkeytext then
 		hotkey:ClearAllPoints()
 		hotkey:SetAllPoints()
-		hotkey:SetFontTemplate(LSM:Fetch("font",MOD.db.font),MOD.db.fontSize,MOD.db.fontOutline)
+		hotkey:SetFontTemplate(LSM:Fetch("font",SV.db.SVBar.font),SV.db.SVBar.fontSize,SV.db.SVBar.fontOutline)
 		hotkey:SetJustifyH("RIGHT")
     	hotkey:SetJustifyV("TOP")
 		hotkey:SetShadowOffset(1,-1)
@@ -479,7 +478,7 @@ function MOD:UpdateBarBindings(pet, stance)
 	  		local name = ("SVUI_StanceBarButton%s"):format(i)
 	  		local hkname = ("SVUI_StanceBarButton%sHotKey"):format(i)
 			local hotkey = _G[hkname]
-		    if self.db.hotkeytext then
+		    if SV.db.SVBar.hotkeytext then
 		    	local key = bindText:format(i);
 		    	local binding = GetBindingKey(key)
 		      	hotkey:Show()
@@ -498,7 +497,7 @@ function MOD:UpdateBarBindings(pet, stance)
 	  		local name = ("PetActionButton%s"):format(i)
 	  		local hkname = ("PetActionButton%sHotKey"):format(i)
 			local hotkey = _G[hkname]
-		    if self.db.hotkeytext then
+		    if SV.db.SVBar.hotkeytext then
 		      	local key = bindText:format(i);
 		    	local binding = GetBindingKey(key)
 		      	hotkey:Show()
@@ -540,7 +539,7 @@ function MOD:UpdateAllBindings(event)
 end

 function MOD:SetBarConfigData(bar)
-	local db = self.db
+	local db = SV.db.SVBar
 	local thisBinding = bar.binding;
 	local buttonList = bar.buttons;
 	local config = bar.config
@@ -567,7 +566,7 @@ end

 function MOD:UpdateBarPagingDefaults()
 	local parse, custom;
-	if self.db.Bar6.enable then
+	if SV.db.SVBar.Bar6.enable then
 		parse = "[vehicleui,mod:alt,mod:ctrl] %d; [possessbar] %d; [overridebar] %d; [form,noform] 0; [shapeshift] 13; [bar:3] 3; [bar:4] 4; [bar:5] 5; [bar:6] 6; %s";
 	else
 		parse = "[vehicleui,mod:alt,mod:ctrl] %d; [possessbar] %d; [overridebar] %d; [form,noform] 0; [shapeshift] 13; [bar:2] 2; [bar:3] 3; [bar:4] 4; [bar:5] 5; [bar:6] 6; %s";
@@ -575,8 +574,8 @@ function MOD:UpdateBarPagingDefaults()

 	local mainbar = _G["SVUI_ActionBar1"]
 	if(mainbar) then
-		if self.db.Bar1.useCustomPaging then
-			custom = self.db.Bar1.customPaging[SV.class];
+		if SV.db.SVBar.Bar1.useCustomPaging then
+			custom = SV.db.SVBar.Bar1.customPaging[SV.class];
 		else
 			custom = ""
 		end
@@ -587,8 +586,8 @@ function MOD:UpdateBarPagingDefaults()
 	for i=2, 6 do
 		local id = ("Bar%d"):format(i)
 		local bar = _G["SVUI_Action" .. id]
-		if(bar and self.db[id].useCustomPaging) then
-			bar.conditions = self.db[id].customPaging[SV.class];
+		if(bar and SV.db.SVBar[id].useCustomPaging) then
+			bar.conditions = SV.db.SVBar[id].customPaging[SV.class];
 		end
 	end

@@ -598,15 +597,15 @@ function MOD:UpdateBarPagingDefaults()
 	local Bar4Option = InterfaceOptionsActionBarsPanelRightTwo
 	local Bar5Option = InterfaceOptionsActionBarsPanelRight

-	if (self.db.Bar2.enable and not Bar2Option:GetChecked()) or (not self.db.Bar2.enable and Bar2Option:GetChecked())  then
+	if (SV.db.SVBar.Bar2.enable and not Bar2Option:GetChecked()) or (not SV.db.SVBar.Bar2.enable and Bar2Option:GetChecked())  then
 		Bar2Option:Click()
 	end

-	if (self.db.Bar3.enable and not Bar3Option:GetChecked()) or (not self.db.Bar3.enable and Bar3Option:GetChecked())  then
+	if (SV.db.SVBar.Bar3.enable and not Bar3Option:GetChecked()) or (not SV.db.SVBar.Bar3.enable and Bar3Option:GetChecked())  then
 		Bar3Option:Click()
 	end

-	if not self.db.Bar5.enable and not self.db.Bar4.enable then
+	if not SV.db.SVBar.Bar5.enable and not SV.db.SVBar.Bar4.enable then
 		if Bar4Option:GetChecked() then
 			Bar4Option:Click()
 		end
@@ -614,7 +613,7 @@ function MOD:UpdateBarPagingDefaults()
 		if Bar5Option:GetChecked() then
 			Bar5Option:Click()
 		end
-	elseif not self.db.Bar5.enable then
+	elseif not SV.db.SVBar.Bar5.enable then
 		if not Bar5Option:GetChecked() then
 			Bar5Option:Click()
 		end
@@ -622,9 +621,9 @@ function MOD:UpdateBarPagingDefaults()
 		if not Bar4Option:GetChecked() then
 			Bar4Option:Click()
 		end
-	elseif (self.db.Bar4.enable and not Bar4Option:GetChecked()) or (not self.db.Bar4.enable and Bar4Option:GetChecked()) then
+	elseif (SV.db.SVBar.Bar4.enable and not Bar4Option:GetChecked()) or (not SV.db.SVBar.Bar4.enable and Bar4Option:GetChecked()) then
 		Bar4Option:Click()
-	elseif (self.db.Bar5.enable and not Bar5Option:GetChecked()) or (not self.db.Bar5.enable and Bar5Option:GetChecked()) then
+	elseif (SV.db.SVBar.Bar5.enable and not Bar5Option:GetChecked()) or (not SV.db.SVBar.Bar5.enable and Bar5Option:GetChecked()) then
 		Bar5Option:Click()
 	end
 end
@@ -736,7 +735,7 @@ do
 	end

 	local function _getPage(bar, defaultPage, condition)
-		local page = MOD.db[bar].customPaging[SV.class]
+		local page = SV.db.SVBar[bar].customPaging[SV.class]
 		if not condition then condition = '' end
 		if not page then page = '' end
 		if page then
@@ -751,7 +750,7 @@ do

 		local bar
 		local isPet, isStance = false, false
-		local db = self.db[id]
+		local db = SV.db.SVBar[id]

 		if(id == "Pet") then
 			bar = _G["SVUI_PetActionBar"]
@@ -848,7 +847,7 @@ do
 				bar:Hide()
 				UnregisterStateDriver(bar, "visibility")
 			end
-			SV:SetSnapOffset(("SVUI_Action%d_MOVE"):format(id), (space  /  2))
+			SV.Mentalo:ChangeSnapOffset(("SVUI_Action%d_MOVE"):format(id), (space  /  2))
 		end
 	end
 end
@@ -883,15 +882,15 @@ end

 local Vehicle_Updater = function()
 	local bar = _G["SVUI_ActionBar1"]
-	local space = MOD.db["Bar1"].buttonspacing
-	local total = MOD.db["Bar1"].buttons;
-	local rows = MOD.db["Bar1"].buttonsPerRow;
-	local size = MOD.db["Bar1"].buttonsize
-	local point = MOD.db["Bar1"].point;
+	local space = SV.db.SVBar["Bar1"].buttonspacing
+	local total = SV.db.SVBar["Bar1"].buttons;
+	local rows = SV.db.SVBar["Bar1"].buttonsPerRow;
+	local size = SV.db.SVBar["Bar1"].buttonsize
+	local point = SV.db.SVBar["Bar1"].point;
 	local columns = ceil(total / rows)
 	if (HasOverrideActionBar() or HasVehicleActionBar()) and total == 12 then
 		bar.backdrop:ClearAllPoints()
-		bar.backdrop:Point(MOD.db["Bar1"].point, bar, MOD.db["Bar1"].point)
+		bar.backdrop:Point(SV.db.SVBar["Bar1"].point, bar, SV.db.SVBar["Bar1"].point)
 		bar.backdrop:Width(space + ((size * rows) + (space * (rows - 1)) + space))
 		bar.backdrop:Height(space + ((size * columns) + (space * (columns - 1)) + space))
 		bar.backdrop:SetFrameLevel(0);
@@ -961,6 +960,8 @@ CreateActionBars = function(self)
 		local barName = ("SVUI_Action%s"):format(barID)
 		local buttonMax = NUM_ACTIONBAR_BUTTONS

+		local space = SV.db.SVBar["Bar"..i].buttonspacing
+
 		local thisBar = NewActionBar(barName)
 		thisBar.binding = barBindingIndex[i]
 		thisBar.page = barPageIndex[i]
@@ -968,15 +969,15 @@ CreateActionBars = function(self)
 		if(i == 1) then
 			thisBar:Point("BOTTOM", SV.UIParent, "BOTTOM", 0, 28)
 		elseif(i == 2) then
-			thisBar:Point("BOTTOM", _G["SVUI_ActionBar1"], "TOP", 0, 4)
+			thisBar:Point("BOTTOM", _G["SVUI_ActionBar1"], "TOP", 0, -space)
 		elseif(i == 3) then
-			thisBar:Point("BOTTOMLEFT", _G["SVUI_ActionBar1"], "BOTTOMRIGHT", 4, 0)
+			thisBar:Point("BOTTOMLEFT", _G["SVUI_ActionBar1"], "BOTTOMRIGHT", space, 0)
 		elseif(i == 4) then
-			thisBar:Point("RIGHT", SV.UIParent, "RIGHT", -4, 0)
+			thisBar:Point("RIGHT", SV.UIParent, "RIGHT", -space, 0)
 		elseif(i == 5) then
-			thisBar:Point("BOTTOMRIGHT", _G["SVUI_ActionBar1"], "BOTTOMLEFT", -4, 0)
+			thisBar:Point("BOTTOMRIGHT", _G["SVUI_ActionBar1"], "BOTTOMLEFT", -space, 0)
 		else
-			thisBar:Point("BOTTOM", _G["SVUI_ActionBar2"], "TOP", 0, 4)
+			thisBar:Point("BOTTOM", _G["SVUI_ActionBar2"], "TOP", 0, space)
 		end

 		local bg = CreateFrame("Frame", nil, thisBar)
@@ -1037,7 +1038,7 @@ CreateActionBars = function(self)
 		]])

 		self:RefreshBar(barID)
-		SV:SetSVMovable(thisBar, L[barID], nil, nil, nil, "ALL, ACTIONBARS")
+		SV.Mentalo:Add(thisBar, L[barID], nil, nil, nil, "ALL, ACTIONBARS")
 	end
 end

@@ -1053,7 +1054,7 @@ do
 			local cd = _G["SVUI_StanceBarButton"..i.."Cooldown"]
 			if i <= maxForms then
 				texture, name, isActive, isCastable = GetShapeshiftFormInfo(i)
-				if texture == "Interface\\Icons\\Spell_Nature_WispSplode" and MOD.db.Stance.style == "darkenInactive" then
+				if texture == "Interface\\Icons\\Spell_Nature_WispSplode" and SV.db.SVBar.Stance.style == "darkenInactive" then
 					_, _, texture = GetSpellInfo(name)
 				end

@@ -1080,7 +1081,7 @@ do
 						if button.checked then
 							button.checked:SetAlpha(1)
 						end
-						if MOD.db.Stance.style == "darkenInactive" then
+						if SV.db.SVBar.Stance.style == "darkenInactive" then
 							icon:SetVertexColor(0.25, 0.25, 0.25)
 						else
 							icon:SetVertexColor(1, 1, 1)
@@ -1154,7 +1155,7 @@ do
 	  local barID = "Stance";
 	  local parent = _G["SVUI_ActionBar1"]
 	  local maxForms = GetNumShapeshiftForms();
-	  if self.db["Bar2"].enable then
+	  if SV.db.SVBar["Bar2"].enable then
 		parent = _G["SVUI_ActionBar2"]
 	  end

@@ -1189,7 +1190,7 @@ do
 	  self:RegisterEvent("UPDATE_SHAPESHIFT_FORM", SetStanceBarButtons)
 	  self:RegisterEvent("ACTIONBAR_PAGE_CHANGED", SetStanceBarButtons)
 	  UpdateShapeshiftForms()
-	  SV:SetSVMovable(stanceBar, L["Stance Bar"], nil, -3, nil, "ALL, ACTIONBARS")
+	  SV.Mentalo:Add(stanceBar, L["Stance Bar"], nil, -3, nil, "ALL, ACTIONBARS")
 	  self:RefreshBar("Stance")
 	  SetStanceBarButtons()
 	  self:UpdateBarBindings(false, true)
@@ -1265,7 +1266,7 @@ do
 	CreatePetBar = function(self)
 		local barID = "Pet";
 		local parent = _G["SVUI_ActionBar1"]
-		if self.db["Bar2"].enable then
+		if SV.db.SVBar["Bar2"].enable then
 			parent = _G["SVUI_ActionBar2"]
 		end

@@ -1307,13 +1308,13 @@ do
 		self:RegisterEvent("PLAYER_FARSIGHT_FOCUS_CHANGED", RefreshPet)
 		self:RegisterEvent("PET_BAR_UPDATE_COOLDOWN", PetActionBar_UpdateCooldowns)

-		SV:SetSVMovable(petBar, L["Pet Bar"], nil, nil, nil, "ALL, ACTIONBARS")
+		SV.Mentalo:Add(petBar, L["Pet Bar"], nil, nil, nil, "ALL, ACTIONBARS")
 	end
 end

 CreateMicroBar = function(self)
-	local buttonSize = self.db.Micro.buttonsize or 30;
-	local spacing =  self.db.Micro.buttonspacing or 1;
+	local buttonSize = SV.db.SVBar.Micro.buttonsize or 30;
+	local spacing =  SV.db.SVBar.Micro.buttonspacing or 1;
 	local barWidth = (buttonSize + spacing) * 13;
 	local microBar = NewFrame('Frame','SVUI_MicroBar',SV.UIParent)
 	microBar:Size(barWidth,buttonSize + 6)
@@ -1355,7 +1356,7 @@ CreateMicroBar = function(self)
 				buttonMask.icon:SetTexCoord(data[2],data[3],data[4],data[5])
 				buttonMask.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
 				button.overlay = buttonMask;
-				button._fade = self.db.Micro.mouseover
+				button._fade = SV.db.SVBar.Micro.mouseover
 				button:HookScript('OnEnter', MicroButton_OnEnter)
 				button:HookScript('OnLeave', MicroButton_OnLeave)
 				button:Show()
@@ -1376,7 +1377,7 @@ CreateMicroBar = function(self)
 	SVUIMicroButtonsParent(microBar)
 	SVUIMicroButton_SetNormal()

-	SV:SetSVMovable(microBar, L["Micro Bar"])
+	SV.Mentalo:Add(microBar, L["Micro Bar"])

 	RefreshMicrobar()

@@ -1424,7 +1425,7 @@ local CreateExtraBar = function(self)
 	if HasExtraActionBar()then
 		ExtraActionBarFrame:Show()
 	end
-	SV:SetSVMovable(specialBar, L["Boss Button"], nil, nil, nil, "ALL, ACTIONBAR")
+	SV.Mentalo:Add(specialBar, L["Boss Button"], nil, nil, nil, "ALL, ACTIONBAR")
 end
 --[[
 ##########################################################
@@ -1553,7 +1554,7 @@ function MOD:ReLoad()
 end

 function MOD:Load()
-	if not self.db.enable then return end
+	if not SV.db.SVBar.enable then return end
 	RemoveDefaults();

 	self:UpdateBarPagingDefaults()
@@ -1582,227 +1583,4 @@ function MOD:Load()
 	SetSpellFlyoutHook()

 	self.IsLoaded = true
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVBar"] = {
-	["enable"] = true,
-	["font"] = "Roboto",
-	["fontSize"] = 11,
-	["fontOutline"] = "OUTLINE",
-	["countFont"] = "SVUI Number Font",
-	["countFontSize"] = 11,
-	["countFontOutline"] = "OUTLINE",
-	["cooldownSize"] = 18,
-	["rightClickSelf"] = false,
-	["macrotext"] = false,
-	["hotkeytext"] = false,
-	["hotkeyAbbrev"] = true,
-	["showGrid"] = true,
-	["unc"] = {0.8, 0.1, 0.1, 0.7},
-	["unpc"] = {0.5, 0.5, 1, 0.7},
-	["keyDown"] = false,
-	["unlock"] = "SHIFT",
-	["Micro"] = {
-		["enable"] = true,
-		["mouseover"] = true,
-		["alpha"] = 1,
-		["buttonsize"] = 30,
-		["buttonspacing"] = 4,
-		["yOffset"] = 4
-	},
-	["Bar1"] = {
-		["enable"] = true,
-		["buttons"] = 12,
-		["mouseover"] = false,
-		["buttonsPerRow"] = 12,
-		["point"] = "BOTTOMLEFT",
-		["backdrop"] = false,
-		["buttonsize"] = 32,
-		["buttonspacing"] = 2,
-		["useCustomPaging"] = true,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[petbattle] hide; show",
-		["customPaging"] = {
-		    ["HUNTER"]  	 = "",
-		    ["WARLOCK"] 	 = "[form:2] 10;",
-		    ["PRIEST"]  	 = "[bonusbar:1] 7;",
-		    ["PALADIN"] 	 = "",
-		    ["MAGE"]    	 = "",
-		    ["ROGUE"]   	 = "[stance:1] 7; [stance:2] 7; [stance:3] 7; [bonusbar:1] 7; [form:3] 7;",
-		    ["DRUID"]   	 = "[bonusbar:1, nostealth] 7; [bonusbar:1, stealth] 8; [bonusbar:2] 8; [bonusbar:3] 9; [bonusbar:4] 10;",
-		    ["SHAMAN"]  	 = "",
-		    ["WARRIOR"] 	 = "",
-		    ["DEATHKNIGHT"]  = "",
-		    ["MONK"]    	 = "[bonusbar:1] 7; [bonusbar:2] 8; [bonusbar:3] 9;",
-		},
-		["alpha"] = 1
-	},
-	["Bar2"] = {
-		["enable"] = false,
-		["mouseover"] = false,
-		["buttons"] = 12,
-		["buttonsPerRow"] = 12,
-		["point"] = "BOTTOMLEFT",
-		["backdrop"] = false,
-		["buttonsize"] = 32,
-		["buttonspacing"] = 2,
-		["useCustomPaging"] = false,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
-		["customPaging"] = {
-		    ["HUNTER"]  	 = "",
-		    ["WARLOCK"] 	 = "",
-		    ["PRIEST"]  	 = "",
-		    ["PALADIN"] 	 = "",
-		    ["MAGE"]    	 = "",
-		    ["ROGUE"]   	 = "",
-		    ["DRUID"]   	 = "",
-		    ["SHAMAN"]  	 = "",
-		    ["WARRIOR"] 	 = "",
-		    ["DEATHKNIGHT"]  = "",
-		    ["MONK"]    	 = "",
-		},
-		["alpha"] = 1
-	},
-	["Bar3"] = {
-		["enable"] = true,
-		["mouseover"] = false,
-		["buttons"] = 6,
-		["buttonsPerRow"] = 6,
-		["point"] = "BOTTOMLEFT",
-		["backdrop"] = false,
-		["buttonsize"] = 32,
-		["buttonspacing"] = 2,
-		["useCustomPaging"] = false,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
-		["customPaging"] = {
-		    ["HUNTER"]  	 = "",
-		    ["WARLOCK"] 	 = "",
-		    ["PRIEST"]  	 = "",
-		    ["PALADIN"] 	 = "",
-		    ["MAGE"]    	 = "",
-		    ["ROGUE"]   	 = "",
-		    ["DRUID"]   	 = "",
-		    ["SHAMAN"]  	 = "",
-		    ["WARRIOR"] 	 = "",
-		    ["DEATHKNIGHT"]  = "",
-		    ["MONK"]    	 = "",
-		},
-		["alpha"] = 1
-	},
-	["Bar4"] = {
-		["enable"] = true,
-		["mouseover"] = true,
-		["buttons"] = 12,
-		["buttonsPerRow"] = 1,
-		["point"] = "TOPRIGHT",
-		["backdrop"] = false,
-		["buttonsize"] = 32,
-		["buttonspacing"] = 2,
-		["useCustomPaging"] = false,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
-		["customPaging"] = {
-		    ["HUNTER"]  	 = "",
-		    ["WARLOCK"] 	 = "",
-		    ["PRIEST"]  	 = "",
-		    ["PALADIN"] 	 = "",
-		    ["MAGE"]    	 = "",
-		    ["ROGUE"]   	 = "",
-		    ["DRUID"]   	 = "",
-		    ["SHAMAN"]  	 = "",
-		    ["WARRIOR"] 	 = "",
-		    ["DEATHKNIGHT"]  = "",
-		    ["MONK"]    	 = "",
-		},
-		["alpha"] = 1
-	},
-	["Bar5"] = {
-		["enable"] = true,
-		["mouseover"] = false,
-		["buttons"] = 6,
-		["buttonsPerRow"] = 6,
-		["point"] = "BOTTOMLEFT",
-		["backdrop"] = false,
-		["buttonsize"] = 32,
-		["buttonspacing"] = 2,
-		["useCustomPaging"] = false,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
-		["customPaging"] = {
-		    ["HUNTER"]  	 = "",
-		    ["WARLOCK"] 	 = "",
-		    ["PRIEST"]  	 = "",
-		    ["PALADIN"] 	 = "",
-		    ["MAGE"]    	 = "",
-		    ["ROGUE"]   	 = "",
-		    ["DRUID"]   	 = "",
-		    ["SHAMAN"]  	 = "",
-		    ["WARRIOR"] 	 = "",
-		    ["DEATHKNIGHT"]  = "",
-		    ["MONK"]    	 = "",
-		},
-		["alpha"] = 1
-	},
-	["Bar6"] = {
-		["enable"] = false,
-		["mouseover"] = false,
-		["buttons"] = 12,
-		["buttonsPerRow"] = 12,
-		["point"] = "BOTTOMLEFT",
-		["backdrop"] = false,
-		["buttonsize"] = 32,
-		["buttonspacing"] = 2,
-		["useCustomPaging"] = false,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
-		["customPaging"] = {
-		    ["HUNTER"]  	 = "",
-		    ["WARLOCK"] 	 = "",
-		    ["PRIEST"]  	 = "",
-		    ["PALADIN"] 	 = "",
-		    ["MAGE"]    	 = "",
-		    ["ROGUE"]   	 = "",
-		    ["DRUID"]   	 = "",
-		    ["SHAMAN"]  	 = "",
-		    ["WARRIOR"] 	 = "",
-		    ["DEATHKNIGHT"]  = "",
-		    ["MONK"]    	 = "",
-		},
-		["alpha"] = 1
-	},
-	["Pet"] = {
-		["enable"] = true,
-		["mouseover"] = false,
-		["buttons"] = NUM_PET_ACTION_SLOTS,
-		["buttonsPerRow"] = NUM_PET_ACTION_SLOTS,
-		["point"] = "TOPLEFT",
-		["backdrop"] = false,
-		["buttonsize"] = 24,
-		["buttonspacing"] = 3,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[petbattle] hide; [pet, novehicleui, nooverridebar, nopossessbar] show; hide",
-		["alpha"] = 1
-	},
-	["Stance"] = {
-		["enable"] = true,
-		["style"] = "darkenInactive",
-		["mouseover"] = false,
-		["buttons"] = NUM_STANCE_SLOTS,
-		["buttonsPerRow"] = NUM_STANCE_SLOTS,
-		["point"] = "BOTTOMRIGHT",
-		["backdrop"] = false,
-		["buttonsize"] = 24,
-		["buttonspacing"] = 5,
-		["useCustomVisibility"] = false,
-		["customVisibility"] = "[petbattle] hide; show",
-		["alpha"] = 1
-	},
-}
-
-Registry:NewPackage(MOD, "SVBar")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/aura/SVAura.lua b/Interface/AddOns/SVUI/packages/aura/SVAura.lua
index fc7949e..a849539 100644
--- a/Interface/AddOns/SVUI/packages/aura/SVAura.lua
+++ b/Interface/AddOns/SVUI/packages/aura/SVAura.lua
@@ -42,12 +42,10 @@ local tremove, twipe = table.remove, table.wipe;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
-local CONFIGS = SV.private
-local MOD = {};
+local MOD = SV:NewPackage("SVAura", BUFFOPTIONS_LABEL);
 --[[
 ##########################################################
 LOCAL VARS
@@ -292,16 +290,16 @@ do
 			end
 			aura.Skinned = true
 		end
-		local font = LSM:Fetch("font", MOD.db.font)
+		local font = LSM:Fetch("font", SV.db.SVAura.font)
 		aura.texture = aura:CreateTexture(nil, "BORDER")
 		aura.texture:FillInner(aura, 2, 2)
 		aura.texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
 		aura.count = aura:CreateFontString(nil, "ARTWORK")
-		aura.count:SetPoint("BOTTOMRIGHT", (-1 + MOD.db.countOffsetH), (1 + MOD.db.countOffsetV))
-		aura.count:SetFontTemplate(font, MOD.db.fontSize, MOD.db.fontOutline)
+		aura.count:SetPoint("BOTTOMRIGHT", (-1 + SV.db.SVAura.countOffsetH), (1 + SV.db.SVAura.countOffsetV))
+		aura.count:SetFontTemplate(font, SV.db.SVAura.fontSize, SV.db.SVAura.fontOutline)
 		aura.time = aura:CreateFontString(nil, "ARTWORK")
-		aura.time:SetPoint("TOP", aura, "BOTTOM", 1 + MOD.db.timeOffsetH, 0 + MOD.db.timeOffsetV)
-		aura.time:SetFontTemplate(font, MOD.db.fontSize, MOD.db.fontOutline)
+		aura.time:SetPoint("TOP", aura, "BOTTOM", 1 + SV.db.SVAura.timeOffsetH, 0 + SV.db.SVAura.timeOffsetV)
+		aura.time:SetFontTemplate(font, SV.db.SVAura.fontSize, SV.db.SVAura.fontOutline)
 		aura.highlight = aura:CreateTexture(nil, "HIGHLIGHT")
 		aura.highlight:SetTexture(0, 0, 0, 0.45)
 		aura.highlight:FillInner()
@@ -384,7 +382,7 @@ do
 	end

 	function MOD:ToggleConsolidatedBuffs()
-		if MOD.db.hyperBuffs.enable then
+		if SV.db.SVAura.hyperBuffs.enable then
 			CB_HEIGHT = Minimap:GetHeight()
 			CB_WIDTH = (CB_HEIGHT / 5) + 4
 			SVUI_AurasAnchor:SetSize(CB_WIDTH, CB_HEIGHT)
@@ -428,7 +426,7 @@ do
 	function MOD:Update_ConsolidatedBuffsSettings(event)
 		SVUI_ConsolidatedBuffs:SetAllPoints(SVUI_AurasAnchor)
 		local swapIndex1, swapIndex2, hideIndex1, hideIndex2
-		if MOD.db.hyperBuffs.filter then
+		if SV.db.SVAura.hyperBuffs.filter then
 			if SV.ClassRole == 'C' then
 				swapIndex1 = 4
 				hideIndex1 = 3
@@ -484,12 +482,12 @@ end
 function MOD:UpdateAuraHeader(auraHeader, auraType)
 	if(InCombatLockdown() or not auraHeader) then return end

-	local db = self.db[auraType]
+	local db = SV.db.SVAura[auraType]
 	local showBy = db.showBy
-	local font = LSM:Fetch("font", self.db.font)
+	local font = LSM:Fetch("font", SV.db.SVAura.font)

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

@@ -528,9 +526,9 @@ function MOD:UpdateAuraHeader(auraHeader, auraType)
 		end
 		if(auraChild.time) then
 			auraChild.time:ClearAllPoints()
-			auraChild.time:SetPoint("TOP", auraChild, "BOTTOM", 1 + self.db.timeOffsetH, self.db.timeOffsetV)
+			auraChild.time:SetPoint("TOP", auraChild, "BOTTOM", 1 + SV.db.SVAura.timeOffsetH, SV.db.SVAura.timeOffsetV)
 			auraChild.count:ClearAllPoints()
-			auraChild.count:SetPoint("BOTTOMRIGHT", -1 + self.db.countOffsetH, self.db.countOffsetV)
+			auraChild.count:SetPoint("BOTTOMRIGHT", -1 + SV.db.SVAura.countOffsetH, SV.db.SVAura.countOffsetV)
 		end
 		if (i > (db.maxWraps * db.wrapAfter) and auraChild:IsShown()) then
 			auraChild:Hide()
@@ -562,7 +560,7 @@ function MOD:ReLoad()
 	CB_HEIGHT = Minimap:GetHeight()
 	CB_WIDTH = (CB_HEIGHT / 5) + 4
 	SVUI_AurasAnchor:SetSize(CB_WIDTH, CB_HEIGHT)
-	AURA_FADE_TIME = MOD.db.fadeBy
+	AURA_FADE_TIME = SV.db.SVAura.fadeBy
 	MOD:UpdateAuraHeader(SVUI_PlayerBuffs, "buffs");
 	MOD:UpdateAuraHeader(SVUI_PlayerDebuffs, "debuffs");
 end
@@ -595,50 +593,5 @@ function MOD:Load()

 	self:Update_ConsolidatedBuffsSettings()

-	SV:SetSVMovable(auras, L["Auras Frame"])
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVAura"] = {
-	["enable"] = true,
-	["disableBlizzard"] = true,
-	["font"] = "SVUI Number Font",
-	["fontSize"] = 12,
-	["fontOutline"] = "THINOUTLINE",
-	["countOffsetV"] = 0,
-	["countOffsetH"] = 0,
-	["timeOffsetV"] = -4,
-	["timeOffsetH"] = 0,
-	["hyperBuffs"] = {
-		["enable"] = true,
-		["filter"] = true,
-	},
-	["fadeBy"] = 5,
-	["buffs"] = {
-		["showBy"] = "LEFT_DOWN",
-		["wrapAfter"] = 12,
-		["maxWraps"] = 3,
-		["wrapXOffset"] = 6,
-		["wrapYOffset"] = 16,
-		["sortMethod"] = "TIME",
-		["sortDir"] = "-",
-		["isolate"] = 1,
-		["size"] = 32,
-	},
-	["debuffs"] = {
-		["showBy"] = "LEFT_DOWN",
-		["wrapAfter"] = 12,
-		["maxWraps"] = 1,
-		["wrapXOffset"] = 6,
-		["wrapYOffset"] = 16,
-		["sortMethod"] = "TIME",
-		["sortDir"] = "-",
-		["isolate"] = 1,
-		["size"] = 32,
-	},
-}
-
-Registry:NewPackage(MOD, "SVAura")
\ No newline at end of file
+	SV.Mentalo:Add(auras, L["Auras Frame"])
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
index 1dc4d5d..421cc81 100644
--- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua
+++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua
@@ -40,11 +40,9 @@ local twipe = table.wipe;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local MOD = {};
+local SV = select(2, ...)
+local L = SV.L
+local MOD = SV:NewPackage("SVBag", L["Bags"]);
 local TTIP = SV.SVTip;
 --[[
 ##########################################################
@@ -347,9 +345,9 @@ function MOD:Layout(isBank, isReagent)
 	if SV.db.SVBag.enable ~= true then return; end
 	local f = MOD:GetContainerFrame(isBank, isReagent);
 	if not f then return; end
-	local buttonSize = isBank and MOD.db.bankSize or MOD.db.bagSize;
+	local buttonSize = isBank and SV.db.SVBag.bankSize or SV.db.SVBag.bagSize;
 	local buttonSpacing = 8;
-	local containerWidth = (MOD.db.alignToChat == true and (isBank and (SV.db.SVDock.dockLeftWidth - 14) or (SV.db.SVDock.dockRightWidth - 14))) or (isBank and MOD.db.bankWidth) or MOD.db.bagWidth
+	local containerWidth = (SV.db.SVBag.alignToChat == true and (isBank and (SV.db.SVDock.dockLeftWidth - 14) or (SV.db.SVDock.dockRightWidth - 14))) or (isBank and SV.db.SVBag.bankWidth) or SV.db.SVBag.bagWidth
 	local numContainerColumns = floor(containerWidth / (buttonSize + buttonSpacing));
 	local holderWidth = ((buttonSize + buttonSpacing) * numContainerColumns) - buttonSpacing;
 	local numContainerRows = 0;
@@ -365,10 +363,10 @@ function MOD:Layout(isBank, isReagent)
 		if (not isReagent and (not isBank and bagID <= 3) or (isBank and bagID ~= -1 and numContainerSlots >= 1 and not (i - 1 > numContainerSlots)))  then
 			if not f.ContainerHolder[i] then
 				if isBank then
-					globalName = "SuperBankBag" .. (bagID - 4);
+					globalName = "SVUI_BankBag" .. (bagID - 4);
 					f.ContainerHolder[i] = NewFrame("CheckButton", globalName, f.ContainerHolder, "BankItemButtonBagTemplate")
 				else
-					globalName = "SuperMainBag" .. bagID .. "Slot";
+					globalName = "SVUI_MainBag" .. bagID .. "Slot";
 					f.ContainerHolder[i] = NewFrame("CheckButton", globalName, f.ContainerHolder, "BagSlotButtonTemplate")
 				end
 				--f.ContainerHolder[i]:SetSlotTemplate(true, 2, 4, 4, true)
@@ -377,22 +375,18 @@ function MOD:Layout(isBank, isReagent)
 				f.ContainerHolder[i]:SetPushedTexture("")
 				f.ContainerHolder[i]:SetScript("OnClick", nil)
 				f.ContainerHolder[i].id = isBank and bagID or bagID + 1;
-				f.ContainerHolder[i]:HookScript("OnEnter", function(self)
-					MOD.UseSlotFading(self, f) end)
-				f.ContainerHolder[i]:HookScript("OnLeave", function(self)
-					MOD.FlushSlotFading(self, f) end)
-				if isBank then
-					f.ContainerHolder[i]:SetID(bagID)
-					if not f.ContainerHolder[i].tooltipText then
-						f.ContainerHolder[i].tooltipText = ""
-					end
+				f.ContainerHolder[i]:SetID(isBank and bagID or (bagID + 1))
+				f.ContainerHolder[i]:HookScript("OnEnter", function(self) MOD.UseSlotFading(self, f) end)
+				f.ContainerHolder[i]:HookScript("OnLeave", function(self) MOD.FlushSlotFading(self, f) end)
+				if(isBank and (not f.ContainerHolder[i].tooltipText)) then
+					f.ContainerHolder[i].tooltipText = ""
 				end
 				f.ContainerHolder[i].iconTexture = _G[f.ContainerHolder[i]:GetName().."IconTexture"];
 				f.ContainerHolder[i].iconTexture:FillInner()
 				f.ContainerHolder[i].iconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9 )
 			end
 			f.ContainerHolder:Size(((buttonSize + buttonSpacing) * (isBank and i - 1 or i)) + buttonSpacing, buttonSize + (buttonSpacing * 2))
-			if isBank then
+			if(isBank and f.ContainerHolder[i].GetInventorySlot) then
 				BankFrameItemButton_Update(f.ContainerHolder[i])
 				BankFrameItemButton_UpdateLocked(f.ContainerHolder[i])
 			end
@@ -481,7 +475,7 @@ function MOD:Layout(isBank, isReagent)
 				f.Bags[bagID].numSlots = numSlots;
 			end
 			if(self.isBank and not self.isReagent) then
-				if self.ContainerHolder[i] then
+				if(self.ContainerHolder[i] and self.ContainerHolder[i].GetInventorySlot) then
 					BankFrameItemButton_Update(self.ContainerHolder[i])
 					BankFrameItemButton_UpdateLocked(self.ContainerHolder[i])
 				end
@@ -558,17 +552,17 @@ function MOD:VendorGrays(arg1, arg2, arg3)
 end

 function MOD:ModifyBags()
-	local docked = self.db.alignToChat
+	local docked = SV.db.SVBag.alignToChat
 	local anchor, x, y
 	if self.BagFrame then
 		local parent = docked and RightSuperDock or SV.UIParent
-		local anchor, x, y = self.db.bags.point, self.db.bags.xOffset, self.db.bags.yOffset
+		local anchor, x, y = SV.db.SVBag.bags.point, SV.db.SVBag.bags.xOffset, SV.db.SVBag.bags.yOffset
 		self.BagFrame:ClearAllPoints()
 		self.BagFrame:Point(anchor, parent, anchor, x, y)
 	end
 	if self.BankFrame then
 		local parent = docked and LeftSuperDock or SV.UIParent
-		local anchor, x, y = self.db.bank.point, self.db.bank.xOffset, self.db.bank.yOffset
+		local anchor, x, y = SV.db.SVBag.bank.point, SV.db.SVBag.bank.xOffset, SV.db.SVBag.bank.yOffset
 		self.BankFrame:ClearAllPoints()
 		self.BankFrame:Point(anchor, parent, anchor, x, y)
 	end
@@ -576,12 +570,12 @@ end

 do
 	local function Bags_OnEnter()
-		if MOD.db.bagBar.mouseover ~= true then return end
+		if SV.db.SVBag.bagBar.mouseover ~= true then return end
 		SV:SecureFadeIn(SVUI_BagBar, 0.2, SVUI_BagBar:GetAlpha(), 1)
 	end

 	local function Bags_OnLeave()
-		if MOD.db.bagBar.mouseover ~= true then return end
+		if SV.db.SVBag.bagBar.mouseover ~= true then return end
 		SV:SecureFadeOut(SVUI_BagBar, 0.2, SVUI_BagBar:GetAlpha(), 0)
 	end

@@ -641,16 +635,16 @@ do
 		if not self.BagBarLoaded then
 			LoadBagBar()
 		end
-		if self.db.bagBar.mouseover then
+		if SV.db.SVBag.bagBar.mouseover then
 			SVUI_BagBar:SetAlpha(0)
 		else
 			SVUI_BagBar:SetAlpha(1)
 		end

-		local showBy = self.db.bagBar.showBy
-		local sortDir = self.db.bagBar.sortDirection
-		local bagSize = self.db.bagBar.size
-		local bagSpacing = self.db.bagBar.spacing
+		local showBy = SV.db.SVBag.bagBar.showBy
+		local sortDir = SV.db.SVBag.bagBar.sortDirection
+		local bagSize = SV.db.SVBag.bagBar.size
+		local bagSpacing = SV.db.SVBag.bagBar.spacing

 		for i = 1, #SVUI_BagBar.buttons do
 			local button = SVUI_BagBar.buttons[i]
@@ -695,10 +689,10 @@ do

 	    if not SVUI_BagBar_MOVE then
 	    	SVUI_BagBar:SetPanelTemplate("Default")
-	        SV:SetSVMovable(SVUI_BagBar, L["Bags Bar"])
+	        SV.Mentalo:Add(SVUI_BagBar, L["Bags Bar"])
 	    end

-	    if self.db.bagBar.showBackdrop then
+	    if SV.db.SVBag.bagBar.showBackdrop then
 			SVUI_BagBar.Panel:Show()
 		else
 			SVUI_BagBar.Panel:Hide()
@@ -1018,7 +1012,7 @@ do
 		frame.sortButton.ttText = L["Sort Bags"]
 		frame.sortButton:SetScript("OnEnter", Tooltip_Show)
 		frame.sortButton:SetScript("OnLeave", Tooltip_Hide)
-		local Sort_OnClick = (SV.___interface >= 60000) and SortBankBags or MOD:RunSortingProcess(MOD.Sort, "bags")
+		local Sort_OnClick = (SV.GameVersion >= 60000) and SortBankBags or MOD:RunSortingProcess(MOD.Sort, "bags")
 		frame.sortButton:SetScript("OnClick", Sort_OnClick)

 		frame.stackButton = NewFrame("Button", nil, frame)
@@ -1160,7 +1154,7 @@ do
 		frame.sortButton.ttText = L["Sort Bags"]
 		frame.sortButton:SetScript("OnEnter", Tooltip_Show)
 		frame.sortButton:SetScript("OnLeave", Tooltip_Hide)
-		local Sort_OnClick = (SV.___interface >= 60000) and SortReagentBankBags or MOD:RunSortingProcess(MOD.Sort, "bank")
+		local Sort_OnClick = (SV.GameVersion >= 60000) and SortReagentBankBags or MOD:RunSortingProcess(MOD.Sort, "bank")
 		frame.sortButton:SetScript("OnClick", Sort_OnClick)

 		frame.stackButton = NewFrame("Button", nil, frame)
@@ -1228,7 +1222,7 @@ do
 			end
 			frame.purchaseBagButton:SetScript("OnClick", PurchaseBtn_OnClick)

-			if(SV.___interface >= 60000) then
+			if(SV.GameVersion >= 60000) then
 				frame.swapButton = NewFrame("Button", nil, frame)
 				frame.swapButton:Point("TOPRIGHT", frame, "TOPRIGHT", -40, -10)
 				frame.swapButton:Size(25, 25)
@@ -1263,9 +1257,9 @@ function MOD:RefreshTokens()
 		set:ClearAllPoints()
 		if name then
 			set.icon:SetTexture(icon)
-			if MOD.db.currencyFormat == 'ICON_TEXT' then
+			if SV.db.SVBag.currencyFormat == 'ICON_TEXT' then
 				set.text:SetText(name..': '..count)
-			elseif MOD.db.currencyFormat == 'ICON' then
+			elseif SV.db.SVBag.currencyFormat == 'ICON' then
 				set.text:SetText(count)
 			end
 			set.currencyID = currencyID;
@@ -1348,7 +1342,7 @@ do
 	end

 	function MOD:BANKFRAME_OPENED()
-		local hasReagent = (SV.___interface >= 60000)
+		local hasReagent = (SV.GameVersion >= 60000)
 		if not MOD.BankFrame then
 			MOD:MakeBankOrReagent()
 			MOD:ModifyBags()
@@ -1404,7 +1398,6 @@ BUILD FUNCTION / UPDATE
 function MOD:ReLoad()
 	if not SV.db.SVBag.enable then return end
 	self:Layout();
-	self:Layout(true);
 	self:ModifyBags();
 	self:ModifyBagBar();
 end
@@ -1428,50 +1421,7 @@ function MOD:Load()
 	self:RegisterEvent("PLAYER_ENTERING_WORLD")
 	self:RegisterEvent("PLAYER_TRADE_MONEY", "UpdateGoldText")
 	self:RegisterEvent("TRADE_MONEY_CHANGED", "UpdateGoldText")
-	if(SV.___interface >= 60000) then self:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED"); end
+	if(SV.GameVersion >= 60000) then self:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED"); end
 	StackSplitFrame:SetFrameStrata("DIALOG")
 	self.BagFrame:RefreshBagsSlots()
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVBag"] = {
-	["incompatible"] = {
-		["AdiBags"] = true,
-		["ArkInventory"] = true,
-		["Bagnon"] = true,
-	},
-	["enable"] = true,
-	["sortInverted"] = false,
-	["bags"] = {
-		["xOffset"] = -40,
-		["yOffset"] = 40,
-		["point"] = "BOTTOMRIGHT",
-	},
-	["bank"] = {
-		["xOffset"] = 40,
-		["yOffset"] = 40,
-		["point"] = "BOTTOMLEFT",
-	},
-	["bagSize"] = 34,
-	["bankSize"] = 34,
-	["alignToChat"] = false,
-	["bagWidth"] = 525,
-	["bankWidth"] = 525,
-	["currencyFormat"] = "ICON",
-	["ignoreItems"] = "",
-	["bagTools"] = true,
-	["bagBar"] = {
-		["enable"] = false,
-		["showBy"] = "VERTICAL",
-		["sortDirection"] = "ASCENDING",
-		["size"] = 30,
-		["spacing"] = 4,
-		["showBackdrop"] = false,
-		["mouseover"] = false,
-	},
-}
-
-Registry:NewPackage(MOD, "SVBag");
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua b/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
index 77ab520..ff08004 100644
--- a/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
+++ b/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua
@@ -32,8 +32,8 @@ local tremove, tcopy, twipe, tsort, tcat = table.remove, table.copy, table.wipe,
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local MOD = SV.SVBag;
 local TTIP = SV.SVTip;
 --[[
diff --git a/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua b/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua
index 4a2213f..b1dc03e 100644
--- a/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua
+++ b/Interface/AddOns/SVUI/packages/bag/tools/sorting.lua
@@ -42,8 +42,8 @@ local tremove, tcopy, twipe, tsort = table.remove, table.copy, table.wipe, table
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local MOD = SV.SVBag;
 --[[
 ##########################################################
@@ -436,7 +436,7 @@ do
 		if not sorter then sorter = reverse and ReverseSort or DefaultSort end
 		if not itemTypes then BuildSortOrder() end
 		twipe(blackListedSlots)
-		local ignoreItems = MOD.db.ignoreItems
+		local ignoreItems = SV.db.SVBag.ignoreItems
 		ignoreItems = ignoreItems:gsub(',%s', ',')
 		SetBlockedCache(split(",", ignoreItems))
 		for i, bag, slot in IterateBagsForSorting(bags, nil, 'both') do
@@ -510,14 +510,14 @@ do
 				if bagType ~= 'Normal' then
 					MOD.Stack(sortedBags, sortedBags, IsPartial)
 					MOD.Stack(sortingCache[1]['Normal'], sortedBags)
-					SortFiller(sortingCache[1]['Normal'], sortedBags, MOD.db.sortInverted)
-					Sorter(sortedBags, nil, MOD.db.sortInverted)
+					SortFiller(sortingCache[1]['Normal'], sortedBags, SV.db.SVBag.sortInverted)
+					Sorter(sortedBags, nil, SV.db.SVBag.sortInverted)
 					twipe(sortedBags)
 				end
 			end
 			if sortingCache[1]['Normal'] then
 				MOD.Stack(sortingCache[1]['Normal'], sortingCache[1]['Normal'], IsPartial)
-				Sorter(sortingCache[1]['Normal'], nil, MOD.db.sortInverted)
+				Sorter(sortingCache[1]['Normal'], nil, SV.db.SVBag.sortInverted)
 				twipe(sortingCache[1]['Normal'])
 			end
 			twipe(sortingCache[1])
diff --git a/Interface/AddOns/SVUI/packages/chat/SVChat.lua b/Interface/AddOns/SVUI/packages/chat/SVChat.lua
index 698c9b9..bb31726 100644
--- a/Interface/AddOns/SVUI/packages/chat/SVChat.lua
+++ b/Interface/AddOns/SVUI/packages/chat/SVChat.lua
@@ -34,12 +34,10 @@ local twipe = table.wipe;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
-local CONFIGS = SV.private
-local MOD = {};
+local MOD = SV:NewPackage("SVChat", L["Chat"]);
 --[[
 ##########################################################
 LOCAL VARS
@@ -174,7 +172,7 @@ do

 	local function SetEmoticon(text)
 		if not text then return end
-		if (not MOD.db.smileys or text:find(" / run") or text:find(" / dump") or text:find(" / script")) then
+		if (not SV.db.SVChat.smileys or text:find(" / run") or text:find(" / dump") or text:find(" / script")) then
 			return text
 		end
 		local result = "";
@@ -906,22 +904,22 @@ end
 function MOD:UpdateLocals()
 	CHAT_WIDTH = (SV.db.SVDock.dockLeftWidth or 350) - 10;
 	CHAT_HEIGHT = (SV.db.SVDock.dockLeftHeight or 180) - 15;
-	CHAT_THROTTLE = self.db.throttleInterval;
-	CHAT_ALLOW_URL = self.db.url;
-	CHAT_HOVER_URL = self.db.hyperlinkHover;
-	CHAT_STICKY = self.db.sticky;
-	CHAT_FONT = LSM:Fetch("font", self.db.font);
+	CHAT_THROTTLE = SV.db.SVChat.throttleInterval;
+	CHAT_ALLOW_URL = SV.db.SVChat.url;
+	CHAT_HOVER_URL = SV.db.SVChat.hyperlinkHover;
+	CHAT_STICKY = SV.db.SVChat.sticky;
+	CHAT_FONT = LSM:Fetch("font", SV.db.SVChat.font);
 	CHAT_FONTSIZE = SV.db.media.fonts.size or 12;
-	CHAT_FONTOUTLINE = self.db.fontOutline;
-	TAB_WIDTH = self.db.tabWidth;
-	TAB_HEIGHT = self.db.tabHeight;
-	TAB_SKINS = self.db.tabStyled;
-	TAB_FONT = LSM:Fetch("font", self.db.tabFont);
-	TAB_FONTSIZE = self.db.tabFontSize;
-	TAB_FONTOUTLINE = self.db.tabFontOutline;
-	CHAT_FADING = self.db.fade;
-	CHAT_PSST = LSM:Fetch("sound", self.db.psst);
-	TIME_STAMP_MASK = self.db.timeStampFormat;
+	CHAT_FONTOUTLINE = SV.db.SVChat.fontOutline;
+	TAB_WIDTH = SV.db.SVChat.tabWidth;
+	TAB_HEIGHT = SV.db.SVChat.tabHeight;
+	TAB_SKINS = SV.db.SVChat.tabStyled;
+	TAB_FONT = LSM:Fetch("font", SV.db.SVChat.tabFont);
+	TAB_FONTSIZE = SV.db.SVChat.tabFontSize;
+	TAB_FONTOUTLINE = SV.db.SVChat.tabFontOutline;
+	CHAT_FADING = SV.db.SVChat.fade;
+	CHAT_PSST = LSM:Fetch("sound", SV.db.SVChat.psst);
+	TIME_STAMP_MASK = SV.db.SVChat.timeStampFormat;
 	if(CHAT_THROTTLE and CHAT_THROTTLE == 0) then
 		twipe(THROTTLE_CACHE)
 	end
@@ -967,35 +965,4 @@ function MOD:Load()
 	_G.InterfaceOptionsSocialPanelChatStyle:EnableMouse(false)
 	_G.InterfaceOptionsSocialPanelChatStyleButton:Hide()
 	_G.InterfaceOptionsSocialPanelChatStyle:SetAlpha(0)
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVChat"] = {
-	["enable"] = true,
-	["tabHeight"] = 20,
-	["tabWidth"] = 75,
-	["tabStyled"] = true,
-	["font"] = "Roboto",
-	["fontOutline"] = "OUTLINE",
-	["tabFont"] = "SVUI Alert Font",
-	["tabFontSize"] = 10,
-	["tabFontOutline"] = "OUTLINE",
-	["url"] = true,
-	["shortChannels"] = true,
-	["hyperlinkHover"] = true,
-	["throttleInterval"] = 45,
-	["fade"] = false,
-	["sticky"] = true,
-	["smileys"] = true,
-	["secretWordTone"] = "None",
-	["psst"] = "Whisper Alert",
-	["noWipe"] = false,
-	["timeStampFormat"] = "NONE",
-	["secretWords"] = "%MYNAME%, SVUI",
-	["basicTools"] = true,
-}
-
-Registry:NewPackage(MOD, "SVChat")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/dock/SVDock.lua b/Interface/AddOns/SVUI/packages/dock/SVDock.lua
index 06aae69..080b9eb 100644
--- a/Interface/AddOns/SVUI/packages/dock/SVDock.lua
+++ b/Interface/AddOns/SVUI/packages/dock/SVDock.lua
@@ -33,17 +33,16 @@ local format, gsub, strfind, strmatch, tonumber = format, gsub, strfind, strmatc
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local MOD, DOCKLET_CACHE, TOOL_CACHE, SAFETY_CACHE = {}, {}, {}, {};
-local PREV_TOOL, DEFAULT_DOCKLET;
+local SV = select(2, ...)
+local L = SV.L
+local MOD = SV:NewPackage("SVDock", L["Docks"]);
 --[[
 ##########################################################
 LOCAL VARS
 ##########################################################
 ]]--
+local DOCKLET_CACHE, TOOL_CACHE, SAFETY_CACHE = {}, {}, {};
+local PREV_TOOL, DEFAULT_DOCKLET;
 local AddOnButton = CreateFrame("Button", "SVUI_AddonDocklet", UIParent);
 local SuperDockletMain = CreateFrame('Frame', 'SuperDockletMain', UIParent);
 local SuperDockletExtra = CreateFrame('Frame', 'SuperDockletExtra', UIParent);
@@ -89,7 +88,7 @@ local function CycleDocklets()
 end

 local AlertActivate = function(self, child)
-	local size = MOD.db.buttonSize or 22;
+	local size = SV.db.SVDock.buttonSize or 22;
 	self:Height(size)
 	child:ClearAllPoints()
 	child:SetAllPoints(self)
@@ -115,16 +114,15 @@ end

 local ToggleDocks = function(self)
 	GameTooltip:Hide()
-	if MOD.SuperDockFaded then
-		MOD.SuperDockFaded = nil;
+	if SV.cache.Docks.SuperDockFaded then
+		SV.cache.Docks.SuperDockFaded = nil;
 		SV:SecureFadeIn(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 1)
 		SV:SecureFadeIn(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 1)
 	else
-		MOD.SuperDockFaded = true;
+		SV.cache.Docks.SuperDockFaded = true;
 		SV:SecureFadeOut(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 0, true)
 		SV:SecureFadeOut(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 0, true)
-	end
-	SVUI_Cache["Dock"].SuperDockFaded = MOD.SuperDockFaded
+	end
 end

 local Docklet_OnShow = function(self)
@@ -158,7 +156,7 @@ local DockButtonDeactivate = function(self)
 end

 local DockletButton_OnEnter = function(self, ...)
-	if MOD.SuperDockFaded then
+	if SV.cache.Docks.SuperDockFaded then
 		LeftSuperDock:Show()
 		SV:SecureFadeIn(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 1)
 		RightSuperDock:Show()
@@ -179,7 +177,7 @@ local DockletButton_OnEnter = function(self, ...)
 end

 local DockletButton_OnLeave = function(self, ...)
-	if MOD.SuperDockFaded then
+	if SV.cache.Docks.SuperDockFaded then
 		SV:SecureFadeOut(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 0, true)
 		SV:SecureFadeOut(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 0, true)
 	end
@@ -240,7 +238,7 @@ local AddonDockletToggle = function(self)
 		end
 		self:Deactivate()
 	end
-	if MOD.db.docklets.enableExtra and SuperDockletExtra.FrameName and _G[SuperDockletExtra.FrameName] then
+	if SV.db.SVDock.docklets.enableExtra and SuperDockletExtra.FrameName and _G[SuperDockletExtra.FrameName] then
 		if not _G[SuperDockletExtra.FrameName]:IsShown() then
 			if not InCombatLockdown() and not SuperDockletExtra:IsShown()then
 				SuperDockletExtra:Show()
@@ -428,18 +426,16 @@ local function BorderColorUpdates()
 	SVUIBottomPanel:SetBackdropBorderColor(0,0,0,1)
 end

-Registry:NewCallback(BorderColorUpdates)
+SV:NewCallback(BorderColorUpdates)

 function MOD:CreateDockPanels()
-	self.SuperDockFaded = SVUI_Cache["Dock"].SuperDockFaded
-
-	local leftWidth = self.db.dockLeftWidth or 350;
-	local leftHeight = self.db.dockLeftHeight or 180;
-	local rightWidth = self.db.dockRightWidth or 350;
-	local rightHeight = self.db.dockRightHeight or 180;
-	local buttonsize = self.db.buttonSize or 22;
-	local spacing = self.db.buttonSpacing or 4;
-	local statBarWidth = self.db.dockStatWidth
+	local leftWidth = SV.db.SVDock.dockLeftWidth or 350;
+	local leftHeight = SV.db.SVDock.dockLeftHeight or 180;
+	local rightWidth = SV.db.SVDock.dockRightWidth or 350;
+	local rightHeight = SV.db.SVDock.dockRightHeight or 180;
+	local buttonsize = SV.db.SVDock.buttonSize or 22;
+	local spacing = SV.db.SVDock.buttonSpacing or 4;
+	local statBarWidth = SV.db.SVDock.dockStatWidth or defaultStatBarWidth
 	local STATS = SV.SVStats;

 	-- [[ CORNER BUTTON ]] --
@@ -453,7 +449,7 @@ function MOD:CreateDockPanels()
 	leftbutton.icon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Icons\\SVUI-EMBLEM")
 	leftbutton.TText = L["Toggle Docks"]
 	leftbutton:RegisterForClicks("AnyUp")
-	MOD:ActivateDockletButton(leftbutton, ToggleDocks)
+	self:ActivateDockletButton(leftbutton, ToggleDocks)
 	-- [[ TOOLBARS AND OTHER NONSENSE ]] --

 	local toolbarLeft = CreateFrame("Frame", "SuperDockToolBarLeft", SV.UIParent)
@@ -473,7 +469,7 @@ function MOD:CreateDockPanels()
 	leftdock:SetFrameStrata("BACKGROUND")
 	leftdock:Point("BOTTOMLEFT", SV.UIParent, "BOTTOMLEFT", 1, buttonsize + 10)
 	leftdock:Size(leftWidth, leftHeight)
-	SV:SetSVMovable(leftdock, L["Left Dock"])
+	SV.Mentalo:Add(leftdock, L["Left Dock"])

 	leftalert:SetParent(leftdock)
 	leftalert:SetFrameStrata("BACKGROUND")
@@ -500,7 +496,7 @@ function MOD:CreateDockPanels()
 	rightbutton.icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-HENCHMAN]])
 	rightbutton.TText = "Call Henchman!"
 	rightbutton:RegisterForClicks("AnyUp")
-	MOD:ActivateDockletButton(rightbutton, SV.ToggleHenchman)
+	self:ActivateDockletButton(rightbutton, SV.ToggleHenchman)
 	-- [[ TOOLBARS AND OTHER NONSENSE ]] --

 	local toolbarRight = CreateFrame("Frame", "SuperDockToolBarRight", SV.UIParent)
@@ -517,7 +513,7 @@ function MOD:CreateDockPanels()
 	rightdock:SetFrameStrata("BACKGROUND")
 	rightdock:Point("BOTTOMRIGHT", SV.UIParent, "BOTTOMRIGHT", -1, buttonsize + 10)
 	rightdock:Size(rightWidth, rightHeight)
-	SV:SetSVMovable(rightdock, L["Right Dock"])
+	SV.Mentalo:Add(rightdock, L["Right Dock"])

 	rightalert:SetParent(rightdock)
 	rightalert:SetFrameStrata("BACKGROUND")
@@ -533,7 +529,7 @@ function MOD:CreateDockPanels()
 	rightwindow:Size(rightWidth, rightHeight)
 	rightdock.backdrop = SetSuperDockStyle(rightwindow)

-	if MOD.SuperDockFaded then LeftSuperDock:Hide()RightSuperDock:Hide() end
+	if SV.cache.Docks.SuperDockFaded then LeftSuperDock:Hide() RightSuperDock:Hide() end

 	local toolbarTop = CreateFrame("Frame", "SuperDockToolBarTop", SV.UIParent)
 	toolbarTop:Point("TOPLEFT", SV.UIParent, "TOPLEFT", 2, -4)
@@ -750,10 +746,9 @@ SV.CurrentlyDocked = {};
 function SV:IsDockletReady(arg)
 	local addon = arg;
 	if arg == "DockletMain" or arg == "DockletExtra" then
-		addon = MOD.db.docklets[arg]
+		addon = self.db.SVDock.docklets[arg]
 	end
-	if addon:find("Skada") then addon = "Skada" end
-	if addon == nil or addon == "None" or not IsAddOnLoaded(addon) then
+	if addon == nil or addon == "None" then
 		return false
 	end
 	return true
@@ -768,7 +763,9 @@ function SV:RemoveTool()
 	tremove(TOOL_CACHE, i)
 	local width;
 	local height = SuperDockToolBarRight.currentSize;
-	PREV_TOOL = TOOL_CACHE[#TOOL_CACHE]
+	local PREV_TOOL = TOOL_CACHE[#TOOL_CACHE]
+	local xOffset = (#TOOL_CACHE - 1) * (height + 6) + 6
+	PREV_TOOL:SetPoint("RIGHT", SuperDockToolBarRight, "RIGHT", (xOffset * -1), 0);
 	width = #TOOL_CACHE * (height + 6)
 	SuperDockToolBarRight:Size(width, height)
 	self:Hide()
@@ -780,14 +777,10 @@ function SV:AddTool()
 	SAFETY_CACHE[name] = true;
 	local width;
 	local height = SuperDockToolBarRight.currentSize;
-	if not PREV_TOOL or PREV_TOOL == self then
-		self:Point("RIGHT", SuperDockToolBarRight, "RIGHT", -6, 0);
-	else
-		self:Point("RIGHT", PREV_TOOL, "LEFT", -6, 0);
-	end
+	local xOffset = #TOOL_CACHE * (height + 6) + 6
+	self:SetPoint("RIGHT", SuperDockToolBarRight, "RIGHT", (xOffset * -1), 0);
 	tinsert(TOOL_CACHE, self)
  	self.listIndex = #TOOL_CACHE;
-	PREV_TOOL = self;
 	width = #TOOL_CACHE * (height + 6)
 	SuperDockToolBarRight:Size(width, height)
 	self:Show()
@@ -801,38 +794,37 @@ do
 		tremove(DOCKLET_CACHE, i)
 	end

-	local function UnregisterDocklets()
+	function SV:ReloadDocklets(alert)
+		if InCombatLockdown() then return end
+
 		local frame, i;
-		twipe(SV.CurrentlyDocked);
-		if SV:IsDockletReady("DockletMain") then
-			frame = MOD.db.docklets.MainWindow
+		twipe(self.CurrentlyDocked);
+		if self:IsDockletReady("DockletMain") then
+			frame = self.db.SVDock.docklets.MainWindow
 			if frame ~= nil and frame ~= "None" and _G[frame] then
 				UnregisterDocklet(frame)
-				MOD.db.docklets.MainWindow = "None"
+				self.db.SVDock.docklets.MainWindow = "None"
 			end
 		elseif AddOnButton.IsRegistered then
-			SV.RemoveTool(AddOnButton)
+			self.RemoveTool(AddOnButton)
 			AddOnButton.TText = "";
 			AddOnButton.IsRegistered = false;
 		end
-		if SV:IsDockletReady("DockletExtra") then
-			frame = MOD.db.docklets.ExtraWindow
+		if self:IsDockletReady("DockletExtra") then
+			frame = self.db.SVDock.docklets.ExtraWindow
 			if frame ~= nil and frame ~= "None" and _G[frame] then
 				UnregisterDocklet(frame)
-				MOD.db.docklets.ExtraWindow = "None"
+				self.db.SVDock.docklets.ExtraWindow = "None"
 			end
 		end
 		SuperDockletMain.FrameName = "None"
 		SuperDockletExtra.FrameName = "None"
-	end

-	function SV:ReloadDocklets(alert)
-		UnregisterDocklets()
-		if InCombatLockdown()then return end
-		local width = MOD.db.dockRightWidth or 350;
-		local height = (MOD.db.dockRightHeight or 180) - 22
-		if SV:IsDockletReady('DockletMain') then
-			if SV:IsDockletReady("DockletExtra") and MOD.db.docklets.enableExtra then
+		local width = self.db.SVDock.dockRightWidth or 350;
+		local height = (self.db.SVDock.dockRightHeight or 180) - 22
+
+		if self:IsDockletReady('DockletMain') then
+			if self:IsDockletReady("DockletExtra") and self.db.SVDock.docklets.enableExtra then
 				width = width * 0.5;
 			end
 			SuperDockletMain:ClearAllPoints()
@@ -854,7 +846,7 @@ function SV:RegisterDocklet(name, tooltip, texture, onclick, isdefault)
 		frame.FrameName = name;
 		tinsert(DOCKLET_CACHE, frame);
 		frame.listIndex = #DOCKLET_CACHE;
-		MOD:CreateBasicToolButton(tooltip, texture, onclick, name, isdefault)
+		self.SVDock:CreateBasicToolButton(tooltip, texture, onclick, name, isdefault)
 	end
 end

@@ -862,7 +854,7 @@ function SV:RegisterMainDocklet(name)
 	local frame = _G[name];
 	if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then
 		SuperDockletMain.FrameName = name;
-		MOD.db.docklets.MainWindow = name;
+		SV.db.SVDock.docklets.MainWindow = name;
 		frame:ClearAllPoints()
 		frame:SetParent(SuperDockletMain)
 		frame:SetAllPoints(SuperDockletMain)
@@ -881,7 +873,7 @@ function SV:RegisterExtraDocklet(name)
 	local frame = _G[name];
 	if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then
 		SuperDockletExtra.FrameName = name;
-		MOD.db.docklets.ExtraWindow = name;
+		SV.db.SVDock.docklets.ExtraWindow = name;
 		frame:ClearAllPoints()
 		frame:SetParent(SuperDockletExtra)
 		frame:SetAllPoints(SuperDockletExtra)
@@ -899,13 +891,13 @@ BUILD/UPDATE
 ##########################################################
 ]]--
 function MOD:UpdateSuperDock()
-	local leftWidth = self.db.dockLeftWidth or 350;
-	local leftHeight = self.db.dockLeftHeight or 180;
-	local rightWidth = self.db.dockRightWidth or 350;
-	local rightHeight = self.db.dockRightHeight or 180;
-	local buttonsize = self.db.buttonSize or 22;
-	local spacing = self.db.buttonSpacing or 4;
-	local statBarWidth = self.db.dockStatWidth
+	local leftWidth = SV.db.SVDock.dockLeftWidth or 350;
+	local leftHeight = SV.db.SVDock.dockLeftHeight or 180;
+	local rightWidth = SV.db.SVDock.dockRightWidth or 350;
+	local rightHeight = SV.db.SVDock.dockRightHeight or 180;
+	local buttonsize = SV.db.SVDock.buttonSize or 22;
+	local spacing = SV.db.SVDock.buttonSpacing or 4;
+	local statBarWidth = SV.db.SVDock.dockStatWidth or defaultStatBarWidth

 	_G["LeftSuperDock"]:Size(leftWidth, leftHeight)
 	_G["SuperDockAlertLeft"]:Width(leftWidth)
@@ -924,14 +916,14 @@ function MOD:UpdateSuperDock()
 end

 function MOD:UpdateDockBackdrops()
-	if self.db.rightDockBackdrop then
+	if SV.db.SVDock.rightDockBackdrop then
 		RightSuperDock.backdrop:Show()
 		RightSuperDock.backdrop:ClearAllPoints()
 		RightSuperDock.backdrop:WrapOuter(RightSuperDock, 4, 4)
 	else
 		RightSuperDock.backdrop:Hide()
 	end
-	if self.db.leftDockBackdrop then
+	if SV.db.SVDock.leftDockBackdrop then
 		LeftSuperDock.backdrop:Show()
 		LeftSuperDock.backdrop:ClearAllPoints()
 		LeftSuperDock.backdrop:WrapOuter(LeftSuperDock, 4, 4)
@@ -941,7 +933,7 @@ function MOD:UpdateDockBackdrops()
 end

 function MOD:BottomPanelVisibility()
-	if self.db.bottomPanel then
+	if SV.db.SVDock.bottomPanel then
 		self.BottomPanel:Show()
 	else
 		self.BottomPanel:Hide()
@@ -949,7 +941,7 @@ function MOD:BottomPanelVisibility()
 end

 function MOD:TopPanelVisibility()
-	if self.db.topPanel then
+	if SV.db.SVDock.topPanel then
 		self.TopPanel:Show()
 	else
 		self.TopPanel:Hide()
@@ -966,6 +958,12 @@ function MOD:ReLoad()
 end

 function MOD:Load()
+	SV.cache.Docks = SV.cache.Docks	or {}
+
+	if(not SV.cache.Docks.SuperDockFaded) then
+		SV.cache.Docks.SuperDockFaded = false
+	end
+
 	self:CreateSuperBorders()
 	self:CreateDockPanels()
 	local width = RightSuperDock:GetWidth();
@@ -1003,33 +1001,4 @@ function MOD:Load()
 	SuperDockletExtra:SetScript("OnShow", DockletFrame_OnShow)
 	SV:ReloadDocklets(true)
 	SV.Timers:ExecuteTimer(self.LoadToolBarProfessions, 5)
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVDock"] = {
-	["enable"] = true,
-	["dockLeftWidth"] = 412,
-	["dockLeftHeight"] = 224,
-	["dockRightWidth"] = 412,
-	["dockRightHeight"] = 224,
-	["dockStatWidth"] = defaultStatBarWidth,
-	["buttonSize"] = 30,
-	["buttonSpacing"] = 4,
-	["leftDockBackdrop"] = true,
-	["rightDockBackdrop"] = true,
-	["topPanel"] = true,
-	["bottomPanel"] = true,
-	["docklets"] = {
-		["DockletMain"] = "None",
-		["MainWindow"] = "None",
-		["DockletExtra"] = "None",
-		["ExtraWindow"] = "None",
-		["enableExtra"] = false,
-		["DockletCombatFade"] = true
-	},
-}
-
-Registry:NewPackage(MOD, "SVDock")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/gear/SVGear.lua b/Interface/AddOns/SVUI/packages/gear/SVGear.lua
index 479d602..e1c3edc 100644
--- a/Interface/AddOns/SVUI/packages/gear/SVGear.lua
+++ b/Interface/AddOns/SVUI/packages/gear/SVGear.lua
@@ -32,11 +32,9 @@ local ceil, floor, round = math.ceil, math.floor, math.round;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local MOD = {};
+local SV = select(2, ...)
+local L = SV.L
+local MOD = SV:NewPackage("SVGear", L["Gear Managment"]);
 --[[
 ##########################################################
 LOCAL VARS
@@ -124,10 +122,10 @@ local function GetActiveGear()
 	local count = GetNumEquipmentSets()
 	local resultSpec = GetActiveSpecGroup()
 	local resultSet
-	EQUIP_SET = MOD.db.equipmentset
+	EQUIP_SET = SV.db.SVGear.equipmentset
 	SPEC_SET = nil
 	if(resultSpec and GetSpecializationInfo(resultSpec)) then
-		SPEC_SET = resultSpec == 1 and MOD.db.primary or MOD.db.secondary
+		SPEC_SET = resultSpec == 1 and SV.db.SVGear.primary or SV.db.SVGear.secondary
 	end
 	if(count == 0) then
 		return resultSpec,false
@@ -238,7 +236,7 @@ local function GearSwap()
 	if(InCombatLockdown()) then return; end
 	local gearSpec, gearSet = GetActiveGear()
 	if(not gearSet) then return; end
-	if MOD.db.battleground.enable then
+	if SV.db.SVGear.battleground.enable then
 		local inDungeon,dungeonType = IsInInstance()
 		if(inDungeon and dungeonType == "pvp" or dungeonType == "arena") then
 			if EQUIP_SET ~= "none" and EQUIP_SET ~= gearSet then
@@ -256,9 +254,9 @@ end

 function MOD:PLAYER_ENTERING_WORLD()
 	self:UnregisterEvent("PLAYER_ENTERING_WORLD")
-	SHOW_LEVEL = self.db.itemlevel.enable
-	SHOW_DURABILITY = self.db.durability.enable
-	ONLY_DAMAGED = self.db.durability.onlydamaged
+	SHOW_LEVEL = SV.db.SVGear.itemlevel.enable
+	SHOW_DURABILITY = SV.db.SVGear.durability.enable
+	ONLY_DAMAGED = SV.db.SVGear.durability.onlydamaged
 	MAX_LEVEL, AVG_LEVEL = GetAverageItemLevel()
 	LoadAddOn("Blizzard_InspectUI")
 	SetDisplayStats("Character")
@@ -279,9 +277,9 @@ local GearSwapComplete = function()
 end

 function MOD:UpdateLocals()
-	SHOW_LEVEL = self.db.itemlevel.enable
-	SHOW_DURABILITY = self.db.durability.enable
-	ONLY_DAMAGED = self.db.durability.onlydamaged
+	SHOW_LEVEL = SV.db.SVGear.itemlevel.enable
+	SHOW_DURABILITY = SV.db.SVGear.durability.enable
+	ONLY_DAMAGED = SV.db.SVGear.durability.onlydamaged
 	MAX_LEVEL, AVG_LEVEL = GetAverageItemLevel()
 end

@@ -300,32 +298,4 @@ function MOD:Load()
 	self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED", GearSwap)
 	self:RegisterEvent("EQUIPMENT_SWAP_FINISHED", GearSwapComplete)
 	self:RegisterEvent("PLAYER_ENTERING_WORLD")
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVGear"] = {
-	["enable"] = true,
-	["specialization"] = {
-		["enable"] = false,
-	},
-	["battleground"] = {
-		["enable"] = false,
-	},
-	["primary"] = "none",
-	["secondary"] = "none",
-	["equipmentset"] = "none",
-	["durability"] = {
-		["enable"] = true,
-		["onlydamaged"] = true,
-	},
-	["itemlevel"] = {
-		["enable"] = true,
-	},
-	["misc"] = {
-		setoverlay = true,
-	}
-}
-Registry:NewPackage(MOD, "SVGear");
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua b/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
index da42f41..eba7b36 100644
--- a/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
+++ b/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua
@@ -13,11 +13,9 @@ _____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 S U P E R - V I L L A I N - U I   By: Munglunch                              #
 ##############################################################################
 --]]
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local MOD = {}
+local SV = select(2, ...)
+local L = SV.L
+local MOD = SV:NewPackage("SVHenchmen", L["Henchmen"]);
 --[[
 ##########################################################
 LOCAL VARS
@@ -80,10 +78,10 @@ local AutomatedEvents = {
 SCRIPT HANDLERS
 ##########################################################
 ]]--
-local ColorFunc = function(arg) SV.Setup:SetColorTheme(arg, true); SV:ToggleHenchman() end
-local UnitFunc = function(arg) SV.Setup:SetUnitframeLayout(arg, true); SV:ToggleHenchman() end
-local BarFunc = function(arg) SV.Setup:SetupBarLayout(arg, true); SV:ToggleHenchman() end
-local AuraFunc = function(arg) SV.Setup:SetupAuralayout(arg, true); SV:ToggleHenchman() end
+local ColorFunc = function(self) SV.Setup:ColorTheme(self.value, true); SV:ToggleHenchman() end
+local UnitFunc = function(self) SV.Setup:UnitframeLayout(self.value, true); SV:ToggleHenchman() end
+local BarFunc = function(self) SV.Setup:BarLayout(self.value, true); SV:ToggleHenchman() end
+local AuraFunc = function(self) SV.Setup:Auralayout(self.value, true); SV:ToggleHenchman() end
 local ConfigFunc = function() SV:ToggleConfig(); SV:ToggleHenchman() end
 local speechTimer;

@@ -109,10 +107,8 @@ local Minion_OnMouseUp = function(self)
 end

 local Option_OnMouseUp = function(self)
-	local param = self.value
-	local func = self.callback
-	if(type(func) == "function") then
-		func(param)
+	if(type(self.callback) == "function") then
+		self:callback(param)
 	end
 end

@@ -282,12 +278,12 @@ local function CreateMinionOptions(i)
 	end

 	local setting = options[4];
-	local dbSet = MOD.db[setting];
+	local dbSet = SV.db.SVHenchmen[setting];
 	option.setting = function(toggle)
 		if(toggle == nil) then
-			return MOD.db[setting]
+			return SV.db.SVHenchmen[setting]
 		else
-			MOD.db[setting] = toggle;
+			SV.db.SVHenchmen[setting] = toggle;
 		end
 	end
 	SV.Animate:Slide(option,-500,-500)
@@ -503,7 +499,7 @@ local function CreateHenchmenFrame()
 	CreateHenchmenSubOptions(3,1)
 	HenchmenOptionButton3Sub1.txt:SetText("One Row: Small Buttons")
 	HenchmenOptionButton3Sub1.txthigh:SetText("One Row: Small Buttons")
-	HenchmenOptionButton3Sub1.value = "onesmall"
+	HenchmenOptionButton3Sub1.value = "default"
 	HenchmenOptionButton3Sub1.callback = BarFunc
 	HenchmenOptionButton3Sub1:SetScript("OnMouseUp", Option_OnMouseUp)

@@ -517,7 +513,7 @@ local function CreateHenchmenFrame()
 	CreateHenchmenSubOptions(3,3)
 	HenchmenOptionButton3Sub3.txt:SetText("One Row: Large Buttons")
 	HenchmenOptionButton3Sub3.txthigh:SetText("One Row: Large Buttons")
-	HenchmenOptionButton3Sub3.value = "default"
+	HenchmenOptionButton3Sub3.value = "onebig"
 	HenchmenOptionButton3Sub3.callback = BarFunc
 	HenchmenOptionButton3Sub3:SetScript("OnMouseUp", Option_OnMouseUp)

@@ -634,7 +630,7 @@ MAIL HELPER
 ##########################################################
 ]]--
 function MOD:ToggleMailMinions()
-	if not MOD.db.mailOpener then
+	if not SV.db.SVHenchmen.mailOpener then
 		SVUI_MailMinion:Hide()
 	else
 		SVUI_MailMinion:Show()
@@ -755,8 +751,8 @@ REPAIR AUTOMATONS
 ##########################################################
 ]]--
 function MOD:MERCHANT_SHOW()
-	if self.db.vendorGrays then SV.SVBag:VendorGrays(nil,true) end
-	local autoRepair = self.db.autoRepair;
+	if SV.db.SVHenchmen.vendorGrays then SV.SVBag:VendorGrays(nil,true) end
+	local autoRepair = SV.db.SVHenchmen.autoRepair;
 	if IsShiftKeyDown() or autoRepair == "NONE" or not CanMerchantRepair() then return end
 	local repairCost,canRepair=GetRepairAllCost()
 	local loan=GetGuildBankWithdrawMoney()
@@ -781,7 +777,7 @@ REP AUTOMATONS
 ##########################################################
 ]]--
 function MOD:CHAT_MSG_COMBAT_FACTION_CHANGE(event, msg)
-	if not self.db.autorepchange then return end
+	if not SV.db.SVHenchmen.autorepchange then return end
 	local _, _, faction, amount = msg:find(incpat)
 	if not faction then
 		_, _, faction, amount = msg:find(changedpat) or msg:find(decpat)
@@ -806,13 +802,13 @@ QUEST AUTOMATONS
 ]]--
 function MOD:AutoQuestProxy()
 	if(IsShiftKeyDown()) then return false; end
-    if((not QuestIsDaily() or not QuestIsWeekly()) and (self.db.autodailyquests)) then return false; end
-    if(QuestFlagsPVP() and (not self.db.autopvpquests)) then return false; end
+    if((not QuestIsDaily() or not QuestIsWeekly()) and (SV.db.SVHenchmen.autodailyquests)) then return false; end
+    if(QuestFlagsPVP() and (not SV.db.SVHenchmen.autopvpquests)) then return false; end
     return true
 end

 function MOD:QUEST_GREETING()
-    if(self.db.autoquestaccept == true and self:AutoQuestProxy()) then
+    if(SV.db.SVHenchmen.autoquestaccept == true and self:AutoQuestProxy()) then
         local active,available = GetNumActiveQuests(), GetNumAvailableQuests()
         if(active + available == 0) then return end
         if(available > 0) then
@@ -825,7 +821,7 @@ function MOD:QUEST_GREETING()
 end

 function MOD:GOSSIP_SHOW()
-    if(self.db.autoquestaccept == true and self:AutoQuestProxy()) then
+    if(SV.db.SVHenchmen.autoquestaccept == true and self:AutoQuestProxy()) then
         if GetGossipAvailableQuests() then
             SelectGossipAvailableQuest(1)
         elseif GetGossipActiveQuests() then
@@ -835,7 +831,7 @@ function MOD:GOSSIP_SHOW()
 end

 function MOD:QUEST_DETAIL()
-    if(self.db.autoquestaccept == true and self:AutoQuestProxy()) then
+    if(SV.db.SVHenchmen.autoquestaccept == true and self:AutoQuestProxy()) then
         if not QuestGetAutoAccept() then
 			AcceptQuest()
 		else
@@ -845,7 +841,7 @@ function MOD:QUEST_DETAIL()
 end

 function MOD:QUEST_ACCEPT_CONFIRM()
-    if(self.db.autoquestaccept == true and self:AutoQuestProxy()) then
+    if(SV.db.SVHenchmen.autoquestaccept == true and self:AutoQuestProxy()) then
         ConfirmAcceptQuest()
         StaticPopup_Hide("QUEST_ACCEPT_CONFIRM")
     end
@@ -853,19 +849,19 @@ end

 function MOD:QUEST_PROGRESS()
 	if(IsShiftKeyDown()) then return false; end
-    if(self.db.autoquestcomplete == true and IsQuestCompletable()) then
+    if(SV.db.SVHenchmen.autoquestcomplete == true and IsQuestCompletable()) then
         CompleteQuest()
     end
 end

 function MOD:QUEST_COMPLETE()
-	if(not self.db.autoquestcomplete and (not self.db.autoquestreward)) then return end
+	if(not SV.db.SVHenchmen.autoquestcomplete and (not SV.db.SVHenchmen.autoquestreward)) then return end
 	if(IsShiftKeyDown()) then return false; end
 	local rewards = GetNumQuestChoices()
 	if rewards > 1 then
 		local auto_select = QuestFrameRewardPanel.itemChoice or QuestInfoFrame.itemChoice;
 		local selection, value = 1, 0;
-		if self.db.autoquestreward == true then
+		if SV.db.SVHenchmen.autoquestreward == true then
 			for i = 1, rewards do
 				local iLink = GetQuestItemLink("choice", i)
 				if iLink then
@@ -886,11 +882,11 @@ function MOD:QUEST_COMPLETE()
 			end
 		end
 		auto_select = selection
-		if self.db.autoquestcomplete == true then
+		if SV.db.SVHenchmen.autoquestcomplete == true then
 			GetQuestReward(auto_select)
 		end
 	else
-		if(self.db.autoquestcomplete == true) then
+		if(SV.db.SVHenchmen.autoquestcomplete == true) then
 			GetQuestReward(GetNumQuestChoices())
 		end
 	end
@@ -921,7 +917,7 @@ function MOD:Load()
 	bubble:SetScript('OnShow', Speech_OnShow)

 	if IsAddOnLoaded("Postal") then
-		self.db.mailOpener = false
+		SV.db.SVHenchmen.mailOpener = false
 	else
 		self:LoadMailMinions()
 		self:ToggleMailMinions()
@@ -955,40 +951,17 @@ function MOD:Load()
 	skippy:RegisterEvent("CINEMATIC_START")
 	skippy:SetScript("OnEvent", function(_, event)
 		if event == "CINEMATIC_START" then
-			if(MOD.db.skipcinematics) then
+			if(SV.db.SVHenchmen.skipcinematics) then
 				CinematicFrame_CancelCinematic()
 			end
 		end
 	end)
 	local PlayMovie_hook = MovieFrame_PlayMovie
 	MovieFrame_PlayMovie = function(...)
-		if(MOD.db.skipcinematics) then
+		if(SV.db.SVHenchmen.skipcinematics) then
 			GameMovieFinished()
 		else
 			PlayMovie_hook(...)
 		end
 	end
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVHenchmen"] = {
-	["enable"] = true,
-	["autoRoll"] = false,
-	["vendorGrays"] = true,
-	["autoAcceptInvite"] = false,
-	["autorepchange"] = false,
-	["pvpautorelease"] = false,
-	["autoquestcomplete"] = false,
-	["autoquestreward"] = false,
-	["autoquestaccept"] = false,
-	["autodailyquests"] = false,
-	["autopvpquests"] = false,
-	["skipcinematics"] = false,
-	["mailOpener"] = true,
-	["autoRepair"] = "PLAYER",
-}
-
-Registry:NewPackage(MOD, "SVHenchmen")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/map/SVMap.lua b/Interface/AddOns/SVUI/packages/map/SVMap.lua
index 79ffa70..fe2fdc8 100644
--- a/Interface/AddOns/SVUI/packages/map/SVMap.lua
+++ b/Interface/AddOns/SVUI/packages/map/SVMap.lua
@@ -36,11 +36,9 @@ local parsefloat = math.parsefloat;  -- Uncommon
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local MOD = {};
+local SV = select(2, ...)
+local L = SV.L
+local MOD = SV:NewPackage("SVMap", L["Minimap"]);
 MOD.MinimapButtons = {}
 --[[
 ##########################################################
@@ -57,6 +55,18 @@ LOCAL VARS
 local temp = SLASH_CALENDAR1:gsub("/", "");
 local calendar_string = temp:gsub("^%l", upper)
 local cColor = RAID_CLASS_COLORS[SV.class];
+local MMBHolder, MMBBar;
+
+local NewHook = hooksecurefunc
+local Initialized = false
+--[[
+##########################################################
+DATA UPVALUES
+##########################################################
+]]--
+local NARR_TEXT = "Meanwhile";
+local NARR_PREFIX = "In ";
+local NARR_ENABLE = true;
 local MM_COLOR = {"VERTICAL", 0.65, 0.65, 0.65, 0.95, 0.95, 0.95}
 local MM_BRDR = 0
 local MM_SIZE = 240
@@ -64,21 +74,19 @@ local MM_OFFSET_TOP = (MM_SIZE * 0.07)
 local MM_OFFSET_BOTTOM = (MM_SIZE * 0.11)
 local MM_WIDTH = MM_SIZE + (MM_BRDR * 2)
 local MM_HEIGHT = (MM_SIZE - (MM_OFFSET_TOP + MM_OFFSET_BOTTOM) + (MM_BRDR * 2))
-local MMBHolder, MMBBar, SetMiniMapCoords;
-local SVUI_MinimapFrame = CreateFrame("Frame", "SVUI_MinimapFrame", UIParent)
-SVUI_MinimapFrame:SetFrameStrata("BACKGROUND")
-SVUI_MinimapFrame.backdrop = SVUI_MinimapFrame:CreateTexture(nil, "BACKGROUND", nil, -2)
-local SVUI_MinimapZonetext = CreateFrame("Frame", "SVUI_MinimapZonetext", SVUI_MinimapFrame)
-local SVUI_MinimapNarrator = CreateFrame("Frame", "SVUI_MinimapNarrator", SVUI_MinimapFrame)
-local NewHook = hooksecurefunc
-local Initialized = false
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
+--local
+--[[
+ /$$$$$$$  /$$   /$$ /$$$$$$$$/$$$$$$$$/$$$$$$  /$$   /$$  /$$$$$$
+| $$__  $$| $$  | $$|__  $$__/__  $$__/$$__  $$| $$$ | $$ /$$__  $$
+| $$  \ $$| $$  | $$   | $$     | $$ | $$  \ $$| $$$$| $$| $$  \__/
+| $$$$$$$ | $$  | $$   | $$     | $$ | $$  | $$| $$ $$ $$|  $$$$$$
+| $$__  $$| $$  | $$   | $$     | $$ | $$  | $$| $$  $$$$ \____  $$
+| $$  \ $$| $$  | $$   | $$     | $$ | $$  | $$| $$\  $$$ /$$  \ $$
+| $$$$$$$/|  $$$$$$/   | $$     | $$ |  $$$$$$/| $$ \  $$|  $$$$$$/
+|_______/  \______/    |__/     |__/  \______/ |__/  \__/ \______/
+--]]
 local MMB_OnEnter = function(self)
-	if(not MOD.db.minimapbar.mouseover or MOD.db.minimapbar.styleType == "NOANCHOR") then return end
+	if(not SV.db.SVMap.minimapbar.mouseover or SV.db.SVMap.minimapbar.styleType == "NOANCHOR") then return end
 	UIFrameFadeIn(SVUI_MiniMapButtonBar, 0.2, SVUI_MiniMapButtonBar:GetAlpha(), 1)
 	if self:GetName() ~= "SVUI_MiniMapButtonBar" then
 		self:SetBackdropBorderColor(.7, .7, 0)
@@ -86,41 +94,22 @@ local MMB_OnEnter = function(self)
 end

 local MMB_OnLeave = function(self)
-	if(not MOD.db.minimapbar.mouseover or MOD.db.minimapbar.styleType == "NOANCHOR") then return end
+	if(not SV.db.SVMap.minimapbar.mouseover or SV.db.SVMap.minimapbar.styleType == "NOANCHOR") then return end
 	UIFrameFadeOut(SVUI_MiniMapButtonBar, 0.2, SVUI_MiniMapButtonBar:GetAlpha(), 0)
 	if self:GetName() ~= "SVUI_MiniMapButtonBar" then
 		self:SetBackdropBorderColor(0, 0, 0)
 	end
-end
-
-local MiniMap_MouseUp = function(self, btn)
-	local position = self:GetPoint()
-	if btn == "RightButton" then
-		local xoff = -1
-		if position:match("RIGHT") then xoff = -16 end
-		ToggleDropDownMenu(1, nil, MiniMapTrackingDropDown, self, xoff, -3)
-	else
-		Minimap_OnClick(self)
-	end
-end
-
-local MiniMap_MouseWheel = function(self, delta)
-	if delta > 0 then
-		_G.MinimapZoomIn:Click()
-	elseif delta < 0 then
-		_G.MinimapZoomOut:Click()
-	end
 end

 do
 	local reserved = {"Node", "Tab", "Pin", "SVUI_ConsolidatedBuffs", "GameTimeframe", "HelpOpenTicketButton", "SVUI_MinimapFrame", "SVUI_EnhancedMinimap", "QueueStatusMinimapButton", "TimeManagerClockButton", "Archy", "GatherMatePin", "GatherNote", "GuildInstance", "HandyNotesPin", "MinimMap", "Spy_MapNoteList_mini", "ZGVMarker"}

 	local function UpdateMinimapButtons()
-		if(not MOD.db.minimapbar.enable) then return end
+		if(not SV.db.SVMap.minimapbar.enable) then return end

 		MMBBar:SetPoint("CENTER", MMBHolder, "CENTER", 0, 0)
-		MMBBar:Height(MOD.db.minimapbar.buttonSize + 4)
-		MMBBar:Width(MOD.db.minimapbar.buttonSize + 4)
+		MMBBar:Height(SV.db.SVMap.minimapbar.buttonSize + 4)
+		MMBBar:Width(SV.db.SVMap.minimapbar.buttonSize + 4)

 		local lastButton, anchor, relative, xPos, yPos;
 		local list  = MOD.MinimapButtons
@@ -128,7 +117,7 @@ do

 		for name,btn in pairs(list) do
 			local preset = btn.preset;
-			if(MOD.db.minimapbar.styleType == "NOANCHOR") then
+			if(SV.db.SVMap.minimapbar.styleType == "NOANCHOR") then
 				btn:SetParent(preset.Parent)
 				if preset.DragStart then
 					btn:SetScript("OnDragStart", preset.DragStart)
@@ -151,8 +140,8 @@ do
 				btn:ClearAllPoints()
 				btn:SetFrameStrata("LOW")
 				btn:SetFrameLevel(20)
-				btn:Size(MOD.db.minimapbar.buttonSize)
-				if MOD.db.minimapbar.styleType == "HORIZONTAL"then
+				btn:Size(SV.db.SVMap.minimapbar.buttonSize)
+				if SV.db.SVMap.minimapbar.styleType == "HORIZONTAL"then
 					anchor = "RIGHT"
 					relative = "LEFT"
 					xPos = -2;
@@ -172,11 +161,11 @@ do
 			lastButton = btn
 			count = count + 1
 		end
-		if (MOD.db.minimapbar.styleType ~= "NOANCHOR" and (count > 0)) then
-			if MOD.db.minimapbar.styleType == "HORIZONTAL" then
-				MMBBar:Width((MOD.db.minimapbar.buttonSize * count) + count * 2)
+		if (SV.db.SVMap.minimapbar.styleType ~= "NOANCHOR" and (count > 0)) then
+			if SV.db.SVMap.minimapbar.styleType == "HORIZONTAL" then
+				MMBBar:Width((SV.db.SVMap.minimapbar.buttonSize * count) + count * 2)
 			else
-				MMBBar:Height((MOD.db.minimapbar.buttonSize * count) + count * 2)
+				MMBBar:Height((SV.db.SVMap.minimapbar.buttonSize * count) + count * 2)
 			end
 			MMBHolder:SetSize(MMBBar:GetSize())
 			MMBBar:Show()
@@ -264,7 +253,7 @@ do

 		UpdateMinimapButtons()

-		if MOD.db.minimapbar.mouseover then
+		if SV.db.SVMap.minimapbar.mouseover then
 			MMBBar:SetAlpha(0)
 		else
 			MMBBar:SetAlpha(1)
@@ -272,7 +261,7 @@ do
 	end

 	function MOD:UpdateMinimapButtonSettings(notimer)
-		if(not self.db.minimapbar.enable or not MMBBar:IsShown()) then return end
+		if(not SV.db.SVMap.minimapbar.enable or not MMBBar:IsShown()) then return end
 		if(notimer) then
 			StyleMinimapButtons()
 		else
@@ -281,9 +270,80 @@ do
 	end
 end

+local function CheckMovement()
+	if(not WorldMapFrame:IsShown()) then return end
+	if GetUnitSpeed("player") ~= 0 then
+		WorldMapFrame:SetAlpha(SV.db.SVMap.mapAlpha)
+	else
+		WorldMapFrame:SetAlpha(1)
+	end
+end
+
+local function UpdateMapCoords()
+	local xF, yF = "|cffffffffx:  |r%.1f", "|cffffffffy:  |r%.1f"
+	local skip = IsInInstance()
+	local c, d = GetPlayerMapPosition("player")
+	if(not skip and not IsIndoors() and c ~= 0 and d ~= 0) then
+		c = parsefloat(100 * c, 2)
+		d = parsefloat(100 * d, 2)
+		if(MM_XY_COORD == "SIMPLE") then
+			xF, yF = "%.1f", "%.1f";
+		end
+		if c ~= 0 and d ~= 0 then
+			SVUI_MiniMapCoords.playerXCoords:SetFormattedText(xF, c)
+			SVUI_MiniMapCoords.playerYCoords:SetFormattedText(yF, d)
+			if(SVUI_WorldMapCoords and WorldMapFrame:IsShown()) then
+				SVUI_WorldMapCoords.playerCoords:SetText(PLAYER..":   "..c..", "..d)
+			end
+		else
+			SVUI_MiniMapCoords.playerXCoords:SetText("")
+			SVUI_MiniMapCoords.playerYCoords:SetText("")
+			if(SVUI_WorldMapCoords and WorldMapFrame:IsShown()) then
+				SVUI_WorldMapCoords.playerCoords:SetText("")
+			end
+		end
+		if(not WorldMapFrame:IsShown() or not SVUI_WorldMapCoords) then return end
+		local e = WorldMapDetailFrame:GetEffectiveScale()
+		local f = WorldMapDetailFrame:GetWidth()
+		local g = WorldMapDetailFrame:GetHeight()
+		local h, i = WorldMapDetailFrame:GetCenter()
+		local c, d = GetCursorPosition()
+		local j = (c / e - (h - (f / 2))) / f;
+		local k = (i + (g / 2)-d / e) / g;
+		if j >= 0 and k >= 0 and j <= 1 and k <= 1 then
+			j = parsefloat(100 * j, 2)
+			k = parsefloat(100 * k, 2)
+			SVUI_WorldMapCoords.mouseCoords:SetText(MOUSE_LABEL..":   "..j..", "..k)
+		else
+			SVUI_WorldMapCoords.mouseCoords:SetText("")
+		end
+	else
+		SVUI_MiniMapCoords.playerXCoords:SetText("")
+		SVUI_MiniMapCoords.playerYCoords:SetText("")
+		if(SVUI_WorldMapCoords and WorldMapFrame:IsShown()) then
+			SVUI_WorldMapCoords.playerCoords:SetText("")
+		end
+	end
+	if(SV.db.SVMap.mapAlpha < 100) then
+		CheckMovement()
+	end
+end
+
+--[[
+ /$$      /$$  /$$$$$$  /$$$$$$$  /$$       /$$$$$$$  /$$      /$$  /$$$$$$  /$$$$$$$
+| $$  /$ | $$ /$$__  $$| $$__  $$| $$      | $$__  $$| $$$    /$$$ /$$__  $$| $$__  $$
+| $$ /$$$| $$| $$  \ $$| $$  \ $$| $$      | $$  \ $$| $$$$  /$$$$| $$  \ $$| $$  \ $$
+| $$/$$ $$ $$| $$  | $$| $$$$$$$/| $$      | $$  | $$| $$ $$/$$ $$| $$$$$$$$| $$$$$$$/
+| $$$$_  $$$$| $$  | $$| $$__  $$| $$      | $$  | $$| $$  $$$| $$| $$__  $$| $$____/
+| $$$/ \  $$$| $$  | $$| $$  \ $$| $$      | $$  | $$| $$\  $ | $$| $$  | $$| $$
+| $$/   \  $$|  $$$$$$/| $$  | $$| $$$$$$$$| $$$$$$$/| $$ \/  | $$| $$  | $$| $$
+|__/     \__/ \______/ |__/  |__/|________/|_______/ |__/     |__/|__/  |__/|__/
+--]]
+
 local function SetLargeWorldMap()
-	if InCombatLockdown() then return end
-	if MOD.db.tinyWorldMap == true then
+	if InCombatLockdown() then return end
+
+	if SV.db.SVMap.tinyWorldMap == true then
 		WorldMapFrame:SetParent(SV.UIParent)
 		WorldMapFrame:EnableMouse(false)
 		WorldMapFrame:EnableKeyboard(false)
@@ -294,14 +354,16 @@ local function SetLargeWorldMap()
 		if WorldMapFrame:GetAttribute('UIPanelLayout-allowOtherPanels') ~= true then
 			SetUIPanelAttribute(WorldMapFrame, "allowOtherPanels", true)
 		end
-	end
+	end
+
 	WorldMapFrameSizeUpButton:Hide()
 	WorldMapFrameSizeDownButton:Show()
 end

 local function SetQuestWorldMap()
-	if InCombatLockdown() then return end
-	if MOD.db.tinyWorldMap == true then
+	if InCombatLockdown() then return end
+
+	if SV.db.SVMap.tinyWorldMap == true then
 		WorldMapFrame:SetParent(SV.UIParent)
 		WorldMapFrame:EnableMouse(false)
 		WorldMapFrame:EnableKeyboard(false)
@@ -311,7 +373,8 @@ local function SetQuestWorldMap()
 		if WorldMapFrame:GetAttribute('UIPanelLayout-allowOtherPanels') ~= true then
 			SetUIPanelAttribute(WorldMapFrame, "allowOtherPanels", true)
 		end
-	end
+	end
+
 	WorldMapFrameSizeUpButton:Hide()
 	WorldMapFrameSizeDownButton:Show()
 end
@@ -322,20 +385,11 @@ local function SetSmallWorldMap()
 	WorldMapLevelDropDown:Point("TOPLEFT", WorldMapDetailFrame, "TOPLEFT", -10, -4)
 	WorldMapFrameSizeUpButton:Show()
 	WorldMapFrameSizeDownButton:Hide()
-end
-
-local function AdjustMapLevel()
-	if InCombatLockdown()then return end
-	WorldMapFrame:SetFrameLevel(2)
-  	WorldMapDetailFrame:SetFrameLevel(4)
-  	WorldMapFrame:SetFrameStrata('HIGH')
-  	WorldMapArchaeologyDigSites:SetFrameLevel(6)
-  	WorldMapArchaeologyDigSites:SetFrameStrata('DIALOG')
-end
+end

 local function AdjustMapSize()
 	if InCombatLockdown() then return end
-	if MOD.db.tinyWorldMap == true then
+	if SV.db.SVMap.tinyWorldMap == true then
 		if WORLDMAP_SETTINGS.size == WORLDMAP_FULLMAP_SIZE then
 			SetLargeWorldMap()
 		elseif WORLDMAP_SETTINGS.size == WORLDMAP_WINDOWED_SIZE then
@@ -354,81 +408,28 @@ local function AdjustMapSize()
 		end
 		BlackoutWorld:SetTexture(0, 0, 0, 1)
 	end
-	AdjustMapLevel()
-end
-
-local function CheckMovement()
-	if(not WorldMapFrame:IsShown()) then return end
-	if GetUnitSpeed("player") ~= 0 then
-		WorldMapFrame:SetAlpha(MOD.db.mapAlpha)
-	else
-		WorldMapFrame:SetAlpha(1)
-	end
-end
-
-local function UpdateMapCoords()
-	local xF, yF = "|cffffffffx:  |r%.1f", "|cffffffffy:  |r%.1f"
-	local skip = IsInInstance()
-	local c, d = GetPlayerMapPosition("player")
-	if(not skip and not IsIndoors() and c ~= 0 and d ~= 0) then
-		c = parsefloat(100 * c, 2)
-		d = parsefloat(100 * d, 2)
-		if(MOD.db.playercoords == "SIMPLE") then
-			xF, yF = "%.1f", "%.1f";
-		end
-		if c ~= 0 and d ~= 0 then
-			SVUI_MiniMapCoords.playerXCoords:SetFormattedText(xF, c)
-			SVUI_MiniMapCoords.playerYCoords:SetFormattedText(yF, d)
-			if(SVUI_WorldMapCoords and WorldMapFrame:IsShown()) then
-				SVUI_WorldMapCoords.playerCoords:SetText(PLAYER..":   "..c..", "..d)
-			end
-		else
-			SVUI_MiniMapCoords.playerXCoords:SetText("")
-			SVUI_MiniMapCoords.playerYCoords:SetText("")
-			if(SVUI_WorldMapCoords and WorldMapFrame:IsShown()) then
-				SVUI_WorldMapCoords.playerCoords:SetText("")
-			end
-		end
-		if(not WorldMapFrame:IsShown() or not SVUI_WorldMapCoords) then return end
-		local e = WorldMapDetailFrame:GetEffectiveScale()
-		local f = WorldMapDetailFrame:GetWidth()
-		local g = WorldMapDetailFrame:GetHeight()
-		local h, i = WorldMapDetailFrame:GetCenter()
-		local c, d = GetCursorPosition()
-		local j = (c / e - (h - (f / 2))) / f;
-		local k = (i + (g / 2)-d / e) / g;
-		if j >= 0 and k >= 0 and j <= 1 and k <= 1 then
-			j = parsefloat(100 * j, 2)
-			k = parsefloat(100 * k, 2)
-			SVUI_WorldMapCoords.mouseCoords:SetText(MOUSE_LABEL..":   "..j..", "..k)
-		else
-			SVUI_WorldMapCoords.mouseCoords:SetText("")
-		end
-	else
-		SVUI_MiniMapCoords.playerXCoords:SetText("")
-		SVUI_MiniMapCoords.playerYCoords:SetText("")
-		if(SVUI_WorldMapCoords and WorldMapFrame:IsShown()) then
-			SVUI_WorldMapCoords.playerCoords:SetText("")
-		end
-	end
-	if(MOD.db.mapAlpha < 100) then
-		CheckMovement()
-	end
-end
+
+	WorldMapFrame:SetFrameLevel(2)
+  	WorldMapDetailFrame:SetFrameLevel(4)
+  	WorldMapFrame:SetFrameStrata('HIGH')
+  	WorldMapArchaeologyDigSites:SetFrameLevel(6)
+  	WorldMapArchaeologyDigSites:SetFrameStrata('DIALOG')
+end

 local function UpdateWorldMapConfig()
-	if InCombatLockdown()then return end
+	if InCombatLockdown()then return end
+
 	if(not MOD.WorldMapHooked) then
 		NewHook("WorldMap_ToggleSizeUp", AdjustMapSize)
 		NewHook("WorldMap_ToggleSizeDown", SetSmallWorldMap)
-		if(SV.___interface < 60000) then
+		if(SV.GameVersion < 60000) then
 			NewHook("WorldMapFrame_SetFullMapView", SetLargeWorldMap)
 			NewHook("WorldMapFrame_SetQuestMapView", SetQuestWorldMap)
 		end
 		MOD.WorldMapHooked = true
 	end

-	if(not MOD.db.playercoords or MOD.db.playercoords == "HIDE") then
+	if(not MM_XY_COORD or MM_XY_COORD == "HIDE") then
 		if MOD.CoordTimer then
 			SV.Timers:RemoveLoop(MOD.CoordTimer)
 			MOD.CoordTimer = nil;
@@ -442,229 +443,195 @@ local function UpdateWorldMapConfig()
 		UpdateMapCoords()
 	end
 	AdjustMapSize()
-end
-
-local ResetDropDownList_Hook = function(self)
-	DropDownList1:ClearAllPoints()
-	DropDownList1:Point("TOPRIGHT",self,"BOTTOMRIGHT",-17,-4)
-end
-
-local WorldMapFrameOnShow_Hook = function()
-	MOD:RegisterEvent("PLAYER_REGEN_DISABLED");
-	if InCombatLockdown()then return end
-	if(not SV.db.SVMap.tinyWorldMap and not Initialized) then
-      WorldMap_ToggleSizeUp()
-      Initialized = true
-    end
-    AdjustMapLevel()
-end
-
-local WorldMapFrameOnHide_Hook = function()
-	MOD:UnregisterEvent("PLAYER_REGEN_DISABLED")
 end
 --[[
 ##########################################################
-CORE FUNCTIONS
+HANDLERS
 ##########################################################
 ]]--
-MOD.narrative = "";
-MOD.locationPrefix = "";
-do
-	local function _createCoords()
-		local x, y = GetPlayerMapPosition("player")
-		x = tonumber(parsefloat(100  *  x, 0))
-		y = tonumber(parsefloat(100  *  y, 0))
-		return x, y
-	end
-
-	local function Tour_OnEnter(self,...)
-		if InCombatLockdown() then
-			GameTooltip:Hide()
-		else
-			GameTooltip:SetOwner(self, "ANCHOR_BOTTOM", 0, -4)
-			GameTooltip:ClearAllPoints()
-			GameTooltip:SetPoint("BOTTOM", self, "BOTTOM", 0, 0)
-			GameTooltip:AddLine(" ")
-			GameTooltip:AddDoubleLine(L["Click : "], L["Toggle WorldMap"], 0.7, 0.7, 1, 0.7, 0.7, 1)
-			GameTooltip:AddDoubleLine(L["ShiftClick : "], L["Announce your position in chat"],0.7, 0.7, 1, 0.7, 0.7, 1)
-			GameTooltip:Show()
-		end
-	end
-
-	local function Tour_OnLeave(self,...)
-		GameTooltip:Hide()
-	end
-
-	local function Tour_OnClick(self, btn)
-		local zoneText = GetRealZoneText() or UNKNOWN;
-		if IsShiftKeyDown() then
-			local edit_box = ChatEdit_ChooseBoxForSend()
-			local x, y = _createCoords()
-			local message
-			local coords = x..", "..y
-				if zoneText  ~= GetSubZoneText() then
-					message = format("%s: %s (%s)", zoneText, GetSubZoneText(), coords)
-				else
-					message = format("%s (%s)", zoneText, coords)
-				end
-			ChatEdit_ActivateChat(edit_box)
-			edit_box:Insert(message)
-		else
-			ToggleFrame(WorldMapFrame)
-		end
-		GameTooltip:Hide()
-	end
-
-	local Calendar_OnClick = function(self)
-		GameTimeFrame:Click();
-	end
-
-	local Tracking_OnClick = function(self)
-		local position = self:GetPoint()
+local MiniMap_MouseUp = function(self, btn)
+	local position = self:GetPoint()
+	if btn == "RightButton" then
 		local xoff = -1
 		if position:match("RIGHT") then xoff = -16 end
 		ToggleDropDownMenu(1, nil, MiniMapTrackingDropDown, self, xoff, -3)
+	else
+		Minimap_OnClick(self)
 	end
+end

-	local Basic_OnEnter = function(self)
-		GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-		GameTooltip:ClearLines()
-		GameTooltip:AddLine(self.TText, 1, 1, 1)
-		GameTooltip:Show()
-	end
-
-	local Basic_OnLeave = function(self)
-		GameTooltip:Hide()
+local MiniMap_MouseWheel = function(self, delta)
+	if delta > 0 then
+		_G.MinimapZoomIn:Click()
+	elseif delta < 0 then
+		_G.MinimapZoomOut:Click()
 	end
+end

-	function SetMiniMapCoords()
-		if(not SVUI_MiniMapCoords) then
-			local CoordsHolder = CreateFrame("Frame", "SVUI_MiniMapCoords", Minimap)
-			CoordsHolder:SetFrameLevel(Minimap:GetFrameLevel()  +  1)
-			CoordsHolder:SetFrameStrata(Minimap:GetFrameStrata())
-			CoordsHolder:SetPoint("TOPLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 0, -4)
-			CoordsHolder:SetPoint("TOPRIGHT", SVUI_MinimapFrame, "BOTTOMRIGHT", 0, -4)
-			CoordsHolder:SetHeight(22)
-			CoordsHolder:EnableMouse(true)
-			CoordsHolder:SetScript("OnEnter",Tour_OnEnter)
-			CoordsHolder:SetScript("OnLeave",Tour_OnLeave)
-			CoordsHolder:SetScript("OnMouseDown",Tour_OnClick)
-
-			CoordsHolder.playerXCoords = CoordsHolder:CreateFontString(nil, "OVERLAY")
-			CoordsHolder.playerXCoords:SetPoint("BOTTOMLEFT", CoordsHolder, "BOTTOMLEFT", 0, 0)
-			CoordsHolder.playerXCoords:SetWidth(70)
-			CoordsHolder.playerXCoords:SetHeight(22)
-			CoordsHolder.playerXCoords:SetFontTemplate(SV.Media.font.numbers, 12, "OUTLINE")
-			CoordsHolder.playerXCoords:SetTextColor(cColor.r, cColor.g, cColor.b)
-
-			CoordsHolder.playerYCoords = CoordsHolder:CreateFontString(nil, "OVERLAY")
-			CoordsHolder.playerYCoords:SetPoint("BOTTOMLEFT", CoordsHolder.playerXCoords, "BOTTOMRIGHT", 4, 0)
-			CoordsHolder.playerXCoords:SetWidth(70)
-			CoordsHolder.playerYCoords:SetHeight(22)
-			CoordsHolder.playerYCoords:SetFontTemplate(SV.Media.font.numbers, 12, "OUTLINE")
-			CoordsHolder.playerYCoords:SetTextColor(cColor.r, cColor.g, cColor.b)
-
-			local calendarButton = CreateFrame("Button", "SVUI_CalendarButton", CoordsHolder)
-			calendarButton:SetSize(22,22)
-			calendarButton:SetPoint("RIGHT", CoordsHolder, "RIGHT", 0, 0)
-			calendarButton:RemoveTextures()
-			calendarButton:SetNormalTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-CALENDAR")
-			calendarButton:SetPushedTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-CALENDAR")
-			calendarButton:SetHighlightTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-CALENDAR")
-			calendarButton.TText = "Calendar"
-			calendarButton:RegisterForClicks("AnyUp")
-			calendarButton:SetScript("OnEnter", Basic_OnEnter)
-			calendarButton:SetScript("OnLeave", Basic_OnLeave)
-			calendarButton:SetScript("OnClick", Calendar_OnClick)
-
-			local trackingButton = CreateFrame("Button", "SVUI_TrackingButton", CoordsHolder)
-			trackingButton:SetSize(22,22)
-			trackingButton:SetPoint("RIGHT", calendarButton, "LEFT", -4, 0)
-			trackingButton:RemoveTextures()
-			trackingButton:SetNormalTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-TRACKING")
-			trackingButton:SetPushedTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-TRACKING")
-			trackingButton:SetHighlightTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-TRACKING")
-			trackingButton.TText = "Tracking"
-			trackingButton:RegisterForClicks("AnyUp")
-			trackingButton:SetScript("OnEnter", Basic_OnEnter)
-			trackingButton:SetScript("OnLeave", Basic_OnLeave)
-			trackingButton:SetScript("OnClick", Tracking_OnClick)
-		end
-	end
+local Calendar_OnClick = function(self)
+	GameTimeFrame:Click();
 end

-local function UpdateMinimapNarration()
-	SVUI_MinimapNarrator.Text:SetText(MOD.narrative)
+local Tracking_OnClick = function(self)
+	local position = self:GetPoint()
+	local xoff = -1
+	if position:match("RIGHT") then xoff = -16 end
+	ToggleDropDownMenu(1, nil, MiniMapTrackingDropDown, self, xoff, -3)
+end
+
+local Basic_OnEnter = function(self)
+	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+	GameTooltip:ClearLines()
+	GameTooltip:AddLine(self.TText, 1, 1, 1)
+	GameTooltip:Show()
+end
+
+local Basic_OnLeave = function(self)
+	GameTooltip:Hide()
+end
+
+local Tour_OnEnter = function(self, ...)
+	if InCombatLockdown() then
+		GameTooltip:Hide()
+	else
+		GameTooltip:SetOwner(self, "ANCHOR_BOTTOM", 0, -4)
+		GameTooltip:ClearAllPoints()
+		GameTooltip:SetPoint("BOTTOM", self, "BOTTOM", 0, 0)
+		GameTooltip:AddLine(" ")
+		GameTooltip:AddDoubleLine(L["Click : "], L["Toggle WorldMap"], 0.7, 0.7, 1, 0.7, 0.7, 1)
+		GameTooltip:AddDoubleLine(L["ShiftClick : "], L["Announce your position in chat"],0.7, 0.7, 1, 0.7, 0.7, 1)
+		GameTooltip:Show()
+	end
 end

-local function UpdateMinimapLocation()
-	SVUI_MinimapZonetext.Text:SetText(MOD.locationPrefix .. strsub(GetMinimapZoneText(), 1, 25))
+local Tour_OnLeave = function(self, ...)
+	GameTooltip:Hide()
 end

-local function UpdateMinimapTexts()
-	MOD.narrative = "";
-	MOD.locationPrefix = "";
-	if(not MOD.db.locationText or MOD.db.locationText == "HIDE") then
-		SVUI_MinimapNarrator:Hide();
-		SVUI_MinimapZonetext:Hide();
-	elseif(MOD.db.locationText == "SIMPLE") then
-		SVUI_MinimapNarrator:Hide();
-		SVUI_MinimapZonetext:Show();
-		UpdateMinimapLocation()
-		UpdateMinimapNarration()
+local Tour_OnClick = function(self, btn)
+	if IsShiftKeyDown() then
+		local zoneText = GetRealZoneText() or UNKNOWN;
+		local subZone = GetSubZoneText() or UNKNOWN;
+		local edit_box = ChatEdit_ChooseBoxForSend();
+		local x, y = GetPlayerMapPosition("player");
+		x = tonumber(parsefloat(100 * x, 0));
+		y = tonumber(parsefloat(100 * y, 0));
+		local coords = ("%d, %d"):format(x, y);
+
+		ChatEdit_ActivateChat(edit_box)
+
+		if(zoneText ~= subZone) then
+			local message = ("%s: %s (%s)"):format(zoneText, subZone, coords)
+			edit_box:Insert(message)
+		else
+			local message = ("%s (%s)"):format(zoneText, coords)
+			edit_box:Insert(message)
+		end
 	else
-		SVUI_MinimapNarrator:Show();
-		SVUI_MinimapZonetext:Show();
-		MOD.narrative = L['Meanwhile...'];
-		MOD.locationPrefix = L["..at "];
-		UpdateMinimapLocation()
-		UpdateMinimapNarration()
+		ToggleFrame(WorldMapFrame)
 	end
+	GameTooltip:Hide()
+end
+--[[
+##########################################################
+HOOKS
+##########################################################
+]]--
+local _hook_WorldMapZoneDropDownButton_OnClick = function(self)
+	DropDownList1:ClearAllPoints()
+	DropDownList1:Point("TOPRIGHT",self,"BOTTOMRIGHT",-17,-4)
 end

-local function UpdateSizing()
-	MM_COLOR = SV.Media.gradient[MOD.db.bordercolor]
-	MM_BRDR = MOD.db.bordersize or 0
-	MM_SIZE = MOD.db.size or 240
-	MM_OFFSET_TOP = (MM_SIZE * 0.07)
-	MM_OFFSET_BOTTOM = (MM_SIZE * 0.11)
-	MM_WIDTH = MM_SIZE + (MM_BRDR * 2)
-	MM_HEIGHT = MOD.db.customshape and (MM_SIZE - (MM_OFFSET_TOP + MM_OFFSET_BOTTOM) + (MM_BRDR * 2)) or MM_WIDTH
+local _hook_WorldMapFrame_OnShow = function()
+	MOD:RegisterEvent("PLAYER_REGEN_DISABLED");
+
+	if InCombatLockdown()then return end
+
+	if(not SV.db.SVMap.tinyWorldMap and not Initialized) then
+      WorldMap_ToggleSizeUp()
+      Initialized = true
+    end
+
+	WorldMapFrame:SetFrameLevel(2)
+  	WorldMapDetailFrame:SetFrameLevel(4)
+  	WorldMapFrame:SetFrameStrata('HIGH')
+  	WorldMapArchaeologyDigSites:SetFrameLevel(6)
+  	WorldMapArchaeologyDigSites:SetFrameStrata('DIALOG')
 end

+local _hook_WorldMapFrame_OnHide = function()
+	MOD:UnregisterEvent("PLAYER_REGEN_DISABLED")
+end
+
+local _hook_DropDownList1 = function(self)
+	local parentScale = UIParent:GetScale()
+	if(self:GetScale() ~= parentScale) then
+		self:SetScale(parentScale)
+	end
+end
+--[[
+##########################################################
+CORE FUNCTIONS
+##########################################################
+]]--
 function MOD:RefreshMiniMap()
 	if(not SV.db.SVMap.enable) then return; end
 	if(InCombatLockdown()) then
 		self.CombatLocked = true
 		return
 	end
-	UpdateSizing()
-	if(SVUI_MinimapFrame and SVUI_MinimapFrame:IsShown()) then
+
+	self:UpdateLocals()
+
+	NARR_TEXT = "";
+	NARR_PREFIX = "";
+
+	if(self.Holder and self.Holder:IsShown()) then
 		--local minimapRotationEnabled = GetCVar("rotateMinimap") ~= "0"
-		SVUI_MinimapFrame:Size(MM_WIDTH, MM_HEIGHT)
-		SVUI_MinimapFrame.backdrop:SetGradient(unpack(MM_COLOR))
+		self.Holder:Size(MM_WIDTH, MM_HEIGHT)
+		self.Holder.backdrop:SetGradient(unpack(MM_COLOR))
 		Minimap:Size(MM_SIZE,MM_SIZE)
-		if MOD.db.customshape then
-			Minimap:SetPoint("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", MM_BRDR, -(MM_OFFSET_BOTTOM - MM_BRDR))
-			Minimap:SetPoint("TOPRIGHT", SVUI_MinimapFrame, "TOPRIGHT", -MM_BRDR, (MM_OFFSET_TOP - MM_BRDR))
+		if SV.db.SVMap.customshape then
+			Minimap:SetPoint("BOTTOMLEFT", self.Holder, "BOTTOMLEFT", MM_BRDR, -(MM_OFFSET_BOTTOM - MM_BRDR))
+			Minimap:SetPoint("TOPRIGHT", self.Holder, "TOPRIGHT", -MM_BRDR, (MM_OFFSET_TOP - MM_BRDR))
 			Minimap:SetMaskTexture('Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_MASK_RECTANGLE')
 		else
 			Minimap:SetHitRectInsets(0, 0, 0, 0)
-			Minimap:FillInner(SVUI_MinimapFrame, MM_BRDR, MM_BRDR)
+			Minimap:FillInner(self.Holder, MM_BRDR, MM_BRDR)
 			Minimap:SetMaskTexture('Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_MASK_SQUARE')
 		end
-		Minimap:SetParent(SVUI_MinimapFrame)
+		Minimap:SetParent(self.Holder)
 		Minimap:SetZoom(1)
 		Minimap:SetZoom(0)
 	end

-	SVUI_MinimapZonetext:SetSize(MM_WIDTH,28)
-	SVUI_MinimapZonetext.Text:SetSize(MM_WIDTH,32)
-	UpdateMinimapTexts()
+	self.Zone:SetSize(MM_WIDTH,28)
+	self.Zone.Text:SetSize(MM_WIDTH,32)
+
+	if(not NARR_ENABLE or NARR_ENABLE == "HIDE") then
+		self.Narrator:Hide();
+		self.Zone:Hide();
+	else
+		if(NARR_ENABLE == "SIMPLE") then
+			self.Narrator:Hide();
+			self.Zone:Show();
+			self.Narrator.Text:SetText(NARR_TEXT)
+		else
+			self.Narrator:Show();
+			self.Zone:Show();
+			NARR_TEXT = L['Meanwhile...'];
+			NARR_PREFIX = L["..at "];
+			self.Narrator.Text:SetText(NARR_TEXT)
+		end
+		local zone = GetMinimapZoneText();
+		zone = zone:sub(1, 25);
+		local zoneText = ("%s%s"):format(NARR_PREFIX, zone);
+		self.Zone.Text:SetText(zoneText)
+	end

 	if SVUI_AurasAnchor then
 		SVUI_AurasAnchor:Height(MM_HEIGHT)
-		if SVUI_AurasAnchor_MOVE and not SV:TestMovableMoved('SVUI_AurasAnchor_MOVE') and not SV:TestMovableMoved('SVUI_MinimapFrame_MOVE') then
+		if SVUI_AurasAnchor_MOVE and not SV.Mentalo:HasMoved('SVUI_AurasAnchor_MOVE') and not SV.Mentalo:HasMoved('SVUI_MinimapFrame_MOVE') then
 			SVUI_AurasAnchor_MOVE:ClearAllPoints()
 			SVUI_AurasAnchor_MOVE:Point("TOPRIGHT", SVUI_MinimapFrame_MOVE, "TOPLEFT", -8, 0)
 		end
@@ -679,12 +646,90 @@ function MOD:RefreshMiniMap()
 		TimeManagerClockButton:Die()
 	end

-	SetMiniMapCoords()
 	UpdateWorldMapConfig()
 end
+--[[
+##########################################################
+EVENTS
+##########################################################
+]]--
+function MOD:ZONE_CHANGED()
+	local zone = GetRealZoneText() or UNKNOWN
+	zone = zone:sub(1, 25)
+	local zoneText = ("%s%s"):format(NARR_PREFIX, zone)
+	self.Zone.Text:SetText(zoneText)
+end
+
+function MOD:ZONE_CHANGED_NEW_AREA()
+	local zone = GetRealZoneText() or UNKNOWN
+	zone = zone:sub(1, 25)
+	local zoneText = ("%s%s"):format(NARR_PREFIX, zone)
+	self.Zone.Text:SetText(zoneText)
+end
+
+function MOD:ADDON_LOADED(event, addon)
+	if TimeManagerClockButton then
+		TimeManagerClockButton:Die()
+	end
+	self:UnregisterEvent("ADDON_LOADED")
+	if addon == "Blizzard_FeedbackUI" then
+		FeedbackUIButton:Die()
+	end
+	self:UpdateMinimapButtonSettings()
+end
+
+function MOD:PLAYER_REGEN_ENABLED()
+	if(WorldMapFrame:IsShown()) then
+		WorldMapFrameSizeDownButton:Enable()
+		WorldMapFrameSizeUpButton:Enable()
+	end
+	if(self.CombatLocked) then
+		self:RefreshMiniMap()
+		self.CombatLocked = nil
+	end
+end
+
+function MOD:PLAYER_REGEN_DISABLED()
+	WorldMapFrameSizeDownButton:Disable()
+	WorldMapFrameSizeUpButton:Disable()
+end
+
+function MOD:PET_BATTLE_CLOSE()
+	self:UpdateMinimapButtonSettings()
+end
+--[[
+##########################################################
+BUILD FUNCTION / UPDATE
+##########################################################
+]]--
+function MOD:UpdateLocals()
+	local db = SV.db.SVMap
+	if not db then return end
+
+	MM_XY_COORD = db.playercoords;
+	WM_TINY = db.tinyWorldMap;
+	NARR_ENABLE = db.locationText;
+	MM_COLOR = SV.Media.gradient[db.bordercolor]
+	MM_BRDR = db.bordersize or 0
+	MM_SIZE = db.size or 240
+	MM_OFFSET_TOP = (MM_SIZE * 0.07)
+	MM_OFFSET_BOTTOM = (MM_SIZE * 0.11)
+	MM_WIDTH = MM_SIZE + (MM_BRDR * 2)
+	MM_HEIGHT = db.customshape and (MM_SIZE - (MM_OFFSET_TOP + MM_OFFSET_BOTTOM) + (MM_BRDR * 2)) or MM_WIDTH
+end

-local function CreateMiniMapElements()
-	UpdateSizing()
+function MOD:ReLoad()
+	if(not SV.db.SVMap.enable) then return; end
+	self:RefreshMiniMap()
+end
+
+function MOD:Load()
+	if(not SV.db.SVMap.enable) then
+		Minimap:SetMaskTexture('Textures\\MinimapMask')
+		return
+	end
+
+	self:UpdateLocals()

 	Minimap:SetPlayerTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_ARROW")
 	Minimap:SetCorpsePOIArrowTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_CORPSE_ARROW")
@@ -692,16 +737,19 @@ local function CreateMiniMapElements()
 	Minimap:SetBlipTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_ICONS")
 	Minimap:SetClampedToScreen(false)

-	SVUI_MinimapFrame:Point("TOPRIGHT", SV.UIParent, "TOPRIGHT", -10, -10)
-	SVUI_MinimapFrame:Size(MM_WIDTH, MM_HEIGHT)
-	SVUI_MinimapFrame.backdrop:ClearAllPoints()
-	SVUI_MinimapFrame.backdrop:WrapOuter(SVUI_MinimapFrame, 2)
-	SVUI_MinimapFrame.backdrop:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	SVUI_MinimapFrame.backdrop:SetGradient(unpack(MM_COLOR))
-	SVUI_MinimapFrame:SetPanelTemplate("Blackout")
-
-	local border = CreateFrame("Frame", nil, SVUI_MinimapFrame)
-	border:WrapOuter(SVUI_MinimapFrame.backdrop)
+	local mapHolder = CreateFrame("Frame", "SVUI_MinimapFrame", UIParent)
+	mapHolder:SetFrameStrata("BACKGROUND")
+	mapHolder.backdrop = mapHolder:CreateTexture(nil, "BACKGROUND", nil, -2)
+	mapHolder:Point("TOPRIGHT", SV.UIParent, "TOPRIGHT", -10, -10)
+	mapHolder:Size(MM_WIDTH, MM_HEIGHT)
+	mapHolder.backdrop:ClearAllPoints()
+	mapHolder.backdrop:WrapOuter(mapHolder, 2)
+	mapHolder.backdrop:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	mapHolder.backdrop:SetGradient(unpack(MM_COLOR))
+	mapHolder:SetPanelTemplate("Blackout")
+
+	local border = CreateFrame("Frame", nil, mapHolder)
+	border:WrapOuter(mapHolder.backdrop)
 	border.left = border:CreateTexture(nil, "BACKGROUND", nil, -1)
 	border.left:SetTexture(0, 0, 0)
 	border.left:SetPoint("TOPLEFT")
@@ -723,14 +771,15 @@ local function CreateMiniMapElements()
 	border.bottom:SetPoint("BOTTOMRIGHT")
 	border.bottom:SetHeight(1)

-	-- MOD:RefreshMiniMap()
+	mapHolder.border = border
+
 	if TimeManagerClockButton then
 		TimeManagerClockButton:Die()
 	end

 	Minimap:SetQuestBlobRingAlpha(0)
 	Minimap:SetArchBlobRingAlpha(0)
-	Minimap:SetParent(SVUI_MinimapFrame)
+	Minimap:SetParent(mapHolder)
 	Minimap:SetFrameStrata("LOW")
 	Minimap:SetFrameLevel(Minimap:GetFrameLevel() + 2)
 	ShowUIPanel(SpellBookFrame)
@@ -745,21 +794,21 @@ local function CreateMiniMapElements()
 	MinimapZoneTextButton:Hide()
 	MiniMapTracking:Hide()
 	MiniMapMailFrame:ClearAllPoints()
-	MiniMapMailFrame:Point("TOPRIGHT", SVUI_MinimapFrame, 3, 4)
+	MiniMapMailFrame:Point("TOPRIGHT", mapHolder, 3, 4)
 	MiniMapMailBorder:Hide()
 	MiniMapMailIcon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-MAIL")
 	MiniMapWorldMapButton:Hide()
 	MiniMapInstanceDifficulty:ClearAllPoints()
 	MiniMapInstanceDifficulty:SetParent(Minimap)
-	MiniMapInstanceDifficulty:Point("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 0, 0)
+	MiniMapInstanceDifficulty:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 0, 0)
 	GuildInstanceDifficulty:ClearAllPoints()
 	GuildInstanceDifficulty:SetParent(Minimap)
-	GuildInstanceDifficulty:Point("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 0, 0)
+	GuildInstanceDifficulty:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 0, 0)
 	MiniMapChallengeMode:ClearAllPoints()
 	MiniMapChallengeMode:SetParent(Minimap)
-	MiniMapChallengeMode:Point("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 8, -8)
+	MiniMapChallengeMode:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 8, -8)
 	QueueStatusMinimapButton:ClearAllPoints()
-	QueueStatusMinimapButton:Point("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 6, 5)
+	QueueStatusMinimapButton:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 6, 5)
 	QueueStatusMinimapButton:SetPanelTemplate("Button", false, 1, -2, -2)
 	QueueStatusFrame:SetClampedToScreen(true)
 	QueueStatusMinimapButtonBorder:Hide()
@@ -769,9 +818,9 @@ local function CreateMiniMapElements()
 		MiniMapChallengeMode:Point("BOTTOMLEFT", QueueStatusMinimapButton, "BOTTOMLEFT", 0, 0)
 	end)
 	QueueStatusMinimapButton:SetScript("OnHide", function()
-		MiniMapInstanceDifficulty:Point("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 0, 0)
-		GuildInstanceDifficulty:Point("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 0, 0)
-		MiniMapChallengeMode:Point("BOTTOMLEFT", SVUI_MinimapFrame, "BOTTOMLEFT", 8, -8)
+		MiniMapInstanceDifficulty:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 0, 0)
+		GuildInstanceDifficulty:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 0, 0)
+		MiniMapChallengeMode:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 8, -8)
 	end)
 	if FeedbackUIButton then
 		FeedbackUIButton:Die()
@@ -779,35 +828,39 @@ local function CreateMiniMapElements()

 	local mwfont = SV.Media.font.dialog

-	SVUI_MinimapNarrator:Point("TOPLEFT", SVUI_MinimapFrame, "TOPLEFT", 2, -2)
-	SVUI_MinimapNarrator:SetSize(100, 22)
-	SVUI_MinimapNarrator:SetFixedPanelTemplate("Component", true)
-  	SVUI_MinimapNarrator:SetPanelColor("yellow")
-  	SVUI_MinimapNarrator:SetBackdropColor(1, 1, 0, 1)
-	SVUI_MinimapNarrator:SetFrameLevel(Minimap:GetFrameLevel() + 2)
-	SVUI_MinimapNarrator:SetParent(Minimap)
-
-	SVUI_MinimapNarrator.Text = SVUI_MinimapNarrator:CreateFontString(nil, "ARTWORK", nil, 7)
-	SVUI_MinimapNarrator.Text:SetFontTemplate(mwfont, 12, "OUTLINE", "CENTER", "MIDDLE")
-	SVUI_MinimapNarrator.Text:SetAllPoints(SVUI_MinimapNarrator)
-	SVUI_MinimapNarrator.Text:SetTextColor(1, 1, 1)
-	SVUI_MinimapNarrator.Text:SetShadowColor(0, 0, 0, 0.3)
-	SVUI_MinimapNarrator.Text:SetShadowOffset(2, -2)
-
-	SVUI_MinimapZonetext:Point("BOTTOMRIGHT", SVUI_MinimapFrame, "BOTTOMRIGHT", 2, -3)
-	SVUI_MinimapZonetext:SetSize(MM_WIDTH, 28)
-	SVUI_MinimapZonetext:SetFrameLevel(Minimap:GetFrameLevel() + 1)
-	SVUI_MinimapZonetext:SetParent(Minimap)
-
-	SVUI_MinimapZonetext.Text = SVUI_MinimapZonetext:CreateFontString(nil, "ARTWORK", nil, 7)
-	SVUI_MinimapZonetext.Text:SetFontTemplate(mwfont, 12, "OUTLINE", "RIGHT", "MIDDLE")
-	SVUI_MinimapZonetext.Text:Point("RIGHT", SVUI_MinimapZonetext)
-	SVUI_MinimapZonetext.Text:SetSize(MM_WIDTH, 32)
-	SVUI_MinimapZonetext.Text:SetTextColor(1, 1, 0)
-	SVUI_MinimapZonetext.Text:SetShadowColor(0, 0, 0, 0.3)
-	SVUI_MinimapZonetext.Text:SetShadowOffset(-2, 2)
-
-	UpdateMinimapTexts()
+	local narr = CreateFrame("Frame", nil, mapHolder)
+	narr:Point("TOPLEFT", mapHolder, "TOPLEFT", 2, -2)
+	narr:SetSize(100, 22)
+	narr:SetFixedPanelTemplate("Component", true)
+  	narr:SetPanelColor("yellow")
+  	narr:SetBackdropColor(1, 1, 0, 1)
+	narr:SetFrameLevel(Minimap:GetFrameLevel() + 2)
+	narr:SetParent(Minimap)
+
+	narr.Text = narr:CreateFontString(nil, "ARTWORK", nil, 7)
+	narr.Text:SetFontTemplate(mwfont, 12, "OUTLINE", "CENTER", "MIDDLE")
+	narr.Text:SetAllPoints(narr)
+	narr.Text:SetTextColor(1, 1, 1)
+	narr.Text:SetShadowColor(0, 0, 0, 0.3)
+	narr.Text:SetShadowOffset(2, -2)
+
+	self.Narrator = narr
+
+	local zt = CreateFrame("Frame", nil, mapHolder)
+	zt:Point("BOTTOMRIGHT", mapHolder, "BOTTOMRIGHT", 2, -3)
+	zt:SetSize(MM_WIDTH, 28)
+	zt:SetFrameLevel(Minimap:GetFrameLevel() + 1)
+	zt:SetParent(Minimap)
+
+	zt.Text = zt:CreateFontString(nil, "ARTWORK", nil, 7)
+	zt.Text:SetFontTemplate(mwfont, 12, "OUTLINE", "RIGHT", "MIDDLE")
+	zt.Text:Point("RIGHT", zt)
+	zt.Text:SetSize(MM_WIDTH, 32)
+	zt.Text:SetTextColor(1, 1, 0)
+	zt.Text:SetShadowColor(0, 0, 0, 0.3)
+	zt.Text:SetShadowOffset(-2, 2)
+
+	self.Zone = zt

 	Minimap:EnableMouseWheel(true)
 	Minimap:SetScript("OnMouseWheel", MiniMap_MouseWheel)
@@ -818,29 +871,25 @@ local function CreateMiniMapElements()
 		PetJournalParent:SetAttribute("UIPanelLayout-"..name, value);
 	end
 	PetJournalParent:SetAttribute("UIPanelLayout-defined", true);
-	SV:SetSVMovable(SVUI_MinimapFrame, L["Minimap"])
-
-	MOD:RefreshMiniMap()
-end
-
-local function LoadWorldMap()
-	setfenv(WorldMapFrame_OnShow, setmetatable({ UpdateMicroButtons = SV.fubar }, { __index = _G }))
+	SV.Mentalo:Add(mapHolder, L["Minimap"])

-	if(SV.___interface < 60000) then
+	if(SV.GameVersion < 60000) then
 		WorldMapShowDropDown:Point('BOTTOMRIGHT',WorldMapPositioningGuide,'BOTTOMRIGHT',-2,-4)
 		WorldMapZoomOutButton:Point("LEFT",WorldMapZoneDropDown,"RIGHT",0,4)
 		WorldMapLevelUpButton:Point("TOPLEFT",WorldMapLevelDropDown,"TOPRIGHT",-2,8)
 		WorldMapLevelDownButton:Point("BOTTOMLEFT",WorldMapLevelDropDown,"BOTTOMRIGHT",-2,2)
-		WorldMapZoneDropDownButton:HookScript('OnClick', ResetDropDownList_Hook)
+		WorldMapZoneDropDownButton:HookScript('OnClick', _hook_WorldMapZoneDropDownButton_OnClick)
 	end

-	WorldMapFrame:SetParent(SV.UIParent)
-	WorldMapFrame:SetFrameLevel(4)
-	WorldMapFrame:SetFrameStrata('HIGH')
-	WorldMapDetailFrame:SetFrameLevel(6)
-
-	WorldMapFrame:HookScript('OnShow', WorldMapFrameOnShow_Hook)
-	WorldMapFrame:HookScript('OnHide', WorldMapFrameOnHide_Hook)
+	if(SV.db.SVMap.tinyWorldMap) then
+		setfenv(WorldMapFrame_OnShow, setmetatable({ UpdateMicroButtons = SV.fubar }, { __index = _G }))
+		WorldMapFrame:SetParent(SV.UIParent)
+		WorldMapFrame:SetFrameLevel(4)
+		WorldMapFrame:SetFrameStrata('HIGH')
+		WorldMapDetailFrame:SetFrameLevel(6)
+		WorldMapFrame:HookScript('OnShow', _hook_WorldMapFrame_OnShow)
+		WorldMapFrame:HookScript('OnHide', _hook_WorldMapFrame_OnHide)
+	end

 	local CoordsHolder = CreateFrame('Frame', 'SVUI_WorldMapCoords', WorldMapFrame)
 	CoordsHolder:SetFrameLevel(WorldMapDetailFrame:GetFrameLevel()+1)
@@ -856,79 +905,66 @@ local function LoadWorldMap()
 	CoordsHolder.mouseCoords:SetPoint("BOTTOMLEFT",CoordsHolder.playerCoords,"TOPLEFT",0,5)
 	CoordsHolder.mouseCoords:SetText(MOUSE_LABEL..":   0, 0")

-	DropDownList1:HookScript('OnShow',function(self)
-		if(DropDownList1:GetScale() ~= UIParent:GetScale() and SV.db.SVMap.tinyWorldMap) then
-			DropDownList1:SetScale(UIParent:GetScale())
-		end
-	end)
+	DropDownList1:HookScript('OnShow', _hook_DropDownList1)
 	WorldFrame:SetAllPoints()
-end
---[[
-##########################################################
-HOOKED / REGISTERED FUNCTIONS
-##########################################################
-]]--
-function MOD:ADDON_LOADED(event, addon)
-	if TimeManagerClockButton then
-		TimeManagerClockButton:Die()
-	end
-	self:UnregisterEvent("ADDON_LOADED")
-	if addon == "Blizzard_FeedbackUI" then
-		FeedbackUIButton:Die()
-	end
-	self:UpdateMinimapButtonSettings()
-end
-
-function MOD:PLAYER_REGEN_ENABLED()
-	if(WorldMapFrame:IsShown()) then
-		WorldMapFrameSizeDownButton:Enable()
-		WorldMapFrameSizeUpButton:Enable()
-	end
-	if(self.CombatLocked) then
-		self:RefreshMiniMap()
-		self.CombatLocked = nil
-	end
-end
-
-function MOD:PLAYER_REGEN_DISABLED()
-	WorldMapFrameSizeDownButton:Disable()
-	WorldMapFrameSizeUpButton:Disable()
-end
-
-function MOD:PET_BATTLE_CLOSE()
-	self:UpdateMinimapButtonSettings()
-end
---[[
-##########################################################
-BUILD FUNCTION / UPDATE
-##########################################################
-]]--
-function MOD:ReLoad()
-	if(not SV.db.SVMap.enable) then return; end
-	self:RefreshMiniMap()
-end
-
-function MOD:Load()
-	if(not SV.db.SVMap.enable) then
-		Minimap:SetMaskTexture('Textures\\MinimapMask')
-		return
-	end

-	CreateMiniMapElements()
-
-	self:RegisterEvent("PLAYER_ENTERING_WORLD", UpdateMinimapLocation)
-	self:RegisterEvent('PLAYER_REGEN_ENABLED')
-	self:RegisterEvent('PLAYER_REGEN_DISABLED')
-	self:RegisterEvent("ZONE_CHANGED_NEW_AREA", UpdateMinimapLocation)
-	self:RegisterEvent("ZONE_CHANGED", UpdateMinimapLocation)
-	self:RegisterEvent("ZONE_CHANGED_INDOORS", UpdateMinimapLocation)
-	self:RegisterEvent('ADDON_LOADED')
-	--self:RegisterEvent("PET_BATTLE_CLOSE")
-
-	if(self.db.minimapbar.enable == true) then
-		MMBHolder = CreateFrame("Frame", "SVUI_MiniMapButtonHolder", SVUI_MinimapFrame)
+	SV:AddToDisplayAudit(mapHolder)
+
+	local CoordsHolder = CreateFrame("Frame", "SVUI_MiniMapCoords", Minimap)
+	CoordsHolder:SetFrameLevel(Minimap:GetFrameLevel()  +  1)
+	CoordsHolder:SetFrameStrata(Minimap:GetFrameStrata())
+	CoordsHolder:SetPoint("TOPLEFT", mapHolder, "BOTTOMLEFT", 0, -4)
+	CoordsHolder:SetPoint("TOPRIGHT", mapHolder, "BOTTOMRIGHT", 0, -4)
+	CoordsHolder:SetHeight(22)
+	CoordsHolder:EnableMouse(true)
+	CoordsHolder:SetScript("OnEnter",Tour_OnEnter)
+	CoordsHolder:SetScript("OnLeave",Tour_OnLeave)
+	CoordsHolder:SetScript("OnMouseDown",Tour_OnClick)
+
+	CoordsHolder.playerXCoords = CoordsHolder:CreateFontString(nil, "OVERLAY")
+	CoordsHolder.playerXCoords:SetPoint("BOTTOMLEFT", CoordsHolder, "BOTTOMLEFT", 0, 0)
+	CoordsHolder.playerXCoords:SetWidth(70)
+	CoordsHolder.playerXCoords:SetHeight(22)
+	CoordsHolder.playerXCoords:SetFontTemplate(SV.Media.font.numbers, 12, "OUTLINE")
+	CoordsHolder.playerXCoords:SetTextColor(cColor.r, cColor.g, cColor.b)
+
+	CoordsHolder.playerYCoords = CoordsHolder:CreateFontString(nil, "OVERLAY")
+	CoordsHolder.playerYCoords:SetPoint("BOTTOMLEFT", CoordsHolder.playerXCoords, "BOTTOMRIGHT", 4, 0)
+	CoordsHolder.playerXCoords:SetWidth(70)
+	CoordsHolder.playerYCoords:SetHeight(22)
+	CoordsHolder.playerYCoords:SetFontTemplate(SV.Media.font.numbers, 12, "OUTLINE")
+	CoordsHolder.playerYCoords:SetTextColor(cColor.r, cColor.g, cColor.b)
+
+	local calendarButton = CreateFrame("Button", "SVUI_CalendarButton", CoordsHolder)
+	calendarButton:SetSize(22,22)
+	calendarButton:SetPoint("RIGHT", CoordsHolder, "RIGHT", 0, 0)
+	calendarButton:RemoveTextures()
+	calendarButton:SetNormalTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-CALENDAR")
+	calendarButton:SetPushedTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-CALENDAR")
+	calendarButton:SetHighlightTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-CALENDAR")
+	calendarButton.TText = "Calendar"
+	calendarButton:RegisterForClicks("AnyUp")
+	calendarButton:SetScript("OnEnter", Basic_OnEnter)
+	calendarButton:SetScript("OnLeave", Basic_OnLeave)
+	calendarButton:SetScript("OnClick", Calendar_OnClick)
+
+	local trackingButton = CreateFrame("Button", "SVUI_TrackingButton", CoordsHolder)
+	trackingButton:SetSize(22,22)
+	trackingButton:SetPoint("RIGHT", calendarButton, "LEFT", -4, 0)
+	trackingButton:RemoveTextures()
+	trackingButton:SetNormalTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-TRACKING")
+	trackingButton:SetPushedTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-TRACKING")
+	trackingButton:SetHighlightTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP-TRACKING")
+	trackingButton.TText = "Tracking"
+	trackingButton:RegisterForClicks("AnyUp")
+	trackingButton:SetScript("OnEnter", Basic_OnEnter)
+	trackingButton:SetScript("OnLeave", Basic_OnLeave)
+	trackingButton:SetScript("OnClick", Tracking_OnClick)
+
+	if(SV.db.SVMap.minimapbar.enable == true) then
+		MMBHolder = CreateFrame("Frame", "SVUI_MiniMapButtonHolder", mapHolder)
 		MMBHolder:Point("TOPRIGHT", SVUI_MiniMapCoords, "BOTTOMRIGHT", 0, -4)
-		MMBHolder:Size(SVUI_MinimapFrame:GetWidth(), 32)
+		MMBHolder:Size(mapHolder:GetWidth(), 32)
 		MMBHolder:SetFrameStrata("BACKGROUND")
 		MMBBar = CreateFrame("Frame", "SVUI_MiniMapButtonBar", MMBHolder)
 		MMBBar:SetFrameStrata("LOW")
@@ -936,41 +972,17 @@ function MOD:Load()
 		MMBBar:SetPoint("CENTER", MMBHolder, "CENTER", 0, 0)
 		MMBBar:SetScript("OnEnter", MMB_OnEnter)
 		MMBBar:SetScript("OnLeave", MMB_OnLeave)
-		SV:SetSVMovable(MMBHolder, L["Minimap Button Bar"])
+		SV.Mentalo:Add(MMBHolder, L["Minimap Button Bar"])
 		self:UpdateMinimapButtonSettings()
-	end
+	end

-	LoadWorldMap()
-	SV:AddToDisplayAudit(SVUI_MinimapFrame)
-	self:ReLoad()
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVMap"] = {
-	["incompatible"] = {
-		["SexyMap"] = true,
-		["SquareMap"] = true,
-		["PocketPlot"] = true,
-	},
-	["enable"] = true,
-	["mapAlpha"] = 1,
-	["tinyWorldMap"] = true,
-	["size"] = 240,
-	["customshape"] = true,
-	["locationText"] = "CUSTOM",
-	["playercoords"] = "CUSTOM",
-	["bordersize"] = 6,
-	["bordercolor"] = "light",
-	["minimapbar"] = {
-		["enable"] = true,
-		["styleType"] = "HORIZONTAL",
-		["layoutDirection"] = "NORMAL",
-		["buttonSize"] = 28,
-		["mouseover"] = false,
-	},
-}
-
-Registry:NewPackage(MOD, "SVMap")
\ No newline at end of file
+	self.Holder = mapHolder
+
+	self:RefreshMiniMap()
+
+	self:RegisterEvent('ADDON_LOADED')
+	self:RegisterEvent('PLAYER_REGEN_ENABLED')
+	self:RegisterEvent('PLAYER_REGEN_DISABLED')
+	self:RegisterEvent("ZONE_CHANGED")
+	self:RegisterEvent("ZONE_CHANGED_NEW_AREA")
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/override/SVOverride.lua b/Interface/AddOns/SVUI/packages/override/SVOverride.lua
index 0ca0d5a..65bfac9 100644
--- a/Interface/AddOns/SVUI/packages/override/SVOverride.lua
+++ b/Interface/AddOns/SVUI/packages/override/SVOverride.lua
@@ -33,12 +33,10 @@ local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
-local CONFIGS = SV.private
-local MOD = {};
+local MOD = SV:NewPackage("SVOverride", "Overrides");
 MOD.LewtRollz = {};
 --[[
 ##########################################################
@@ -128,7 +126,7 @@ local CaptureBarHandler = function()
 end

 local ErrorFrameHandler = function(self, event)
-	if not SV.db.system.hideErrorFrame then return end
+	if not SV.db.general.hideErrorFrame then return end
 	if event == 'PLAYER_REGEN_DISABLED' then
 		UIErrorsFrame:UnregisterEvent('UI_ERROR_MESSAGE')
 	else
@@ -143,7 +141,7 @@ local Vehicle_OnSetPoint = function(self,_,parent)
 			VehicleSeatIndicator:Point("BOTTOM", VehicleSeatIndicator_MOVE, "BOTTOM", 0, 0)
 		else
 			VehicleSeatIndicator:Point("TOPLEFT", SV.UIParent, "TOPLEFT", 22, -45)
-			SV:SetSVMovable(VehicleSeatIndicator, L["Vehicle Seat Frame"])
+			SV.Mentalo:Add(VehicleSeatIndicator, L["Vehicle Seat Frame"])
 		end
 		VehicleSeatIndicator:SetScale(0.8)
 	end
@@ -301,7 +299,7 @@ local AlertFramePostMove_Hook = function(forced)
 		YOFFSET = 10;
 		SVUI_AlertFrame_MOVE:SetText(SVUI_AlertFrame_MOVE.textString.." (Grow Up)")
 	end
-	if MOD.db.lootRoll then
+	if SV.db.SVOverride.lootRoll then
 		local f, g;
 		for h, i in pairs(MOD.LewtRollz) do
 			i:ClearAllPoints()
@@ -456,8 +454,8 @@ LOOTING
 ##########################################################
 ]]--
 local function UpdateLootUpvalues()
-	LOOT_WIDTH = MOD.db.lootRollWidth
-	LOOT_HEIGHT = MOD.db.lootRollHeight
+	LOOT_WIDTH = SV.db.SVOverride.lootRollWidth
+	LOOT_HEIGHT = SV.db.SVOverride.lootRollHeight
 end

 local Loot_OnHide = function(self)
@@ -1021,7 +1019,7 @@ function MOD:Load()

 	TicketStatusFrame:ClearAllPoints()
 	TicketStatusFrame:SetPoint("TOPLEFT", SV.UIParent, "TOPLEFT", 250, -5)
-	SV:SetSVMovable(TicketStatusFrame, L["GM Ticket Frame"], nil, nil, nil, nil, "GM")
+	SV.Mentalo:Add(TicketStatusFrame, L["GM Ticket Frame"], nil, nil, nil, nil, "GM")
 	HelpOpenTicketButton:SetParent(Minimap)
 	HelpOpenTicketButton:ClearAllPoints()
 	HelpOpenTicketButton:SetPoint("TOPRIGHT", Minimap, "TOPRIGHT")
@@ -1037,7 +1035,7 @@ function MOD:Load()

 	SVUI_AlertFrame:SetParent(SV.UIParent)
 	SVUI_AlertFrame:SetPoint("TOP", SV.UIParent, "TOP", 0, -18);
-	SV:SetSVMovable(SVUI_AlertFrame, L["Loot  /  Alert Frames"], nil, nil, AlertFramePostMove_Hook)
+	SV.Mentalo:Add(SVUI_AlertFrame, L["Loot  /  Alert Frames"], nil, nil, AlertFramePostMove_Hook)
 	NewHook('AlertFrame_FixAnchors', AlertFramePostMove_Hook)
 	NewHook('AlertFrame_SetLootAnchors', _hook_AlertFrame_SetLootAnchors)
 	NewHook('AlertFrame_SetLootWonAnchors', _hook_AlertFrame_SetLootWonAnchors)
@@ -1053,7 +1051,7 @@ function MOD:Load()
 	LootFrame:UnregisterAllEvents();
 	SVUI_LootFrame:SetFixedPanelTemplate('Transparent');
 	SVUI_LootFrame.title:SetFont(LSM:Fetch("font", "SVUI Number Font"),18,"OUTLINE")
-	SV:SetSVMovable(SVUI_LootFrameHolder, L["Loot Frame"], nil, nil, nil, nil, "SVUI_LootFrame");
+	SV.Mentalo:Add(SVUI_LootFrameHolder, L["Loot Frame"], nil, nil, nil, nil, "SVUI_LootFrame");
 	tinsert(UISpecialFrames, "SVUI_LootFrame");

 	UIParent:UnregisterEvent("LOOT_BIND_CONFIRM")
@@ -1063,7 +1061,7 @@ function MOD:Load()
 	self:RegisterEvent("CONFIRM_LOOT_ROLL", AutoConfirmLoot)
 	self:RegisterEvent("LOOT_BIND_CONFIRM", AutoConfirmLoot)

-	if(SV.___interface < 60000) then
+	if(SV.GameVersion < 60000) then
 		self:RegisterEvent("LOOT_OPENED", OpenedLootHandler)
 	else
 		self:RegisterEvent("LOOT_READY", OpenedLootHandler)
@@ -1073,7 +1071,7 @@ function MOD:Load()
 	self:RegisterEvent("LOOT_CLOSED", LootSimpleEventsHandler);
 	self:RegisterEvent("OPEN_MASTER_LOOT_LIST", LootSimpleEventsHandler);
 	self:RegisterEvent("UPDATE_MASTER_LOOT_LIST", LootSimpleEventsHandler);
-	if self.db.lootRoll then
+	if SV.db.SVOverride.lootRoll then
 		self:RegisterEvent("LOOT_HISTORY_ROLL_CHANGED", LootComplexEventsHandler);
 		self:RegisterEvent("START_LOOT_ROLL", LootComplexEventsHandler);
 		UIParent:UnregisterEvent("START_LOOT_ROLL");
@@ -1107,7 +1105,7 @@ function MOD:Load()
  	exit:SetScript("OnEvent", BailOut_OnEvent)
  	exit:Hide()

-	SV:SetSVMovable(exit, L["Bail Out"])
+	SV.Mentalo:Add(exit, L["Bail Out"])

 	local altPower = CreateFrame("Frame", "SVUI_AltPowerBar", UIParent)
 	altPower:SetPoint("TOP", SV.UIParent, "TOP", 0, -18)
@@ -1116,27 +1114,13 @@ function MOD:Load()
 	PlayerPowerBarAlt:SetPoint("CENTER", altPower, "CENTER")
 	PlayerPowerBarAlt:SetParent(altPower)
 	PlayerPowerBarAlt.ignoreFramePositionManager = true;
-	SV:SetSVMovable(altPower, L["Alternative Power"])
+	SV.Mentalo:Add(altPower, L["Alternative Power"])

 	local wsc = CreateFrame("Frame", "SVUI_WorldStateHolder", SV.UIParent)
 	wsc:SetSize(200, 45)
 	wsc:SetPoint("TOP", SV.UIParent, "TOP", 0, -100)
-	SV:SetSVMovable(wsc, L["Capture Bars"])
+	SV.Mentalo:Add(wsc, L["Capture Bars"])
 	NewHook("UIParent_ManageFramePositions", CaptureBarHandler)

-	SV:SetSVMovable(LossOfControlFrame, L["Loss Control Icon"], nil, nil, nil, nil, "LoC")
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVOverride"] = {
-	["enable"] = true,
-	["loot"] = true,
-	["lootRoll"] = true,
-	["lootRollWidth"] = 328,
-	["lootRollHeight"] = 28,
-}
-
-Registry:NewPackage(MOD, "SVOverride");
\ No newline at end of file
+	SV.Mentalo:Add(LossOfControlFrame, L["Loss Control Icon"], nil, nil, nil, nil, "LoC")
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/plates/SVPlate.lua b/Interface/AddOns/SVUI/packages/plates/SVPlate.lua
index 1a6931a..b00c06e 100644
--- a/Interface/AddOns/SVUI/packages/plates/SVPlate.lua
+++ b/Interface/AddOns/SVUI/packages/plates/SVPlate.lua
@@ -49,12 +49,10 @@ local tremove, tcopy, twipe, tsort, tconcat = table.remove, table.copy, table.wi
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
-local CONFIGS = SV.private
-local MOD = {};
+local MOD = SV:NewPackage("SVPlate", L["NamePlates"]);
 --[[
 ##########################################################
 LOCALIZED GLOBALS
@@ -1471,7 +1469,7 @@ UPDATE AND BUILD
 ##########################################################
 ]]--
 function MOD:UpdateLocals()
-	local db = self.db
+	local db = SV.db.SVPlate
 	if not db then return end

 	NPClassRole = SV.ClassRole;
@@ -1568,7 +1566,7 @@ function MOD:ReLoad()
 end

 function MOD:Load()
-	if SV.db["SVPlate"].enable ~= true then return end
+	if SV.db.SVPlate.enable ~= true then return end
 	self:UpdateLocals()
 	self:RegisterEvent("PLAYER_ENTERING_WORLD")
 	self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
@@ -1577,75 +1575,4 @@ function MOD:Load()
 	self:RegisterEvent("UPDATE_MOUSEOVER_UNIT")
 	WorldFrame:HookScript('OnUpdate', WorldFrameUpdateHook)
 	self:CombatToggle(true)
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVPlate"] = {
-	["enable"] = true,
-	["filter"] = {},
-	["font"] = "SVUI Name Font",
-	["fontSize"] = 10,
-	["fontOutline"] = "OUTLINE",
-	["comboPoints"] = true,
-	["nonTargetAlpha"] = 0.6,
-	["combatHide"] = false,
-	["colorNameByValue"] = true,
-	["showthreat"] = true,
-	["targetcount"] = true,
-	["pointer"] = {
-		["enable"] = true,
-		["colorMatchHealthBar"] = true,
-		["color"] = {0.9, 1, 0.9},
-	},
-	["healthBar"] = {
-		["lowThreshold"] = 0.4,
-		["width"] = 108,
-		["height"] = 9,
-		["text"] = {
-			["enable"] = false,
-			["format"] = "CURRENT",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["attachTo"] = "CENTER",
-		},
-	},
-	["castBar"] = {
-		["height"] = 6,
-		["color"] = {1, 0.81, 0},
-		["noInterrupt"] = {0.78, 0.25, 0.25},
-	},
-	["raidHealIcon"] = {
-		["xOffset"] =  -4,
-		["yOffset"] = 6,
-		["size"] = 36,
-		["attachTo"] = "LEFT",
-	},
-	["threat"] = {
-		["enable"] = false,
-		["goodScale"] = 1,
-		["badScale"] = 1,
-		["goodColor"] = {0.29, 0.68, 0.3},
-		["badColor"] = {0.78, 0.25, 0.25},
-		["goodTransitionColor"] = {0.85, 0.77, 0.36},
-		["badTransitionColor"] = {0.94, 0.6, 0.06},
-	},
-	["auras"] = {
-		["font"] = "SVUI Number Font",
-		["fontSize"] = 7,
-		["fontOutline"] = "OUTLINE",
-		["numAuras"] = 5,
-		["additionalFilter"] = "CC"
-	},
-	["reactions"] = {
-		["tapped"] = {0.6, 0.6, 0.6},
-		["friendlyNPC"] = { 0.31, 0.45, 0.63},
-		["friendlyPlayer"] = {0.29, 0.68, 0.3},
-		["neutral"] = {0.85, 0.77, 0.36},
-		["enemy"] = {0.78, 0.25, 0.25},
-	},
-}
-
-Registry:NewPackage(MOD, "SVPlate")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/SVStats.lua b/Interface/AddOns/SVUI/packages/stats/SVStats.lua
index 1bef13e..3d94bb0 100644
--- a/Interface/AddOns/SVUI/packages/stats/SVStats.lua
+++ b/Interface/AddOns/SVUI/packages/stats/SVStats.lua
@@ -24,23 +24,26 @@ local pairs     = _G.pairs;
 local type      = _G.type;
 local string    = _G.string;
 local math      = _G.math;
+local table 	= _G.table;
 --[[ STRING METHODS ]]--
-local join = string.join;
+local join, len = string.join, string.len;
 --[[ MATH METHODS ]]--
 local min = math.min;
+local tsort, twipe = table.sort, _G.wipe;
 --[[
 ##########################################################
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
-local CONFIGS = SV.private
-local MOD = {};
+local LDB = LibStub("LibDataBroker-1.1", true)
+local MOD = SV:NewPackage("SVStats", L["Statistics"]);
+
 MOD.Anchors = {};
 MOD.Statistics = {};
+MOD.DisabledList = {};
 MOD.StatListing = {[""] = "None"};
 MOD.tooltip = CreateFrame("GameTooltip", "StatisticTooltip", UIParent, "GameTooltipTemplate")
 MOD.BGPanels = {
@@ -62,6 +65,7 @@ MOD.BGStats = {
 	["Changes"] = {13, RATING_CHANGE},
 	["Spec"] = {16, SPECIALIZATION}
 };
+MOD.ListNeedsUpdate = true
 --[[
 ##########################################################
 LOCALIZED GLOBALS
@@ -81,9 +85,9 @@ local myName = UnitName("player");
 local myClass = select(2,UnitClass("player"));
 local classColor = RAID_CLASS_COLORS[myClass];
 local StatMenuFrame = CreateFrame("Frame", "SVUI_StatMenu", UIParent);
-local ListNeedsUpdate = true
 local SCORE_CACHE = {};
-
+local hexHighlight = "FFFFFF";
+local StatMenuListing = {}
 -- When its vertical then "left" = "top" and "right" = "bottom". Yes I know thats ghetto, bite me!
 local positionIndex = {{"middle", "left", "right"}, {"middle", "top", "bottom"}};
 --[[
@@ -116,7 +120,7 @@ local function GrabPlot(parent, slot, max)
 end

 local UpdateAnchor = function()
-	local backdrops, width, height = MOD.db.showBackground
+	local backdrops, width, height = SV.db.SVStats.showBackground
 	for _, anchor in pairs(MOD.Anchors) do
 		if(anchor.vertical) then
 			width = anchor:GetWidth() - 4;
@@ -182,7 +186,7 @@ function MOD:ShowTip(noSpace)
 end

 function MOD:NewAnchor(parent, maxCount, tipAnchor, isTop, customTemplate, isVertical)
-	ListNeedsUpdate = true
+	self.ListNeedsUpdate = true

 	local activeIndex = isVertical and 2 or 1
 	local template, strata
@@ -208,7 +212,7 @@ function MOD:NewAnchor(parent, maxCount, tipAnchor, isTop, customTemplate, isVer
 			parent.holders[position] = CreateFrame("Button", "DataText"..i, parent)
 			parent.holders[position]:RegisterForClicks("AnyUp")
 			parent.holders[position].barframe = CreateFrame("Frame", nil, parent.holders[position])
-			if(MOD.db.showBackground) then
+			if(SV.db.SVStats.showBackground) then
 				parent.holders[position].barframe:Point("TOPLEFT", parent.holders[position], "TOPLEFT", 24, -2)
 				parent.holders[position].barframe:Point("BOTTOMRIGHT", parent.holders[position], "BOTTOMRIGHT", -2, 2)
 				parent.holders[position]:SetFramedButtonTemplate(template)
@@ -251,12 +255,12 @@ function MOD:NewAnchor(parent, maxCount, tipAnchor, isTop, customTemplate, isVer
 			parent.holders[position].textframe:SetFrameStrata(strata)
 			parent.holders[position].text = parent.holders[position].textframe:CreateFontString(nil, "OVERLAY", nil, 7)
 			parent.holders[position].text:SetAllPoints()
-			if(MOD.db.showBackground) then
-				parent.holders[position].text:SetFontTemplate(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, "NONE", "CENTER", "MIDDLE")
+			if(SV.db.SVStats.showBackground) then
+				parent.holders[position].text:SetFontTemplate(LSM:Fetch("font", SV.db.SVStats.font), SV.db.SVStats.fontSize, "NONE", "CENTER", "MIDDLE")
 				parent.holders[position].text:SetShadowColor(0, 0, 0, 0.5)
 				parent.holders[position].text:SetShadowOffset(2, -4)
 			else
-				parent.holders[position].text:SetFontTemplate(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+				parent.holders[position].text:SetFontTemplate(LSM:Fetch("font", SV.db.SVStats.font), SV.db.SVStats.fontSize, SV.db.SVStats.fontOutline)
 				parent.holders[position].text:SetJustifyH("CENTER")
 				parent.holders[position].text:SetJustifyV("MIDDLE")
 			end
@@ -272,6 +276,7 @@ function MOD:Extend(newStat, eventList, onEvents, update, click, focus, blur, in
 	if not newStat then return end
 	self.Statistics[newStat] = {}
 	self.StatListing[newStat] = newStat
+	tinsert(StatMenuListing, newStat)
 	if type(eventList) == "table" then
 		self.Statistics[newStat]["events"] = eventList;
 		self.Statistics[newStat]["event_handler"] = onEvents
@@ -293,14 +298,6 @@ function MOD:Extend(newStat, eventList, onEvents, update, click, focus, blur, in
 	end
 end

-function MOD:UnSet(parent)
-	parent:UnregisterAllEvents()
-	parent:SetScript("OnUpdate", nil)
-	parent:SetScript("OnEnter", nil)
-	parent:SetScript("OnLeave", nil)
-	parent:SetScript("OnClick", nil)
-end
-
 do
 	local dataStrings = {
 		NAME,
@@ -385,6 +382,7 @@ do
 		for i=1, #StatMenuFrame.buttons do
 			StatMenuFrame.buttons[i]:Hide()
 		end
+
 		for i=1, #list do
 			if not StatMenuFrame.buttons[i] then
 				StatMenuFrame.buttons[i] = CreateFrame("Button", nil, StatMenuFrame)
@@ -440,7 +438,8 @@ do
 		end
 	end

-	local function _load(parent, config)
+	local function _load(parent, name, config)
+		parent.StatParent = name
 		if config["events"]then
 			for _, event in pairs(config["events"])do
 				parent:RegisterEvent(event)
@@ -543,27 +542,39 @@ do
 		SV:AddonMessage(L["Battleground statistics temporarily hidden, to show type \"/sv bg\" or \"/sv pvp\""])
 	end

-	local function SetMenuLists()
-		for place,parent in pairs(MOD.Anchors)do
+	local sortMenuList = function(a, b) return a < b end
+
+	function MOD:SetMenuLists()
+		local stats = self.Anchors;
+		local list = StatMenuListing;
+		local disabled = self.DisabledList;
+
+		tsort(list)
+
+		for place,parent in pairs(stats)do
 			for i = 1, parent.numPoints do
 				local this = positionIndex[parent.useIndex][i]
-				tinsert(parent.holders[this].MenuList,{text = NONE, func = function() MOD:ChangeDBVar(NONE, this, "panels", place); MOD:Generate() end});
-				for name,config in pairs(MOD.Statistics) do
-					tinsert(parent.holders[this].MenuList,{text = name, func = function() MOD:ChangeDBVar(name, this, "panels", place); MOD:Generate() end});
-				end
+				local subList = twipe(parent.holders[this].MenuList)
+
+				tinsert(subList,{text = NONE, func = function() MOD:ChangeDBVar(NONE, this, "panels", place); MOD:Generate() end});
+				for _,name in pairs(list) do
+					if(not disabled[name]) then
+						tinsert(subList,{text = name, func = function() MOD:ChangeDBVar(name, this, "panels", place); MOD:Generate() end});
+					end
+				end
 			end
-			ListNeedsUpdate = false;
+			self.ListNeedsUpdate = false;
 		end
 	end

 	function MOD:Generate()
-		if(ListNeedsUpdate) then
-			SetMenuLists()
+		if(self.ListNeedsUpdate) then
+			self:SetMenuLists()
 		end
 		local instance, groupType = IsInInstance()
 		local anchorTable = self.Anchors
 		local statTable = self.Statistics
-		local db = self.db
+		local db = SV.db.SVStats
 		local allowPvP = (db.battleground and not ForceHideBGStats) or false
 		for place, parent in pairs(anchorTable) do
 			local pvpTable = allowPvP and self.BGPanels[place]
@@ -606,11 +617,11 @@ do
 						for panelName, panelData in pairs(db.panels) do
 							if(panelData and type(panelData) == "table") then
 								if(panelName == place and panelData[position] and panelData[position] == name) then
-									_load(parent.holders[position], config)
+									_load(parent.holders[position], name, config)
 								end
 							elseif(panelData and type(panelData) == "string" and panelData == name) then
 								if(name == place) then
-									_load(parent.holders[position], config)
+									_load(parent.holders[position], name, config)
 								end
 							end
 						end
@@ -620,7 +631,17 @@ do
 		end
 		if ForceHideBGStats then ForceHideBGStats = nil end
 	end
-end
+end
+
+function MOD:UnSet(parent)
+	parent:UnregisterAllEvents()
+	parent:SetScript("OnUpdate", nil)
+	parent:SetScript("OnEnter", nil)
+	parent:SetScript("OnLeave", nil)
+	parent:SetScript("OnClick", nil)
+	self.DisabledList[parent.StatParent] = true
+	self:SetMenuLists()
+end
 --[[
 ##########################################################
 BUILD FUNCTION / UPDATE
@@ -631,15 +652,18 @@ function MOD:ReLoad()
 end

 function MOD:Load()
-	local hexHighlight = SV:HexColor("highlight") or "FFFFFF"
+	hexHighlight = SV:HexColor("highlight") or "FFFFFF"
 	local hexClass = classColor.colorStr
 	BGStatString = "|cff" .. hexHighlight .. "%s: |c" .. hexClass .. "%s|r";
-	SVUI_Global["Accountant"] = SVUI_Global["Accountant"] or {};
-	SVUI_Global["Accountant"][playerRealm] = SVUI_Global["Accountant"][playerRealm] or {};
-	SVUI_Global["Accountant"][playerRealm]["gold"] = SVUI_Global["Accountant"][playerRealm]["gold"] or {};
-	SVUI_Global["Accountant"][playerRealm]["gold"][playerName] = SVUI_Global["Accountant"][playerRealm]["gold"][playerName] or 0;
-	SVUI_Global["Accountant"][playerRealm]["tokens"] = SVUI_Global["Accountant"][playerRealm]["tokens"] or {};
-	SVUI_Global["Accountant"][playerRealm]["tokens"][playerName] = SVUI_Global["Accountant"][playerRealm]["tokens"][playerName] or 738;
+
+	self.Accountant = LibSuperVillain:NewGlobal("Accountant")
+
+	self.Accountant = self.Accountant or {};
+	self.Accountant[playerRealm] = self.Accountant[playerRealm] or {};
+	self.Accountant[playerRealm]["gold"] = self.Accountant[playerRealm]["gold"] or {};
+	self.Accountant[playerRealm]["gold"][playerName] = self.Accountant[playerRealm]["gold"][playerName] or 0;
+	self.Accountant[playerRealm]["tokens"] = self.Accountant[playerRealm]["tokens"] or {};
+	self.Accountant[playerRealm]["tokens"][playerName] = self.Accountant[playerRealm]["tokens"][playerName] or 738;

 	self:LoadServerGold()
 	self:CacheRepData()
@@ -653,52 +677,61 @@ function MOD:Load()
 	self.tooltip:SetFrameStrata("DIALOG")
 	self.tooltip:HookScript("OnShow", _hook_TooltipOnShow)

+	if(LDB) then
+	  	for dataName, dataObj in LDB:DataObjectIterator() do
+
+		    local OnEnter, OnLeave, OnClick, lastObj;
+
+		    if dataObj.OnTooltipShow then
+		      	function OnEnter(self)
+					MOD:Tip(self)
+					dataObj.OnTooltipShow(MOD.tooltip)
+					MOD:ShowTip()
+				end
+		    end
+
+		    if dataObj.OnEnter then
+		      	function OnEnter(self)
+					MOD:Tip(self)
+					dataObj.OnEnter(MOD.tooltip)
+					MOD:ShowTip()
+				end
+		    end
+
+		    if dataObj.OnLeave then
+				function OnLeave(self)
+					dataObj.OnLeave(self)
+					MOD.tooltip:Hide()
+				end
+		    end
+
+		    if dataObj.OnClick then
+		    	function OnClick(self, button)
+			      	dataObj.OnClick(self, button)
+			    end
+			end
+
+			local function textUpdate(event, name, key, value, dataobj)
+				if value == nil or (len(value) > 5) or value == 'n/a' or name == value then
+					lastObj.text:SetText(value ~= 'n/a' and value or name)
+				else
+					lastObj.text:SetText(name..': '.. '|cff' .. hexHighlight ..value..'|r')
+				end
+			end
+
+		    local function OnEvent(self)
+				lastObj = self;
+				LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..dataName.."_text", textUpdate)
+				LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..dataName.."_value", textUpdate)
+				LDB.callbacks:Fire("LibDataBroker_AttributeChanged_"..dataName.."_text", dataName, nil, dataObj.text, dataObj)
+		    end
+
+		    MOD:Extend(dataName, {"PLAYER_ENTERING_WORLD"}, OnEvent, nil, OnClick, OnEnter, OnLeave)
+	  	end
+	end
+
 	self:Generate()
 	self:RegisterEvent("PLAYER_ENTERING_WORLD", "Generate")

 	myName = UnitName("player");
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVStats"] = {
-	["enable"] = true,
-	["font"] = "SVUI Number Font",
-	["fontSize"] = 12,
-	["fontOutline"] = "OUTLINE",
-	["showBackground"] = true,
-	["shortGold"] = true,
-	["panels"] = {
-		["BottomRightDataPanel"] = {
-			["right"] = "Bags",
-			["left"] = "Friends",
-			["middle"] = "Guild",
-		},
-		["BottomLeftDataPanel"] = {
-			["left"] = "Time",
-			["middle"] = "System",
-			["right"] = "Gold",
-		},
-		["TopLeftDataPanel"] = {
-			["left"] = "Durability Bar",
-			["middle"] = "Reputation Bar",
-			["right"] = "Experience Bar",
-		},
-		["TopRightDataPanel"] = {
-			["left"] = "None",
-			["middle"] = "None",
-			["right"] = "None",
-		},
-	},
-	["localtime"] = true,
-	["time24"] = false,
-	["battleground"] = true,
-	["topLeftDockPanel"] = true,
-	["bottomLeftDockPanel"] = true,
-	["bottomRightDockPanel"] = true,
-	["panelTransparency"] = false,
-}
-
-Registry:NewPackage(MOD, "SVStats")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/bags.lua b/Interface/AddOns/SVUI/packages/stats/stats/bags.lua
index aa9cba7..0d79b1f 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/bags.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/bags.lua
@@ -49,9 +49,8 @@ local twipe, tsort = table.wipe, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -100,5 +99,5 @@ local BagsColorUpdate = function()
 	end
 end

-Registry:NewCallback(BagsColorUpdate)
+SV:NewCallback(BagsColorUpdate)
 MOD:Extend("Bags", StatEvents,	bags_events, nil, bags_click, bags_focus);
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/cta.lua b/Interface/AddOns/SVUI/packages/stats/stats/cta.lua
index 5901ec0..3a195b1 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/cta.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/cta.lua
@@ -49,9 +49,8 @@ local twipe, tsort = table.wipe, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -156,6 +155,6 @@ local CTAColorUpdate = function()
 		CTA_OnEvent(currentObject)
 	end
 end
-Registry:NewCallback(CTAColorUpdate)
+SV:NewCallback(CTAColorUpdate)

 MOD:Extend('Call to Arms', StatEvents, CTA_OnEvent, nil, CTA_OnClick, CTA_OnEnter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/dps.lua b/Interface/AddOns/SVUI/packages/stats/stats/dps.lua
index c791785..bee4c11 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/dps.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/dps.lua
@@ -31,9 +31,8 @@ local match, sub, join = string.match, string.sub, string.join;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -125,5 +124,5 @@ local DPSColorUpdate = function()
 	end
 end

-Registry:NewCallback(DPSColorUpdate)
+SV:NewCallback(DPSColorUpdate)
 MOD:Extend('DPS', StatEvents, DPS_OnEvent, nil, DPS_OnClick, DPS_OnEnter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/durability.lua b/Interface/AddOns/SVUI/packages/stats/stats/durability.lua
index d6fd41e..d2c817f 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/durability.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/durability.lua
@@ -49,9 +49,8 @@ local twipe, tsort = table.wipe, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
 local MOD = SV.SVStats;
 --[[
@@ -145,7 +144,7 @@ local DurColorUpdate = function()
 		Durability_OnEvent(currentObject)
 	end
 end
-Registry:NewCallback(DurColorUpdate)
+SV:NewCallback(DurColorUpdate)

 MOD:Extend("Durability", StatEvents, Durability_OnEvent, nil, Durability_OnClick, Durability_OnEnter)
 MOD:Extend("Durability Bar", StatEvents, DurabilityBar_OnEvent, nil, Durability_OnClick, Durability_OnEnter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/experience.lua b/Interface/AddOns/SVUI/packages/stats/stats/experience.lua
index e28184e..eafb704 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/experience.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/experience.lua
@@ -19,6 +19,7 @@ STATS:Extend EXAMPLE USAGE: MOD:Extend(newStat,eventList,onEvents,update,click,f
 LOCALIZED LUA FUNCTIONS
 ##########################################################
 ]]--
+if (UnitLevel("player") == GetMaxPlayerLevel()) then return end;
 --[[ GLOBALS ]]--
 local _G = _G;
 local unpack 	= _G.unpack;
@@ -32,8 +33,8 @@ local gsub = string.gsub;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local LSM = LibStub("LibSharedMedia-3.0")
 local MOD = SV.SVStats;
 --[[
@@ -129,7 +130,7 @@ local function Experience_OnEnter(self)
 end

 local function ExperienceBar_OnLoad(self)
-	if (UnitLevel("player") == GetMaxPlayerLevel())then
+	if (UnitLevel("player") == GetMaxPlayerLevel()) then
 		self:Hide()
 		MOD:UnSet(self)
 	end
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/friends.lua b/Interface/AddOns/SVUI/packages/stats/stats/friends.lua
index d009f08..b0fc852 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/friends.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/friends.lua
@@ -49,9 +49,8 @@ local twipe, tsort = table.wipe, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -381,6 +380,6 @@ local FriendsColorUpdate = function()
 	end
 end

-Registry:NewCallback(FriendsColorUpdate)
+SV:NewCallback(FriendsColorUpdate)

 MOD:Extend('Friends', StatEvents, OnEvent, nil, Click, OnEnter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/gold.lua b/Interface/AddOns/SVUI/packages/stats/stats/gold.lua
index 9976ff6..1a59fcf 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/gold.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/gold.lua
@@ -49,8 +49,8 @@ local twipe, tsort = table.wipe, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -101,21 +101,21 @@ end
 local function Gold_OnEvent(self, event,...)
 	if not IsLoggedIn() then return end
 	local current = GetMoney()
-	recorded = SVUI_Global["Accountant"][playerRealm]["gold"][playerName] or GetMoney();
+	recorded = MOD.Accountant[playerRealm]["gold"][playerName] or GetMoney();
 	local adjusted = current - recorded;
 	if recorded > current then
 		loss = loss - adjusted
 	else
 		gains = gains + adjusted
 	end
-	self.text:SetText(FormatCurrency(current, MOD.db.shortGold))
-	SVUI_Global["Accountant"][playerRealm]["gold"][playerName] = GetMoney()
+	self.text:SetText(FormatCurrency(current, SV.db.SVStats.shortGold))
+	MOD.Accountant[playerRealm]["gold"][playerName] = GetMoney()
 end

 local function Gold_OnClick(self, button)
 	if IsLeftControlKeyDown() and IsShiftKeyDown() then
-		SVUI_Global["Accountant"][playerRealm]["gold"] = {};
-		SVUI_Global["Accountant"][playerRealm]["gold"][playerName] = GetMoney();
+		MOD.Accountant[playerRealm]["gold"] = {};
+		MOD.Accountant[playerRealm]["gold"][playerName] = GetMoney();
 		Gold_OnEvent(self)
 		MOD.tooltip:Hide()
 	else
@@ -134,7 +134,7 @@ local function Gold_OnEnter(self)
 		MOD.tooltip:AddDoubleLine(L["Profit:"],FormatCurrency(gains - loss),0,1,0,1,1,1)
 	end
 	MOD.tooltip:AddLine(" ")
-	local cash = SVUI_Global["Accountant"][playerRealm]["gold"][playerName];
+	local cash = MOD.Accountant[playerRealm]["gold"][playerName];
 	MOD.tooltip:AddLine(L[playerName..": "])
 	MOD.tooltip:AddDoubleLine(L["Total: "], FormatCurrency(cash), 1,1,1,1,1,1)
 	MOD.tooltip:AddLine(" ")
@@ -157,9 +157,10 @@ end
 MOD:Extend('Gold', StatEvents, Gold_OnEvent, nil, Gold_OnClick, Gold_OnEnter);

 function MOD:LoadServerGold()
+	local SVUI_Global = _G.SVUI_Global
 	local totalGold = 0;
-	for name,amount in pairs(SVUI_Global["Accountant"][playerRealm]["gold"])do
-		if SVUI_Global["Accountant"][playerRealm]["gold"][name] then
+	for name,amount in pairs(self.Accountant[playerRealm]["gold"])do
+		if self.Accountant[playerRealm]["gold"][name] then
 			serverGold[name] = amount;
 			totalGold = totalGold + amount
 		end
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/guild.lua b/Interface/AddOns/SVUI/packages/stats/stats/guild.lua
index 81aa645..8990323 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/guild.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/guild.lua
@@ -36,9 +36,8 @@ local twipe, tsort = table.wipe, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -306,6 +305,6 @@ local GuildColorUpdate = function()
 		Guild_OnEvent(currentObject, 'SVUI_COLOR_UPDATE')
 	end
 end
-Registry:NewCallback(GuildColorUpdate)
+SV:NewCallback(GuildColorUpdate)

 MOD:Extend('Guild', StatEvents, Guild_OnEvent, nil, Guild_OnClick, Guild_OnEnter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/hps.lua b/Interface/AddOns/SVUI/packages/stats/stats/hps.lua
index 912b008..1375031 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/hps.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/hps.lua
@@ -32,9 +32,8 @@ local max = math.max;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -132,5 +131,5 @@ local HPSColorUpdate = function()
 	end
 end

-Registry:NewCallback(HPSColorUpdate)
+SV:NewCallback(HPSColorUpdate)
 MOD:Extend('HPS', StatEvents, HPS_OnEvent, nil, HPS_OnClick, HPS_OnEnter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/reputation.lua b/Interface/AddOns/SVUI/packages/stats/stats/reputation.lua
index 58beb27..86a7c8d 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/reputation.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/reputation.lua
@@ -33,8 +33,8 @@ local format, gsub = string.format, string.gsub;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local MOD = SV.SVStats;
 --[[
 ##########################################################
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/system.lua b/Interface/AddOns/SVUI/packages/stats/stats/system.lua
index 194cc27..83586c7 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/system.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/system.lua
@@ -37,8 +37,8 @@ local tsort = table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -66,23 +66,26 @@ local function formatMem(memory)
 	local mult = 10^1
 	if memory > 999 then
 		local mem = ((memory/1024) * mult) / mult
-		return format(megaByteString, mem)
+		return megaByteString:format(mem)
 	else
 		local mem = (memory * mult) / mult
-		return format(kiloByteString, mem)
+		return kiloByteString:format(mem)
 	end
 end

 local memoryTable = {}
 local cpuTable = {}
+--local eventTable = {"ZONE_CHANGED", "ZONE_CHANGED_NEW_AREA", "PLAYER_ENTERING_WORLD"}
+
 local function RebuildAddonList()
 	local addOnCount = GetNumAddOns()
 	if (addOnCount == #memoryTable) then return end
 	memoryTable = {}
 	cpuTable = {}
 	for i = 1, addOnCount do
-		memoryTable[i] = { i, select(2, GetAddOnInfo(i)), 0, IsAddOnLoaded(i) }
-		cpuTable[i] = { i, select(2, GetAddOnInfo(i)), 0, IsAddOnLoaded(i) }
+		local addonName = select(2, GetAddOnInfo(i))
+		memoryTable[i] = { i, addonName, 0, IsAddOnLoaded(i) }
+		cpuTable[i] = { i, addonName, 0, IsAddOnLoaded(i) }
 	end
 end

@@ -138,11 +141,13 @@ local function OnEnter(self)
 	UpdateMemory()
 	bandwidth = GetAvailableBandwidth()

-	MOD.tooltip:AddDoubleLine(L['Home Latency:'], format(homeLatencyString, select(3, GetNetStats())), 0.69, 0.31, 0.31,0.84, 0.75, 0.65)
+	MOD.tooltip:AddDoubleLine(L['Home Latency:'], homeLatencyString:format(select(3, GetNetStats())), 0.69, 0.31, 0.31,0.84, 0.75, 0.65)

 	if bandwidth ~= 0 then
-		MOD.tooltip:AddDoubleLine(L['Bandwidth'] , format(bandwidthString, bandwidth),0.69, 0.31, 0.31,0.84, 0.75, 0.65)
-		MOD.tooltip:AddDoubleLine(L['Download'] , format(percentageString, GetDownloadedPercentage() *100),0.69, 0.31, 0.31, 0.84, 0.75, 0.65)
+		local percent = GetDownloadedPercentage()
+		percent = percent * 100
+		MOD.tooltip:AddDoubleLine(L['Bandwidth'] , bandwidthString:format(bandwidth), 0.69, 0.31, 0.31,0.84, 0.75, 0.65)
+		MOD.tooltip:AddDoubleLine(L['Download'] , percentageString:format(percent), 0.69, 0.31, 0.31, 0.84, 0.75, 0.65)
 		MOD.tooltip:AddLine(" ")
 	end

@@ -150,7 +155,7 @@ local function OnEnter(self)
 	MOD.tooltip:AddDoubleLine(L['Total Memory:'], formatMem(totalMemory), 0.69, 0.31, 0.31,0.84, 0.75, 0.65)
 	if cpuProfiling then
 		totalCPU = UpdateCPU()
-		MOD.tooltip:AddDoubleLine(L['Total CPU:'], format(homeLatencyString, totalCPU), 0.69, 0.31, 0.31,0.84, 0.75, 0.65)
+		MOD.tooltip:AddDoubleLine(L['Total CPU:'], homeLatencyString:format(totalCPU), 0.69, 0.31, 0.31,0.84, 0.75, 0.65)
 	end

 	local red, green
@@ -171,9 +176,32 @@ local function OnEnter(self)
 			if (cpuTable[i][4]) then
 				red = cpuTable[i][3] / totalCPU
 				green = 1 - red
-				MOD.tooltip:AddDoubleLine(cpuTable[i][2], format(homeLatencyString, cpuTable[i][3]), 1, 1, 1, red, green + .5, 0)
+				MOD.tooltip:AddDoubleLine(cpuTable[i][2], homeLatencyString:format(cpuTable[i][3]), 1, 1, 1, red, green + .5, 0)
 			end
 		end
+
+		-- if(MOD.DebugList) then
+		-- 	MOD.tooltip:AddLine(" ")
+		-- 	for _,schema in pairs(MOD.DebugList) do
+		--         local obj = SV[schema]
+		--         if obj and obj.___eventframe then
+		--             local upTime, numEvents = GetFrameCPUUsage(obj.___eventframe)
+		--             local eventString = ("%s:"):format(schema)
+		-- 			local eventResults = ("Calls: |cffFFFF00%d|r @: |cffFFFF00%dms|r"):format(numEvents, upTime)
+		-- 			MOD.tooltip:AddDoubleLine(eventString, eventResults, 1, 0.5, 0, 1, 1, 1)
+		--         end
+		--     end
+		-- end
+
+		-- MOD.tooltip:AddLine(" ")
+		-- for i = 1, #eventTable do
+		-- 	local upTime, numEvents = GetEventCPUUsage(eventTable[i])
+		-- 	local eventString = ("%s:"):format(eventTable[i])
+		-- 	local eventResults = ("Calls: |cffFFFF00%d|r @: |cffFFFF00%dms|r"):format(numEvents, upTime)
+		-- 	MOD.tooltip:AddDoubleLine(eventString, eventResults, 1, 0.5, 0, 1, 1, 1)
+		-- end
+
+
 		MOD.tooltip:AddLine(" ")
 		MOD.tooltip:AddLine(L['(Hold Shift) Memory Usage'])
 	end
@@ -186,28 +214,53 @@ local function OnLeave(self)
 	MOD.tooltip:Hide()
 end

-local function Update(self, t)
-	int = int - t
-	int2 = int2 - t
-
-	if int < 0 then
-		RebuildAddonList()
-		int = 10
+local Update
+if(SV.DebugMode) then
+	Update = function(self, t)
+		int = int - t
+		if int < 0 then
+			UpdateAddOnMemoryUsage()
+			local svuiRAMout = formatMem(GetAddOnMemoryUsage("SVUI"))
+			self.text:SetFormattedText("RAM: %s%s|r", statusColors[1], svuiRAMout)
+			int = 1
+			if enteredFrame then
+				OnEnter(self)
+			end
+		end
 	end
-	if int2 < 0 then
-		local framerate = floor(GetFramerate())
-		local latency = select(4, GetNetStats())
-
-		self.text:SetFormattedText("FPS: %s%d|r MS: %s%d|r",
-			statusColors[framerate >= 30 and 1 or (framerate >= 20 and framerate < 30) and 2 or (framerate >= 10 and framerate < 20) and 3 or 4],
-			framerate,
-			statusColors[latency < 150 and 1 or (latency >= 150 and latency < 300) and 2 or (latency >= 300 and latency < 500) and 3 or 4],
-			latency)
-		int2 = 1
-		if enteredFrame then
-			OnEnter(self)
-		end
+else
+	Update = function(self, t)
+		int = int - t
+		int2 = int2 - t
+
+		if int < 0 then
+			RebuildAddonList()
+			int = 10
+		end
+		if int2 < 0 then
+			local framerate = floor(GetFramerate())
+			local latency = select(4, GetNetStats())
+
+			self.text:SetFormattedText("FPS: %s%d|r MS: %s%d|r",
+				statusColors[framerate >= 30 and 1 or (framerate >= 20 and framerate < 30) and 2 or (framerate >= 10 and framerate < 20) and 3 or 4],
+				framerate,
+				statusColors[latency < 150 and 1 or (latency >= 150 and latency < 300) and 2 or (latency >= 300 and latency < 500) and 3 or 4],
+				latency)
+			int2 = 1
+			if enteredFrame then
+				OnEnter(self)
+			end
+		end
 	end
 end

-MOD:Extend('System', nil, nil, Update, Click, OnEnter, OnLeave)
\ No newline at end of file
+MOD:Extend('System', nil, nil, Update, Click, OnEnter, OnLeave)
+
+--[[
+OTHER CHECKS
+
+GetScriptCPUUsage()
+print(debugstack())
+local usage, calls = GetFunctionCPUUsage(function, includeSubroutines)
+local usage, numEvents = GetEventCPUUsage(["event"])
+]]--
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/time.lua b/Interface/AddOns/SVUI/packages/stats/stats/time.lua
index 3c759d5..39755a5 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/time.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/time.lua
@@ -35,9 +35,8 @@ local floor = math.floor;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -74,7 +73,7 @@ end

 local function ConvertTime(h, m)
 	local AmPm
-	if MOD.db.time24 == true then
+	if SV.db.SVStats.time24 == true then
 		return h, m, -1
 	else
 		if h >= 12 then
@@ -89,7 +88,7 @@ local function ConvertTime(h, m)
 end

 local function CalculateTimeValues(tooltip)
-	if (tooltip and MOD.db.localtime) or (not tooltip and not MOD.db.localtime) then
+	if (tooltip and SV.db.SVStats.localtime) or (not tooltip and not SV.db.SVStats.localtime) then
 		return ConvertTime(GetGameTime())
 	else
 		local	dateTable =	date("*t")
@@ -177,10 +176,10 @@ local function OnEnter(self)

 	MOD.tooltip:AddLine(" ")
 	if AmPm == -1 then
-		MOD.tooltip:AddDoubleLine(MOD.db.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME,
+		MOD.tooltip:AddDoubleLine(SV.db.SVStats.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME,
 			format(europeDisplayFormat_nocolor, Hr, Min), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b)
 	else
-		MOD.tooltip:AddDoubleLine(MOD.db.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME,
+		MOD.tooltip:AddDoubleLine(SV.db.SVStats.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME,
 			format(ukDisplayFormat_nocolor, Hr, Min, APM[AmPm]), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b)
 	end

@@ -233,6 +232,6 @@ local ColorUpdate = function()
 	end
 end

-Registry:NewCallback(ColorUpdate)
+SV:NewCallback(ColorUpdate)

 MOD:Extend('Time', {"UPDATE_INSTANCE_INFO"}, OnEvent, Update, Click, OnEnter, OnLeave)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua b/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
index 464ea65..17ded7f 100644
--- a/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
+++ b/Interface/AddOns/SVUI/packages/stats/stats/tokens.lua
@@ -31,8 +31,8 @@ local twipe     = table.wipe;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local MOD = SV.SVStats;
 --[[
 ##########################################################
@@ -80,7 +80,7 @@ end

 local function TokensEventHandler(self, event,...)
     if not IsLoggedIn() or not self then return end
-    local id = SVUI_Global["Accountant"][playerRealm]["tokens"][playerName];
+    local id = MOD.Accountant[playerRealm]["tokens"][playerName];
     local _, current, tex = GetCurrencyInfo(id)
     local currentText = ("\124T%s:12\124t %s"):format(tex, current);
     self.text:SetText(currentText)
@@ -90,7 +90,7 @@ local function AddToTokenMenu(id)
 	local name, _, tex, _, _, _, _ = GetCurrencyInfo(id)
 	local itemName = "\124T"..tex..":12\124t "..name;
 	local fn = function()
-		SVUI_Global["Accountant"][playerRealm]["tokens"][playerName] = id;
+		MOD.Accountant[playerRealm]["tokens"][playerName] = id;
 		TokensEventHandler(TokenParent)
 	end
 	tinsert(TokenMenuList, {text = itemName, func = fn});
diff --git a/Interface/AddOns/SVUI/packages/tip/SVTip.lua b/Interface/AddOns/SVUI/packages/tip/SVTip.lua
index 1384ff4..6a92e5f 100644
--- a/Interface/AddOns/SVUI/packages/tip/SVTip.lua
+++ b/Interface/AddOns/SVUI/packages/tip/SVTip.lua
@@ -36,12 +36,10 @@ local twipe, tconcat = table.wipe, table.concat;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
-local CONFIGS = SV.private
-local MOD = {};
+local MOD = SV:NewPackage("SVTip", L["Tooltip"]);
 --[[
 ##########################################################
 LOCAL VARIABLES
@@ -209,103 +207,6 @@ local ClearMaskColors = function(self)
 	self[8]:SetTexture(0, 0, 0)
 end

--- local _hook_GameTooltip_ShowCompareItem = function(self, shift)
--- 	if not self then self = GameTooltip end
--- 	local _,link = self:GetItem()
--- 	if not link then return; end
--- 	local shoppingTooltip1, shoppingTooltip2, shoppingTooltip3 = unpack(self.shoppingTooltips)
--- 	local item1 = nil;
--- 	local item2 = nil;
--- 	local item3 = nil;
--- 	local side = "left"
-
--- 	if shoppingTooltip1:SetHyperlinkCompareItem(link, 1, shift, self) then item1 = true end
--- 	if shoppingTooltip2:SetHyperlinkCompareItem(link, 2, shift, self) then item2 = true end
--- 	if shoppingTooltip3:SetHyperlinkCompareItem(link, 3, shift, self) then item3 = true end
-
--- 	local rightDist = 0;
--- 	local leftPos = self:GetLeft()
--- 	local rightPos = self:GetRight()
-
--- 	if not rightPos then rightPos = 0 end
--- 	if not leftPos then leftPos = 0 end
-
--- 	rightDist = GetScreenWidth() - rightPos;
-
--- 	if(leftPos and (rightDist < leftPos)) then
--- 		side = "left"
--- 	else
--- 		side = "right"
--- 	end
-
--- 	if(self:GetAnchorType() and (self:GetAnchorType() ~= "ANCHOR_PRESERVE")) then
--- 		local totalWidth = 0;
--- 		if item1 then
--- 			totalWidth = totalWidth + shoppingTooltip1:GetWidth()
--- 		end
--- 		if item2 then
--- 			totalWidth = totalWidth + shoppingTooltip2:GetWidth()
--- 		end
--- 		if item3 then
--- 			totalWidth = totalWidth + shoppingTooltip3:GetWidth()
--- 		end
--- 		if(side == "left" and (totalWidth > leftPos)) then
--- 			self:SetAnchorType(self:GetAnchorType(), (totalWidth - leftPos), 0)
--- 		elseif(side == "right" and ((rightPos + totalWidth) > GetScreenWidth())) then
--- 			self:SetAnchorType(self:GetAnchorType(), -((rightPos + totalWidth) - GetScreenWidth()), 0)
--- 		end
--- 	end
-
--- 	if item3 then
--- 		shoppingTooltip3:SetOwner(self, "ANCHOR_NONE")
--- 		shoppingTooltip3:ClearAllPoints()
--- 		if(side and side == "left") then
--- 			shoppingTooltip3:SetPoint("TOPRIGHT", self, "TOPLEFT", -2, -10)
--- 		else
--- 			shoppingTooltip3:SetPoint("TOPLEFT", self, "TOPRIGHT", 2, -10)
--- 		end
--- 		shoppingTooltip3:SetHyperlinkCompareItem(link, 3, shift, self)
--- 		shoppingTooltip3:Show()
--- 	end
-
--- 	if item1 then
--- 		if item3 then
--- 			shoppingTooltip1:SetOwner(shoppingTooltip3, "ANCHOR_NONE")
--- 		else
--- 			shoppingTooltip1:SetOwner(self, "ANCHOR_NONE")
--- 		end
--- 		shoppingTooltip1:ClearAllPoints()
-
--- 		if(side and side == "left") then
--- 			if item3 then
--- 				shoppingTooltip1:SetPoint("TOPRIGHT", shoppingTooltip3, "TOPLEFT", -2, 0)
--- 			else
--- 				shoppingTooltip1:SetPoint("TOPRIGHT", self, "TOPLEFT", -2, -10)
--- 			end
--- 		else
--- 			if item3 then
--- 				shoppingTooltip1:SetPoint("TOPLEFT", shoppingTooltip3, "TOPRIGHT", 2, 0)
--- 			else
--- 				shoppingTooltip1:SetPoint("TOPLEFT", self, "TOPRIGHT", 2, -10)
--- 			end
--- 		end
--- 		shoppingTooltip1:SetHyperlinkCompareItem(link, 1, shift, self)
--- 		shoppingTooltip1:Show()
-
--- 		if item2 then
--- 			shoppingTooltip2:SetOwner(shoppingTooltip1, "ANCHOR_NONE")
--- 			shoppingTooltip2:ClearAllPoints()
--- 			if (side and side == "left") then
--- 				shoppingTooltip2:SetPoint("TOPRIGHT", shoppingTooltip1, "TOPLEFT", -2, 0)
--- 			else
--- 				shoppingTooltip2:SetPoint("TOPLEFT", shoppingTooltip1, "TOPRIGHT", 2, 0)
--- 			end
--- 			shoppingTooltip2:SetHyperlinkCompareItem(link, 2, shift, self)
--- 			shoppingTooltip2:Show()
--- 		end
--- 	end
--- end
-
 function MOD:INSPECT_READY(_,guid)
 	if MOD.lastGUID ~= guid then return end
 	local unit = "mouseover"
@@ -374,8 +275,8 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self)
 	self.SuperBorder:ClearMaskColors()
 	local unit = select(2, self:GetUnit())
 	local TamablePet;
-	if self:GetOwner()  ~= UIParent and MOD.db.visibility.unitFrames  ~= "NONE" then
-		local vis = MOD.db.visibility.unitFrames;
+	if self:GetOwner()  ~= UIParent and SV.db.SVTip.visibility.unitFrames  ~= "NONE" then
+		local vis = SV.db.SVTip.visibility.unitFrames;
 		if vis == "ALL" or not (vis == "SHIFT" and IsShiftKeyDown() or vis == "CTRL" and IsControlKeyDown() or vis == "ALT" and IsAltKeyDown()) then
 			self:Hide()
 			return
@@ -406,7 +307,7 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self)

 		self.SuperBorder:SetBurstColor(burst.r, burst.g, burst.b)

-		if MOD.db.playerTitles and pvpName then
+		if SV.db.SVTip.playerTitles and pvpName then
 			unitName = pvpName
 		end
 		if unitRealm and unitRealm ~= "" then
@@ -432,7 +333,7 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self)
 				guildName = guildName.."-"..guildRealm
 			end

-			if guildRankName and MOD.db.guildRanks then
+			if guildRankName and SV.db.SVTip.guildRanks then
 				GameTooltipTextLeft2:SetText(("<|cff00ff10%s|r> [|cff00ff10%s|r]"):format(guildName, guildRankName))
 			else
 				GameTooltipTextLeft2:SetText(("<|cff00ff10%s|r>"):format(guildName))
@@ -452,7 +353,7 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self)
 			lvlLine:SetFormattedText("|cff%02x%02x%02x%s|r %s |c%s%s|r", qColor.r * 255, qColor.g * 255, qColor.b * 255, unitLevel > 0 and unitLevel or SKULL_ICON, race or "", colors.colorStr, className)
 		end

-		if(not IsAddOnLoaded("HealBot") and (MOD.db.inspectInfo or isShiftKeyDown)) then
+		if(not IsAddOnLoaded("HealBot") and (SV.db.SVTip.inspectInfo or isShiftKeyDown)) then
 			ShowInspectInfo(self, unit, unitLevel, colors.r, colors.g, colors.b, 0)
 		end
 	else
@@ -503,7 +404,7 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self)
 	if(TamablePet) then
 		GameTooltip:AddLine(TAMABLE_INDICATOR)
 	end
-	if MOD.db.targetInfo then
+	if SV.db.SVTip.targetInfo then
 		local unitTarget = unit.."target"
 		if(unit ~= "player" and UnitExists(unitTarget)) then
 			if UnitIsPlayer(unitTarget) and not UnitHasVehicleUI(unitTarget) then
@@ -536,7 +437,7 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self)
 end

 local _hook_GameTooltipStatusBar_OnValueChanged = function(self, value)
-	if not value or not MOD.db.healthBar.text or not self.text then return end
+	if not value or not SV.db.SVTip.healthBar.text or not self.text then return end
 	local unit = select(2,self:GetParent():GetUnit())
 	if not unit then
 		local mFocus = GetMouseFocus()
@@ -568,7 +469,7 @@ local _hook_GameTooltip_OnTooltipSetItem = function(self)
 		end
 		local left = "";
 		local right = "";
-		if itemID ~= nil and MOD.db.spellID then
+		if itemID ~= nil and SV.db.SVTip.spellID then
 			left = "|cFFCA3C3CSpell ID: |r"
 			right = ("|cFFCA3C3C%s|r %s"):format(ID,itemID):match(":(%w+)")
 		end
@@ -606,7 +507,7 @@ end

 local _hook_OnSetUnitAura = function(self, unit, index, filter)
 	local _, _, _, _, _, _, _, caster, _, _, spellID = UnitAura(unit, index, filter)
-	if spellID and MOD.db.spellID then
+	if spellID and SV.db.SVTip.spellID then
 		self.SuperBorder:ClearMaskColors()
 		if caster then
 			local name = UnitName(caster)
@@ -666,19 +567,19 @@ end
 local _hook_GameTooltip_SetDefaultAnchor = function(self, parent)
 	if SV.db.SVTip.enable ~= true then return end
 	if(self:GetAnchorType() ~= "ANCHOR_NONE") then return end
-	if InCombatLockdown() and MOD.db.visibility.combat then
+	if InCombatLockdown() and SV.db.SVTip.visibility.combat then
 		self:Hide()
 		return
 	end
 	if parent then
-		if(MOD.db.cursorAnchor) then
+		if(SV.db.SVTip.cursorAnchor) then
 			self:SetOwner(parent, "ANCHOR_CURSOR")
 			return
 		else
 			self:SetOwner(parent, "ANCHOR_NONE")
 		end
 	end
-	if not SV:TestMovableMoved("SVUI_ToolTip_MOVE")then
+	if not SV.Mentalo:HasMoved("SVUI_ToolTip_MOVE")then
 		if(SVUI_ContainerFrame and SVUI_ContainerFrame:IsShown()) then
 			self:SetPoint("BOTTOMLEFT", SVUI_ContainerFrame, "TOPLEFT", 0, 18)
 		elseif(RightSuperDock:GetAlpha() == 1 and RightSuperDock:IsShown()) then
@@ -954,7 +855,7 @@ end

 function MOD:Load()
 	BNToastFrame:Point("TOPRIGHT", SVUI_MinimapFrame, "BOTTOMLEFT", 0, -10)
-	SV:SetSVMovable(BNToastFrame, L["BNet Frame"], nil, nil, nil, nil, "BNET")
+	SV.Mentalo:Add(BNToastFrame, L["BNet Frame"], nil, nil, nil, nil, "BNET")
 	NewHook(BNToastFrame, "SetPoint", _hook_BNToastOnShow)
 	if not SV.db.SVTip.enable then return end

@@ -962,9 +863,9 @@ function MOD:Load()
 	anchor:Point("BOTTOMRIGHT", RightSuperDock, "TOPRIGHT", 0, 60)
 	anchor:Size(130, 20)
 	anchor:SetFrameLevel(anchor:GetFrameLevel()  +  50)
-	SV:SetSVMovable(anchor, L["Tooltip"])
+	SV.Mentalo:Add(anchor, L["Tooltip"])

-	local barHeight = self.db.healthBar.height
+	local barHeight = SV.db.SVTip.healthBar.height

 	ApplyTooltipSkins()

@@ -975,7 +876,7 @@ function MOD:Load()
 	GameTooltipStatusBar:SetPoint("BOTTOMRIGHT", GameTooltip.SuperBorder, "BOTTOMRIGHT", -3, 3)
 	GameTooltipStatusBar.text = GameTooltipStatusBar:CreateFontString(nil, "OVERLAY")
 	GameTooltipStatusBar.text:Point("CENTER", GameTooltipStatusBar, "CENTER", 0, 0)
-	GameTooltipStatusBar.text:SetFontTemplate(LSM:Fetch("font", MOD.db.healthBar.font), MOD.db.healthBar.fontSize, "OUTLINE")
+	GameTooltipStatusBar.text:SetFontTemplate(LSM:Fetch("font", SV.db.SVTip.healthBar.font), SV.db.SVTip.healthBar.fontSize, "OUTLINE")

 	if not GameTooltipStatusBar.border then
 		local border = CreateFrame("Frame", nil, GameTooltipStatusBar)
@@ -996,7 +897,7 @@ function MOD:Load()
 	NewHook(GameTooltip, "SetUnitDebuff", _hook_OnSetUnitAura)
 	NewHook(GameTooltip, "SetUnitConsolidatedBuff", _hook_OnSetHyperUnitAura)

-	if self.db.spellID then
+	if SV.db.SVTip.spellID then
 		NewHook("SetItemRef", _hook_OnItemRef)
 		GameTooltip:HookScript("OnTooltipSetSpell", _hook_GameTooltip_OnTooltipSetSpell)
 	end
@@ -1006,32 +907,4 @@ function MOD:Load()
 	GameTooltip:HookScript("OnTooltipSetUnit", _hook_GameTooltip_OnTooltipSetUnit)
 	GameTooltipStatusBar:HookScript("OnValueChanged", _hook_GameTooltipStatusBar_OnValueChanged)
 	self:RegisterEvent("MODIFIER_STATE_CHANGED", TooltipModifierChangeHandler)
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-CONFIGS["SVTip"] = {
-	["enable"] = true,
-	["cursorAnchor"] = false,
-	["targetInfo"] = true,
-	["playerTitles"] = true,
-	["guildRanks"] = true,
-	["inspectInfo"] = false,
-	["itemCount"] = true,
-	["spellID"] = false,
-	["progressInfo"] = true,
-	["visibility"] = {
-		["unitFrames"] = "NONE",
-		["combat"] = false,
-	},
-	["healthBar"] = {
-		["text"] = true,
-		["height"] = 10,
-		["font"] = "Roboto",
-		["fontSize"] = 10,
-	},
-}
-
-Registry:NewPackage(MOD, "SVTip")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
index 6e0a8de..12023ad 100644
--- a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
+++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
@@ -16,24 +16,35 @@ S U P E R - V I L L A I N - U I   By: Munglunch                              #
 LOCALIZED LUA FUNCTIONS
 ##########################################################
 ]]--
---[[ GLOBALS ]]--
-local _G 		= _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local ipairs 	= _G.ipairs;
-local type 		= _G.type;
-local tostring 	= _G.tostring;
-local tinsert 	= _G.tinsert;
-local string 	= _G.string;
-local math 		= _G.math;
---[[ STRING METHODS ]]--
-local find, format, upper = string.find, string.format, string.upper;
-local match, gsub = string.match, string.gsub;
---[[ MATH METHODS ]]--
-local min, random = math.min, math.random;
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+--LUA
+local unpack        = unpack;
+local select        = select;
+local pairs         = pairs;
+local type          = type;
+local rawset        = rawset;
+local rawget        = rawget;
+local tostring      = tostring;
+local error         = error;
+local next          = next;
+local pcall         = pcall;
+local getmetatable  = getmetatable;
+local setmetatable  = setmetatable;
+local assert        = assert;
+--BLIZZARD
+local _G            = _G;
+local tinsert       = _G.tinsert;
+local tremove       = _G.tremove;
+local twipe         = _G.wipe;
+--STRING
+local string        = string;
+local format        = string.format;
+local find          = string.find;
+local match         = string.match;
+--MATH
+local math          = math;
+local min, random   = math.min, math.random;
+--TABLE
+local table         = table;
 --[[ LOCALIZED BLIZZ FUNCTIONS ]]--
 local NewHook = hooksecurefunc;
 --[[
@@ -41,21 +52,22 @@ local NewHook = hooksecurefunc;
 GET ADDON DATA AND TEST FOR oUF
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local LSM = LibStub("LibSharedMedia-3.0")
+local L = SV.L;
+local LSM = LibStub("LibSharedMedia-3.0");
 --[[
 ##########################################################
 MODULE AND INNER CLASSES
 ##########################################################
 ]]--
-local MOD = {}
+local MOD = SV:NewPackage("SVUnit", L["UnitFrames"])
 MOD.Units = {}
 MOD.Headers = {}
+MOD.Dispellable = {}

 oUF_Villain.SVConfigs = {}
 --[[
@@ -220,8 +232,8 @@ end
 function MOD:GetActiveSize(db)
 	local width, height, best = 0,0,0

-	if(self.db.grid.enable and db.gridAllowed) then
-		width = self.db.grid.size
+	if(SV.db.SVUnit.grid.enable and db.gridAllowed) then
+		width = SV.db.SVUnit.grid.size
 		height = width
 		best = width
 	else
@@ -291,14 +303,14 @@ function MOD:RestrictChildren(parentFrame, ...)

 	for i=1,select("#",...) do
 		local childFrame = select(i,...)
-		childFrame:RegisterForClicks(MOD.db.fastClickTarget and 'AnyDown' or 'AnyUp')
+		childFrame:RegisterForClicks(SV.db.SVUnit.fastClickTarget and 'AnyDown' or 'AnyUp')
 		childFrame.TargetGlow:SetAlpha(1)
 		self:RestrictElement(childFrame)
 	end
 end

 function MOD:ResetUnitOptions(unit)
-	SV.db:SetDefault("SVUnit", unit)
+	SV:ResetData("SVUnit", unit)
 	self:RefreshUnitFrames()
 end

@@ -330,10 +342,10 @@ function MOD:RefreshUnitColors()
 end

 function MOD:RefreshAllUnitMedia()
-	if(not self.db or (self.db and self.db.enable ~= true)) then return end
+	if(not SV.db.SVUnit or (SV.db.SVUnit and SV.db.SVUnit.enable ~= true)) then return end
 	self:RefreshUnitColors()
 	for unit,frame in pairs(self.Units)do
-		if self.db[frame.___key].enable then
+		if SV.db.SVUnit[frame.___key].enable then
 			frame:MediaUpdate()
 			frame:UpdateAllElements()
 		end
@@ -348,7 +360,7 @@ function MOD:RefreshUnitFrames()
 	if(InCombatLockdown()) then self:RegisterEvent("PLAYER_REGEN_ENABLED"); return end
 	self:RefreshUnitColors()
 	for unit,frame in pairs(self.Units)do
-		if(self.db.enable == true and self.db[frame.___key].enable) then
+		if(SV.db.SVUnit.enable == true and SV.db.SVUnit[frame.___key].enable) then
 			frame:Enable()
 			frame:Update()
 		else
@@ -379,7 +391,7 @@ function MOD:RefreshUnitFrames()
 end

 function MOD:RefreshUnitMedia(unitName)
-    local db = MOD.db
+    local db = SV.db.SVUnit
     local key = unitName or self.___key
     if(not (db and db.enable) or not self) then return end
     local CURRENT_BAR_TEXTURE = LSM:Fetch("statusbar", db.statusbar)
@@ -438,7 +450,7 @@ function MOD:RefreshUnitMedia(unitName)
             ab.textOutline = db.auraFontOutline
             ab.buffColor = oUF_Villain.colors.buff_bars

-			if MOD.db.auraBarByType then
+			if SV.db.SVUnit.auraBarByType then
 				ab.debuffColor = nil;
 				ab.defaultDebuffColor = oUF_Villain.colors.debuff_bars
 			else
@@ -467,7 +479,7 @@ function MOD:RefreshUnitMedia(unitName)
 end

 function MOD:RefreshUnitLayout(frame, template)
-	local db = self.db[template]
+	local db = SV.db.SVUnit[template]

 	local TOP_ANCHOR1, TOP_ANCHOR2, TOP_MODIFIER = "TOPRIGHT", "TOPLEFT", 1;
 	local BOTTOM_ANCHOR1, BOTTOM_ANCHOR2, BOTTOM_MODIFIER = "BOTTOMLEFT", "BOTTOMRIGHT", -1;
@@ -483,8 +495,8 @@ function MOD:RefreshUnitLayout(frame, template)
 	local UNIT_WIDTH, UNIT_HEIGHT, BEST_SIZE = self:GetActiveSize(db)
 	local POWER_HEIGHT = (db.power and db.power.enable) and (db.power.height - 1) or 1;
 	local PORTRAIT_WIDTH = (1 * TOP_MODIFIER)
-	local GRID_MODE = (self.db.grid.enable and db.gridAllowed) or false
-	local MINI_GRID = (GRID_MODE and self.db.grid.size < 26) or false
+	local GRID_MODE = (SV.db.SVUnit.grid.enable and db.gridAllowed) or false
+	local MINI_GRID = (GRID_MODE and SV.db.SVUnit.grid.size < 26) or false

 	local healthPanel = frame.HealthPanel
 	local infoPanel = frame.InfoPanel
@@ -496,7 +508,7 @@ function MOD:RefreshUnitLayout(frame, template)
 			PORTRAIT_WIDTH = ((db.portrait.width * TOP_MODIFIER) + (1 * TOP_MODIFIER))
 		else
 			portraitOverlay = true
-			overlayAnimation = self.db.overlayAnimation
+			overlayAnimation = SV.db.SVUnit.overlayAnimation
 		end
 	end

@@ -558,7 +570,7 @@ function MOD:RefreshUnitLayout(frame, template)
 	if(infoPanel.Name and db.name) then
 		local nametext = infoPanel.Name
 		if(GRID_MODE) then
-			if(self.db.grid.shownames and self.db.grid.size >= 30) then
+			if(SV.db.SVUnit.grid.shownames and SV.db.SVUnit.grid.size >= 30) then
 				if(not nametext:IsShown()) then nametext:Show() end
 				nametext:Point("CENTER", frame, "CENTER", 0, 0)
 				nametext:SetJustifyH("CENTER")
@@ -650,7 +662,7 @@ function MOD:RefreshUnitLayout(frame, template)
 			health.fillInverted = false
 		end

-		health.Smooth = self.db.smoothbars;
+		health.Smooth = SV.db.SVUnit.smoothbars;
 		health.colorSmooth = nil;
 		health.colorHealth = nil;
 		health.colorClass = nil;
@@ -661,21 +673,21 @@ function MOD:RefreshUnitLayout(frame, template)
 		if(not GRID_MODE and frame.HealPrediction) then
 			frame.HealPrediction["frequentUpdates"] = health.frequentUpdates
 		end
-		if(not GRID_MODE and portraitOverlay and self.db.forceHealthColor) then
+		if(not GRID_MODE and portraitOverlay and SV.db.SVUnit.forceHealthColor) then
 			health.colorOverlay = true;
 		else
 			if(GRID_MODE or (db.colorOverride and db.colorOverride == "FORCE_ON")) then
 				health.colorClass = true;
 				health.colorReaction = true
 			elseif(db.colorOverride and db.colorOverride == "FORCE_OFF") then
-				if self.db.colorhealthbyvalue == true then
+				if SV.db.SVUnit.colorhealthbyvalue == true then
 					health.colorSmooth = true
 				else
 					health.colorHealth = true
 				end
 			else
-				if(not self.db.healthclass) then
-					if self.db.colorhealthbyvalue == true then
+				if(not SV.db.SVUnit.healthclass) then
+					if SV.db.SVUnit.colorhealthbyvalue == true then
 						health.colorSmooth = true
 					else
 						health.colorHealth = true
@@ -709,12 +721,12 @@ function MOD:RefreshUnitLayout(frame, template)
 					power:Show()
 				end

-				power.Smooth = self.db.smoothbars;
+				power.Smooth = SV.db.SVUnit.smoothbars;

 				power.colorClass = nil;
 				power.colorReaction = nil;
 				power.colorPower = nil;
-				if self.db.powerclass then
+				if SV.db.SVUnit.powerclass then
 					power.colorClass = true;
 					power.colorReaction = true
 				else
@@ -753,7 +765,7 @@ function MOD:RefreshUnitLayout(frame, template)
 				altPower:Point(TOP_ANCHOR2, frame, TOP_ANCHOR2, PORTRAIT_WIDTH, -1)
 				altPower:Point(TOP_ANCHOR1, frame, TOP_ANCHOR1, (1 * BOTTOM_MODIFIER), -1)
 				altPower:SetHeight(POWER_HEIGHT)
-				altPower.Smooth = self.db.smoothbars;
+				altPower.Smooth = SV.db.SVUnit.smoothbars;
 				altPower:HookScript("OnShow", Alt_OnShow)
 				altPower:HookScript("OnHide", Alt_OnHide)
 			else
@@ -1015,7 +1027,7 @@ function MOD:RefreshUnitLayout(frame, template)
 			end
 			auraBar.buffColor = oUF_Villain.colors.buff_bars

-			if self.db.auraBarByType then
+			if SV.db.SVUnit.auraBarByType then
 				auraBar.debuffColor = nil;
 				auraBar.defaultDebuffColor = oUF_Villain.colors.debuff_bars
 			else
@@ -1133,7 +1145,7 @@ function MOD:RefreshUnitLayout(frame, template)
 	--[[ DEBUFF HIGHLIGHT LAYOUT ]]--

 	if frame.Afflicted then
-		if self.db.debuffHighlighting then
+		if SV.db.SVUnit.debuffHighlighting then
 			if(template ~= "player" and template ~= "target" and template ~= "focus") then
 				frame.Afflicted:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
 			end
@@ -1147,9 +1159,9 @@ function MOD:RefreshUnitLayout(frame, template)

 	if frame.Range then
 		if(template:find("raid") or template:find("party")) then
-			frame.Range.outsideAlpha = self.db.groupOORAlpha or 1
+			frame.Range.outsideAlpha = SV.db.SVUnit.groupOORAlpha or 1
 		else
-			frame.Range.outsideAlpha = self.db.OORAlpha or 1
+			frame.Range.outsideAlpha = SV.db.SVUnit.OORAlpha or 1
 		end

 		if db.rangeCheck then
@@ -1244,7 +1256,7 @@ local function ChangeGroupIndex(self)

 	local max = MAX_RAID_MEMBERS;
 	local key = self.___groupkey
-	local db = MOD.db[key]
+	local db = SV.db.SVUnit[key]

 	local newIndex = db.customSorting and -(min(db.groupCount * (db.gRowCol * 5), max) + 1 ) or -4;
 	if self:GetAttribute("startingIndex") ~= newIndex then
@@ -1280,7 +1292,7 @@ function MOD:UpdateGroupConfig(headerFrame, setForced)

 	SetProxyEnv()
 	local key = headerFrame.___groupkey
-	local db = self.db[key]
+	local db = SV.db.SVUnit[key]
 	headerFrame.forceShow = setForced;
 	headerFrame.forceShowAuras = setForced;
 	headerFrame.isForced = setForced;
@@ -1377,6 +1389,18 @@ function MOD:KillBlizzardRaidFrames()
 	end
 end

+-- function MOD:GROUP_ROSTER_UPDATE()
+-- 	self:KillBlizzardRaidFrames()
+-- 	if(IsInGroup()) then
+-- 		if(not self:IsEventRegistered("ZONE_CHANGED_NEW_AREA")) then
+-- 			self:ZONE_CHANGED_NEW_AREA()
+-- 			self:RegisterEvent("ZONE_CHANGED_NEW_AREA")
+-- 		end
+-- 	else
+-- 		self:UnregisterEvent("ZONE_CHANGED_NEW_AREA")
+-- 	end;
+-- end
+
 function MOD:PLAYER_REGEN_DISABLED()
 	for _,frame in pairs(self.Headers) do
 		if frame and frame.forceShow then
@@ -1413,6 +1437,62 @@ local UnitFrameThreatIndicator_Hook = function(unit, unitFrame)
 end
 --[[
 ##########################################################
+CLASS SPECIFIC INFO
+##########################################################
+]]--
+local RefMagicSpec;
+local PlayerClass = select(2,UnitClass("player"));
+local droodSpell1, droodSpell2 = GetSpellInfo(110309), GetSpellInfo(4987);
+
+if(PlayerClass == "PRIEST") then
+    MOD.Dispellable = {["Magic"] = true, ["Disease"] = true}
+elseif(PlayerClass == "MAGE") then
+    MOD.Dispellable = {["Curse"] = true}
+elseif(PlayerClass == "DRUID") then
+    RefMagicSpec = 4
+    MOD.Dispellable = {["Curse"] = true, ["Poison"] = true}
+elseif(PlayerClass == "SHAMAN") then
+    RefMagicSpec = 3
+    MOD.Dispellable = {["Curse"] = true}
+elseif(PlayerClass == "MONK") then
+    RefMagicSpec = 2
+    MOD.Dispellable = {["Disease"] = true, ["Poison"] = true}
+elseif(PlayerClass == "PALADIN") then
+    RefMagicSpec = 1
+    MOD.Dispellable = {["Poison"] = true, ["Disease"] = true}
+end
+
+local function GetTalentInfo(arg)
+    if type(arg) == "number" then
+        return arg == GetActiveSpecGroup();
+    else
+        return false;
+    end
+end
+
+function MOD:CanClassDispel()
+	if RefMagicSpec then
+        if(GetTalentInfo(RefMagicSpec)) then
+            self.Dispellable["Magic"] = true
+        elseif(self.Dispellable["Magic"]) then
+            self.Dispellable["Magic"] = nil
+        end
+    end
+end
+
+function MOD:SPELLS_CHANGED()
+	if (PlayerClass ~= "DRUID") then
+		self:UnregisterEvent("SPELLS_CHANGED")
+		return
+	end
+	if GetSpellInfo(droodSpell1) == droodSpell2 then
+		self.Dispellable["Disease"] = true
+	elseif(self.Dispellable["Disease"]) then
+		self.Dispellable["Disease"] = nil
+	end
+end
+--[[
+##########################################################
 BUILD FUNCTION / UPDATE
 ##########################################################
 ]]--
@@ -1428,9 +1508,18 @@ function MOD:Load()
 	local SVUI_UnitFrameParent = CreateFrame("Frame", "SVUI_UnitFrameParent", SV.UIParent, "SecureHandlerStateTemplate")
 	RegisterStateDriver(SVUI_UnitFrameParent, "visibility", "[petbattle] hide; show")

+	self:CanClassDispel()
+
 	self:FrameForge()
 	self:RegisterEvent("PLAYER_ENTERING_WORLD")
 	self:RegisterEvent("PLAYER_REGEN_DISABLED")
+	self:RegisterEvent("SPELLS_CHANGED")
+
+	self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED", "CanClassDispel")
+	self:RegisterEvent("PLAYER_TALENT_UPDATE", "CanClassDispel")
+	self:RegisterEvent("CHARACTER_POINTS_CHANGED", "CanClassDispel")
+	self:RegisterEvent("UNIT_INVENTORY_CHANGED", "CanClassDispel")
+	self:RegisterEvent("UPDATE_BONUS_ACTIONBAR", "CanClassDispel")

 	if(SV.db.SVUnit.disableBlizzard) then
 		self:KillBlizzardRaidFrames()
@@ -1473,10 +1562,4 @@ function MOD:Load()
 	rDebuffs.ShowDispelableDebuff = true;
 	rDebuffs.FilterDispellableDebuff = true;
 	rDebuffs.MatchBySpellName = true;
-end
---[[
-##########################################################
-DEFINE CONFIG AND REGISTER
-##########################################################
-]]--
-Registry:NewPackage(MOD, "SVUnit")
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.xml b/Interface/AddOns/SVUI/packages/unit/SVUnit.xml
index b95f83d..a8bbb31 100644
--- a/Interface/AddOns/SVUI/packages/unit/SVUnit.xml
+++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.xml
@@ -40,7 +40,6 @@
         </Frames>
     </Button>

-    <Script file="config.lua"/>
 	<Script file="SVUnit.lua"/>

 	<Script file="elements\tags.lua"/>
diff --git a/Interface/AddOns/SVUI/packages/unit/config.lua b/Interface/AddOns/SVUI/packages/unit/config.lua
deleted file mode 100644
index 5b0c2f0..0000000
--- a/Interface/AddOns/SVUI/packages/unit/config.lua
+++ /dev/null
@@ -1,2444 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-	______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-	 _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-	  __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-	   _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-		___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G 		= _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
---[[
-##########################################################
-GET ADDON DATA AND TEST FOR oUF
-##########################################################
-]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
-local CONFIGS = SV.private
---[[
-##########################################################
-LOCALS
-##########################################################
-]]--
-CONFIGS["SVUnit"] = {
-	["enable"] = true,
-	["disableBlizzard"] = true,
-
-	["smoothbars"] = false,
-	["statusbar"] = "SVUI BasicBar",
-	["auraBarStatusbar"] = "SVUI GlowBar",
-
-	["font"] = "SVUI Number Font",
-	["fontSize"] = 12,
-	["fontOutline"] = "OUTLINE",
-
-	["auraFont"] = "SVUI Alert Font",
-	["auraFontSize"] = 12,
-	["auraFontOutline"] = "OUTLINE",
-
-	["OORAlpha"] = 0.65,
-	["groupOORAlpha"] = 0.45,
-	["combatFadeRoles"] = true,
-	["combatFadeNames"] = true,
-	["debuffHighlighting"] = true,
-	["smartRaidFilter"] = true,
-	["fastClickTarget"] = false,
-	["healglow"] = true,
-	["glowtime"] = 0.8,
-	["glowcolor"] = {1, 1, 0},
-	["autoRoleSet"] = false,
-	["healthclass"] = true,
-	["forceHealthColor"] = false,
-	["overlayAnimation"] = true,
-	["powerclass"] = false,
-	["colorhealthbyvalue"] = true,
-	["customhealthbackdrop"] = true,
-	["classbackdrop"] = false,
-	["auraBarByType"] = true,
-	["auraBarShield"] = true,
-	["castClassColor"] = false,
-	["xrayFocus"] = true,
-	["gpsLowHealth"] = false,
-	["grid"] = {
-		["enable"] = false,
-		["size"] = 28,
-		["shownames"] = false,
-		["font"] = "Roboto",
-		["fontsize"] = 16,
-	},
-	["player"] = {
-		["enable"] = true,
-		["width"] = 215,
-		["height"] = 60,
-		["lowmana"] = 30,
-		["combatfade"] = false,
-		["predict"] = false,
-		["threatEnabled"] = true,
-		["playerExpBar"] = false,
-		["playerRepBar"] = false,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "current",
-			["name_colored"] = true,
-			["name_length"] = 21,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "[health:color][health:current]",
-			["position"] = "INNERRIGHT",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 11,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "",
-			["height"] = 10,
-			["position"] = "INNERLEFT",
-			["hideonnpc"] = false,
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["detachedWidth"] = 250,
-			["attachTextToPower"] = false,
-			["druidMana"] = true,
-			["fontSize"] = 11,
-		},
-		["name"] =
-		{
-			["position"] = "CENTER",
-			["tags"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["font"] = "SVUI Number Font",
-			["fontSize"] = 13,
-			["fontOutline"] = "OUTLINE",
-		},
-		["pvp"] =
-		{
-			["font"] = "SVUI Number Font",
-			["fontSize"] = 12,
-			["fontOutline"] = "OUTLINE",
-			["position"] = "BOTTOM",
-			["tags"] = "||cFFB04F4F[pvptimer][mouseover]||r",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-		},
-		["portrait"] =
-		{
-			["enable"] = true,
-			["width"] = 50,
-			["overlay"] = true,
-			["camDistanceScale"] = 1.4,
-			["rotation"] = 0,
-			["style"] = "3D",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 8,
-			["numrows"] = 1,
-			["attachTo"] = "DEBUFFS",
-			["anchorPoint"] = "TOPLEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = true,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = 8,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 8,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "TOPLEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] =  0,
-			["yOffset"] = 8,
-			["sizeOverride"] = 0,
-		},
-		["aurabar"] =
-		{
-			["enable"] = false,
-			["anchorPoint"] = "ABOVE",
-			["attachTo"] = "DEBUFFS",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = true,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["friendlyAuraType"] = "HELPFUL",
-			["enemyAuraType"] = "HARMFUL",
-			["height"] = 18,
-			["sort"] = "TIME_REMAINING",
-		},
-		["castbar"] =
-		{
-			["enable"] = true,
-			["width"] = 215,
-			["height"] = 20,
-			["matchFrameWidth"] = true,
-			["icon"] = true,
-			["latency"] = false,
-			["format"] = "REMAINING",
-			["ticks"] = false,
-			["spark"] = true,
-			["displayTarget"] = false,
-			["useCustomColor"] = false,
-			["castingColor"] = {0.8, 0.8, 0},
-			["sparkColor"] = {1, 0.72, 0},
-		},
-		["classbar"] =
-		{
-			["enable"] = true,
-			["slideLeft"] = true,
-			["inset"] = "inset",
-			["height"] = 25,
-			["detachFromFrame"] = false,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 25,
-				["attachTo"] = "INNERBOTTOMRIGHT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-			["combatIcon"] = {
-				["enable"] = true,
-				["size"] = 26,
-				["attachTo"] = "INNERTOPRIGHT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-			["restIcon"] = {
-				["enable"] = true,
-				["size"] = 25,
-				["attachTo"] = "INNERTOPRIGHT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-		},
-		["stagger"] =
-		{
-			["enable"] = true,
-		},
-	},
-	["target"] = {
-		["enable"] = true,
-		["width"] = 215,
-		["height"] = 60,
-		["threatEnabled"] = true,
-		["rangeCheck"] = true,
-		["predict"] = false,
-		["smartAuraDisplay"] = "DISABLED",
-		["middleClickFocus"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "current",
-			["name_colored"] = true,
-			["name_length"] = 18,
-			["smartlevel"] = true,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "[health:color][health:current]",
-			["position"] = "INNERLEFT",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["reversed"] = true,
-			["fontSize"] = 11,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "[power:color][power:current]",
-			["height"] = 10,
-			["position"] = "INNERRIGHT",
-			["hideonnpc"] = true,
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["attachTextToPower"] = false,
-			["fontSize"] = 11,
-		},
-		["name"] =
-		{
-			["position"] = "INNERRIGHT",
-			["tags"] = "[name:color][name:18][smartlevel]",
-			["xOffset"] = -2,
-			["yOffset"] = 36,
-			["font"] = "SVUI Name Font",
-			["fontSize"] = 15,
-			["fontOutline"] = "NONE",
-		},
-		["portrait"] =
-		{
-			["enable"] = true,
-			["width"] = 50,
-			["overlay"] = true,
-			["rotation"] = 0,
-			["camDistanceScale"] = 1.4,
-			["style"] = "3D",
-		},
-		["buffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 8,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "TOPRIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterRaid"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = 8,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 8,
-			["numrows"] = 1,
-			["attachTo"] = "BUFFS",
-			["anchorPoint"] = "TOPRIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = true,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = 8,
-			["sizeOverride"] = 0,
-		},
-		["aurabar"] =
-		{
-			["enable"] = false,
-			["anchorPoint"] = "ABOVE",
-			["attachTo"] = "DEBUFFS",
-			["filterPlayer"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterRaid"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["friendlyAuraType"] = "HELPFUL",
-			["enemyAuraType"] = "HARMFUL",
-			["height"] = 18,
-			["sort"] = "TIME_REMAINING",
-		},
-		["castbar"] =
-		{
-			["enable"] = true,
-			["width"] = 215,
-			["height"] = 20,
-			["matchFrameWidth"] = true,
-			["icon"] = true,
-			["format"] = "REMAINING",
-			["spark"] = true,
-			["useCustomColor"] = false,
-			["castingColor"] = {0.8, 0.8, 0},
-			["sparkColor"] = {1, 0.72, 0},
-		},
-		["combobar"] =
-		{
-			["enable"] = true,
-			["height"] = 30,
-			["smallIcons"] = false,
-			["hudStyle"] = false,
-			["hudScale"] = 64,
-			["autoHide"] = true,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 30,
-				["attachTo"] = "INNERLEFT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			}
-		},
-	},
-	["targettarget"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["threatEnabled"] = false,
-		["width"] = 150,
-		["height"] = 30,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 10,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "INNERRIGHT",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 9,
-		},
-		["power"] =
-		{
-			["enable"] = false,
-			["tags"] = "",
-			["height"] = 7,
-			["position"] = "INNERLEFT",
-			["hideonnpc"] = false,
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["fontSize"] = 9,
-		},
-		["name"] =
-		{
-			["position"] = "CENTER",
-			["tags"] = "[name:color][name:10]",
-			["xOffset"] = 0,
-			["yOffset"] = 1,
-			["font"] = "SVUI Narrator Font",
-			["fontSize"] = 14,
-			["fontOutline"] = "OUTLINE",
-		},
-		["portrait"] =
-		{
-			["enable"] = true,
-			["width"] = 45,
-			["overlay"] = true,
-			["rotation"] = 0,
-			["camDistanceScale"] = 1,
-			["style"] = "3D",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 7,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "BOTTOMLEFT",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterRaid"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] =  0,
-			["yOffset"] =  -8,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 5,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "TOPLEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = true,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] =  0,
-			["yOffset"] =  8,
-			["sizeOverride"] = 0,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "INNERRIGHT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-		},
-	},
-	["focus"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["threatEnabled"] = true,
-		["width"] = 170,
-		["height"] = 30,
-		["predict"] = false,
-		["smartAuraDisplay"] = "DISABLED",
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 15,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "INNERRIGHT",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "",
-			["height"] = 7,
-			["position"] = "INNERLEFT",
-			["hideonnpc"] = false,
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "CENTER",
-			["tags"] = "[name:color][name:15]",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["font"] = "SVUI Narrator Font",
-			["fontSize"] = 14,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 7,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "BOTTOMRIGHT",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterRaid"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = -8,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 5,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "TOPRIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = true,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = 8,
-			["sizeOverride"] = 0,
-		},
-		["castbar"] =
-		{
-			["enable"] = true,
-			["width"] = 170,
-			["height"] = 18,
-			["icon"] = true,
-			["matchFrameWidth"] = true,
-			["format"] = "REMAINING",
-			["spark"] = true,
-			["useCustomColor"] = false,
-			["castingColor"] = {0.8, 0.8, 0},
-			["sparkColor"] = {1, 0.72, 0},
-		},
-		["aurabar"] =
-		{
-			["enable"] = false,
-			["anchorPoint"] = "ABOVE",
-			["attachTo"] = "FRAME",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = true,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterRaid"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["useFilter"] = "",
-			["friendlyAuraType"] = "HELPFUL",
-			["enemyAuraType"] = "HARMFUL",
-			["height"] = 18,
-			["sort"] = "TIME_REMAINING",
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "INNERLEFT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-		},
-	},
-	["focustarget"] = {
-		["enable"] = false,
-		["rangeCheck"] = true,
-		["threatEnabled"] = false,
-		["width"] = 150,
-		["height"] = 26,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 15,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "INNERRIGHT",
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = false,
-			["tags"] = "",
-			["height"] = 7,
-			["position"] = "INNERLEFT",
-			["hideonnpc"] = false,
-			["xOffset"] = 0,
-			["yOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "CENTER",
-			["tags"] = "[name:color][name:15]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Narrator Font",
-			["fontSize"] = 14,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 7,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "BOTTOMLEFT",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterRaid"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = -8,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 5,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "TOPLEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = true,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = 8,
-			["sizeOverride"] = 0,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "INNERLEFT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-		},
-	},
-	["pet"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["threatEnabled"] = true,
-		["width"] = 150,
-		["height"] = 30,
-		["predict"] = false,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 10,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "INNERRIGHT",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = false,
-			["tags"] = "",
-			["height"] = 7,
-			["position"] = "INNERLEFT",
-			["hideonnpc"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "CENTER",
-			["tags"] = "[name:color][name:8]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Narrator Font",
-			["fontSize"] = 14,
-			["fontOutline"] = "OUTLINE",
-		},
-		["portrait"] =
-		{
-			["enable"] = true,
-			["width"] = 45,
-			["overlay"] = true,
-			["rotation"] = 0,
-			["camDistanceScale"] = 1,
-			["style"] = "3D",
-		},
-		["buffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "LEFT",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = true,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = -3,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 3,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["castbar"] =
-		{
-			["enable"] = true,
-			["width"] = 130,
-			["height"] = 8,
-			["icon"] = false,
-			["matchFrameWidth"] = true,
-			["format"] = "REMAINING",
-			["spark"] = false,
-			["useCustomColor"] = false,
-			["castingColor"] = {0.8, 0.8, 0},
-			["sparkColor"] = {1, 0.72, 0},
-		},
-		["auraWatch"] =
-		{
-			["enable"] = true,
-			["size"] = 8,
-		},
-	},
-	["pettarget"] = {
-		["enable"] = false,
-		["rangeCheck"] = true,
-		["threatEnabled"] = false,
-		["width"] = 130,
-		["height"] = 26,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 15,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "INNERRIGHT",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = false,
-			["tags"] = "",
-			["height"] = 7,
-			["position"] = "INNERLEFT",
-			["hideonnpc"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "CENTER",
-			["tags"] = "[name:color][name:15]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Narrator Font",
-			["fontSize"] = 14,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 7,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "BOTTOMLEFT",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterRaid"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = true,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = -8,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 5,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "BOTTOMRIGHT",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = true,
-			},
-			["filterBlocked"] =
-			{
-				friendly = true,
-				enemy = true,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "",
-			["xOffset"] = 0,
-			["yOffset"] = 8,
-			["sizeOverride"] = 0,
-		},
-	},
-	["boss"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["showBy"] = "UP",
-		["width"] = 200,
-		["height"] = 45,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "current",
-			["name_colored"] = true,
-			["name_length"] = 15,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "[health:color][health:current]",
-			["position"] = "INNERTOPRIGHT",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = true,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "[power:color][power:current]",
-			["height"] = 7,
-			["position"] = "INNERBOTTOMRIGHT",
-			["hideonnpc"] = false,
-			["yOffset"] = 7,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["portrait"] =
-		{
-			["enable"] = true,
-			["width"] = 35,
-			["overlay"] = true,
-			["rotation"] = 0,
-			["camDistanceScale"] = 1,
-			["style"] = "3D",
-		},
-		["name"] =
-		{
-			["position"] = "INNERLEFT",
-			["tags"] = "[name:color][name:15]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Number Font",
-			["fontSize"] = 12,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 2,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "LEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] = false,
-			["filterRaid"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] =  -8,
-			["yOffset"] =  0,
-			["sizeOverride"] = 40,
-		},
-		["debuffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "BUFFS",
-			["anchorPoint"] = "LEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] =  -8,
-			["yOffset"] =  0,
-			["sizeOverride"] = 40,
-		},
-		["castbar"] =
-		{
-			["enable"] = true,
-			["width"] = 200,
-			["height"] = 18,
-			["icon"] = true,
-			["matchFrameWidth"] = true,
-			["format"] = "REMAINING",
-			["spark"] = true,
-			["useCustomColor"] = false,
-			["castingColor"] = {0.8, 0.8, 0},
-			["sparkColor"] = {1, 0.72, 0},
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 22,
-				["attachTo"] = "CENTER",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-		},
-	},
-	["arena"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["showBy"] = "UP",
-		["width"] = 215,
-		["height"] = 45,
-		["predict"] = false,
-		["colorOverride"] = "USE_DEFAULT",
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "current",
-			["name_colored"] = true,
-			["name_length"] = 15,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "[health:color][health:current]",
-			["position"] = "INNERTOPRIGHT",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = true,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "[power:color][power:current]",
-			["height"] = 7,
-			["position"] = "INNERBOTTOMRIGHT",
-			["hideonnpc"] = false,
-			["yOffset"] = 7,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERLEFT",
-			["tags"] = "[name:color][name:15]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Number Font",
-			["fontSize"] = 12,
-			["fontOutline"] = "OUTLINE",
-		},
-		["portrait"] =
-		{
-			["enable"] = true,
-			["width"] = 45,
-			["overlay"] = true,
-			["rotation"] = 0,
-			["camDistanceScale"] = 1,
-			["style"] = "3D",
-		},
-		["buffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "LEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterRaid"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterBlocked"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "Shield",
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["xOffset"] = -8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 40,
-		},
-		["debuffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "BUFFS",
-			["anchorPoint"] = "LEFT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "LEFT",
-			["filterPlayer"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterBlocked"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterAllowed"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["filterInfinite"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["useFilter"] = "CC",
-			["filterDispellable"] =
-			{
-				friendly = false,
-				enemy = false,
-			},
-			["xOffset"] = -8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 40,
-		},
-		["castbar"] =
-		{
-			["enable"] = true,
-			["width"] = 215,
-			["height"] = 18,
-			["icon"] = true,
-			["matchFrameWidth"] = true,
-			["format"] = "REMAINING",
-			["spark"] = true,
-			["useCustomColor"] = false,
-			["castingColor"] = {0.8, 0.8, 0},
-			["sparkColor"] = {1, 0.72, 0},
-		},
-		["pvp"] =
-		{
-			["enable"] = true,
-			["trinketPosition"] = "LEFT",
-			["trinketSize"] = 45,
-			["trinketX"] = -2,
-			["trinketY"] = 0,
-			["specPosition"] = "RIGHT",
-			["specSize"] = 45,
-			["specX"] = 2,
-			["specY"] = 0,
-		},
-	},
-	["party"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["threatEnabled"] = true,
-		["visibility"] = "[@raid6, exists][nogroup] hide;show",
-		["showBy"] = "UP_RIGHT",
-		["wrapXOffset"] = 9,
-		["wrapYOffset"] = 13,
-		["groupCount"] = 1,
-		["gRowCol"] = 1,
-		["customSorting"] = false,
-		["sortMethod"] = "GROUP",
-		["sortDir"] = "ASC",
-		["invertGroupingOrder"] = false,
-		["startFromCenter"] = false,
-		["showPlayer"] = true,
-		["predict"] = false,
-		["colorOverride"] = "USE_DEFAULT",
-		["width"] = 70,
-		["height"] = 70,
-		["gridAllowed"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 10,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "BOTTOM",
-			["orientation"] = "HORIZONTAL",
-			["frequentUpdates"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "",
-			["frequentUpdates"] = false,
-			["height"] = 7,
-			["position"] = "BOTTOMRIGHT",
-			["hideonnpc"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERTOPLEFT",
-			["tags"] = "[name:color][name:10]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Narrator Font",
-			["fontSize"] = 13,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 2,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHTTOP",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = true,
-			["perrow"] = 2,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHTTOP",
-			["verticalGrowth"] = "DOWN",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["auraWatch"] =
-		{
-			["enable"] = true,
-			["size"] = 8,
-			["fontSize"] = 11,
-		},
-		["petsGroup"] =
-		{
-			["enable"] = false,
-			["width"] = 30,
-			["height"] = 30,
-			["gridAllowed"] = true,
-			["anchorPoint"] = "BOTTOMLEFT",
-			["xOffset"] =  - 1,
-			["yOffset"] = 0,
-			["name_length"] = 3,
-			["tags"] = "[name:3]",
-		},
-		["targetsGroup"] =
-		{
-			["enable"] = false,
-			["width"] = 30,
-			["height"] = 30,
-			["gridAllowed"] = true,
-			["anchorPoint"] = "TOPLEFT",
-			["xOffset"] =  - 1,
-			["yOffset"] = 0,
-			["name_length"] = 3,
-			["tags"] = "[name:3]",
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 25,
-				["attachTo"] = "INNERBOTTOMLEFT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-			["roleIcon"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "INNERBOTTOMRIGHT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-			["raidRoleIcons"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "TOPLEFT",
-				["xOffset"] = 0,
-				["yOffset"] = -4,
-			},
-		},
-		["portrait"] =
-		{
-			["enable"] = true,
-			["width"] = 45,
-			["overlay"] = true,
-			["rotation"] = 0,
-			["camDistanceScale"] = 1,
-			["style"] = "3D",
-		},
-	},
-	["raid10"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["threatEnabled"] = true,
-		["visibility"] = "[@raid6, noexists][@raid11, exists][nogroup] hide;show",
-		["showBy"] = "RIGHT_DOWN",
-		["wrapXOffset"] = 8,
-		["wrapYOffset"] = 8,
-		["groupCount"] = 2,
-		["gRowCol"] = 1,
-		["customSorting"] = false,
-		["sortMethod"] = "GROUP",
-		["sortDir"] = "ASC",
-		["showPlayer"] = true,
-		["predict"] = false,
-		["colorOverride"] = "USE_DEFAULT",
-		["width"] = 75,
-		["height"] = 34,
-		["gridAllowed"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 4,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "BOTTOM",
-			["orientation"] = "HORIZONTAL",
-			["frequentUpdates"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "",
-			["frequentUpdates"] = false,
-			["height"] = 4,
-			["position"] = "BOTTOMRIGHT",
-			["hideonnpc"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERTOPLEFT",
-			["tags"] = "[name:color][name:4]",
-			["yOffset"] = 0,
-			["xOffset"] = 8,
-			["font"] = "SVUI Default Font",
-			["fontSize"] = 10,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["auraWatch"] =
-		{
-			["enable"] = true,
-			["size"] = 8,
-		},
-		["rdebuffs"] =
-		{
-			["enable"] = true,
-			["size"] = 26,
-			["xOffset"] = 0,
-			["yOffset"] = 2,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 15,
-				["attachTo"] = "INNERBOTTOMRIGHT",
-				["xOffset"] = -8,
-				["yOffset"] = 0,
-			},
-			["roleIcon"] =
-			{
-				["enable"] = true,
-				["size"] = 12,
-				["attachTo"] = "INNERBOTTOMLEFT",
-				["xOffset"] = 8,
-				["yOffset"] = 0,
-			},
-			["raidRoleIcons"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "TOPLEFT",
-				["xOffset"] = 8,
-				["yOffset"] = -4,
-			},
-		},
-	},
-	["raid25"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["threatEnabled"] = true,
-		["visibility"] = "[@raid6, noexists][@raid11, noexists][@raid26, exists][nogroup] hide;show",
-		["showBy"] = "RIGHT_DOWN",
-		["wrapXOffset"] = 8,
-		["wrapYOffset"] = 8,
-		["groupCount"] = 5,
-		["gRowCol"] = 1,
-		["customSorting"] = false,
-		["sortMethod"] = "GROUP",
-		["sortDir"] = "ASC",
-		["showPlayer"] = true,
-		["predict"] = false,
-		["colorOverride"] = "USE_DEFAULT",
-		["width"] = 50,
-		["height"] = 30,
-		["gridAllowed"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 4,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "BOTTOM",
-			["orientation"] = "HORIZONTAL",
-			["frequentUpdates"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = true,
-			["tags"] = "",
-			["height"] = 4,
-			["position"] = "BOTTOMRIGHT",
-			["hideonnpc"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERTOPLEFT",
-			["tags"] = "[name:color][name:4]",
-			["yOffset"] = 0,
-			["xOffset"] = 8,
-			["font"] = "SVUI Default Font",
-			["fontSize"] = 10,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["auraWatch"] =
-		{
-			["enable"] = true,
-			["size"] = 8,
-		},
-		["rdebuffs"] =
-		{
-			["enable"] = true,
-			["size"] = 26,
-			["xOffset"] = 0,
-			["yOffset"] = 2,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 15,
-				["attachTo"] = "INNERBOTTOMRIGHT",
-				["xOffset"] = -8,
-				["yOffset"] = 0,
-			},
-			["roleIcon"] =
-			{
-				["enable"] = true,
-				["size"] = 12,
-				["attachTo"] = "INNERBOTTOMLEFT",
-				["xOffset"] = 8,
-				["yOffset"] = 0,
-			},
-			["raidRoleIcons"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "TOPLEFT",
-				["xOffset"] = 8,
-				["yOffset"] = -4,
-			},
-		},
-	},
-	["raid40"] = {
-		["enable"] = true,
-		["rangeCheck"] = true,
-		["threatEnabled"] = true,
-		["visibility"] = "[@raid6, noexists][@raid11, noexists][@raid26, noexists][nogroup] hide;show",
-		["showBy"] = "RIGHT_DOWN",
-		["wrapXOffset"] = 8,
-		["wrapYOffset"] = 8,
-		["groupCount"] = 8,
-		["gRowCol"] = 1,
-		["customSorting"] = false,
-		["sortMethod"] = "GROUP",
-		["sortDir"] = "ASC",
-		["showPlayer"] = true,
-		["predict"] = false,
-		["colorOverride"] = "USE_DEFAULT",
-		["width"] = 50,
-		["height"] = 30,
-		["gridAllowed"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "none",
-			["name_colored"] = true,
-			["name_length"] = 4,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "",
-			["position"] = "BOTTOM",
-			["orientation"] = "HORIZONTAL",
-			["frequentUpdates"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["power"] =
-		{
-			["enable"] = false,
-			["tags"] = "",
-			["frequentUpdates"] = false,
-			["height"] = 4,
-			["position"] = "BOTTOMRIGHT",
-			["hideonnpc"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERTOPLEFT",
-			["tags"] = "[name:color][name:4]",
-			["yOffset"] = 0,
-			["xOffset"] = 8,
-			["font"] = "SVUI Default Font",
-			["fontSize"] = 10,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["rdebuffs"] =
-		{
-			["enable"] = true,
-			["size"] = 22,
-			["xOffset"] = 0,
-			["yOffset"] = 2,
-		},
-		["auraWatch"] =
-		{
-			["enable"] = true,
-			["size"] = 8,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 15,
-				["attachTo"] = "INNERBOTTOMRIGHT",
-				["xOffset"] = -8,
-				["yOffset"] = 0,
-			},
-			["roleIcon"] =
-			{
-				["enable"] = true,
-				["size"] = 12,
-				["attachTo"] = "INNERBOTTOMLEFT",
-				["xOffset"] = 8,
-				["yOffset"] = 0,
-			},
-			["raidRoleIcons"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "TOPLEFT",
-				["xOffset"] = 8,
-				["yOffset"] = -4,
-			},
-		},
-	},
-	["raidpet"] = {
-		["enable"] = false,
-		["rangeCheck"] = true,
-		["threatEnabled"] = true,
-		["visibility"] = "[group:raid] show; hide",
-		["showBy"] = "DOWN_RIGHT",
-		["wrapXOffset"] = 3,
-		["wrapYOffset"] = 3,
-		["groupCount"] = 2,
-		["gRowCol"] = 1,
-		["customSorting"] = true,
-		["sortMethod"] = "PETNAME",
-		["sortDir"] = "ASC",
-		["invertGroupingOrder"] = false,
-		["startFromCenter"] = false,
-		["predict"] = false,
-		["colorOverride"] = "USE_DEFAULT",
-		["width"] = 80,
-		["height"] = 30,
-		["gridAllowed"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "deficit",
-			["name_colored"] = true,
-			["name_length"] = 4,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "[health:color][health:deficit]",
-			["position"] = "BOTTOM",
-			["orientation"] = "HORIZONTAL",
-			["frequentUpdates"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERTOPLEFT",
-			["tags"] = "[name:color][name:4]",
-			["yOffset"] = 4,
-			["xOffset"] = -4,
-			["font"] = "SVUI Default Font",
-			["fontSize"] = 10,
-			["fontOutline"] = "OUTLINE",
-		},
-		["buffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = true,
-			["filterRaid"] = true,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = true,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["debuffs"] =
-		{
-			["enable"] = false,
-			["perrow"] = 3,
-			["numrows"] = 1,
-			["attachTo"] = "FRAME",
-			["anchorPoint"] = "RIGHT",
-			["verticalGrowth"] = "UP",
-			["horizontalGrowth"] = "RIGHT",
-			["filterPlayer"] = false,
-			["filterBlocked"] = true,
-			["filterAllowed"] = false,
-			["filterInfinite"] = false,
-			["filterDispellable"] = false,
-			["useFilter"] = "",
-			["xOffset"] = 8,
-			["yOffset"] = 0,
-			["sizeOverride"] = 0,
-		},
-		["auraWatch"] =
-		{
-			["enable"] = true,
-			["size"] = 8,
-		},
-		["rdebuffs"] =
-		{
-			["enable"] = true,
-			["size"] = 26,
-			["xOffset"] = 0,
-			["yOffset"] = 2,
-		},
-		["icons"] =
-		{
-			["raidicon"] =
-			{
-				["enable"] = true,
-				["size"] = 18,
-				["attachTo"] = "INNERTOPLEFT",
-				["xOffset"] = 0,
-				["yOffset"] = 0,
-			},
-		},
-	},
-	["tank"] = {
-		["enable"] = true,
-		["threatEnabled"] = true,
-		["rangeCheck"] = true,
-		["width"] = 120,
-		["height"] = 28,
-		["gridAllowed"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "deficit",
-			["name_colored"] = true,
-			["name_length"] = 8,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "[health:color][health:deficit]",
-			["position"] = "INNERRIGHT",
-			["orientation"] = "HORIZONTAL",
-			["frequentUpdates"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERLEFT",
-			["tags"] = "[name:color][name:8]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Default Font",
-			["fontSize"] = 10,
-			["fontOutline"] = "OUTLINE",
-		},
-		["targetsGroup"] =
-		{
-			["enable"] = false,
-			["anchorPoint"] = "RIGHT",
-			["xOffset"] = 1,
-			["yOffset"] = 0,
-			["width"] = 120,
-			["height"] = 28,
-		},
-	},
-	["assist"] = {
-		["enable"] = true,
-		["threatEnabled"] = true,
-		["rangeCheck"] = true,
-		["width"] = 120,
-		["height"] = 28,
-		["gridAllowed"] = true,
-		["formatting"] = {
-			["power_colored"] = true,
-			["power_type"] = "none",
-			["power_class"] = false,
-			["power_alt"] = false,
-			["health_colored"] = true,
-			["health_type"] = "deficit",
-			["name_colored"] = true,
-			["name_length"] = 8,
-			["smartlevel"] = false,
-			["absorbs"] = false,
-			["threat"] = false,
-			["incoming"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-		},
-		["misc"] = {
-			["tags"] = ""
-		},
-		["health"] =
-		{
-			["tags"] = "[health:color][health:deficit]",
-			["position"] = "INNERRIGHT",
-			["orientation"] = "HORIZONTAL",
-			["frequentUpdates"] = false,
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["reversed"] = false,
-			["fontSize"] = 10,
-		},
-		["name"] =
-		{
-			["position"] = "INNERLEFT",
-			["tags"] = "[name:color][name:8]",
-			["yOffset"] = 0,
-			["xOffset"] = 0,
-			["font"] = "SVUI Default Font",
-			["fontSize"] = 10,
-			["fontOutline"] = "OUTLINE",
-		},
-		["targetsGroup"] =
-		{
-			["enable"] = false,
-			["anchorPoint"] = "RIGHT",
-			["xOffset"] = 1,
-			["yOffset"] = 0,
-			["width"] = 120,
-			["height"] = 28,
-		},
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/packages/unit/elements/auras.lua b/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
index d27cce4..20d02f2 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/auras.lua
@@ -16,39 +16,52 @@ S U P E R - V I L L A I N - U I   By: Munglunch                              #
 LOCALIZED LUA FUNCTIONS
 ##########################################################
 ]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack    = _G.unpack;
-local select    = _G.select;
-local pairs     = _G.pairs;
-local ipairs    = _G.ipairs;
-local type      = _G.type;
-local error     = _G.error;
-local pcall     = _G.pcall;
-local tostring  = _G.tostring;
-local tonumber  = _G.tonumber;
-local tinsert 	= _G.tinsert;
-local string 	= _G.string;
-local math 		= _G.math;
-local table 	= _G.table;
---[[ MATH METHODS ]]--
-local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;
---[[ TABLE METHODS ]]--
-local tremove, tsort, twipe = table.remove, table.sort, table.wipe;
+--LUA
+local unpack        = unpack;
+local select        = select;
+local pairs         = pairs;
+local type          = type;
+local rawset        = rawset;
+local rawget        = rawget;
+local tostring      = tostring;
+local error         = error;
+local next          = next;
+local pcall         = pcall;
+local getmetatable  = getmetatable;
+local setmetatable  = setmetatable;
+local assert        = assert;
+--BLIZZARD
+local _G            = _G;
+local tinsert       = _G.tinsert;
+local tremove       = _G.tremove;
+local twipe         = _G.wipe;
+--STRING
+local string        = string;
+local upper         = string.upper;
+local format        = string.format;
+local find          = string.find;
+local match         = string.match;
+local gsub          = string.gsub;
+--MATH
+local math          = math;
+--TABLE
+local table         = table;
+local tsort         = table.sort;
+local tremove       = table.remove;
 --[[
 ##########################################################
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH"s FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.");

-local L = LibLocale();
+local L = SV.L;
 local LSM = LibStub("LibSharedMedia-3.0")
 local MOD = SV.SVUnit
+
 if(not MOD) then return end

 local CustomAuraFilter,CustomBarFilter;
@@ -285,7 +298,7 @@ do
 	end

 	CustomAuraFilter = function(self, unit, icon, name, _, _, _, debuffType, duration, _, caster, isStealable, shouldConsolidate, spellID, canApplyAura, isBossAura)
-		local db = MOD.db[self.db]
+		local db = SV.db.SVUnit[self.___key]
 		local auraType = self.type;
 		if(not auraType) then return true end
 		if((not db) or (db and not db[auraType]) or (spellID == 65148)) then
@@ -318,7 +331,7 @@ do
 			pass = true
 		end
 		if _test(auraDB.filterDispellable, friendly) then
-			if (auraType == "buffs" and not isStealable) or (auraType == "debuffs" and debuffType and not SV.Dispellable[debuffType]) or debuffType == nil then
+			if (auraType == "buffs" and not isStealable) or (auraType == "debuffs" and debuffType and not MOD.Dispellable[debuffType]) or debuffType == nil then
 				filtered = false
 			end
 			pass = true
@@ -349,8 +362,10 @@ do
 				filtered = false
 			end
 			pass = true
-		end
+		end
+
 		local active = auraDB.useFilter
+
 		if active and active ~= "" and SV.db.filter[active] then
 			local spellDB = SV.db.filter[active];
 			if active ~= "Blocked" then
@@ -371,8 +386,7 @@ do
 	end

 	CustomBarFilter = function(self, unit, name, _, _, _, debuffType, duration, _, caster, isStealable, shouldConsolidate, spellID)
-		local key = self.___key
-		local db = MOD.db[key]
+		local db = SV.db.SVUnit[self.___key]
 		if((not db) or (db and not db.aurabar) or (spellID == 65148)) then
 			return false;
 		end
@@ -393,7 +407,7 @@ do
 			pass = true
 		end
 		if _test(barDB.filterDispellable, friendly) then
-			if (debuffType and not SV.Dispellable[debuffType]) or debuffType == nil then
+			if (debuffType and not MOD.Dispellable[debuffType]) or debuffType == nil then
 				filtered = false
 			end
 			pass = true
@@ -445,31 +459,31 @@ BUILD FUNCTION
 ]]--
 function MOD:CreateBuffs(frame, unit)
 	local aura = CreateFrame("Frame", nil, frame)
-	aura.db = unit
+	aura.___key = unit
 	aura.spacing = 2;
 	aura.PostCreateIcon = PostCreateAuraIcon;
 	aura.PostUpdateIcon = PostUpdateAuraIcon;
 	aura.CustomFilter = CustomAuraFilter;
 	aura:SetFrameLevel(10)
 	aura.type = "buffs"
-	aura.textFont = LSM:Fetch("font", MOD.db.auraFont)
-	aura.textSize = MOD.db.auraFontSize
-	aura.textOutline = MOD.db.auraFontOutline
+	aura.textFont = LSM:Fetch("font", SV.db.SVUnit.auraFont)
+	aura.textSize = SV.db.SVUnit.auraFontSize
+	aura.textOutline = SV.db.SVUnit.auraFontOutline
 	return aura
 end

 function MOD:CreateDebuffs(frame, unit)
 	local aura = CreateFrame("Frame", nil, frame)
-	aura.db = unit
+	aura.___key = unit
 	aura.spacing = 2;
 	aura.PostCreateIcon = PostCreateAuraIcon;
 	aura.PostUpdateIcon = PostUpdateAuraIcon;
 	aura.CustomFilter = CustomAuraFilter;
 	aura.type = "debuffs"
 	aura:SetFrameLevel(10)
-	aura.textFont = LSM:Fetch("font", MOD.db.auraFont)
-	aura.textSize = MOD.db.auraFontSize
-	aura.textOutline = MOD.db.auraFontOutline
+	aura.textFont = LSM:Fetch("font", SV.db.SVUnit.auraFont)
+	aura.textSize = SV.db.SVUnit.auraFontSize
+	aura.textOutline = SV.db.SVUnit.auraFontOutline
 	return aura
 end

@@ -493,17 +507,17 @@ function MOD:CreateAuraBarHeader(frame, unitName)
 	auraBarParent.spark = true;
 	auraBarParent.filter = CustomBarFilter;
 	auraBarParent.PostUpdate = ColorizeAuraBars;
-	auraBarParent.barTexture = LSM:Fetch("statusbar", MOD.db.auraBarStatusbar)
+	auraBarParent.barTexture = LSM:Fetch("statusbar", SV.db.SVUnit.auraBarStatusbar)
 	auraBarParent.timeFont = LSM:Fetch("font", "Roboto")
-	auraBarParent.textFont = LSM:Fetch("font", MOD.db.auraFont)
-	auraBarParent.textSize = MOD.db.auraFontSize
-	auraBarParent.textOutline = MOD.db.auraFontOutline
+	auraBarParent.textFont = LSM:Fetch("font", SV.db.SVUnit.auraFont)
+	auraBarParent.textSize = SV.db.SVUnit.auraFontSize
+	auraBarParent.textOutline = SV.db.SVUnit.auraFontOutline
 	return auraBarParent
 end

 function MOD:SmartAuraDisplay()
 	local unit = self.unit;
-	local db = MOD.db[unit];
+	local db = SV.db.SVUnit[unit];
 	if not db or not db.smartAuraDisplay or db.smartAuraDisplay == 'DISABLED' or not UnitExists(unit) then return end
 	local buffs = self.Buffs;
 	local debuffs = self.Debuffs;
@@ -553,11 +567,10 @@ end
 UPDATE
 ##########################################################
 ]]--
-local WATCH_CACHE = {}
 function MOD:UpdateAuraWatch(frame, key, override)
 	local AW = frame.AuraWatch
-	if not self.db[key] then return end
-	local db = self.db[key].auraWatch
+	if not SV.db.SVUnit[key] then return end
+	local db = SV.db.SVUnit[key].auraWatch
 	if not db then return end

 	if not db.enable then
@@ -567,13 +580,14 @@ function MOD:UpdateAuraWatch(frame, key, override)
 		AW:Show()
 	end

-	local bwSize = db.size;
+	local WATCH_CACHE

 	if key == "pet" and not override then
 		local petBW = SV.db.filter["PetBuffWatch"]
 		if(petBW) then
+			WATCH_CACHE = {}
 			for _, buff in pairs(petBW)do
-				if buff.style == "text" then
+				if(buff.style == "text") then
 					buff.style = "NONE"
 				end
 				tinsert(WATCH_CACHE, buff)
@@ -582,149 +596,153 @@ function MOD:UpdateAuraWatch(frame, key, override)
 	else
 		local unitBW = SV.db.filter["BuffWatch"]
 		if(unitBW) then
+			WATCH_CACHE = {}
 			for _, buff in pairs(unitBW)do
-				if buff.style == "text" then
+				if(buff.style == "text") then
 					buff.style = "NONE"
 				end
 				tinsert(WATCH_CACHE, buff)
 			end
 		end
-	end
-
-	if AW.icons then
-		for i = 1, #AW.icons do
-			local iconTest = false;
-			for j = 1, #WATCH_CACHE do
-				if #WATCH_CACHE[j].id and #WATCH_CACHE[j].id == AW.icons[i] then
-					iconTest = true;
-					break
+	end
+
+	if WATCH_CACHE then
+		local fontFile = LSM:Fetch("font", SV.db.SVUnit.auraFont)
+		local fontSize = SV.db.SVUnit.auraFontSize
+		local fontOutline = SV.db.SVUnit.auraFontOutline
+
+		if AW.icons then
+			for i = 1, #AW.icons do
+				local iconTest = false;
+				for j = 1, #WATCH_CACHE do
+					if(#WATCH_CACHE[j].id and #WATCH_CACHE[j].id == AW.icons[i]) then
+						iconTest = true;
+						break
+					end
+				end
+				if not iconTest then
+					AW.icons[i]:Hide()
+					AW.icons[i] = nil
 				end
 			end
-			if not iconTest then
-				AW.icons[i]:Hide()
-				AW.icons[i] = nil
-			end
-		end
-	end
+		end

-	local fontFile = LSM:Fetch("font", self.db.auraFont)
-	local fontSize = self.db.auraFontSize
-	local fontOutline = self.db.auraFontOutline
-
-	for i = 1, #WATCH_CACHE do
-		if WATCH_CACHE[i].id then
-			local buffName, _, buffTexture = GetSpellInfo(WATCH_CACHE[i].id)
-			if buffName then
-				local watchedAura;
-				if not AW.icons[WATCH_CACHE[i].id]then
-					watchedAura = CreateFrame("Frame", nil, AW)
-				else
-					watchedAura = AW.icons[WATCH_CACHE[i].id]
-				end
-				watchedAura.name = buffName;
-				watchedAura.image = buffTexture;
-				watchedAura.spellID = WATCH_CACHE[i].id;
-				watchedAura.anyUnit = WATCH_CACHE[i].anyUnit;
-				watchedAura.style = WATCH_CACHE[i].style;
-				watchedAura.onlyShowMissing = WATCH_CACHE[i].onlyShowMissing;
-				watchedAura.presentAlpha = watchedAura.onlyShowMissing and 0 or 1;
-				watchedAura.missingAlpha = watchedAura.onlyShowMissing and 1 or 0;
-				watchedAura.textThreshold = WATCH_CACHE[i].textThreshold or -1;
-				watchedAura.displayText = WATCH_CACHE[i].displayText;
-				watchedAura:Width(bwSize)
-				watchedAura:Height(bwSize)
-				watchedAura:ClearAllPoints()
-
-				watchedAura:SetPoint(WATCH_CACHE[i].point, frame.Health, WATCH_CACHE[i].point, WATCH_CACHE[i].xOffset, WATCH_CACHE[i].yOffset)
-				if not watchedAura.icon then
-					watchedAura.icon = watchedAura:CreateTexture(nil, "BORDER")
-					watchedAura.icon:SetAllPoints(watchedAura)
-				end
-				if not watchedAura.text then
-					local awText = CreateFrame("Frame", nil, watchedAura)
-					awText:SetFrameLevel(watchedAura:GetFrameLevel() + 50)
-					watchedAura.text = awText:CreateFontString(nil, "BORDER")
-				end
-				if not watchedAura.border then
-					watchedAura.border = watchedAura:CreateTexture(nil, "BACKGROUND")
-					watchedAura.border:Point("TOPLEFT", -1, 1)
-					watchedAura.border:Point("BOTTOMRIGHT", 1, -1)
-					watchedAura.border:SetTexture([[Interface\BUTTONS\WHITE8X8]])
-					watchedAura.border:SetVertexColor(0, 0, 0)
-				end
-				if not watchedAura.cd then
-					watchedAura.cd = CreateFrame("Cooldown", nil, watchedAura)
-					watchedAura.cd:SetAllPoints(watchedAura)
-					watchedAura.cd:SetReverse(true)
-					watchedAura.cd:SetFrameLevel(watchedAura:GetFrameLevel())
-				end
-				if watchedAura.style == "coloredIcon"then
-					watchedAura.icon:SetTexture([[Interface\BUTTONS\WHITE8X8]])
-					if WATCH_CACHE[i]["color"]then
-						watchedAura.icon:SetVertexColor(WATCH_CACHE[i]["color"].r, WATCH_CACHE[i]["color"].g, WATCH_CACHE[i]["color"].b)
+		for i = 1, #WATCH_CACHE do
+			if WATCH_CACHE[i].id then
+				local buffName, _, buffTexture = GetSpellInfo(WATCH_CACHE[i].id)
+				if buffName then
+					local watchedAura;
+					if not AW.icons[WATCH_CACHE[i].id]then
+						watchedAura = CreateFrame("Frame", nil, AW)
 					else
-						watchedAura.icon:SetVertexColor(0.8, 0.8, 0.8)
+						watchedAura = AW.icons[WATCH_CACHE[i].id]
 					end
-					watchedAura.icon:Show()
-					watchedAura.border:Show()
-					watchedAura.cd:SetAlpha(1)
-				elseif watchedAura.style == "texturedIcon" then
-					watchedAura.icon:SetVertexColor(1, 1, 1)
-					watchedAura.icon:SetTexCoord(.18, .82, .18, .82)
-					watchedAura.icon:SetTexture(watchedAura.image)
-					watchedAura.icon:Show()
-					watchedAura.border:Show()
-					watchedAura.cd:SetAlpha(1)
-				else
-					watchedAura.border:Hide()
-					watchedAura.icon:Hide()
-					watchedAura.cd:SetAlpha(0)
-				end
-				if watchedAura.displayText then
-					watchedAura.text:Show()
-					local r, g, b = 1, 1, 1;
-					if WATCH_CACHE[i].textColor then
-						r, g, b = WATCH_CACHE[i].textColor.r, WATCH_CACHE[i].textColor.g, WATCH_CACHE[i].textColor.b
+					watchedAura.name = buffName;
+					watchedAura.image = buffTexture;
+					watchedAura.spellID = WATCH_CACHE[i].id;
+					watchedAura.anyUnit = WATCH_CACHE[i].anyUnit;
+					watchedAura.style = WATCH_CACHE[i].style;
+					watchedAura.onlyShowMissing = WATCH_CACHE[i].onlyShowMissing;
+					watchedAura.presentAlpha = watchedAura.onlyShowMissing and 0 or 1;
+					watchedAura.missingAlpha = watchedAura.onlyShowMissing and 1 or 0;
+					watchedAura.textThreshold = WATCH_CACHE[i].textThreshold or -1;
+					watchedAura.displayText = WATCH_CACHE[i].displayText;
+					watchedAura:Width(db.size)
+					watchedAura:Height(db.size)
+					watchedAura:ClearAllPoints()
+
+					watchedAura:SetPoint(WATCH_CACHE[i].point, frame.Health, WATCH_CACHE[i].point, WATCH_CACHE[i].xOffset, WATCH_CACHE[i].yOffset)
+					if not watchedAura.icon then
+						watchedAura.icon = watchedAura:CreateTexture(nil, "BORDER")
+						watchedAura.icon:SetAllPoints(watchedAura)
 					end
-					watchedAura.text:SetTextColor(r, g, b)
-				else
-					watchedAura.text:Hide()
-				end
-				if not watchedAura.count then
-					watchedAura.count = watchedAura:CreateFontString(nil, "OVERLAY")
-				end
-				watchedAura.count:ClearAllPoints()
-				if watchedAura.displayText then
-					local anchor, relative, x, y = unpack(textCounterOffsets[WATCH_CACHE[i].point])
-					watchedAura.count:SetPoint(anchor, watchedAura.text, relative, x, y)
-				else
-					watchedAura.count:SetPoint("CENTER", unpack(counterOffsets[WATCH_CACHE[i].point]))
-				end
-
-				watchedAura.count:SetFont(fontFile, fontSize, fontOutline)
-				watchedAura.text:SetFont(fontFile, fontSize, fontOutline)
-				watchedAura.text:ClearAllPoints()
-				watchedAura.text:SetPoint(WATCH_CACHE[i].point, watchedAura, WATCH_CACHE[i].point)
-				if WATCH_CACHE[i].enabled then
-					AW.icons[WATCH_CACHE[i].id] = watchedAura;
-					if AW.watched then
-						AW.watched[WATCH_CACHE[i].id] = watchedAura
+					if not watchedAura.text then
+						local awText = CreateFrame("Frame", nil, watchedAura)
+						awText:SetFrameLevel(watchedAura:GetFrameLevel() + 50)
+						watchedAura.text = awText:CreateFontString(nil, "BORDER")
 					end
-				else
-					AW.icons[WATCH_CACHE[i].id] = nil;
-					if AW.watched then
-						AW.watched[WATCH_CACHE[i].id] = nil
+					if not watchedAura.border then
+						watchedAura.border = watchedAura:CreateTexture(nil, "BACKGROUND")
+						watchedAura.border:Point("TOPLEFT", -1, 1)
+						watchedAura.border:Point("BOTTOMRIGHT", 1, -1)
+						watchedAura.border:SetTexture([[Interface\BUTTONS\WHITE8X8]])
+						watchedAura.border:SetVertexColor(0, 0, 0)
+					end
+					if not watchedAura.cd then
+						watchedAura.cd = CreateFrame("Cooldown", nil, watchedAura)
+						watchedAura.cd:SetAllPoints(watchedAura)
+						watchedAura.cd:SetReverse(true)
+						watchedAura.cd:SetFrameLevel(watchedAura:GetFrameLevel())
+					end
+					if watchedAura.style == "coloredIcon"then
+						watchedAura.icon:SetTexture([[Interface\BUTTONS\WHITE8X8]])
+						if WATCH_CACHE[i]["color"]then
+							watchedAura.icon:SetVertexColor(WATCH_CACHE[i]["color"].r, WATCH_CACHE[i]["color"].g, WATCH_CACHE[i]["color"].b)
+						else
+							watchedAura.icon:SetVertexColor(0.8, 0.8, 0.8)
+						end
+						watchedAura.icon:Show()
+						watchedAura.border:Show()
+						watchedAura.cd:SetAlpha(1)
+					elseif watchedAura.style == "texturedIcon" then
+						watchedAura.icon:SetVertexColor(1, 1, 1)
+						watchedAura.icon:SetTexCoord(.18, .82, .18, .82)
+						watchedAura.icon:SetTexture(watchedAura.image)
+						watchedAura.icon:Show()
+						watchedAura.border:Show()
+						watchedAura.cd:SetAlpha(1)
+					else
+						watchedAura.border:Hide()
+						watchedAura.icon:Hide()
+						watchedAura.cd:SetAlpha(0)
+					end
+					if watchedAura.displayText then
+						watchedAura.text:Show()
+						local r, g, b = 1, 1, 1;
+						if WATCH_CACHE[i].textColor then
+							r, g, b = WATCH_CACHE[i].textColor.r, WATCH_CACHE[i].textColor.g, WATCH_CACHE[i].textColor.b
+						end
+						watchedAura.text:SetTextColor(r, g, b)
+					else
+						watchedAura.text:Hide()
+					end
+					if not watchedAura.count then
+						watchedAura.count = watchedAura:CreateFontString(nil, "OVERLAY")
+					end
+					watchedAura.count:ClearAllPoints()
+					if watchedAura.displayText then
+						local anchor, relative, x, y = unpack(textCounterOffsets[WATCH_CACHE[i].point])
+						watchedAura.count:SetPoint(anchor, watchedAura.text, relative, x, y)
+					else
+						watchedAura.count:SetPoint("CENTER", unpack(counterOffsets[WATCH_CACHE[i].point]))
+					end
+
+					watchedAura.count:SetFont(fontFile, fontSize, fontOutline)
+					watchedAura.text:SetFont(fontFile, fontSize, fontOutline)
+					watchedAura.text:ClearAllPoints()
+					watchedAura.text:SetPoint(WATCH_CACHE[i].point, watchedAura, WATCH_CACHE[i].point)
+					if WATCH_CACHE[i].enabled then
+						AW.icons[WATCH_CACHE[i].id] = watchedAura;
+						if AW.watched then
+							AW.watched[WATCH_CACHE[i].id] = watchedAura
+						end
+					else
+						AW.icons[WATCH_CACHE[i].id] = nil;
+						if AW.watched then
+							AW.watched[WATCH_CACHE[i].id] = nil
+						end
+						watchedAura:Hide()
+						watchedAura = nil
 					end
-					watchedAura:Hide()
-					watchedAura = nil
 				end
 			end
-		end
-	end
+		end
+
+		WATCH_CACHE = nil
+	end
 	if frame.AuraWatch.Update then
 		frame.AuraWatch.Update(frame)
 	end
-	wipe(WATCH_CACHE)
 end

 function MOD:UpdateGroupAuraWatch(header, override)
diff --git a/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua b/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
index d93765f..f47c6f4 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/castbar.lua
@@ -16,38 +16,51 @@ S U P E R - V I L L A I N - U I  By: Munglunch               #
 LOCALIZED LUA FUNCTIONS
 ##########################################################
 ]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack  = _G.unpack;
-local select  = _G.select;
-local pairs   = _G.pairs;
-local tostring = _G.tostring;
-local tonumber = _G.tonumber;
-local tinsert  = _G.tinsert;
-local string  = _G.string;
-local math   = _G.math;
-local table   = _G.table;
---[[ STRING METHODS ]]--
-local find, format, len, split = string.find, string.format, string.len, string.split;
-local match, sub, join = string.match, string.sub, string.join;
+--LUA
+local unpack        = unpack;
+local select        = select;
+local pairs         = pairs;
+local type          = type;
+local rawset        = rawset;
+local rawget        = rawget;
+local tostring      = tostring;
+local error         = error;
+local next          = next;
+local pcall         = pcall;
+local getmetatable  = getmetatable;
+local setmetatable  = setmetatable;
+local assert        = assert;
+--BLIZZARD
+local _G            = _G;
+local tinsert       = _G.tinsert;
+local tremove       = _G.tremove;
+local twipe         = _G.wipe;
+--STRING
+local string        = string;
+local format        = string.format;
+local sub           = string.sub;
+--MATH
+local math          = math;
+--TABLE
+local table         = table;
+local tsort         = table.sort;
+local tremove       = table.remove;
 --[[ MATH METHODS ]]--
 local abs, ceil, floor = math.abs, math.ceil, math.floor; -- Basic
 local parsefloat = math.parsefloat; -- Uncommon
---[[ TABLE METHODS ]]--
-local tremove, tcopy, twipe, tsort, tconcat = table.remove, table.copy, table.wipe, table.sort, table.concat;
 --[[
 ##########################################################
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.");

-local L = LibLocale();
+local L = SV.L;
 local MOD = SV.SVUnit
+
 if(not MOD) then return end
 --[[
 ##########################################################
@@ -697,7 +710,7 @@ function MOD:CreateCastbar(frame, reversed, moverName, ryu, useFader, isBoss)
 	castbar.SparkColor = oUF_Villain.colors.spark

 	if moverName then
-		SV:SetSVMovable(castbar.Holder, moverName, nil, -6, nil, "ALL, SOLO")
+		SV.Mentalo:Add(castbar.Holder, moverName, nil, -6, nil, "ALL, SOLO")
 	end

 	if useFader then
@@ -714,7 +727,7 @@ UPDATE
 ]]--
 function MOD:PostCastStart(unit, index, ...)
 	if unit == "vehicle" then unit = "player" end
-	local db = MOD.db
+	local db = SV.db.SVUnit
 	if(not db or not(db and db[unit] and db[unit].castbar)) then return end
 	local unitDB = db[unit].castbar
 	if unitDB.displayTarget and self.curTarget then
@@ -736,14 +749,14 @@ end

 function MOD:PostChannelUpdate(unit, index)
 	if unit == "vehicle" then unit = "player" end
-	local db = MOD.db[unit];
+	local db = SV.db.SVUnit[unit];
 	if(not db or not db.castbar or not(unit == "player")) then return end
 	CustomChannelUpdate(self, unit, index, db.castbar.ticks)
 end

 function MOD:PostCastInterruptible(unit)
 	if unit == "vehicle" or unit == "player" then return end
-	CustomInterruptible(self, unit, MOD.db.castClassColor)
+	CustomInterruptible(self, unit, SV.db.SVUnit.castClassColor)
 end

 function MOD:PostCastNotInterruptible(unit)
diff --git a/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua b/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua
index b5e12e8..4eb14f4 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua
@@ -16,27 +16,29 @@ S U P E R - V I L L A I N - U I   By: Munglunch                              #
 LOCALIZED LUA FUNCTIONS
 ##########################################################
 ]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local assert 	= _G.assert;
-local math 		= _G.math;
-local random 	= math.random;
+--LUA
+local unpack        = unpack;
+local select        = select;
+local assert        = assert;
+--BLIZZARD
+local _G            = _G;
+--MATH
+local math          = math;
+local random        = math.random;
 --[[
 ##########################################################
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.");

-local L = LibLocale();
+local L = SV.L;
 local LSM = LibStub("LibSharedMedia-3.0")
 local MOD = SV.SVUnit
+
 if(not MOD) then return end
 --[[
 ##########################################################
@@ -303,9 +305,9 @@ local function CreateActionPanel(frame, offset)
 end

 local function CreateNameText(frame, unitName)
-	local db = MOD.db
-	if(MOD.db[unitName] and MOD.db[unitName].name) then
-		db = MOD.db[unitName].name
+	local db = SV.db.SVUnit
+	if(SV.db.SVUnit[unitName] and SV.db.SVUnit[unitName].name) then
+		db = SV.db.SVUnit[unitName].name
 	end
 	local name = frame:CreateFontString(nil, "OVERLAY")
 	name:SetFont(LSM:Fetch("font", db.font), db.fontSize, db.fontOutline)
@@ -416,7 +418,7 @@ function MOD:SetActionPanel(frame, unit, noHealthText, noPowerText, noMiscText)

 	if(not noHealthText) then
 		frame.InfoPanel.Health = frame.InfoPanel:CreateFontString(nil, "OVERLAY")
-		frame.InfoPanel.Health:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+		frame.InfoPanel.Health:SetFont(LSM:Fetch("font", SV.db.SVUnit.font), SV.db.SVUnit.fontSize, SV.db.SVUnit.fontOutline)
 		offset = reverse and 2 or -2;
 		direction = reverse and "LEFT" or "RIGHT";
 		frame.InfoPanel.Health:Point(direction, frame.InfoPanel, direction, offset, 0)
@@ -424,7 +426,7 @@ function MOD:SetActionPanel(frame, unit, noHealthText, noPowerText, noMiscText)

 	if(not noPowerText) then
 		frame.InfoPanel.Power = frame.InfoPanel:CreateFontString(nil, "OVERLAY")
-		frame.InfoPanel.Power:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+		frame.InfoPanel.Power:SetFont(LSM:Fetch("font", SV.db.SVUnit.font), SV.db.SVUnit.fontSize, SV.db.SVUnit.fontOutline)
 		offset = reverse and -2 or 2;
 		direction = reverse and "RIGHT" or "LEFT";
 		frame.InfoPanel.Power:Point(direction, frame.InfoPanel, direction, offset, 0)
@@ -432,7 +434,7 @@ function MOD:SetActionPanel(frame, unit, noHealthText, noPowerText, noMiscText)

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

@@ -583,13 +585,13 @@ function MOD:CreateAltPowerBar(frame)
 	altPower.text = altPower:CreateFontString(nil, "OVERLAY")
 	altPower.text:SetPoint("CENTER")
 	altPower.text:SetJustifyH("CENTER")
-	altPower.text:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+	altPower.text:SetFont(LSM:Fetch("font", SV.db.SVUnit.font), SV.db.SVUnit.fontSize, SV.db.SVUnit.fontOutline)
 	altPower.PostUpdate = PostUpdateAltPower;
 	return altPower
 end

 function MOD:PostUpdatePower(unit, value, max)
-	local db = MOD.db[unit]
+	local db = SV.db.SVUnit[unit]
 	local powerType, _, _, _, _ = UnitPowerType(unit)
 	local parent = self:GetParent()
 	if parent.isForced then
diff --git a/Interface/AddOns/SVUI/packages/unit/elements/misc.lua b/Interface/AddOns/SVUI/packages/unit/elements/misc.lua
index e7b0220..581fe67 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/misc.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/misc.lua
@@ -13,14 +13,21 @@ _____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 S U P E R - V I L L A I N - U I   By: Munglunch                              #
 ##############################################################################
 --]]
-local SVUI_ADDON_NAME, SV = ...
+--LUA
+local unpack        = unpack;
+local select        = select;
+local assert        = assert;
+--BLIZZARD
+local _G            = _G;
+
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.");

-local L = LibLocale();
+local L = SV.L;
 local MOD = SV.SVUnit
+
 if(not MOD) then return end
 --[[
 ##########################################################
@@ -178,7 +185,7 @@ end

 local UpdateRoleIcon = function(self)
 	local key = self.___key
-	local db = MOD.db[key]
+	local db = SV.db.SVUnit[key]
 	if(not db or not db.icons or (db.icons and not db.icons.roleIcon)) then return end
 	local lfd = self.LFDRole
 	if(not db.icons.roleIcon.enable) then lfd:Hide() return end
@@ -245,7 +252,7 @@ function MOD:RaidRoleUpdate()
 	local looterIcon = frame.MasterLooter;
 	if not leaderIcon or not looterIcon then return end
 		local key = frame.___key;
-		local db = MOD.db[key];
+		local db = SV.db.SVUnit[key];
 		local leaderShown = leaderIcon:IsShown()
 		local looterShown = looterIcon:IsShown()
 		leaderIcon:ClearAllPoints()
@@ -306,7 +313,7 @@ local ExRep_OnEnter = function(self)if self:IsShown() then UIFrameFadeIn(self,.1
 local ExRep_OnLeave = function(self)if self:IsShown() then UIFrameFadeOut(self,.2,1,0) end end

 function MOD:CreateExperienceRepBar(frame)
-	local db = MOD.db.player;
+	local db = SV.db.SVUnit.player;

 	if db.playerExpBar then
 		local xp = CreateFrame("StatusBar", "PlayerFrameExperienceBar", frame.Power)
diff --git a/Interface/AddOns/SVUI/packages/unit/elements/tags.lua b/Interface/AddOns/SVUI/packages/unit/elements/tags.lua
index 53ef010..8737477 100644
--- a/Interface/AddOns/SVUI/packages/unit/elements/tags.lua
+++ b/Interface/AddOns/SVUI/packages/unit/elements/tags.lua
@@ -15,26 +15,26 @@ S U P E R - V I L L A I N - U I  By: Munglunch               #
 ]]--
 --[[ GLOBALS ]]--
 local _G 		= _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local table 	= _G.table;
-local string 	= _G.string;
+local unpack 	= unpack;
+local select 	= select;
+local pairs 	= pairs;
+local assert 	= assert;
+local table 	= table;
+local string 	= string;
 --[[ STRING METHODS ]]--
 local find, format, byte, upper = string.find, string.format, string.byte, string.upper;
 local sub, gsub, len = string.sub, string.gsub, string.len;
 --[[ TABLE METHODS ]]--
-local twipe = table.wipe;
+local twipe = _G.wipe;
 --[[
 ##########################################################
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")
 --[[
 ##########################################################
diff --git a/Interface/AddOns/SVUI/packages/unit/frames.lua b/Interface/AddOns/SVUI/packages/unit/frames.lua
index dfcf07d..7561c1e 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames.lua
@@ -13,31 +13,49 @@ _____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 S U P E R - V I L L A I N - U I   By: Munglunch                              #
 ##############################################################################
 --]]
---[[ GLOBALS ]]--
-local _G        = _G;
-local unpack    = _G.unpack;
-local select    = _G.select;
-local pairs     = _G.pairs;
-local ipairs    = _G.ipairs;
-local type      = _G.type;
-local tostring  = _G.tostring;
-local tinsert   = _G.tinsert;
-local string    = _G.string;
-local math      = _G.math, math.ceil;
---[[ STRING METHODS ]]--
-local find, format, upper = string.find, string.format, string.upper;
-local match, gsub = string.match, string.gsub;
-local numMin, ceil = math.min;
-
-local SVUI_ADDON_NAME, SV = ...
+--LUA
+local unpack        = unpack;
+local select        = select;
+local pairs         = pairs;
+local type          = type;
+local rawset        = rawset;
+local rawget        = rawget;
+local tostring      = tostring;
+local error         = error;
+local next          = next;
+local pcall         = pcall;
+local getmetatable  = getmetatable;
+local setmetatable  = setmetatable;
+local assert        = assert;
+--BLIZZARD
+local _G            = _G;
+local tinsert       = _G.tinsert;
+local tremove       = _G.tremove;
+local twipe         = _G.wipe;
+--STRING
+local string        = string;
+local format        = string.format;
+local sub           = string.sub;
+local upper         = string.upper;
+local match         = string.match;
+local gsub          = string.gsub;
+--MATH
+local math          = math;
+local numMin        = math.min;
+--TABLE
+local table         = table;
+local tsort         = table.sort;
+local tremove       = table.remove;
+
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 local LSM = LibStub("LibSharedMedia-3.0")
 local MOD = SV.SVUnit
+
 if(not MOD) then return end
 --[[
 ##########################################################
@@ -143,7 +161,7 @@ PLAYER
 ##########################################################
 ]]--
 local UpdatePlayerFrame = function(self)
-    local db = MOD.db["player"]
+    local db = SV.db.SVUnit["player"]
     local UNIT_WIDTH = db.width;
     local UNIT_HEIGHT = db.height;
     local USE_CLASSBAR = db.classbar.enable;
@@ -151,7 +169,7 @@ local UpdatePlayerFrame = function(self)
     local classBarWidth = db.width * 0.4;
     local healthPanel = self.HealthPanel
     local iconDB = db.icons
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")

     MOD.RefreshUnitMedia(self, "player")

@@ -315,13 +333,13 @@ CONSTRUCTORS["player"] = function(self, unit)
     self.Resting = MOD:CreateRestingIndicator(self)
     self.Combat = MOD:CreateCombatIndicator(self)
     self.PvPText = self.InfoPanel:CreateFontString(nil,'OVERLAY')
-    self.PvPText:SetFontTemplate(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+    self.PvPText:SetFontTemplate(LSM:Fetch("font", SV.db.SVUnit.font), SV.db.SVUnit.fontSize, SV.db.SVUnit.fontOutline)
     self.Afflicted = MOD:CreateAfflicted(self)
     self.HealPrediction = MOD:CreateHealPrediction(self, true)
     self.AuraBars = MOD:CreateAuraBarHeader(self, key)
     self.CombatFade = true;
     self:Point("BOTTOMLEFT", SV.UIParent, "BOTTOM", -413, 182)
-    SV:SetSVMovable(self, L["Player Frame"], nil, nil, nil, "ALL, SOLO")
+    SV.Mentalo:Add(self, L["Player Frame"], nil, nil, nil, "ALL, SOLO")

     self.MediaUpdate = MOD.RefreshUnitMedia
     self.Update = UpdatePlayerFrame
@@ -334,12 +352,12 @@ TARGET
 ##########################################################
 ]]--
 local UpdateTargetFrame = function(self)
-    local db = MOD.db["target"]
+    local db = SV.db.SVUnit["target"]
     local UNIT_WIDTH = db.width;
     local UNIT_HEIGHT = db.height;
     local USE_COMBOBAR = db.combobar.enable;
     local comboBarHeight = db.combobar.height;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")

     MOD.RefreshUnitMedia(self, "target")
     self.colors = oUF_Villain.colors;
@@ -353,7 +371,7 @@ local UpdateTargetFrame = function(self)
     end
     MOD:RefreshUnitLayout(self, "target")

-    if(MOD.db.xrayFocus) then
+    if(SV.db.SVUnit.xrayFocus) then
         self.XRay:Show()
     else
         self.XRay:Hide()
@@ -424,7 +442,7 @@ CONSTRUCTORS["target"] = function(self, unit)
     self:RegisterEvent("PLAYER_TARGET_CHANGED", MOD.SmartAuraDisplay)

     self.RaidIcon = MOD:CreateRaidIcon(self)
-    local isSmall = MOD.db[key].combobar.smallIcons
+    local isSmall = SV.db.SVUnit[key].combobar.smallIcons
     if(SV.class == "ROGUE") then
         self.HyperCombo = MOD:CreateRogueCombobar(self, isSmall)
     elseif(SV.class == "DRUID") then
@@ -437,7 +455,7 @@ CONSTRUCTORS["target"] = function(self, unit)
     self.XRay = MOD:CreateXRay(self)
     self.XRay:SetPoint("TOPRIGHT", 12, 12)
     self:Point("BOTTOMRIGHT", SV.UIParent, "BOTTOM", 413, 182)
-    SV:SetSVMovable(self, L["Target Frame"], nil, nil, nil, "ALL, SOLO")
+    SV.Mentalo:Add(self, L["Target Frame"], nil, nil, nil, "ALL, SOLO")

     self.MediaUpdate = MOD.RefreshUnitMedia
     self.Update = UpdateTargetFrame
@@ -449,10 +467,10 @@ TARGET OF TARGET
 ##########################################################
 ]]--
 local UpdateTargetTargetFrame = function(self)
-    local db = MOD.db["targettarget"]
+    local db = SV.db.SVUnit["targettarget"]
     local UNIT_WIDTH = db.width
     local UNIT_HEIGHT = db.height
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD.RefreshUnitMedia(self, "targettarget")
     self.colors = oUF_Villain.colors;
     self:Size(UNIT_WIDTH, UNIT_HEIGHT)
@@ -479,7 +497,7 @@ CONSTRUCTORS["targettarget"] = function(self, unit)
     self.RaidIcon = MOD:CreateRaidIcon(self)
     self.Range = { insideAlpha = 1, outsideAlpha = 1 }
     self:Point("BOTTOM", SV.UIParent, "BOTTOM", 0, 213)
-    SV:SetSVMovable(self, L["TargetTarget Frame"], nil, nil, nil, "ALL, SOLO")
+    SV.Mentalo:Add(self, L["TargetTarget Frame"], nil, nil, nil, "ALL, SOLO")

     self.MediaUpdate = MOD.RefreshUnitMedia
     self.Update = UpdateTargetTargetFrame
@@ -491,10 +509,10 @@ PET
 ##########################################################
 ]]--
 local UpdatePetFrame = function(self)
-    local db = MOD.db["pet"]
+    local db = SV.db.SVUnit["pet"]
     local UNIT_WIDTH = db.width;
     local UNIT_HEIGHT = db.height;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD.RefreshUnitMedia(self, "pet")
     self.colors = oUF_Villain.colors;
     self:Size(UNIT_WIDTH, UNIT_HEIGHT)
@@ -530,7 +548,7 @@ CONSTRUCTORS["pet"] = function(self, unit)
     self.RaidIcon = MOD:CreateRaidIcon(self)
     self.Range = { insideAlpha = 1, outsideAlpha = 1 }
     self:Point("BOTTOM", SV.UIParent, "BOTTOM", 0, 182)
-    SV:SetSVMovable(self, L["Pet Frame"], nil, nil, nil, "ALL, SOLO")
+    SV.Mentalo:Add(self, L["Pet Frame"], nil, nil, nil, "ALL, SOLO")
     self.MediaUpdate = MOD.RefreshUnitMedia
     self.Update = UpdatePetFrame
     return self
@@ -541,10 +559,10 @@ TARGET OF PET
 ##########################################################
 ]]--
 local UpdatePetTargetFrame = function(self)
-    local db = MOD.db["pettarget"]
+    local db = SV.db.SVUnit["pettarget"]
     local UNIT_WIDTH = db.width;
     local UNIT_HEIGHT = db.height;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD.RefreshUnitMedia(self, "pettarget")
     self.colors = oUF_Villain.colors;
     self:Size(UNIT_WIDTH, UNIT_HEIGHT)
@@ -574,7 +592,7 @@ CONSTRUCTORS["pettarget"] = function(self, unit)
     self.Debuffs = MOD:CreateDebuffs(self, key)
     self.Range = { insideAlpha = 1, outsideAlpha = 1 }
     self:Point("BOTTOM", SVUI_Pet, "TOP", 0, 7)
-    SV:SetSVMovable(self, L["PetTarget Frame"], nil, -7, nil, "ALL, SOLO")
+    SV.Mentalo:Add(self, L["PetTarget Frame"], nil, -7, nil, "ALL, SOLO")

     self.MediaUpdate = MOD.RefreshUnitMedia
     self.Update = UpdatePetTargetFrame
@@ -586,17 +604,17 @@ FOCUS
 ##########################################################
 ]]--
 local UpdateFocusFrame = function(self)
-    local db = MOD.db["focus"]
+    local db = SV.db.SVUnit["focus"]
     local UNIT_WIDTH = db.width;
     local UNIT_HEIGHT = db.height;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD.RefreshUnitMedia(self, "focus")
     self.colors = oUF_Villain.colors;
     self:Size(UNIT_WIDTH, UNIT_HEIGHT)
     _G[self:GetName().."_MOVE"]:Size(self:GetSize())
     MOD:RefreshUnitLayout(self, "focus")

-    if(MOD.db.xrayFocus) then
+    if(SV.db.SVUnit.xrayFocus) then
         self.XRay:Show()
     else
         self.XRay:Hide()
@@ -638,7 +656,7 @@ CONSTRUCTORS["focus"] = function(self, unit)
     self.XRay = MOD:CreateXRay_Closer(self)
     self.XRay:SetPoint("RIGHT", 20, 0)
     self:Point("BOTTOMRIGHT", SVUI_Target, "TOPRIGHT", 0, 220)
-    SV:SetSVMovable(self, L["Focus Frame"], nil, nil, nil, "ALL, SOLO")
+    SV.Mentalo:Add(self, L["Focus Frame"], nil, nil, nil, "ALL, SOLO")

     self.MediaUpdate = MOD.RefreshUnitMedia
     self.Update = UpdateFocusFrame
@@ -650,10 +668,10 @@ TARGET OF FOCUS
 ##########################################################
 ]]--
 local UpdateFocusTargetFrame = function(self)
-    local db = MOD.db["focustarget"]
+    local db = SV.db.SVUnit["focustarget"]
     local UNIT_WIDTH = db.width;
     local UNIT_HEIGHT = db.height;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD.RefreshUnitMedia(self, "focustarget")
     self.colors = oUF_Villain.colors;
     self:Size(UNIT_WIDTH, UNIT_HEIGHT)
@@ -679,7 +697,7 @@ CONSTRUCTORS["focustarget"] = function(self, unit)
     self.RaidIcon = MOD:CreateRaidIcon(self)
     self.Range = { insideAlpha = 1, outsideAlpha = 1 }
     self:Point("BOTTOM", SVUI_Focus, "TOP", 0, 7)
-    SV:SetSVMovable(self, L["FocusTarget Frame"], nil, -7, nil, "ALL, SOLO")
+    SV.Mentalo:Add(self, L["FocusTarget Frame"], nil, -7, nil, "ALL, SOLO")

     self.MediaUpdate = MOD.RefreshUnitMedia
     self.Update = UpdateFocusTargetFrame
@@ -691,7 +709,7 @@ BOSS
 ##########################################################
 ]]--
 local UpdateBossFrame = function(self)
-    local db = MOD.db["boss"]
+    local db = SV.db.SVUnit["boss"]
     local INDEX = self:GetID() or 1;
     local holder = _G["SVUI_Boss_MOVE"]
     local UNIT_WIDTH = db.width;
@@ -720,7 +738,7 @@ local UpdateBossFrame = function(self)
         end
     end

-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD:RefreshUnitLayout(self, "boss")
     self:UpdateAllElements()
 end
@@ -752,7 +770,7 @@ CONSTRUCTORS["boss"] = function(self, unit)

     if(not _G["SVUI_Boss_MOVE"]) then
         self:Point("RIGHT", SV.UIParent, "RIGHT", -105, 0)
-        SV:SetSVMovable(self, L["Boss Frames"], nil, nil, nil, "ALL, PARTY, RAID10, RAID25, RAID40", "SVUI_Boss")
+        SV.Mentalo:Add(self, L["Boss Frames"], nil, nil, nil, "ALL, PARTY, RAID10, RAID25, RAID40", "SVUI_Boss")
     else
         self:Point("TOPRIGHT", lastBossFrame, "BOTTOMRIGHT", 0, -20)
     end
@@ -812,7 +830,7 @@ local function CreatePrepFrame(frameName, parentFrame, parentID)
 end

 local UpdateArenaFrame = function(self)
-    local db = MOD.db["arena"]
+    local db = SV.db.SVUnit["arena"]
     local INDEX = self:GetID() or 1;
     local holder = _G["SVUI_Arena_MOVE"]
     local UNIT_WIDTH = db.width;
@@ -822,7 +840,7 @@ local UpdateArenaFrame = function(self)

     self.colors = oUF_Villain.colors;
     self:Size(UNIT_WIDTH, UNIT_HEIGHT)
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")

     self:ClearAllPoints()

@@ -919,7 +937,7 @@ CONSTRUCTORS["arena"] = function(self, unit)

     if(not _G["SVUI_Arena_MOVE"]) then
         self:Point("RIGHT", SV.UIParent, "RIGHT", -105, 0)
-        SV:SetSVMovable(self, L["Arena Frames"], nil, nil, nil, "ALL, ARENA", "SVUI_Arena")
+        SV.Mentalo:Add(self, L["Arena Frames"], nil, nil, nil, "ALL, ARENA", "SVUI_Arena")
     else
         self:Point("TOPRIGHT", lastArenaFrame, "BOTTOMRIGHT", 0, -20)
     end
@@ -938,7 +956,7 @@ local ArenaPrepHandler = CreateFrame("Frame")
 local ArenaPrepHandler_OnEvent = function(self, event)
     local prepframe
     local _, instanceType = IsInInstance()
-    if(not SV.db.SVUnit.arena.enable or instanceType ~= "arena") then return end
+    if(not SV.db.SVUnit.arena or not SV.db.SVUnit.arena.enable or instanceType ~= "arena") then return end
     if event == "PLAYER_LOGIN" then
         for i = 1, 5 do
             prepframe = _G["SVUI_Arena"..i.."PrepFrame"]
@@ -1025,7 +1043,7 @@ function MOD:SetUnitFrame(key)
     if frame:GetParent() ~= SVUI_UnitFrameParent then
         frame:SetParent(SVUI_UnitFrameParent)
     end
-    if(self.db.enable and self.db[key].enable) then
+    if(SV.db.SVUnit.enable and SV.db.SVUnit[key].enable) then
         frame:Enable()
         frame:Update()
     else
@@ -1055,7 +1073,7 @@ function MOD:SetEnemyFrames(key, maxCount)
         if frame.isForced then
             self:AllowElement(frame)
         end
-        if(self.db.enable and self.db[key].enable) then
+        if(SV.db.SVUnit.enable and SV.db.SVUnit[key].enable) then
             frame:Enable()
             frame:Update()
         else
@@ -1100,15 +1118,15 @@ RAID 10, 25, 40
 ##########################################################
 ]]--
 local Raid10Visibility = function(self, event)
-    local db = MOD.db["raid10"]
-    if (not db or (db and not db.enable) or (MOD.db and not MOD.db.smartRaidFilter) or self.isForced) then return end
+    local db = SV.db.SVUnit["raid10"]
+    if (not db or (db and not db.enable) or (SV.db.SVUnit and not SV.db.SVUnit.smartRaidFilter) or self.isForced) then return end

     local instance, instanceType = IsInInstance()
     local _, _, _, _, maxPlayers, _, _ = GetInstanceInfo()
     if(event == "PLAYER_REGEN_ENABLED") then
         self:UnregisterEvent("PLAYER_REGEN_ENABLED")
     end
-    if not InCombatLockdown()then
+    if not InCombatLockdown() then
         if(instance and (instanceType == "raid") and (maxPlayers == 10)) then
             UnregisterStateDriver(self, "visibility")
             self:Show()
@@ -1125,8 +1143,8 @@ local Raid10Visibility = function(self, event)
 end

 local Raid25Visibility = function(self, event)
-    local db = MOD.db["raid25"]
-    if (not db or (db and not db.enable) or (MOD.db and not MOD.db.smartRaidFilter) or self.isForced) then return end
+    local db = SV.db.SVUnit["raid25"]
+    if (not db or (db and not db.enable) or (SV.db.SVUnit and not SV.db.SVUnit.smartRaidFilter) or self.isForced) then return end

     local instance, instanceType = IsInInstance()
     local _, _, _, _, maxPlayers, _, _ = GetInstanceInfo()
@@ -1150,8 +1168,8 @@ local Raid25Visibility = function(self, event)
 end

 local Raid40Visibility = function(self, event)
-    local db = MOD.db["raid40"]
-    if (not db or (db and not db.enable) or (MOD.db and not MOD.db.smartRaidFilter) or self.isForced) then return end
+    local db = SV.db.SVUnit["raid40"]
+    if (not db or (db and not db.enable) or (SV.db.SVUnit and not SV.db.SVUnit.smartRaidFilter) or self.isForced) then return end

     local instance, instanceType = IsInInstance()
     local _, _, _, _, maxPlayers, _, _ = GetInstanceInfo()
@@ -1176,7 +1194,7 @@ end

 local UpdateRaidSubUnit = function(self, key, db)
     self.colors = oUF_Villain.colors;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     local UNIT_WIDTH, UNIT_HEIGHT = MOD:GetActiveSize(db)
     if not InCombatLockdown() then
         self:Size(UNIT_WIDTH, UNIT_HEIGHT)
@@ -1210,7 +1228,7 @@ GROUP_UPDATES["raid10"] = function(self)
     if not frame.positioned then
         frame:ClearAllPoints()
         frame:Point("LEFT", SV.UIParent, "LEFT", 4, 0)
-        SV:SetSVMovable(frame, L["Raid 10 Frames"], nil, nil, nil, "ALL, RAID"..10)
+        SV.Mentalo:Add(frame, L["Raid 10 Frames"], nil, nil, nil, "ALL, RAID"..10)
         frame:RegisterEvent("PLAYER_ENTERING_WORLD")
         frame:RegisterEvent("ZONE_CHANGED_NEW_AREA")
         frame:SetScript("OnEvent", Raid10Visibility)
@@ -1218,7 +1236,7 @@ GROUP_UPDATES["raid10"] = function(self)
     end
     Raid10Visibility(frame)
     local key = "raid10"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     local index = 1;
     local childFrame = self:GetAttribute("child"..index)
     while childFrame do
@@ -1239,7 +1257,7 @@ GROUP_UPDATES["raid25"] = function(self)
     if not frame.positioned then
         frame:ClearAllPoints()
         frame:Point("LEFT", SV.UIParent, "LEFT", 4, 0)
-        SV:SetSVMovable(frame, L["Raid 25 Frames"], nil, nil, nil, "ALL, RAID"..25)
+        SV.Mentalo:Add(frame, L["Raid 25 Frames"], nil, nil, nil, "ALL, RAID"..25)
         frame:RegisterEvent("PLAYER_ENTERING_WORLD")
         frame:RegisterEvent("ZONE_CHANGED_NEW_AREA")
         frame:SetScript("OnEvent", Raid25Visibility)
@@ -1247,7 +1265,7 @@ GROUP_UPDATES["raid25"] = function(self)
     end
     Raid25Visibility(frame)
     local key = "raid25"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     local index = 1;
     local childFrame = self:GetAttribute("child"..index)
     while childFrame do
@@ -1268,7 +1286,7 @@ GROUP_UPDATES["raid40"] = function(self)
     if not frame.positioned then
         frame:ClearAllPoints()
         frame:Point("LEFT", SV.UIParent, "LEFT", 4, 0)
-        SV:SetSVMovable(frame, L["Raid 40 Frames"], nil, nil, nil, "ALL, RAID"..40)
+        SV.Mentalo:Add(frame, L["Raid 40 Frames"], nil, nil, nil, "ALL, RAID"..40)
         frame:RegisterEvent("PLAYER_ENTERING_WORLD")
         frame:RegisterEvent("ZONE_CHANGED_NEW_AREA")
         frame:SetScript("OnEvent", Raid40Visibility)
@@ -1276,7 +1294,7 @@ GROUP_UPDATES["raid40"] = function(self)
     end
     Raid40Visibility(frame)
     local key = "raid40"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     local index = 1;
     local childFrame = self:GetAttribute("child"..index)
     while childFrame do
@@ -1337,6 +1355,7 @@ CONSTRUCTORS["raid10"] = function(self, unit)
     self.___key = key
     MOD:SetActionPanel(self, key)
     self.Health = MOD:CreateHealthBar(self, true)
+    self.Health.frequentUpdates = false
     self.Power = MOD:CreatePowerBar(self, true)
     self.Power.frequentUpdates = false
     self.Buffs = MOD:CreateBuffs(self, key)
@@ -1351,6 +1370,7 @@ CONSTRUCTORS["raid25"] = function(self, unit)
     self.___key = key
     MOD:SetActionPanel(self, key)
     self.Health = MOD:CreateHealthBar(self, true)
+    self.Health.frequentUpdates = false
     self.Power = MOD:CreatePowerBar(self, true)
     self.Power.frequentUpdates = false
     self.Buffs = MOD:CreateBuffs(self, key)
@@ -1365,6 +1385,7 @@ CONSTRUCTORS["raid40"] = function(self, unit)
     self.___key = key
     MOD:SetActionPanel(self, key)
     self.Health = MOD:CreateHealthBar(self, true)
+    self.Health.frequentUpdates = false
     self.Power = MOD:CreatePowerBar(self, true)
     self.Power.frequentUpdates = false
     self.Buffs = MOD:CreateBuffs(self, key)
@@ -1378,8 +1399,8 @@ RAID PETS
 ##########################################################
 ]]--
 local RaidPetVisibility = function(self, event)
-    local db = MOD.db["raidpet"]
-    if (not db or (db and not db.enable) or (MOD.db and not MOD.db.smartRaidFilter) or self.isForced) then return end
+    local db = SV.db.SVUnit["raidpet"]
+    if (not db or (db and not db.enable) or (SV.db.SVUnit and not SV.db.SVUnit.smartRaidFilter) or self.isForced) then return end
     local inInstance, instanceType = IsInInstance()
     if event == "PLAYER_REGEN_ENABLED" then self:UnregisterEvent("PLAYER_REGEN_ENABLED") end

@@ -1401,15 +1422,15 @@ GROUP_UPDATES["raidpet"] = function(self)
     if not raidPets.positioned then
         raidPets:ClearAllPoints()
         raidPets:Point("BOTTOMLEFT", SV.UIParent, "BOTTOMLEFT", 4, 433)
-        SV:SetSVMovable(raidPets, L["Raid Pet Frames"], nil, nil, nil, "ALL, RAID10, RAID25, RAID40")
-        raidPets.positioned = true;
+        SV.Mentalo:Add(raidPets, L["Raid Pet Frames"], nil, nil, nil, "ALL, RAID10, RAID25, RAID40")
         raidPets:RegisterEvent("PLAYER_ENTERING_WORLD")
         raidPets:RegisterEvent("ZONE_CHANGED_NEW_AREA")
         raidPets:SetScript("OnEvent", RaidPetVisibility)
+        raidPets.positioned = true;
     end
     RaidPetVisibility(raidPets)
     local key = "raidpet"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     local index = 1;
     local childFrame = self:GetAttribute("child"..index)
     while childFrame do
@@ -1470,8 +1491,8 @@ PARTY
 ##########################################################
 ]]--
 local PartyVisibility = function(self, event)
-    local db = MOD.db["party"]
-    if (not db or (db and not db.enable) or (MOD.db and not MOD.db.smartRaidFilter) or self.isForced) then return end
+    local db = SV.db.SVUnit["party"]
+    if (not db or (db and not db.enable) or (SV.db.SVUnit and not SV.db.SVUnit.smartRaidFilter) or self.isForced) then return end
     local instance, instanceType = IsInInstance()
     if(event == "PLAYER_REGEN_ENABLED") then
         self:UnregisterEvent("PLAYER_REGEN_ENABLED")
@@ -1490,7 +1511,7 @@ end

 local UpdatePartySubUnit = function(self, key, db)
     self.colors = oUF_Villain.colors;
-    self:RegisterForClicks(MOD.db.fastClickTarget and 'AnyDown' or 'AnyUp')
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and 'AnyDown' or 'AnyUp')
     MOD.RefreshUnitMedia(self, key)
     if self.isChild then
         local altDB = db.petsGroup;
@@ -1545,15 +1566,15 @@ GROUP_UPDATES["party"] = function(self)
     if not group.positioned then
         group:ClearAllPoints()
         group:Point("LEFT",SV.UIParent,"LEFT",40,0)
-        SV:SetSVMovable(group, L['Party Frames'], nil, nil, nil, 'ALL,PARTY,ARENA');
-        group.positioned = true;
+        SV.Mentalo:Add(group, L['Party Frames'], nil, nil, nil, 'ALL,PARTY,ARENA');
         group:RegisterEvent("PLAYER_ENTERING_WORLD")
         group:RegisterEvent("ZONE_CHANGED_NEW_AREA")
         group:SetScript("OnEvent", PartyVisibility)
+        group.positioned = true;
     end
     PartyVisibility(group)
     local key = "party"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     local index = 1;
     local childFrame = self:GetAttribute("child"..index)

@@ -1632,7 +1653,7 @@ TANK
 ]]--
 local UpdateTankSubUnit = function(self, key, db)
     self.colors = oUF_Villain.colors;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD.RefreshUnitMedia(self, key)
     if self.isChild and self.originalParent then
         local targets = db.targetsGroup;
@@ -1669,7 +1690,7 @@ end

 local UpdateTankFrame = function(self)
     local key = "tank"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     if db.enable ~= true then
         UnregisterAttributeDriver(self, "state-visibility")
         self:Hide()
@@ -1689,7 +1710,7 @@ local UpdateTankFrame = function(self)
     if not self.positioned then
         self:ClearAllPoints()
         self:Point("TOPLEFT", SV.UIParent, "TOPLEFT", 4, -40)
-        SV:SetSVMovable(self, L["Tank Frames"], nil, nil, nil, "ALL, RAID10, RAID25, RAID40")
+        SV.Mentalo:Add(self, L["Tank Frames"], nil, nil, nil, "ALL, RAID10, RAID25, RAID40")
         self.Avatar.positionOverride = "TOPLEFT"
         self:SetAttribute("minHeight", self.dirtyHeight)
         self:SetAttribute("minWidth", self.dirtyWidth)
@@ -1709,7 +1730,7 @@ end

 CONSTRUCTORS["tank"] = function(self, unit)
     local key = "tank"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     self.unit = unit
     self.___key = key
     self:SetScript("OnEnter", UnitFrame_OnEnter)
@@ -1730,7 +1751,7 @@ ASSIST
 ]]--
 local UpdateAssistSubUnit = function(self, key, db)
     self.colors = oUF_Villain.colors;
-    self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
+    self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and "AnyDown" or "AnyUp")
     MOD.RefreshUnitMedia(self, key)
     if self.isChild and self.originalParent then
         local targets = db.targetsGroup;
@@ -1769,7 +1790,7 @@ end

 local UpdateAssistFrame = function(self)
     local key = "assist"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     self:Hide()
     DetachSubFrames(self:GetChildren())
     self:SetAttribute("startingIndex", -1)
@@ -1784,7 +1805,7 @@ local UpdateAssistFrame = function(self)
     if not self.positioned then
         self:ClearAllPoints()
         self:Point("TOPLEFT", SV.UIParent, "TOPLEFT", 4, -140)
-        SV:SetSVMovable(self, L["Assist Frames"], nil, nil, nil, "ALL, RAID10, RAID25, RAID40")
+        SV.Mentalo:Add(self, L["Assist Frames"], nil, nil, nil, "ALL, RAID10, RAID25, RAID40")
         self.Avatar.positionOverride = "TOPLEFT"
         self:SetAttribute("minHeight", self.dirtyHeight)
         self:SetAttribute("minWidth", self.dirtyWidth)
@@ -1804,7 +1825,7 @@ end

 CONSTRUCTORS["assist"] = function(self, unit)
     local key = "assist"
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     self.unit = unit
     self.___key = key
     self:SetScript("OnEnter", UnitFrame_OnEnter)
@@ -1825,7 +1846,7 @@ GROUP HEADER METHODS
 ]]--
 local GroupSetConfigEnvironment = function(self)
     local key = self.___groupkey
-    local db = MOD.db[key]
+    local db = SV.db.SVUnit[key]
     local UNIT_WIDTH, UNIT_HEIGHT = MOD:GetActiveSize(db)
     local anchorPoint;
     local sorting = db.showBy
@@ -1932,7 +1953,7 @@ end

 local GroupHeaderUpdate = function(self)
     local key = self.___groupkey
-    if MOD.db[key].enable ~= true then
+    if SV.db.SVUnit[key].enable ~= true then
         UnregisterAttributeDriver(self, "state-visibility")
         self:Hide()
         return
@@ -1951,7 +1972,7 @@ end
 local GroupSetActiveState = function(self)
     if not self.isForced then
         local key = self.___groupkey
-        local db = MOD.db[key]
+        local db = SV.db.SVUnit[key]
         if(db) then
             for i=1,#self.groups do
                 local frame = self.groups[i]
@@ -2000,7 +2021,7 @@ local SecureHeaderClear = function(self)
 end

 function MOD:ConstructGroupHeader(parentFrame, filter, styleName, headerName, template1, groupName, template2, updateFunc)
-    local db = self.db[groupName]
+    local db = SV.db.SVUnit[groupName]
     local UNIT_WIDTH, UNIT_HEIGHT = self:GetActiveSize(db)

     oUF_Villain:SetActiveStyle(styleName)
@@ -2029,8 +2050,8 @@ LOAD/UPDATE METHOD
 ]]--
 function MOD:SetGroupFrame(key, filter, template1, forceUpdate, template2)
     if(InCombatLockdown()) then self:RegisterEvent("PLAYER_REGEN_ENABLED"); return end
-    if(not self.db.enable or not self.db[key]) then return end
-    local db = self.db[key]
+    if(not SV.db.SVUnit.enable or not SV.db.SVUnit[key]) then return end
+    local db = SV.db.SVUnit[key]
     local realName = key:gsub("(.)", upper, 1)
     local styleName = "SVUI_"..realName
     local frame, groupName
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/deathknight.lua b/Interface/AddOns/SVUI/packages/unit/resources/deathknight.lua
index 4801c25..29908af 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/deathknight.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/deathknight.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "DEATHKNIGHT") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -64,7 +64,7 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.Runes;
 	local max = self.MaxClassPower;
 	local size = db.classbar.height
@@ -72,7 +72,7 @@ local Reposition = function(self)

 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -125,7 +125,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = max;
 	playerFrame.ClassBarRefresh = Reposition;
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/druid.lua b/Interface/AddOns/SVUI/packages/unit/resources/druid.lua
index b0f85c4..a51ffbe 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/druid.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/druid.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random,floor = math.random, math.floor;
@@ -35,13 +36,12 @@ local random,floor = math.random, math.floor;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 local LSM = LibStub("LibSharedMedia-3.0")
 if(SV.class ~= "DRUID") then return end
 local MOD = SV.SVUnit
@@ -95,7 +95,7 @@ local function CreateAltMana(playerFrame, eclipse)
 	bar.bg.multiplier = 0.3;
 	bar.Text = bar.ManaBar:CreateFontString(nil, "OVERLAY")
 	bar.Text:SetAllPoints(bar.ManaBar)
-	bar.Text:SetFont(LSM:Fetch("font", MOD.db.font), MOD.db.fontSize, MOD.db.fontOutline)
+	bar.Text:SetFont(LSM:Fetch("font", SV.db.SVUnit.font), SV.db.SVUnit.fontSize, SV.db.SVUnit.fontOutline)
 	return bar
 end
 --[[
@@ -105,7 +105,7 @@ POSITIONING
 ]]--
 local Reposition = function(self)
 	local bar = self.EclipseBar
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	if not bar or not db then print("Error") return end
 	local height = db.classbar.height
 	local offset = (height - 10)
@@ -116,7 +116,7 @@ local Reposition = function(self)

 	bar.Holder:Size(width, height)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -271,7 +271,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.ClassBarRefresh = Reposition;
 	playerFrame.EclipseBar = bar
@@ -315,7 +315,7 @@ local HideSmallPoint = function(self)
 end

 local RepositionCombo = function(self)
-	local db = MOD.db.target
+	local db = SV.db.SVUnit.target
 	local bar = self.HyperCombo.CPoints;
 	local max = MAX_COMBO_POINTS;
 	local height = db.combobar.height
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/hunter.lua b/Interface/AddOns/SVUI/packages/unit/resources/hunter.lua
index 6e870d2..f35072b 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/hunter.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/hunter.lua
@@ -25,13 +25,13 @@ local select    = _G.select;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
+local assert = _G.assert;
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "HUNTER") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/mage.lua b/Interface/AddOns/SVUI/packages/unit/resources/mage.lua
index eaaa29e..eca1a28 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/mage.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/mage.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "MAGE") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -51,14 +51,14 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.ArcaneChargeBar;
 	local max = self.MaxClassPower;
 	local size = db.classbar.height
 	local width = size * max;
 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -191,7 +191,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = max;
 	playerFrame.ClassBarRefresh = Reposition;
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/monk.lua b/Interface/AddOns/SVUI/packages/unit/resources/monk.lua
index 58d37c6..99c4bf8 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/monk.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/monk.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "MONK") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -51,14 +51,14 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.MonkHarmony;
 	local max = self.MaxClassPower;
 	local size = db.classbar.height
 	local width = size * max;
 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -154,7 +154,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = max
 	playerFrame.DrunkenMaster = CreateDrunkenMasterBar(playerFrame)
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/paladin.lua b/Interface/AddOns/SVUI/packages/unit/resources/paladin.lua
index 2f2fad1..89f056a 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/paladin.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/paladin.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "PALADIN") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -57,14 +57,14 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.HolyPower;
 	local max = self.MaxClassPower;
 	local size = db.classbar.height
 	local width = size * max;
 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -183,7 +183,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = max;
 	playerFrame.ClassBarRefresh = Reposition;
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/priest.lua b/Interface/AddOns/SVUI/packages/unit/resources/priest.lua
index b32d7ed..cd84430 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/priest.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/priest.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "PRIEST") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -53,7 +53,7 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.PriestOrbs;
 	local max = self.MaxClassPower;
 	local size = db.classbar.height
@@ -61,7 +61,7 @@ local Reposition = function(self)

 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -155,7 +155,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = max;
 	playerFrame.ClassBarRefresh = Reposition;
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/rogue.lua b/Interface/AddOns/SVUI/packages/unit/resources/rogue.lua
index 3290d26..0a9c5f9 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/rogue.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/rogue.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "ROGUE") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -71,7 +71,7 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.target
+	local db = SV.db.SVUnit.target
 	local bar = self.HyperCombo.CPoints;
 	local max = MAX_COMBO_POINTS;
 	local height = db.combobar.height
@@ -171,7 +171,7 @@ ROGUE COMBO TRACKER
 ##########################################################
 ]]--
 local RepositionTracker = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.HyperCombo;
 	if not db then return end
 	local size = db.classbar.height
@@ -179,7 +179,7 @@ local RepositionTracker = function(self)
 	local textwidth = size * 1.25;
 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -258,7 +258,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = 5;
 	playerFrame.ClassBarRefresh = RepositionTracker;
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/shaman.lua b/Interface/AddOns/SVUI/packages/unit/resources/shaman.lua
index 500ea1b..0549aef 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/shaman.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/shaman.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "SHAMAN") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -64,13 +64,13 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.TotemBars
 	local size = db.classbar.height
 	local width = size * totemMax
 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -117,7 +117,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = totemMax;
 	playerFrame.ClassBarRefresh = Reposition;
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/warlock.lua b/Interface/AddOns/SVUI/packages/unit/resources/warlock.lua
index 0db2e3d..e02887b 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/warlock.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/warlock.lua
@@ -27,6 +27,7 @@ local error     = _G.error;
 local pcall     = _G.pcall;
 local tostring  = _G.tostring;
 local tonumber  = _G.tonumber;
+local assert 	= _G.assert;
 local math 		= _G.math;
 --[[ MATH METHODS ]]--
 local random = math.random;
@@ -35,13 +36,12 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
 assert(oUF_Villain, "SVUI was unable to locate oUF.")

-local L = LibLocale();
+local L = SV.L;
 if(SV.class ~= "WARLOCK") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
@@ -79,7 +79,7 @@ POSITIONING
 ##########################################################
 ]]--
 local Reposition = function(self)
-	local db = MOD.db.player
+	local db = SV.db.SVUnit.player
 	local bar = self.WarlockShards;
 	local max = self.MaxClassPower;
 	local size = db.classbar.height
@@ -87,7 +87,7 @@ local Reposition = function(self)
 	local dbOffset = (size * 0.15)
 	bar.Holder:Size(width, size)
     if(not db.classbar.detachFromFrame) then
-    	SV:ResetMovables(L["Classbar"])
+    	SV.Mentalo:Reset(L["Classbar"])
     end
     local holderUpdate = bar.Holder:GetScript('OnSizeChanged')
     if holderUpdate then
@@ -360,7 +360,7 @@ function MOD:CreateClassBar(playerFrame)
 	classBarHolder:Point("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
 	bar:SetPoint("TOPLEFT", classBarHolder, "TOPLEFT", 0, 0)
 	bar.Holder = classBarHolder
-	SV:SetSVMovable(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")
+	SV.Mentalo:Add(bar.Holder, L["Classbar"], nil, nil, nil, "ALL, SOLO")

 	playerFrame.MaxClassPower = max;
 	playerFrame.ClassBarRefresh = Reposition;
diff --git a/Interface/AddOns/SVUI/packages/unit/resources/warrior.lua b/Interface/AddOns/SVUI/packages/unit/resources/warrior.lua
index d6fffa0..bf8280d 100644
--- a/Interface/AddOns/SVUI/packages/unit/resources/warrior.lua
+++ b/Interface/AddOns/SVUI/packages/unit/resources/warrior.lua
@@ -25,12 +25,13 @@ local select    = _G.select;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
+local SV = select(2, ...)
 local oUF_Villain = SV.oUF
---[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+
+local assert = assert;
 assert(oUF_Villain, "SVUI was unable to locate oUF.")
-local L = LibLocale();
+
+local L = SV.L;
 if(SV.class ~= "WARRIOR") then return end
 local MOD = SV.SVUnit
 if(not MOD) then return end
diff --git a/Interface/AddOns/SVUI/scripts/comix.lua b/Interface/AddOns/SVUI/scripts/comix.lua
index f6fcbe0..c00c9d1 100644
--- a/Interface/AddOns/SVUI/scripts/comix.lua
+++ b/Interface/AddOns/SVUI/scripts/comix.lua
@@ -28,9 +28,8 @@ local random = math.random;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local Comix = CreateFrame("Frame");
 --[[
 ##########################################################
@@ -128,7 +127,7 @@ local Comix_OnEvent = function(self, event, ...)
 	if subEvent == "PARTY_KILL" and guid == playerGUID and ready then
 		self:ReadyState(false)
 		local rng = random(1,15)
-		if((rng < 3) and SV.db.system.bigComix) then
+		if((rng < 3) and SV.db.general.bigComix) then
 			self:LaunchPopup("PREMIUM")
 		elseif rng < 8 then
 			self:LaunchPopup("DELUXE")
@@ -139,7 +138,7 @@ local Comix_OnEvent = function(self, event, ...)
 end

 function SV:ToggleComix()
-	if not SV.db.system.comix then
+	if not SV.db.general.comix then
 		Comix:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
 		Comix:SetScript("OnEvent", nil)
 	else
@@ -222,4 +221,5 @@ local function LoadSVComix()
 	Comix:ReadyState(true)
 	SV:ToggleComix()
 end
-Registry:NewScript(LoadSVComix)
\ No newline at end of file
+
+SV:NewScript(LoadSVComix)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/ego.lua b/Interface/AddOns/SVUI/scripts/ego.lua
new file mode 100644
index 0000000..4cbf1b5
--- /dev/null
+++ b/Interface/AddOns/SVUI/scripts/ego.lua
@@ -0,0 +1,94 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local math 		= _G.math;
+--[[ MATH METHODS ]]--
+local random = math.random;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = select(2, ...)
+local L = SV.L
+
+local EgoFrame = CreateFrame("Frame", "EgoFrame", UIParent);
+
+local LaunchPopup = function(self, emote)
+	local size = SVUIParent:GetHeight()
+	self.Model:Show()
+	self.anim[2]:SetOffset(size, -size)
+	self.anim[2]:SetOffset(0, 0)
+	self.anim:Play()
+	self.Model:SetAnimation(emote)
+end
+
+local Ego_OnEvent = function(self, event)
+	if event == "ACHIEVEMENT_EARNED" then
+		self:LaunchPopup(74)
+	else
+		self:LaunchPopup(84)
+	end
+end
+
+function BeAwesome()
+	EgoFrame:LaunchPopup(74)
+end
+
+function SV:ToggleEgo()
+	if not SV.db.general.ego then
+		EgoFrame:UnregisterEvent("ACHIEVEMENT_EARNED")
+		EgoFrame:UnregisterEvent("SCREENSHOT_SUCCEEDED")
+		EgoFrame:SetScript("OnEvent", nil)
+	else
+		EgoFrame:RegisterEvent("ACHIEVEMENT_EARNED")
+		EgoFrame:RegisterEvent("SCREENSHOT_SUCCEEDED")
+		EgoFrame:SetScript("OnEvent", Ego_OnEvent)
+	end
+end
+
+local EgoPop_OnUpdate = function(self) self.parent:SetAlpha(0) end
+
+local function LoadSVEgo()
+	local size = UIParent:GetWidth()
+	EgoFrame:SetParent(SV.UIParent)
+	EgoFrame:SetPoint("TOP", SV.UIParent, "TOP", 0, 0)
+	EgoFrame:SetWidth(size)
+	EgoFrame:SetHeight(size)
+	EgoFrame.LaunchPopup = LaunchPopup
+
+	local model = CreateFrame("PlayerModel", "EgoFrameModel", EgoFrame)
+	model:SetAllPoints(EgoFrame)
+	model:SetUnit("player")
+	model:Hide()
+
+	EgoFrame.Model = model
+
+	SV.Animate:Slide(EgoFrame, size, -size, true, 1.5)
+	EgoFrame:SetAlpha(0)
+	EgoFrame.anim[4]:SetScript("OnFinished", EgoPop_OnUpdate)
+
+	SLASH_SVUI_BADASS1="/badass"
+	SlashCmdList["SVUI_BADASS"] = BeAwesome;
+end
+
+SV:NewScript(LoadSVEgo)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/misc.lua b/Interface/AddOns/SVUI/scripts/misc.lua
index 2b8a639..c51e038 100644
--- a/Interface/AddOns/SVUI/scripts/misc.lua
+++ b/Interface/AddOns/SVUI/scripts/misc.lua
@@ -31,9 +31,8 @@ local cos, deg, rad, sin = math.cos, math.deg, math.rad, math.sin;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local toonclass = select(2, UnitClass('player'))
 --[[
 ##########################################################
@@ -64,8 +63,7 @@ local function LoadStyledChatBubbles()
 			LFRBrowseFrame.timeToClear = nil
 		end
 	end)
-
-	if(SV.db.system.bubbles == true) then
+	if(SV.db.general.bubbles == true) then
 		local ChatBubbleHandler = CreateFrame("Frame", nil, UIParent)
 		local total = 0
 		local numKids = 0
@@ -126,7 +124,7 @@ local function LoadStyledChatBubbles()
 	end
 end

-Registry:NewScript(LoadStyledChatBubbles)
+SV:NewScript(LoadStyledChatBubbles)
 --[[
 ##########################################################
 DRESSUP HELPERS by: Leatrix
@@ -216,6 +214,7 @@ local DressUp_OnLeave = function(self)
 end

 local function LoadDressupHelper()
+	if IsAddOnLoaded("DressingRoomFunctions") then return end
 	--[[ PAPER DOLL ENHANCEMENT ]]--
 	local tabard1 = SV:CreateButton(DressUpFrame, "Tabard", "BOTTOMLEFT", 12, 12, 80, 22, "")
 	tabard1:SetScript("OnClick", function()
@@ -285,7 +284,7 @@ local function LoadDressupHelper()
 	CharacterModelFrame:HookScript("OnShow", SetVanityPlacement)
 end

-Registry:NewScript(LoadDressupHelper)
+SV:NewScript(LoadDressupHelper)
 --[[
 ##########################################################
 RAIDMARKERS
@@ -418,10 +417,10 @@ local Totems_OnEvent = function(self, event)
 end

 function SV:UpdateTotems()
-	local totemSize = self.db.system.totems.size;
-	local totemSpace = self.db.system.totems.spacing;
-	local totemGrowth = self.db.system.totems.showBy;
-	local totemSort = self.db.system.totems.sortDirection;
+	local totemSize = self.db.totems.size;
+	local totemSpace = self.db.totems.spacing;
+	local totemGrowth = self.db.totems.showBy;
+	local totemSort = self.db.totems.sortDirection;

 	for i = 1, MAX_TOTEMS do
 		local button = TotemBar[i]
@@ -473,7 +472,7 @@ local Totem_OnLeave = function()
 end

 local function CreateTotemBar()
-	if(not SV.db.system.totems.enable) then return; end
+	if(not SV.db.totems.enable) then return; end
 	local xOffset = SV.db.SVDock.dockLeftWidth + 12
 	TotemBar = CreateFrame("Frame", "SVUI_TotemBar", SV.UIParent)
 	TotemBar:SetPoint("BOTTOMLEFT", SV.UIParent, "BOTTOMLEFT", xOffset, 40)
@@ -539,10 +538,10 @@ local function CreateTotemBar()
 	else
 		frame_name = L["Totem Bar"]
 	end
-	SV:SetSVMovable(TotemBar, frame_name)
+	SV.Mentalo:Add(TotemBar, frame_name)
 end

-Registry:NewScript(CreateTotemBar)
+SV:NewScript(CreateTotemBar)
 --[[
 ##########################################################
 THREAT THERMOMETER
@@ -624,7 +623,7 @@ local function ThreatBar_OnEvent(self, event)
 end

 local function LoadThreatBar()
-	if(SV.db.system.threatbar == true) then
+	if(SV.db.general.threatbar == true) then
 		local ThreatBar = CreateFrame('StatusBar', 'SVUI_ThreatBar', SV.UIParent);
 		ThreatBar:SetStatusBarTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Doodads\\THREAT-BAR")
 		ThreatBar:SetSize(50,100)
@@ -649,8 +648,8 @@ local function LoadThreatBar()
 		ThreatBar:RegisterEvent('GROUP_ROSTER_UPDATE')
 		ThreatBar:RegisterEvent('UNIT_PET')
 		ThreatBar:SetScript("OnEvent", ThreatBar_OnEvent)
-		SV:SetSVMovable(ThreatBar, "Threat Bar");
+		SV.Mentalo:Add(ThreatBar, "Threat Bar");
 	end
 end

-Registry:NewScript(LoadThreatBar);
\ No newline at end of file
+SV:NewScript(LoadThreatBar);
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/mounts.lua b/Interface/AddOns/SVUI/scripts/mounts.lua
index f286bad..6a98ada 100644
--- a/Interface/AddOns/SVUI/scripts/mounts.lua
+++ b/Interface/AddOns/SVUI/scripts/mounts.lua
@@ -33,11 +33,8 @@ local twipe,band 	= table.wipe, bit.band;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
--- SVUI_Cache.Mounts.types
--- SVUI_Cache.Mounts.names
+local SV = select(2, ...)
+local L = SV.L
 --[[
 ##########################################################
 LOCAL VARIABLES
@@ -66,36 +63,36 @@ local function UpdateMountCheckboxes(button, index)
 	    bar["SPECIAL"].index = index
 	    bar["SPECIAL"].name = creatureName

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

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

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

-		if(SVUI_Cache.Mounts.names["SPECIAL"] == creatureName) then
-			if(SVUI_Cache.Mounts.types["SPECIAL"] ~= index) then
-				SVUI_Cache.Mounts.types["SPECIAL"] = index
+		if(SV.cache.Mounts.names["SPECIAL"] == creatureName) then
+			if(SV.cache.Mounts.types["SPECIAL"] ~= index) then
+				SV.cache.Mounts.types["SPECIAL"] = index
 			end
 			bar["SPECIAL"]:SetChecked(1)
 		else
@@ -104,29 +101,29 @@ local function UpdateMountCheckboxes(button, index)
 	end
 end

-local function UpdateMountCache()
+local function UpdateMountsCache()
 	if(not MountJournal or not MountJournal.cachedMounts) then return end
 	local num = GetNumCompanions("MOUNT")
 	for index = 1, num, 1 do
 		local _, info, id = GetCompanionInfo("MOUNT", index)
-		if(SVUI_Cache.Mounts.names["GROUND"] == info) then
-			if(SVUI_Cache.Mounts.types["GROUND"] ~= index) then
-				SVUI_Cache.Mounts.types["GROUND"] = index
+		if(SV.cache.Mounts.names["GROUND"] == info) then
+			if(SV.cache.Mounts.types["GROUND"] ~= index) then
+				SV.cache.Mounts.types["GROUND"] = index
 			end
 		end
-		if(SVUI_Cache.Mounts.names["FLYING"] == info) then
-			if(SVUI_Cache.Mounts.types["FLYING"] ~= index) then
-				SVUI_Cache.Mounts.types["FLYING"] = index
+		if(SV.cache.Mounts.names["FLYING"] == info) then
+			if(SV.cache.Mounts.types["FLYING"] ~= index) then
+				SV.cache.Mounts.types["FLYING"] = index
 			end
 		end
-		if(SVUI_Cache.Mounts.names["SWIMMING"] == info) then
-			if(SVUI_Cache.Mounts.types["SWIMMING"] ~= index) then
-				SVUI_Cache.Mounts.types["SWIMMING"] = index
+		if(SV.cache.Mounts.names["SWIMMING"] == info) then
+			if(SV.cache.Mounts.types["SWIMMING"] ~= index) then
+				SV.cache.Mounts.types["SWIMMING"] = index
 			end
 		end
-		if(SVUI_Cache.Mounts.names["SPECIAL"] == info) then
-			if(SVUI_Cache.Mounts.types["SPECIAL"] ~= index) then
-				SVUI_Cache.Mounts.types["SPECIAL"] = index
+		if(SV.cache.Mounts.names["SPECIAL"] == info) then
+			if(SV.cache.Mounts.types["SPECIAL"] ~= index) then
+				SV.cache.Mounts.types["SPECIAL"] = index
 			end
 		end
 	end
@@ -151,7 +148,7 @@ end

 local ProxyUpdate_Mounts = function(self, event, ...)
 	if(event == "COMPANION_LEARNED" or event == "COMPANION_UNLEARNED") then
-		UpdateMountCache()
+		UpdateMountsCache()
 	end
 	Update_MountCheckButtons()
 end
@@ -160,29 +157,29 @@ local function UpdateCurrentMountSelection()
 	ttSummary = ""
 	local creatureName

-	if(SVUI_Cache.Mounts.types["FLYING"]) then
-		creatureName = SVUI_Cache.Mounts.names["FLYING"]
+	if(SV.cache.Mounts.types["FLYING"]) then
+		creatureName = SV.cache.Mounts.names["FLYING"]
 		if(creatureName) then
 			ttSummary = ttSummary .. "\nFlying: " .. creatureName
 		end
 	end

-	if(SVUI_Cache.Mounts.types["SWIMMING"]) then
-		creatureName = SVUI_Cache.Mounts.names["SWIMMING"]
+	if(SV.cache.Mounts.types["SWIMMING"]) then
+		creatureName = SV.cache.Mounts.names["SWIMMING"]
 		if(creatureName) then
 			ttSummary = ttSummary .. "\nSwimming: " .. creatureName
 		end
 	end

-	if(SVUI_Cache.Mounts.types["GROUND"]) then
-		creatureName = SVUI_Cache.Mounts.names["GROUND"]
+	if(SV.cache.Mounts.types["GROUND"]) then
+		creatureName = SV.cache.Mounts.names["GROUND"]
 		if(creatureName) then
 			ttSummary = ttSummary .. "\nGround: " .. creatureName
 		end
 	end

-	if(SVUI_Cache.Mounts.types["SPECIAL"]) then
-		creatureName = SVUI_Cache.Mounts.names["SPECIAL"]
+	if(SV.cache.Mounts.types["SPECIAL"]) then
+		creatureName = SV.cache.Mounts.names["SPECIAL"]
 		if(creatureName) then
 			ttSummary = ttSummary .. "\nSpecial: " .. creatureName
 		end
@@ -196,11 +193,11 @@ local CheckButton_OnClick = function(self)

 	if(index) then
 		if(self:GetChecked() == 1) then
-			SVUI_Cache.Mounts.types[key] = index
-			SVUI_Cache.Mounts.names[key] = name
+			SV.cache.Mounts.types[key] = index
+			SV.cache.Mounts.names[key] = name
 		else
-			SVUI_Cache.Mounts.types[key] = false
-			SVUI_Cache.Mounts.names[key] = ""
+			SV.cache.Mounts.types[key] = false
+			SV.cache.Mounts.names[key] = ""
 		end
 		Update_MountCheckButtons()
 		UpdateCurrentMountSelection()
@@ -235,24 +232,26 @@ ADDING CHECKBOXES TO JOURNAL
 ##########################################################
 ]]--
 local function SetMountCheckButtons()
-	if not SVUI_Cache["Mounts"] then
-		SVUI_Cache["Mounts"] = {
-			["types"] = {
-				["GROUND"] = false,
-				["FLYING"] = false,
-				["SWIMMING"] = false,
-				["SPECIAL"] = false
-			},
-			["names"] = {
-				["GROUND"] = "",
-				["FLYING"] = "",
-				["SWIMMING"] = "",
-				["SPECIAL"] = ""
-			}
+	SV.cache.Mounts = SV.cache.Mounts or {}
+
+	if not SV.cache.Mounts.types then
+		SV.cache.Mounts.types = {
+			["GROUND"] = false,
+			["FLYING"] = false,
+			["SWIMMING"] = false,
+			["SPECIAL"] = false
+		}
+	end
+	if not SV.cache.Mounts.names then
+		SV.cache.Mounts.names = {
+			["GROUND"] = "",
+			["FLYING"] = "",
+			["SWIMMING"] = "",
+			["SPECIAL"] = ""
 		}
 	end

-	UpdateMountCache()
+	UpdateMountsCache()

 	local scrollFrame = MountJournal.ListScrollFrame;
 	local scrollBar = _G["MountJournalListScrollFrameScrollBar"]
@@ -348,7 +347,7 @@ local function SetMountCheckButtons()
 	scrollBar:HookScript("OnValueChanged", Update_MountCheckButtons)
 	UpdateCurrentMountSelection()

-	if(SV.___interface >= 60000) then
+	if(SV.GameVersion >= 60000) then
 		MountListener:RegisterEvent("MOUNT_JOURNAL_USABILITY_CHANGED")
 	end

@@ -363,7 +362,7 @@ SLASH FUNCTION
 ##########################################################
 ]]--
 function SVUILetsRide()
-	local checkList = SVUI_Cache.Mounts.types
+	local checkList = SV.cache.Mounts.types
 	local letsFly, letsSwim, letsSeahorse, vjZone, IbelieveIcantFly
 	local maxMounts = GetNumCompanions("MOUNT")
 	if(not maxMounts or IsMounted()) then
@@ -446,4 +445,4 @@ end
 LOADER
 ##########################################################
 ]]--
-Registry:NewScript(SetMountCheckButtons);
\ No newline at end of file
+SV:NewScript(SetMountCheckButtons);
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/questwatch.lua b/Interface/AddOns/SVUI/scripts/questwatch.lua
index ca7ffb9..e4e9627 100644
--- a/Interface/AddOns/SVUI/scripts/questwatch.lua
+++ b/Interface/AddOns/SVUI/scripts/questwatch.lua
@@ -51,9 +51,8 @@ local tremove, tcopy, twipe, tsort, tconcat = table.remove, table.copy, table.wi
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 local QuestDocklet = CreateFrame("Frame", "SVQuestFrameEventListener", UIParent)
 --[[
 ##########################################################
@@ -324,7 +323,7 @@ end

 local function CreateQuestDocklet()
 	SuperDockWindowRight = _G["SuperDockWindowRight"]
-	if(SV.___interface >= 60000) then
+	if(SV.GameVersion >= 60000) then

 		ObjectiveTrackerFrame:RemoveTextures(true)

@@ -347,8 +346,8 @@ local function CreateQuestDocklet()
 		ObjectiveTrackerFrame.HeaderMenu:RemoveTextures(true)
 		ObjectiveTrackerFrame.BlockDropDown:RemoveTextures(true)

-		SV:SetSVMovable(frame, "Quest Watch");
-	elseif(not SV.db.system.questWatch) then
+		SV.Mentalo:Add(frame, "Quest Watch");
+	elseif(not SV.db.general.questWatch) then
 		local frame = CreateFrame("Frame", "SVUI_QuestFrame", UIParent);
 		frame:SetSize(200, WatchFrame:GetHeight());
 		frame:SetPoint("RIGHT", UIParent, "RIGHT", -100, 0);
@@ -364,7 +363,7 @@ local function CreateQuestDocklet()
 		WatchFrameLines.SetPoint = SV.fubar;
 		WatchFrameLines.SetAllPoints = SV.fubar;

-		SV:SetSVMovable(frame, "Quest Watch");
+		SV.Mentalo:Add(frame, "Quest Watch");
 	else
 		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
 		local bdTex = SV.Media.bar.glow
@@ -469,4 +468,4 @@ local function CreateQuestDocklet()
 	end
 end

-Registry:NewScript(CreateQuestDocklet)
\ No newline at end of file
+SV:NewScript(CreateQuestDocklet)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/raid.lua b/Interface/AddOns/SVUI/scripts/raid.lua
index be40dd4..6278c36 100644
--- a/Interface/AddOns/SVUI/scripts/raid.lua
+++ b/Interface/AddOns/SVUI/scripts/raid.lua
@@ -26,9 +26,8 @@ local pairs 	= _G.pairs;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 --[[
 ##########################################################
 RAID UTILITY By: Elv
@@ -260,4 +259,4 @@ local function LoadRaidUtility()
 		end
 	end
 end
-Registry:NewScript(LoadRaidUtility);
\ No newline at end of file
+SV:NewScript(LoadRaidUtility);
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/reactions.lua b/Interface/AddOns/SVUI/scripts/reactions.lua
index bada875..aa97378 100644
--- a/Interface/AddOns/SVUI/scripts/reactions.lua
+++ b/Interface/AddOns/SVUI/scripts/reactions.lua
@@ -32,9 +32,8 @@ local format, gsub = string.format, string.gsub;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
+local SV = select(2, ...)
+local L = SV.L
 --[[
 ##########################################################
 LOCALS (from ShestakUI  by:Shestak)
@@ -102,7 +101,7 @@ WEARING NON COMBAT GEAR
 ]]--
 local StupidHatHandler = CreateFrame("Frame")
 local StupidHatHandler_OnEvent = function(self, event)
-	if event ~= "ZONE_CHANGED_NEW_AREA" or not IsInInstance() then return end
+	if(not IsInInstance()) then return end
 	local item = {}
 	for i = 1, 17 do
 		if Reactions.StupidHat[i] ~= nil then
@@ -294,7 +293,7 @@ CONFIG TOGGLE
 ##########################################################
 ]]--
 function SV:ToggleReactions()
-	local settings = self.db.system
+	local settings = self.db.general

 	REACTION_INTERRUPT = settings.pvpinterrupt
 	REACTION_WOOT = settings.woot
@@ -328,4 +327,4 @@ local function LoadReactions()
 	SV:ToggleReactions()
 end

-Registry:NewScript(LoadReactions)
\ No newline at end of file
+SV:NewScript(LoadReactions)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/scripts/spellbind.lua b/Interface/AddOns/SVUI/scripts/spellbind.lua
index 75af259..006f15c 100644
--- a/Interface/AddOns/SVUI/scripts/spellbind.lua
+++ b/Interface/AddOns/SVUI/scripts/spellbind.lua
@@ -16,6 +16,7 @@ S U P E R - V I L L A I N - U I   By: Munglunch                              #
 LOCALIZED LUA FUNCTIONS
 ##########################################################
 ]]--
+local SV = select(2, ...)
 --[[ GLOBALS ]]--
 local _G = _G;
 local unpack 	= _G.unpack;
@@ -25,6 +26,8 @@ local ipairs 	= _G.ipairs;
 local type 		= _G.type;
 local tinsert 	= _G.tinsert;
 local string 	= _G.string;
+
+local SVLib = LibSuperVillain
 --[[
 ##########################################################
 Simple click2cast spell SpellBinder(sBinder by Fernir)
@@ -61,11 +64,6 @@ for _, gName in pairs(UnitParseListing) do
 	end
 end

-local DB = {};
-DB.spells = DB.spells or {}
-DB.frames = DB.frames or {}
-DB.keys = DB.keys or {}
-
 local SpellBinder = CreateFrame("Frame", "SVUI_SpellBinder", SpellBookFrame, "ButtonFrameTemplate")
 SpellBinder:SetPoint("TOPLEFT", SpellBookFrame, "TOPRIGHT", 100, 0)
 SpellBinder:SetSize(300, 400)
@@ -168,9 +166,9 @@ local SpellBindMask_OnClick = function(self, button)
 				button = SecureButton_GetButtonSuffix(button)
 			end

-			for i, v in pairs(DB.spells) do if v.spell == spellname then return end end
+			for i, v in pairs(SV.cache.SpellBinder.spells) do if v.spell == spellname then return end end

-			tinsert(DB.spells, {["id"] = slot, ["modifier"] = modifier, ["button"] = button, ["spell"] = spellname, ["rank"] = rank, ["texture"] = texture, ["origbutton"] = originalbutton,})
+			tinsert(SV.cache.SpellBinder.spells, {["id"] = slot, ["modifier"] = modifier, ["button"] = button, ["spell"] = spellname, ["rank"] = rank, ["texture"] = texture, ["origbutton"] = originalbutton,})
 			SpellBinder:BuildSpells(false)
 		end
 	end
@@ -178,8 +176,8 @@ end

 local SpellBindDelete_OnClick = function(self)
 	local spell = self.spell
-	for j, k in ipairs(DB.spells) do
-		if k ~= spell then
+	for j, k in ipairs(SV.cache.SpellBinder.spells) do
+		if k ~= spell.spell then
 			k.checked = false
 			_G[j.."_cbs"]:SetBackdropColor(0, 0, 0, 0)
 		end
@@ -192,37 +190,8 @@ end
 EVENT HANDLERS
 ##########################################################
 ]]--
-local SpellBind_OnEvent = function(self, event, ...)
-	if event == "PLAYER_LOGIN" then
-		DB = SVUI_Cache["Bindings"] or {}
-		DB.spells = DB.spells or {}
-		DB.frames = DB.frames or {}
-		DB.keys = DB.keys or {}
-		SpellBinder:BuildList()
-		SpellBinder:BuildSpells(true)
-
-		for i = 1, SPELLS_PER_PAGE do
-			local parent = _G["SpellButton"..i]
-			local button = CreateFrame("Button", "SpellButtonMask"..i, parent)
-			button:SetID(parent:GetID())
-			button:RegisterForClicks("AnyDown")
-			button:SetAllPoints(parent)
-			button:SetScript("OnClick", SpellBindMask_OnClick)
-
-			button.shine = SpellBook_GetAutoCastShine()
-			button.shine:Show()
-			button.shine:SetParent(button)
-			button.shine:SetAllPoints()
-			AutoCastShine_AutoCastStart(button.shine)
-
-			button:Hide()
-			SpellBinder.spellbuttons[i] = button
-		end
-
-		self:UnregisterEvent("PLAYER_LOGIN")
-	elseif event == "PLAYER_ENTERING_WORLD" or event == "GROUP_ROSTER_UPDATE" or event == "ZONE_CHANGED" or event == "ZONE_CHANGED_NEW_AREA" then
-		SpellBinder:UpdateAll()
-	end
+local SpellBind_OnEvent = function(self)
+	self:UpdateAll()
 end
 --[[
 ##########################################################
@@ -230,6 +199,14 @@ METHODS
 ##########################################################
 ]]--
 function SpellBinder:BuildSpells(delete)
+	if(not SV.cache.SpellBinder) then return end
+
+	if(not SV.cache.SpellBinder.spells) then
+		SV.cache.SpellBinder.spells = {}
+		SV.cache.SpellBinder.frames = {}
+		SV.cache.SpellBinder.keys = {}
+	end
+
 	local oldb, spellName
 	local scroll = self.list.child
 	scroll:SetPoint("TOPLEFT")
@@ -247,7 +224,7 @@ function SpellBinder:BuildSpells(delete)
 		end
 	end

-	for i, spell in ipairs(DB.spells) do
+	for i, spell in ipairs(SV.cache.SpellBinder.spells) do
 		spellName = spell.spell
 		if spellName then
 			local bf = _G[i.."_cbs"] or CreateFrame("Button", i.."_cbs", scroll)
@@ -276,7 +253,7 @@ function SpellBinder:BuildSpells(delete)
 			bf.delete:GetNormalTexture():SetVertexColor(0.8, 0, 0)
 			bf.delete:SetPushedTexture("Interface\\BUTTONS\\UI-GroupLoot-Pass-Up")
 			bf.delete:SetHighlightTexture("Interface\\BUTTONS\\UI-GroupLoot-Pass-Up")
-			bf.delete.spell = spellName
+			bf.delete.spell = spell
 			bf.delete:SetScript("OnClick", SpellBindDelete_OnClick)

 			bf:SetScript("OnEnter", BoundSpell_OnEnter)
@@ -287,7 +264,7 @@ function SpellBinder:BuildSpells(delete)
 			bf.fs:SetPoint("RIGHT", bf.delete, "LEFT", -4, 0)

 			for frame,_ in pairs(ClickCastFrames) do
-				if frame and DB.frames[frame] then
+				if frame and SV.cache.SpellBinder.frames[frame] then
 					if frame:CanChangeAttribute() or frame:CanChangeProtectedState() then
 						if frame:GetAttribute(spell.modifier.."type"..spell.button) ~= "menu" then
 							--frame:RegisterForClicks("AnyDown")
@@ -296,15 +273,15 @@ function SpellBinder:BuildSpells(delete)
 								frame:SetAttribute(spell.modifier.."type-"..spell.spell, "spell")
 								frame:SetAttribute(spell.modifier.."spell-"..spell.spell, spell.spell)

-								DB.keys[spell.modifier..spell.button] = spell.spell
-								DB.keys[spell.modifier.."type-"..spell.spell] = "spell"
-								DB.keys[spell.modifier.."spell-"..spell.spell] = spell.spell
+								SV.cache.SpellBinder.keys[spell.modifier..spell.button] = spell.spell
+								SV.cache.SpellBinder.keys[spell.modifier.."type-"..spell.spell] = "spell"
+								SV.cache.SpellBinder.keys[spell.modifier.."spell-"..spell.spell] = spell.spell
 							else
 								frame:SetAttribute(spell.modifier.."type"..spell.button, "spell")
 								frame:SetAttribute(spell.modifier.."spell"..spell.button, spell.spell)

-								DB.keys[spell.modifier.."type"..spell.button] = "spell"
-								DB.keys[spell.modifier.."spell"..spell.button] = spell.spell
+								SV.cache.SpellBinder.keys[spell.modifier.."type"..spell.button] = "spell"
+								SV.cache.SpellBinder.keys[spell.modifier.."spell"..spell.button] = spell.spell
 							end
 						end
 					end
@@ -318,34 +295,36 @@ function SpellBinder:BuildSpells(delete)
 end

 function SpellBinder:BuildList()
-	for frame,_ in pairs(ClickCastFrames) do
-		DB.frames[frame] = DB.frames[frame] or true
+	if(SV.cache.SpellBinder and SV.cache.SpellBinder.frames) then
+		for frame,_ in pairs(ClickCastFrames) do
+			SV.cache.SpellBinder.frames[frame] = SV.cache.SpellBinder.frames[frame] or true
+		end
 	end
 end

 function SpellBinder:ToggleButtons()
 	for i = 1, SPELLS_PER_PAGE do
-		if(SpellBinder.spellbuttons[i]) then
-			SpellBinder.spellbuttons[i]:Hide()
-			if SpellBinder.sbOpen and SpellBookFrame.bookType ~= BOOKTYPE_PROFESSION then
-				local slot = SpellBook_GetSpellBookSlot(SpellBinder.spellbuttons[i]:GetParent())
+		if(self.spellbuttons[i]) then
+			self.spellbuttons[i]:Hide()
+			if self.sbOpen and SpellBookFrame.bookType ~= BOOKTYPE_PROFESSION then
+				local slot = SpellBook_GetSpellBookSlot(self.spellbuttons[i]:GetParent())
 				if slot then
 					local spellname, subtype = GetSpellBookItemName(slot, SpellBookFrame.bookType)
 					if spellname then
-						SpellBinder.spellbuttons[i]:Show()
+						self.spellbuttons[i]:Show()
 					end
 				end
 			end
 		end
 	end
-	SpellBinder:BuildList()
-	SpellBinder:BuildSpells(true)
-	if SpellBinder:IsVisible() then SpellBinder.tab:SetChecked(true) else SpellBinder.tab:SetChecked(false) end
+	self:BuildList()
+	self:BuildSpells(true)
+	if self:IsVisible() then self.tab:SetChecked(true) else self.tab:SetChecked(false) end
 end

 function SpellBinder:DeleteSpell()
-	local count = table.getn(DB.spells)
-	for i, spell in ipairs(DB.spells) do
+	local count = table.getn(SV.cache.SpellBinder.spells)
+	for i, spell in ipairs(SV.cache.SpellBinder.spells) do
 		if spell.checked then
 			for frame,_ in pairs(ClickCastFrames) do
 				local f
@@ -365,7 +344,7 @@ function SpellBinder:DeleteSpell()
 					end
 				end
 			end
-			tremove(DB.spells, i)
+			tremove(SV.cache.SpellBinder.spells, i)
 		end
 	end
 	self:BuildSpells(true)
@@ -451,4 +430,35 @@ SpellBinder:RegisterEvent("PLAYER_ENTERING_WORLD")
 SpellBinder:RegisterEvent("PLAYER_LOGIN")
 SpellBinder:RegisterEvent("ZONE_CHANGED_NEW_AREA")
 SpellBinder:RegisterEvent("ZONE_CHANGED")
-SpellBinder:SetScript("OnEvent", SpellBind_OnEvent)
\ No newline at end of file
+
+local function LoadSpellBinder()
+	SV.cache.SpellBinder = SV.cache.SpellBinder or {}
+	SV.cache.SpellBinder.spells = SV.cache.SpellBinder.spells or {}
+	SV.cache.SpellBinder.frames = SV.cache.SpellBinder.frames or {}
+	SV.cache.SpellBinder.keys = SV.cache.SpellBinder.keys or {}
+
+	SpellBinder:BuildList()
+	SpellBinder:BuildSpells(true)
+
+	for i = 1, SPELLS_PER_PAGE do
+		local parent = _G["SpellButton"..i]
+		local button = CreateFrame("Button", "SpellButtonMask"..i, parent)
+		button:SetID(parent:GetID())
+		button:RegisterForClicks("AnyDown")
+		button:SetAllPoints(parent)
+		button:SetScript("OnClick", SpellBindMask_OnClick)
+
+		button.shine = SpellBook_GetAutoCastShine()
+		button.shine:Show()
+		button.shine:SetParent(button)
+		button.shine:SetAllPoints()
+		AutoCastShine_AutoCastStart(button.shine)
+
+		button:Hide()
+		SpellBinder.spellbuttons[i] = button
+	end
+
+	SpellBinder:SetScript("OnEvent", SpellBind_OnEvent)
+end
+
+SV:NewScript(LoadSpellBinder)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/setup/configs.lua b/Interface/AddOns/SVUI/setup/configs.lua
new file mode 100644
index 0000000..fc10475
--- /dev/null
+++ b/Interface/AddOns/SVUI/setup/configs.lua
@@ -0,0 +1,3658 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = select(2, ...)
+
+local playerClass = select(2, UnitClass("player"));
+
+local filterClass = playerClass or "NONE"
+
+local function safename(id)
+    local n = GetSpellInfo(id)
+    if not n then
+        if type(id) == "string" then
+            n = id
+        else
+            SV:Debugger('|cffFF9900SVUI:|r Spell not found: (#ID) '..id)
+            n = "Voodoo Doll";
+        end
+    end
+    return n
+end
+
+--[[ SYSTEM DATA ]]--
+
+SV.configs = {}
+
+SV.configs["general"] = {
+    ["cooldown"] = true,
+    ["autoScale"] = true,
+    ["multiMonitor"] = false,
+    ["taintLog"] = false,
+    ["stickyFrames"] = true,
+    ["loginmessage"] = true,
+    ["hideErrorFrame"] = true,
+    ["threatbar"] = false,
+    ["bubbles"] = true,
+    ["comix"] = true,
+    ["bigComix"] = true,
+    ["questWatch"] = true,
+    ["woot"] = true,
+    ["pvpinterrupt"] = true,
+    ["lookwhaticando"] = false,
+    ["reactionChat"] = false,
+    ["reactionEmote"] = false,
+    ["sharingiscaring"] = false,
+    ["arenadrink"] = true,
+    ["stupidhat"] = true,
+}
+
+SV.configs["LAYOUT"] = {
+    mediastyle = "default",
+    barstyle = "default",
+    unitstyle = "default",
+    groupstyle = "default",
+    aurastyle = "default"
+}
+
+SV.configs["totems"] = {
+    ["enable"] = true,
+    ["showBy"] = "VERTICAL",
+    ["sortDirection"] = "ASCENDING",
+    ["size"] = 40,
+    ["spacing"] = 4
+}
+
+SV.configs["media"] = {
+    ["fonts"] = {
+        ["default"] = "SVUI System Font",
+        ["name"] = "SVUI Name Font",
+        ["number"] = "SVUI Number Font",
+        ["combat"] = "SVUI Combat Font",
+        ["giant"] = "SVUI Action Font",
+        ["size"] = 10,
+        ["unicodeSize"] = 12,
+    },
+    ["textures"] = {
+        ["pattern"]      = "SVUI Backdrop 1",
+        ["comic"]        = "SVUI Comic 1",
+        ["unitlarge"]    = "SVUI Unit BG 3",
+        ["unitsmall"]    = "SVUI Small BG 3"
+    },
+    ["colors"] = {
+        ["default"]      = {0.2, 0.2, 0.2, 1},
+        ["special"]      = {0.37, 0.32, 0.29, 1},
+    },
+    ["unitframes"] = {
+        ["health"]       = {0.3, 0.5, 0.3},
+        ["power"]        = {
+            ["MANA"]         = {0.41, 0.85, 1},
+            ["RAGE"]         = {1, 0.31, 0.31},
+            ["FOCUS"]        = {1, 0.63, 0.27},
+            ["ENERGY"]       = {0.85, 0.83, 0.25},
+            ["RUNES"]        = {0.55, 0.57, 0.61},
+            ["RUNIC_POWER"] = {0, 0.82, 1},
+            ["FUEL"]         = {0, 0.75, 0.75}
+        },
+        ["reaction"]     = {
+            [1] = {0.92, 0.15, 0.15},
+            [2] = {0.92, 0.15, 0.15},
+            [3] = {0.92, 0.15, 0.15},
+            [4] = {0.85, 0.85, 0.13},
+            [5] = {0.19, 0.85, 0.13},
+            [6] = {0.19, 0.85, 0.13},
+            [7] = {0.19, 0.85, 0.13},
+            [8] = {0.19, 0.85, 0.13},
+        },
+        ["tapped"]           = {0.55, 0.57, 0.61},
+        ["disconnected"]     = {0.84, 0.75, 0.65},
+        ["casting"]          = {0.8, 0.8, 0},
+        ["spark"]            = {1, 0.72, 0},
+        ["interrupt"]        = {0.78, 0.25, 0.25},
+        ["shield_bars"]      = {0.56, 0.4, 0.62},
+        ["buff_bars"]        = {0.31, 0.31, 0.31},
+        ["debuff_bars"]      = {0.8, 0.1, 0.1},
+        ["predict"]          = {
+            ["personal"]         = {0, 1, 0.5, 0.25},
+            ["others"]           = {0, 1, 0, 0.25},
+            ["absorbs"]          = {1, 1, 0, 0.25}
+        },
+        ["spellcolor"] = {
+            [safename(2825)] = {0.98, 0.57, 0.11},  --Bloodlust
+            [safename(32182)] = {0.98, 0.57, 0.11}, --Heroism
+            [safename(80353)] = {0.98, 0.57, 0.11}, --Time Warp
+            [safename(90355)] = {0.98, 0.57, 0.11}, --Ancient Hysteria
+            [safename(84963)] = {0.98, 0.57, 0.11}, --Inquisition
+            [safename(86659)] = {0.98, 0.57, 0.11}, --Guardian of Ancient Kings
+        }
+    }
+}
+
+SV.configs["SVBar"] = {
+	["enable"] = true,
+	["font"] = "Roboto",
+	["fontSize"] = 11,
+	["fontOutline"] = "OUTLINE",
+	["countFont"] = "SVUI Number Font",
+	["countFontSize"] = 11,
+	["countFontOutline"] = "OUTLINE",
+	["cooldownSize"] = 18,
+	["rightClickSelf"] = false,
+	["macrotext"] = false,
+	["hotkeytext"] = false,
+	["hotkeyAbbrev"] = true,
+	["showGrid"] = true,
+	["unc"] = {0.8, 0.1, 0.1, 0.7},
+	["unpc"] = {0.5, 0.5, 1, 0.7},
+	["keyDown"] = false,
+	["unlock"] = "SHIFT",
+	["Micro"] = {
+		["enable"] = true,
+		["mouseover"] = true,
+		["alpha"] = 1,
+		["buttonsize"] = 30,
+		["buttonspacing"] = 4,
+		["yOffset"] = 4
+	},
+	["Bar1"] = {
+		["enable"] = true,
+		["buttons"] = 12,
+		["mouseover"] = false,
+		["buttonsPerRow"] = 12,
+		["point"] = "BOTTOMLEFT",
+		["backdrop"] = false,
+		["buttonsize"] = 32,
+		["buttonspacing"] = 2,
+		["useCustomPaging"] = true,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[petbattle] hide; show",
+		["customPaging"] = {
+		    ["HUNTER"]  	 = "",
+		    ["WARLOCK"] 	 = "[form:2] 10;",
+		    ["PRIEST"]  	 = "[bonusbar:1] 7;",
+		    ["PALADIN"] 	 = "",
+		    ["MAGE"]    	 = "",
+		    ["ROGUE"]   	 = "[stance:1] 7; [stance:2] 7; [stance:3] 7; [bonusbar:1] 7; [form:3] 7;",
+		    ["DRUID"]   	 = "[bonusbar:1, nostealth] 7; [bonusbar:1, stealth] 8; [bonusbar:2] 8; [bonusbar:3] 9; [bonusbar:4] 10;",
+		    ["SHAMAN"]  	 = "",
+		    ["WARRIOR"] 	 = "",
+		    ["DEATHKNIGHT"]  = "",
+		    ["MONK"]    	 = "[bonusbar:1] 7; [bonusbar:2] 8; [bonusbar:3] 9;",
+		},
+		["alpha"] = 1
+	},
+	["Bar2"] = {
+		["enable"] = false,
+		["mouseover"] = false,
+		["buttons"] = 12,
+		["buttonsPerRow"] = 12,
+		["point"] = "BOTTOMLEFT",
+		["backdrop"] = false,
+		["buttonsize"] = 32,
+		["buttonspacing"] = 2,
+		["useCustomPaging"] = false,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
+		["customPaging"] = {
+		    ["HUNTER"]  	 = "",
+		    ["WARLOCK"] 	 = "",
+		    ["PRIEST"]  	 = "",
+		    ["PALADIN"] 	 = "",
+		    ["MAGE"]    	 = "",
+		    ["ROGUE"]   	 = "",
+		    ["DRUID"]   	 = "",
+		    ["SHAMAN"]  	 = "",
+		    ["WARRIOR"] 	 = "",
+		    ["DEATHKNIGHT"]  = "",
+		    ["MONK"]    	 = "",
+		},
+		["alpha"] = 1
+	},
+	["Bar3"] = {
+		["enable"] = true,
+		["mouseover"] = false,
+		["buttons"] = 6,
+		["buttonsPerRow"] = 6,
+		["point"] = "BOTTOMLEFT",
+		["backdrop"] = false,
+		["buttonsize"] = 32,
+		["buttonspacing"] = 2,
+		["useCustomPaging"] = false,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
+		["customPaging"] = {
+		    ["HUNTER"]  	 = "",
+		    ["WARLOCK"] 	 = "",
+		    ["PRIEST"]  	 = "",
+		    ["PALADIN"] 	 = "",
+		    ["MAGE"]    	 = "",
+		    ["ROGUE"]   	 = "",
+		    ["DRUID"]   	 = "",
+		    ["SHAMAN"]  	 = "",
+		    ["WARRIOR"] 	 = "",
+		    ["DEATHKNIGHT"]  = "",
+		    ["MONK"]    	 = "",
+		},
+		["alpha"] = 1
+	},
+	["Bar4"] = {
+		["enable"] = true,
+		["mouseover"] = true,
+		["buttons"] = 12,
+		["buttonsPerRow"] = 1,
+		["point"] = "TOPRIGHT",
+		["backdrop"] = false,
+		["buttonsize"] = 32,
+		["buttonspacing"] = 2,
+		["useCustomPaging"] = false,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
+		["customPaging"] = {
+		    ["HUNTER"]  	 = "",
+		    ["WARLOCK"] 	 = "",
+		    ["PRIEST"]  	 = "",
+		    ["PALADIN"] 	 = "",
+		    ["MAGE"]    	 = "",
+		    ["ROGUE"]   	 = "",
+		    ["DRUID"]   	 = "",
+		    ["SHAMAN"]  	 = "",
+		    ["WARRIOR"] 	 = "",
+		    ["DEATHKNIGHT"]  = "",
+		    ["MONK"]    	 = "",
+		},
+		["alpha"] = 1
+	},
+	["Bar5"] = {
+		["enable"] = true,
+		["mouseover"] = false,
+		["buttons"] = 6,
+		["buttonsPerRow"] = 6,
+		["point"] = "BOTTOMLEFT",
+		["backdrop"] = false,
+		["buttonsize"] = 32,
+		["buttonspacing"] = 2,
+		["useCustomPaging"] = false,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
+		["customPaging"] = {
+		    ["HUNTER"]  	 = "",
+		    ["WARLOCK"] 	 = "",
+		    ["PRIEST"]  	 = "",
+		    ["PALADIN"] 	 = "",
+		    ["MAGE"]    	 = "",
+		    ["ROGUE"]   	 = "",
+		    ["DRUID"]   	 = "",
+		    ["SHAMAN"]  	 = "",
+		    ["WARRIOR"] 	 = "",
+		    ["DEATHKNIGHT"]  = "",
+		    ["MONK"]    	 = "",
+		},
+		["alpha"] = 1
+	},
+	["Bar6"] = {
+		["enable"] = false,
+		["mouseover"] = false,
+		["buttons"] = 12,
+		["buttonsPerRow"] = 12,
+		["point"] = "BOTTOMLEFT",
+		["backdrop"] = false,
+		["buttonsize"] = 32,
+		["buttonspacing"] = 2,
+		["useCustomPaging"] = false,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[vehicleui] hide; [overridebar] hide; [petbattle] hide; show",
+		["customPaging"] = {
+		    ["HUNTER"]  	 = "",
+		    ["WARLOCK"] 	 = "",
+		    ["PRIEST"]  	 = "",
+		    ["PALADIN"] 	 = "",
+		    ["MAGE"]    	 = "",
+		    ["ROGUE"]   	 = "",
+		    ["DRUID"]   	 = "",
+		    ["SHAMAN"]  	 = "",
+		    ["WARRIOR"] 	 = "",
+		    ["DEATHKNIGHT"]  = "",
+		    ["MONK"]    	 = "",
+		},
+		["alpha"] = 1
+	},
+	["Pet"] = {
+		["enable"] = true,
+		["mouseover"] = false,
+		["buttons"] = NUM_PET_ACTION_SLOTS,
+		["buttonsPerRow"] = NUM_PET_ACTION_SLOTS,
+		["point"] = "TOPLEFT",
+		["backdrop"] = false,
+		["buttonsize"] = 24,
+		["buttonspacing"] = 3,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[petbattle] hide; [pet, novehicleui, nooverridebar, nopossessbar] show; hide",
+		["alpha"] = 1
+	},
+	["Stance"] = {
+		["enable"] = true,
+		["style"] = "darkenInactive",
+		["mouseover"] = false,
+		["buttons"] = NUM_STANCE_SLOTS,
+		["buttonsPerRow"] = NUM_STANCE_SLOTS,
+		["point"] = "BOTTOMRIGHT",
+		["backdrop"] = false,
+		["buttonsize"] = 24,
+		["buttonspacing"] = 5,
+		["useCustomVisibility"] = false,
+		["customVisibility"] = "[petbattle] hide; show",
+		["alpha"] = 1
+	}
+};
+
+SV.configs["SVAura"] = {
+	["enable"] = true,
+	["disableBlizzard"] = true,
+	["font"] = "SVUI Number Font",
+	["fontSize"] = 12,
+	["fontOutline"] = "THINOUTLINE",
+	["countOffsetV"] = 0,
+	["countOffsetH"] = 0,
+	["timeOffsetV"] = -4,
+	["timeOffsetH"] = 0,
+	["hyperBuffs"] = {
+		["enable"] = true,
+		["filter"] = true,
+	},
+	["fadeBy"] = 5,
+	["buffs"] = {
+		["showBy"] = "LEFT_DOWN",
+		["wrapAfter"] = 12,
+		["maxWraps"] = 3,
+		["wrapXOffset"] = 6,
+		["wrapYOffset"] = 16,
+		["sortMethod"] = "TIME",
+		["sortDir"] = "-",
+		["isolate"] = 1,
+		["size"] = 32,
+	},
+	["debuffs"] = {
+		["showBy"] = "LEFT_DOWN",
+		["wrapAfter"] = 12,
+		["maxWraps"] = 1,
+		["wrapXOffset"] = 6,
+		["wrapYOffset"] = 16,
+		["sortMethod"] = "TIME",
+		["sortDir"] = "-",
+		["isolate"] = 1,
+		["size"] = 32,
+	},
+};
+
+SV.configs["SVBag"] = {
+	["incompatible"] = {
+		["AdiBags"] = true,
+		["ArkInventory"] = true,
+		["Bagnon"] = true,
+	},
+	["enable"] = true,
+	["sortInverted"] = false,
+	["bags"] = {
+		["xOffset"] = -40,
+		["yOffset"] = 40,
+		["point"] = "BOTTOMRIGHT",
+	},
+	["bank"] = {
+		["xOffset"] = 40,
+		["yOffset"] = 40,
+		["point"] = "BOTTOMLEFT",
+	},
+	["bagSize"] = 34,
+	["bankSize"] = 34,
+	["alignToChat"] = false,
+	["bagWidth"] = 525,
+	["bankWidth"] = 525,
+	["currencyFormat"] = "ICON",
+	["ignoreItems"] = "",
+	["bagTools"] = true,
+	["bagBar"] = {
+		["enable"] = false,
+		["showBy"] = "VERTICAL",
+		["sortDirection"] = "ASCENDING",
+		["size"] = 30,
+		["spacing"] = 4,
+		["showBackdrop"] = false,
+		["mouseover"] = false,
+	},
+};
+
+SV.configs["SVChat"] = {
+	["enable"] = true,
+	["tabHeight"] = 20,
+	["tabWidth"] = 75,
+	["tabStyled"] = true,
+	["font"] = "Roboto",
+	["fontOutline"] = "OUTLINE",
+	["tabFont"] = "SVUI Alert Font",
+	["tabFontSize"] = 10,
+	["tabFontOutline"] = "OUTLINE",
+	["url"] = true,
+	["shortChannels"] = true,
+	["hyperlinkHover"] = true,
+	["throttleInterval"] = 45,
+	["fade"] = false,
+	["sticky"] = true,
+	["smileys"] = true,
+	["secretWordTone"] = "None",
+	["psst"] = "Whisper Alert",
+	["noWipe"] = false,
+	["timeStampFormat"] = "NONE",
+	["secretWords"] = "%MYNAME%, SVUI",
+	["basicTools"] = true,
+};
+
+SV.configs["SVDock"] = {
+	["enable"] = true,
+	["dockLeftWidth"] = 412,
+	["dockLeftHeight"] = 224,
+	["dockRightWidth"] = 412,
+	["dockRightHeight"] = 224,
+	["dockStatWidth"] = defaultStatBarWidth,
+	["buttonSize"] = 30,
+	["buttonSpacing"] = 4,
+	["leftDockBackdrop"] = true,
+	["rightDockBackdrop"] = true,
+	["topPanel"] = true,
+	["bottomPanel"] = true,
+	["docklets"] = {
+		["DockletMain"] = "None",
+		["MainWindow"] = "None",
+		["DockletExtra"] = "None",
+		["ExtraWindow"] = "None",
+		["enableExtra"] = false,
+		["DockletCombatFade"] = true
+	},
+};
+
+SV.configs["SVGear"] = {
+	["enable"] = true,
+	["specialization"] = {
+		["enable"] = false,
+	},
+	["battleground"] = {
+		["enable"] = false,
+	},
+	["primary"] = "none",
+	["secondary"] = "none",
+	["equipmentset"] = "none",
+	["durability"] = {
+		["enable"] = true,
+		["onlydamaged"] = true,
+	},
+	["itemlevel"] = {
+		["enable"] = true,
+	},
+	["misc"] = {
+		setoverlay = true,
+	}
+};
+
+SV.configs["SVHenchmen"] = {
+	["enable"] = true,
+	["autoRoll"] = false,
+	["vendorGrays"] = true,
+	["autoAcceptInvite"] = false,
+	["autorepchange"] = false,
+	["pvpautorelease"] = false,
+	["autoquestcomplete"] = false,
+	["autoquestreward"] = false,
+	["autoquestaccept"] = false,
+	["autodailyquests"] = false,
+	["autopvpquests"] = false,
+	["skipcinematics"] = false,
+	["mailOpener"] = true,
+	["autoRepair"] = "PLAYER",
+};
+
+SV.configs["SVMap"] = {
+	["incompatible"] = {
+		["SexyMap"] = true,
+		["SquareMap"] = true,
+		["PocketPlot"] = true,
+	},
+	["enable"] = true,
+	["mapAlpha"] = 1,
+	["tinyWorldMap"] = true,
+	["size"] = 240,
+	["customshape"] = true,
+	["locationText"] = "CUSTOM",
+	["playercoords"] = "CUSTOM",
+	["bordersize"] = 6,
+	["bordercolor"] = "light",
+	["minimapbar"] = {
+		["enable"] = true,
+		["styleType"] = "HORIZONTAL",
+		["layoutDirection"] = "NORMAL",
+		["buttonSize"] = 28,
+		["mouseover"] = false,
+	},
+};
+
+SV.configs["SVOverride"] = {
+	["enable"] = true,
+	["loot"] = true,
+	["lootRoll"] = true,
+	["lootRollWidth"] = 328,
+	["lootRollHeight"] = 28,
+};
+
+SV.configs["SVPlate"] = {
+	["enable"] = true,
+	["filter"] = {},
+	["font"] = "SVUI Name Font",
+	["fontSize"] = 10,
+	["fontOutline"] = "OUTLINE",
+	["comboPoints"] = true,
+	["nonTargetAlpha"] = 0.6,
+	["combatHide"] = false,
+	["colorNameByValue"] = true,
+	["showthreat"] = true,
+	["targetcount"] = true,
+	["pointer"] = {
+		["enable"] = true,
+		["colorMatchHealthBar"] = true,
+		["color"] = {0.9, 1, 0.9},
+	},
+	["healthBar"] = {
+		["lowThreshold"] = 0.4,
+		["width"] = 108,
+		["height"] = 9,
+		["text"] = {
+			["enable"] = false,
+			["format"] = "CURRENT",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["attachTo"] = "CENTER",
+		},
+	},
+	["castBar"] = {
+		["height"] = 6,
+		["color"] = {1, 0.81, 0},
+		["noInterrupt"] = {0.78, 0.25, 0.25},
+	},
+	["raidHealIcon"] = {
+		["xOffset"] =  -4,
+		["yOffset"] = 6,
+		["size"] = 36,
+		["attachTo"] = "LEFT",
+	},
+	["threat"] = {
+		["enable"] = false,
+		["goodScale"] = 1,
+		["badScale"] = 1,
+		["goodColor"] = {0.29, 0.68, 0.3},
+		["badColor"] = {0.78, 0.25, 0.25},
+		["goodTransitionColor"] = {0.85, 0.77, 0.36},
+		["badTransitionColor"] = {0.94, 0.6, 0.06},
+	},
+	["auras"] = {
+		["font"] = "SVUI Number Font",
+		["fontSize"] = 7,
+		["fontOutline"] = "OUTLINE",
+		["numAuras"] = 5,
+		["additionalFilter"] = "CC"
+	},
+	["reactions"] = {
+		["tapped"] = {0.6, 0.6, 0.6},
+		["friendlyNPC"] = { 0.31, 0.45, 0.63},
+		["friendlyPlayer"] = {0.29, 0.68, 0.3},
+		["neutral"] = {0.85, 0.77, 0.36},
+		["enemy"] = {0.78, 0.25, 0.25},
+	},
+};
+
+SV.configs["SVStats"] = {
+	["enable"] = true,
+	["font"] = "SVUI Number Font",
+	["fontSize"] = 12,
+	["fontOutline"] = "OUTLINE",
+	["showBackground"] = true,
+	["shortGold"] = true,
+	["panels"] = {
+		["BottomRightDataPanel"] = {
+			["right"] = "Bags",
+			["left"] = "Friends",
+			["middle"] = "Guild",
+		},
+		["BottomLeftDataPanel"] = {
+			["left"] = "Time",
+			["middle"] = "System",
+			["right"] = "Gold",
+		},
+		["TopLeftDataPanel"] = {
+			["left"] = "Durability Bar",
+			["middle"] = "Reputation Bar",
+			["right"] = "Experience Bar",
+		},
+		["TopRightDataPanel"] = {
+			["left"] = "None",
+			["middle"] = "None",
+			["right"] = "None",
+		},
+	},
+	["localtime"] = true,
+	["time24"] = false,
+	["battleground"] = true,
+	["topLeftDockPanel"] = true,
+	["bottomLeftDockPanel"] = true,
+	["bottomRightDockPanel"] = true,
+	["panelTransparency"] = false,
+};
+
+SV.configs["SVTip"] = {
+	["enable"] = true,
+	["cursorAnchor"] = false,
+	["targetInfo"] = true,
+	["playerTitles"] = true,
+	["guildRanks"] = true,
+	["inspectInfo"] = false,
+	["itemCount"] = true,
+	["spellID"] = false,
+	["progressInfo"] = true,
+	["visibility"] = {
+		["unitFrames"] = "NONE",
+		["combat"] = false,
+	},
+	["healthBar"] = {
+		["text"] = true,
+		["height"] = 10,
+		["font"] = "Roboto",
+		["fontSize"] = 10,
+	},
+};
+
+SV.configs["SVUnit"] = {
+	["enable"] = true,
+	["disableBlizzard"] = true,
+
+	["smoothbars"] = false,
+	["statusbar"] = "SVUI BasicBar",
+	["auraBarStatusbar"] = "SVUI GlowBar",
+
+	["font"] = "SVUI Number Font",
+	["fontSize"] = 12,
+	["fontOutline"] = "OUTLINE",
+
+	["auraFont"] = "SVUI Alert Font",
+	["auraFontSize"] = 12,
+	["auraFontOutline"] = "OUTLINE",
+
+	["OORAlpha"] = 0.65,
+	["groupOORAlpha"] = 0.45,
+	["combatFadeRoles"] = true,
+	["combatFadeNames"] = true,
+	["debuffHighlighting"] = true,
+	["smartRaidFilter"] = true,
+	["fastClickTarget"] = false,
+	["healglow"] = true,
+	["glowtime"] = 0.8,
+	["glowcolor"] = {1, 1, 0},
+	["autoRoleSet"] = false,
+	["healthclass"] = true,
+	["forceHealthColor"] = false,
+	["overlayAnimation"] = true,
+	["powerclass"] = false,
+	["colorhealthbyvalue"] = true,
+	["customhealthbackdrop"] = true,
+	["classbackdrop"] = false,
+	["auraBarByType"] = true,
+	["auraBarShield"] = true,
+	["castClassColor"] = false,
+	["xrayFocus"] = true,
+	["grid"] = {
+		["enable"] = false,
+		["size"] = 28,
+		["shownames"] = false,
+		["font"] = "Roboto",
+		["fontsize"] = 16,
+	},
+	["player"] = {
+		["enable"] = true,
+		["width"] = 215,
+		["height"] = 60,
+		["lowmana"] = 30,
+		["combatfade"] = false,
+		["predict"] = false,
+		["threatEnabled"] = true,
+		["playerExpBar"] = false,
+		["playerRepBar"] = false,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "current",
+			["name_colored"] = true,
+			["name_length"] = 21,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "[health:color][health:current]",
+			["position"] = "INNERRIGHT",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 11,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "",
+			["height"] = 10,
+			["position"] = "INNERLEFT",
+			["hideonnpc"] = false,
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["detachedWidth"] = 250,
+			["attachTextToPower"] = false,
+			["druidMana"] = true,
+			["fontSize"] = 11,
+		},
+		["name"] =
+		{
+			["position"] = "CENTER",
+			["tags"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["font"] = "SVUI Number Font",
+			["fontSize"] = 13,
+			["fontOutline"] = "OUTLINE",
+		},
+		["pvp"] =
+		{
+			["font"] = "SVUI Number Font",
+			["fontSize"] = 12,
+			["fontOutline"] = "OUTLINE",
+			["position"] = "BOTTOM",
+			["tags"] = "||cFFB04F4F[pvptimer][mouseover]||r",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+		},
+		["portrait"] =
+		{
+			["enable"] = true,
+			["width"] = 50,
+			["overlay"] = true,
+			["camDistanceScale"] = 1.4,
+			["rotation"] = 0,
+			["style"] = "3D",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 8,
+			["numrows"] = 1,
+			["attachTo"] = "DEBUFFS",
+			["anchorPoint"] = "TOPLEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = true,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = 8,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 8,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "TOPLEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] =  0,
+			["yOffset"] = 8,
+			["sizeOverride"] = 0,
+		},
+		["aurabar"] =
+		{
+			["enable"] = false,
+			["anchorPoint"] = "ABOVE",
+			["attachTo"] = "DEBUFFS",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = true,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["friendlyAuraType"] = "HELPFUL",
+			["enemyAuraType"] = "HARMFUL",
+			["height"] = 18,
+			["sort"] = "TIME_REMAINING",
+		},
+		["castbar"] =
+		{
+			["enable"] = true,
+			["width"] = 215,
+			["height"] = 20,
+			["matchFrameWidth"] = true,
+			["icon"] = true,
+			["latency"] = false,
+			["format"] = "REMAINING",
+			["ticks"] = false,
+			["spark"] = true,
+			["displayTarget"] = false,
+			["useCustomColor"] = false,
+			["castingColor"] = {0.8, 0.8, 0},
+			["sparkColor"] = {1, 0.72, 0},
+		},
+		["classbar"] =
+		{
+			["enable"] = true,
+			["slideLeft"] = true,
+			["inset"] = "inset",
+			["height"] = 25,
+			["detachFromFrame"] = false,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 25,
+				["attachTo"] = "INNERBOTTOMRIGHT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+			["combatIcon"] = {
+				["enable"] = true,
+				["size"] = 26,
+				["attachTo"] = "INNERTOPRIGHT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+			["restIcon"] = {
+				["enable"] = true,
+				["size"] = 25,
+				["attachTo"] = "INNERTOPRIGHT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+		},
+		["stagger"] =
+		{
+			["enable"] = true,
+		},
+	},
+	["target"] = {
+		["enable"] = true,
+		["width"] = 215,
+		["height"] = 60,
+		["threatEnabled"] = true,
+		["rangeCheck"] = true,
+		["predict"] = false,
+		["smartAuraDisplay"] = "DISABLED",
+		["middleClickFocus"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "current",
+			["name_colored"] = true,
+			["name_length"] = 18,
+			["smartlevel"] = true,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "[health:color][health:current]",
+			["position"] = "INNERLEFT",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["reversed"] = true,
+			["fontSize"] = 11,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "[power:color][power:current]",
+			["height"] = 10,
+			["position"] = "INNERRIGHT",
+			["hideonnpc"] = true,
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["attachTextToPower"] = false,
+			["fontSize"] = 11,
+		},
+		["name"] =
+		{
+			["position"] = "INNERRIGHT",
+			["tags"] = "[name:color][name:18][smartlevel]",
+			["xOffset"] = -2,
+			["yOffset"] = 36,
+			["font"] = "SVUI Name Font",
+			["fontSize"] = 15,
+			["fontOutline"] = "NONE",
+		},
+		["portrait"] =
+		{
+			["enable"] = true,
+			["width"] = 50,
+			["overlay"] = true,
+			["rotation"] = 0,
+			["camDistanceScale"] = 1.4,
+			["style"] = "3D",
+		},
+		["buffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 8,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "TOPRIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterRaid"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = 8,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 8,
+			["numrows"] = 1,
+			["attachTo"] = "BUFFS",
+			["anchorPoint"] = "TOPRIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = true,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = 8,
+			["sizeOverride"] = 0,
+		},
+		["aurabar"] =
+		{
+			["enable"] = false,
+			["anchorPoint"] = "ABOVE",
+			["attachTo"] = "DEBUFFS",
+			["filterPlayer"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterRaid"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["friendlyAuraType"] = "HELPFUL",
+			["enemyAuraType"] = "HARMFUL",
+			["height"] = 18,
+			["sort"] = "TIME_REMAINING",
+		},
+		["castbar"] =
+		{
+			["enable"] = true,
+			["width"] = 215,
+			["height"] = 20,
+			["matchFrameWidth"] = true,
+			["icon"] = true,
+			["format"] = "REMAINING",
+			["spark"] = true,
+			["useCustomColor"] = false,
+			["castingColor"] = {0.8, 0.8, 0},
+			["sparkColor"] = {1, 0.72, 0},
+		},
+		["combobar"] =
+		{
+			["enable"] = true,
+			["height"] = 30,
+			["smallIcons"] = false,
+			["hudStyle"] = false,
+			["hudScale"] = 64,
+			["autoHide"] = true,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 30,
+				["attachTo"] = "INNERLEFT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			}
+		},
+	},
+	["targettarget"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["threatEnabled"] = false,
+		["width"] = 150,
+		["height"] = 30,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 10,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "INNERRIGHT",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 9,
+		},
+		["power"] =
+		{
+			["enable"] = false,
+			["tags"] = "",
+			["height"] = 7,
+			["position"] = "INNERLEFT",
+			["hideonnpc"] = false,
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["fontSize"] = 9,
+		},
+		["name"] =
+		{
+			["position"] = "CENTER",
+			["tags"] = "[name:color][name:10]",
+			["xOffset"] = 0,
+			["yOffset"] = 1,
+			["font"] = "SVUI Narrator Font",
+			["fontSize"] = 14,
+			["fontOutline"] = "OUTLINE",
+		},
+		["portrait"] =
+		{
+			["enable"] = true,
+			["width"] = 45,
+			["overlay"] = true,
+			["rotation"] = 0,
+			["camDistanceScale"] = 1,
+			["style"] = "3D",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 7,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "BOTTOMLEFT",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterRaid"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] =  0,
+			["yOffset"] =  -8,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 5,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "TOPLEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = true,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] =  0,
+			["yOffset"] =  8,
+			["sizeOverride"] = 0,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "INNERRIGHT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+		},
+	},
+	["focus"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["threatEnabled"] = true,
+		["width"] = 170,
+		["height"] = 30,
+		["predict"] = false,
+		["smartAuraDisplay"] = "DISABLED",
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 15,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "INNERRIGHT",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "",
+			["height"] = 7,
+			["position"] = "INNERLEFT",
+			["hideonnpc"] = false,
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "CENTER",
+			["tags"] = "[name:color][name:15]",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["font"] = "SVUI Narrator Font",
+			["fontSize"] = 14,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 7,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "BOTTOMRIGHT",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterRaid"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = -8,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 5,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "TOPRIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = true,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = 8,
+			["sizeOverride"] = 0,
+		},
+		["castbar"] =
+		{
+			["enable"] = true,
+			["width"] = 170,
+			["height"] = 18,
+			["icon"] = true,
+			["matchFrameWidth"] = true,
+			["format"] = "REMAINING",
+			["spark"] = true,
+			["useCustomColor"] = false,
+			["castingColor"] = {0.8, 0.8, 0},
+			["sparkColor"] = {1, 0.72, 0},
+		},
+		["aurabar"] =
+		{
+			["enable"] = false,
+			["anchorPoint"] = "ABOVE",
+			["attachTo"] = "FRAME",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = true,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterRaid"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["useFilter"] = "",
+			["friendlyAuraType"] = "HELPFUL",
+			["enemyAuraType"] = "HARMFUL",
+			["height"] = 18,
+			["sort"] = "TIME_REMAINING",
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "INNERLEFT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+		},
+	},
+	["focustarget"] = {
+		["enable"] = false,
+		["rangeCheck"] = true,
+		["threatEnabled"] = false,
+		["width"] = 150,
+		["height"] = 26,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 15,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "INNERRIGHT",
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = false,
+			["tags"] = "",
+			["height"] = 7,
+			["position"] = "INNERLEFT",
+			["hideonnpc"] = false,
+			["xOffset"] = 0,
+			["yOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "CENTER",
+			["tags"] = "[name:color][name:15]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Narrator Font",
+			["fontSize"] = 14,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 7,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "BOTTOMLEFT",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterRaid"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = -8,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 5,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "TOPLEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = true,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = 8,
+			["sizeOverride"] = 0,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "INNERLEFT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+		},
+	},
+	["pet"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["threatEnabled"] = true,
+		["width"] = 150,
+		["height"] = 30,
+		["predict"] = false,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 10,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "INNERRIGHT",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = false,
+			["tags"] = "",
+			["height"] = 7,
+			["position"] = "INNERLEFT",
+			["hideonnpc"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "CENTER",
+			["tags"] = "[name:color][name:8]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Narrator Font",
+			["fontSize"] = 14,
+			["fontOutline"] = "OUTLINE",
+		},
+		["portrait"] =
+		{
+			["enable"] = true,
+			["width"] = 45,
+			["overlay"] = true,
+			["rotation"] = 0,
+			["camDistanceScale"] = 1,
+			["style"] = "3D",
+		},
+		["buffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "LEFT",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = true,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = -3,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 3,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["castbar"] =
+		{
+			["enable"] = true,
+			["width"] = 130,
+			["height"] = 8,
+			["icon"] = false,
+			["matchFrameWidth"] = true,
+			["format"] = "REMAINING",
+			["spark"] = false,
+			["useCustomColor"] = false,
+			["castingColor"] = {0.8, 0.8, 0},
+			["sparkColor"] = {1, 0.72, 0},
+		},
+		["auraWatch"] =
+		{
+			["enable"] = true,
+			["size"] = 8,
+		},
+	},
+	["pettarget"] = {
+		["enable"] = false,
+		["rangeCheck"] = true,
+		["threatEnabled"] = false,
+		["width"] = 130,
+		["height"] = 26,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 15,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "INNERRIGHT",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = false,
+			["tags"] = "",
+			["height"] = 7,
+			["position"] = "INNERLEFT",
+			["hideonnpc"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "CENTER",
+			["tags"] = "[name:color][name:15]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Narrator Font",
+			["fontSize"] = 14,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 7,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "BOTTOMLEFT",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterRaid"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = true,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = -8,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 5,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "BOTTOMRIGHT",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = true,
+			},
+			["filterBlocked"] =
+			{
+				friendly = true,
+				enemy = true,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "",
+			["xOffset"] = 0,
+			["yOffset"] = 8,
+			["sizeOverride"] = 0,
+		},
+	},
+	["boss"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["showBy"] = "UP",
+		["width"] = 200,
+		["height"] = 45,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "current",
+			["name_colored"] = true,
+			["name_length"] = 15,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "[health:color][health:current]",
+			["position"] = "INNERTOPRIGHT",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = true,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "[power:color][power:current]",
+			["height"] = 7,
+			["position"] = "INNERBOTTOMRIGHT",
+			["hideonnpc"] = false,
+			["yOffset"] = 7,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["portrait"] =
+		{
+			["enable"] = true,
+			["width"] = 35,
+			["overlay"] = true,
+			["rotation"] = 0,
+			["camDistanceScale"] = 1,
+			["style"] = "3D",
+		},
+		["name"] =
+		{
+			["position"] = "INNERLEFT",
+			["tags"] = "[name:color][name:15]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Number Font",
+			["fontSize"] = 12,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 2,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "LEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] = false,
+			["filterRaid"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] =  -8,
+			["yOffset"] =  0,
+			["sizeOverride"] = 40,
+		},
+		["debuffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "BUFFS",
+			["anchorPoint"] = "LEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] =  -8,
+			["yOffset"] =  0,
+			["sizeOverride"] = 40,
+		},
+		["castbar"] =
+		{
+			["enable"] = true,
+			["width"] = 200,
+			["height"] = 18,
+			["icon"] = true,
+			["matchFrameWidth"] = true,
+			["format"] = "REMAINING",
+			["spark"] = true,
+			["useCustomColor"] = false,
+			["castingColor"] = {0.8, 0.8, 0},
+			["sparkColor"] = {1, 0.72, 0},
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 22,
+				["attachTo"] = "CENTER",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+		},
+	},
+	["arena"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["showBy"] = "UP",
+		["width"] = 215,
+		["height"] = 45,
+		["predict"] = false,
+		["colorOverride"] = "USE_DEFAULT",
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "current",
+			["name_colored"] = true,
+			["name_length"] = 15,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "[health:color][health:current]",
+			["position"] = "INNERTOPRIGHT",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = true,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "[power:color][power:current]",
+			["height"] = 7,
+			["position"] = "INNERBOTTOMRIGHT",
+			["hideonnpc"] = false,
+			["yOffset"] = 7,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERLEFT",
+			["tags"] = "[name:color][name:15]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Number Font",
+			["fontSize"] = 12,
+			["fontOutline"] = "OUTLINE",
+		},
+		["portrait"] =
+		{
+			["enable"] = true,
+			["width"] = 45,
+			["overlay"] = true,
+			["rotation"] = 0,
+			["camDistanceScale"] = 1,
+			["style"] = "3D",
+		},
+		["buffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "LEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterRaid"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterBlocked"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "Shield",
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["xOffset"] = -8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 40,
+		},
+		["debuffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "BUFFS",
+			["anchorPoint"] = "LEFT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "LEFT",
+			["filterPlayer"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterBlocked"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterAllowed"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["filterInfinite"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["useFilter"] = "CC",
+			["filterDispellable"] =
+			{
+				friendly = false,
+				enemy = false,
+			},
+			["xOffset"] = -8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 40,
+		},
+		["castbar"] =
+		{
+			["enable"] = true,
+			["width"] = 215,
+			["height"] = 18,
+			["icon"] = true,
+			["matchFrameWidth"] = true,
+			["format"] = "REMAINING",
+			["spark"] = true,
+			["useCustomColor"] = false,
+			["castingColor"] = {0.8, 0.8, 0},
+			["sparkColor"] = {1, 0.72, 0},
+		},
+		["pvp"] =
+		{
+			["enable"] = true,
+			["trinketPosition"] = "LEFT",
+			["trinketSize"] = 45,
+			["trinketX"] = -2,
+			["trinketY"] = 0,
+			["specPosition"] = "RIGHT",
+			["specSize"] = 45,
+			["specX"] = 2,
+			["specY"] = 0,
+		},
+	},
+	["party"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["threatEnabled"] = true,
+		["visibility"] = "[@raid6, exists][nogroup] hide;show",
+		["showBy"] = "UP_RIGHT",
+		["wrapXOffset"] = 9,
+		["wrapYOffset"] = 13,
+		["groupCount"] = 1,
+		["gRowCol"] = 1,
+		["customSorting"] = false,
+		["sortMethod"] = "GROUP",
+		["sortDir"] = "ASC",
+		["invertGroupingOrder"] = false,
+		["startFromCenter"] = false,
+		["showPlayer"] = true,
+		["predict"] = false,
+		["colorOverride"] = "USE_DEFAULT",
+		["width"] = 70,
+		["height"] = 70,
+		["gridAllowed"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 10,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "BOTTOM",
+			["orientation"] = "HORIZONTAL",
+			["frequentUpdates"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "",
+			["frequentUpdates"] = false,
+			["height"] = 7,
+			["position"] = "BOTTOMRIGHT",
+			["hideonnpc"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERTOPLEFT",
+			["tags"] = "[name:color][name:10]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Narrator Font",
+			["fontSize"] = 13,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 2,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHTTOP",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = true,
+			["perrow"] = 2,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHTTOP",
+			["verticalGrowth"] = "DOWN",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["auraWatch"] =
+		{
+			["enable"] = true,
+			["size"] = 8,
+			["fontSize"] = 11,
+		},
+		["petsGroup"] =
+		{
+			["enable"] = false,
+			["width"] = 30,
+			["height"] = 30,
+			["gridAllowed"] = true,
+			["anchorPoint"] = "BOTTOMLEFT",
+			["xOffset"] =  - 1,
+			["yOffset"] = 0,
+			["name_length"] = 3,
+			["tags"] = "[name:3]",
+		},
+		["targetsGroup"] =
+		{
+			["enable"] = false,
+			["width"] = 30,
+			["height"] = 30,
+			["gridAllowed"] = true,
+			["anchorPoint"] = "TOPLEFT",
+			["xOffset"] =  - 1,
+			["yOffset"] = 0,
+			["name_length"] = 3,
+			["tags"] = "[name:3]",
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 25,
+				["attachTo"] = "INNERBOTTOMLEFT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+			["roleIcon"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "INNERBOTTOMRIGHT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+			["raidRoleIcons"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "TOPLEFT",
+				["xOffset"] = 0,
+				["yOffset"] = -4,
+			},
+		},
+		["portrait"] =
+		{
+			["enable"] = true,
+			["width"] = 45,
+			["overlay"] = true,
+			["rotation"] = 0,
+			["camDistanceScale"] = 1,
+			["style"] = "3D",
+		},
+	},
+	["raid10"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["threatEnabled"] = true,
+		["visibility"] = "[@raid6, noexists][@raid11, exists][nogroup] hide;show",
+		["showBy"] = "RIGHT_DOWN",
+		["wrapXOffset"] = 8,
+		["wrapYOffset"] = 8,
+		["groupCount"] = 2,
+		["gRowCol"] = 1,
+		["customSorting"] = false,
+		["sortMethod"] = "GROUP",
+		["sortDir"] = "ASC",
+		["showPlayer"] = true,
+		["predict"] = false,
+		["colorOverride"] = "USE_DEFAULT",
+		["width"] = 75,
+		["height"] = 34,
+		["gridAllowed"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 4,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "BOTTOM",
+			["orientation"] = "HORIZONTAL",
+			["frequentUpdates"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "",
+			["frequentUpdates"] = false,
+			["height"] = 4,
+			["position"] = "BOTTOMRIGHT",
+			["hideonnpc"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERTOPLEFT",
+			["tags"] = "[name:color][name:4]",
+			["yOffset"] = 0,
+			["xOffset"] = 8,
+			["font"] = "SVUI Default Font",
+			["fontSize"] = 10,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["auraWatch"] =
+		{
+			["enable"] = true,
+			["size"] = 8,
+		},
+		["rdebuffs"] =
+		{
+			["enable"] = true,
+			["size"] = 26,
+			["xOffset"] = 0,
+			["yOffset"] = 2,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 15,
+				["attachTo"] = "INNERBOTTOMRIGHT",
+				["xOffset"] = -8,
+				["yOffset"] = 0,
+			},
+			["roleIcon"] =
+			{
+				["enable"] = true,
+				["size"] = 12,
+				["attachTo"] = "INNERBOTTOMLEFT",
+				["xOffset"] = 8,
+				["yOffset"] = 0,
+			},
+			["raidRoleIcons"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "TOPLEFT",
+				["xOffset"] = 8,
+				["yOffset"] = -4,
+			},
+		},
+	},
+	["raid25"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["threatEnabled"] = true,
+		["visibility"] = "[@raid6, noexists][@raid11, noexists][@raid26, exists][nogroup] hide;show",
+		["showBy"] = "RIGHT_DOWN",
+		["wrapXOffset"] = 8,
+		["wrapYOffset"] = 8,
+		["groupCount"] = 5,
+		["gRowCol"] = 1,
+		["customSorting"] = false,
+		["sortMethod"] = "GROUP",
+		["sortDir"] = "ASC",
+		["showPlayer"] = true,
+		["predict"] = false,
+		["colorOverride"] = "USE_DEFAULT",
+		["width"] = 50,
+		["height"] = 30,
+		["gridAllowed"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 4,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "BOTTOM",
+			["orientation"] = "HORIZONTAL",
+			["frequentUpdates"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = true,
+			["tags"] = "",
+			["height"] = 4,
+			["position"] = "BOTTOMRIGHT",
+			["hideonnpc"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERTOPLEFT",
+			["tags"] = "[name:color][name:4]",
+			["yOffset"] = 0,
+			["xOffset"] = 8,
+			["font"] = "SVUI Default Font",
+			["fontSize"] = 10,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["auraWatch"] =
+		{
+			["enable"] = true,
+			["size"] = 8,
+		},
+		["rdebuffs"] =
+		{
+			["enable"] = true,
+			["size"] = 26,
+			["xOffset"] = 0,
+			["yOffset"] = 2,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 15,
+				["attachTo"] = "INNERBOTTOMRIGHT",
+				["xOffset"] = -8,
+				["yOffset"] = 0,
+			},
+			["roleIcon"] =
+			{
+				["enable"] = true,
+				["size"] = 12,
+				["attachTo"] = "INNERBOTTOMLEFT",
+				["xOffset"] = 8,
+				["yOffset"] = 0,
+			},
+			["raidRoleIcons"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "TOPLEFT",
+				["xOffset"] = 8,
+				["yOffset"] = -4,
+			},
+		},
+	},
+	["raid40"] = {
+		["enable"] = true,
+		["rangeCheck"] = true,
+		["threatEnabled"] = true,
+		["visibility"] = "[@raid6, noexists][@raid11, noexists][@raid26, noexists][nogroup] hide;show",
+		["showBy"] = "RIGHT_DOWN",
+		["wrapXOffset"] = 8,
+		["wrapYOffset"] = 8,
+		["groupCount"] = 8,
+		["gRowCol"] = 1,
+		["customSorting"] = false,
+		["sortMethod"] = "GROUP",
+		["sortDir"] = "ASC",
+		["showPlayer"] = true,
+		["predict"] = false,
+		["colorOverride"] = "USE_DEFAULT",
+		["width"] = 50,
+		["height"] = 30,
+		["gridAllowed"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "none",
+			["name_colored"] = true,
+			["name_length"] = 4,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "",
+			["position"] = "BOTTOM",
+			["orientation"] = "HORIZONTAL",
+			["frequentUpdates"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["power"] =
+		{
+			["enable"] = false,
+			["tags"] = "",
+			["frequentUpdates"] = false,
+			["height"] = 4,
+			["position"] = "BOTTOMRIGHT",
+			["hideonnpc"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERTOPLEFT",
+			["tags"] = "[name:color][name:4]",
+			["yOffset"] = 0,
+			["xOffset"] = 8,
+			["font"] = "SVUI Default Font",
+			["fontSize"] = 10,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["rdebuffs"] =
+		{
+			["enable"] = true,
+			["size"] = 22,
+			["xOffset"] = 0,
+			["yOffset"] = 2,
+		},
+		["auraWatch"] =
+		{
+			["enable"] = true,
+			["size"] = 8,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 15,
+				["attachTo"] = "INNERBOTTOMRIGHT",
+				["xOffset"] = -8,
+				["yOffset"] = 0,
+			},
+			["roleIcon"] =
+			{
+				["enable"] = true,
+				["size"] = 12,
+				["attachTo"] = "INNERBOTTOMLEFT",
+				["xOffset"] = 8,
+				["yOffset"] = 0,
+			},
+			["raidRoleIcons"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "TOPLEFT",
+				["xOffset"] = 8,
+				["yOffset"] = -4,
+			},
+		},
+	},
+	["raidpet"] = {
+		["enable"] = false,
+		["rangeCheck"] = true,
+		["threatEnabled"] = true,
+		["visibility"] = "[group:raid] show; hide",
+		["showBy"] = "DOWN_RIGHT",
+		["wrapXOffset"] = 3,
+		["wrapYOffset"] = 3,
+		["groupCount"] = 2,
+		["gRowCol"] = 1,
+		["customSorting"] = true,
+		["sortMethod"] = "PETNAME",
+		["sortDir"] = "ASC",
+		["invertGroupingOrder"] = false,
+		["startFromCenter"] = false,
+		["predict"] = false,
+		["colorOverride"] = "USE_DEFAULT",
+		["width"] = 80,
+		["height"] = 30,
+		["gridAllowed"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "deficit",
+			["name_colored"] = true,
+			["name_length"] = 4,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "[health:color][health:deficit]",
+			["position"] = "BOTTOM",
+			["orientation"] = "HORIZONTAL",
+			["frequentUpdates"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERTOPLEFT",
+			["tags"] = "[name:color][name:4]",
+			["yOffset"] = 4,
+			["xOffset"] = -4,
+			["font"] = "SVUI Default Font",
+			["fontSize"] = 10,
+			["fontOutline"] = "OUTLINE",
+		},
+		["buffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = true,
+			["filterRaid"] = true,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = true,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["debuffs"] =
+		{
+			["enable"] = false,
+			["perrow"] = 3,
+			["numrows"] = 1,
+			["attachTo"] = "FRAME",
+			["anchorPoint"] = "RIGHT",
+			["verticalGrowth"] = "UP",
+			["horizontalGrowth"] = "RIGHT",
+			["filterPlayer"] = false,
+			["filterBlocked"] = true,
+			["filterAllowed"] = false,
+			["filterInfinite"] = false,
+			["filterDispellable"] = false,
+			["useFilter"] = "",
+			["xOffset"] = 8,
+			["yOffset"] = 0,
+			["sizeOverride"] = 0,
+		},
+		["auraWatch"] =
+		{
+			["enable"] = true,
+			["size"] = 8,
+		},
+		["rdebuffs"] =
+		{
+			["enable"] = true,
+			["size"] = 26,
+			["xOffset"] = 0,
+			["yOffset"] = 2,
+		},
+		["icons"] =
+		{
+			["raidicon"] =
+			{
+				["enable"] = true,
+				["size"] = 18,
+				["attachTo"] = "INNERTOPLEFT",
+				["xOffset"] = 0,
+				["yOffset"] = 0,
+			},
+		},
+	},
+	["tank"] = {
+		["enable"] = true,
+		["threatEnabled"] = true,
+		["rangeCheck"] = true,
+		["width"] = 120,
+		["height"] = 28,
+		["gridAllowed"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "deficit",
+			["name_colored"] = true,
+			["name_length"] = 8,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "[health:color][health:deficit]",
+			["position"] = "INNERRIGHT",
+			["orientation"] = "HORIZONTAL",
+			["frequentUpdates"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERLEFT",
+			["tags"] = "[name:color][name:8]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Default Font",
+			["fontSize"] = 10,
+			["fontOutline"] = "OUTLINE",
+		},
+		["targetsGroup"] =
+		{
+			["enable"] = false,
+			["anchorPoint"] = "RIGHT",
+			["xOffset"] = 1,
+			["yOffset"] = 0,
+			["width"] = 120,
+			["height"] = 28,
+		},
+	},
+	["assist"] = {
+		["enable"] = true,
+		["threatEnabled"] = true,
+		["rangeCheck"] = true,
+		["width"] = 120,
+		["height"] = 28,
+		["gridAllowed"] = true,
+		["formatting"] = {
+			["power_colored"] = true,
+			["power_type"] = "none",
+			["power_class"] = false,
+			["power_alt"] = false,
+			["health_colored"] = true,
+			["health_type"] = "deficit",
+			["name_colored"] = true,
+			["name_length"] = 8,
+			["smartlevel"] = false,
+			["absorbs"] = false,
+			["threat"] = false,
+			["incoming"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+		},
+		["misc"] = {
+			["tags"] = ""
+		},
+		["health"] =
+		{
+			["tags"] = "[health:color][health:deficit]",
+			["position"] = "INNERRIGHT",
+			["orientation"] = "HORIZONTAL",
+			["frequentUpdates"] = false,
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["reversed"] = false,
+			["fontSize"] = 10,
+		},
+		["name"] =
+		{
+			["position"] = "INNERLEFT",
+			["tags"] = "[name:color][name:8]",
+			["yOffset"] = 0,
+			["xOffset"] = 0,
+			["font"] = "SVUI Default Font",
+			["fontSize"] = 10,
+			["fontOutline"] = "OUTLINE",
+		},
+		["targetsGroup"] =
+		{
+			["enable"] = false,
+			["anchorPoint"] = "RIGHT",
+			["xOffset"] = 1,
+			["yOffset"] = 0,
+			["width"] = 120,
+			["height"] = 28,
+		},
+	}
+}
+
+--[[ CACHE DATA ]]--
+
+local BUFFWATCH_BY_CLASS = {
+    PRIEST = {
+        {-- Weakened Soul
+            ["enabled"] = true,
+            ["id"] = 6788,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Prayer of Mending
+            ["enabled"] = true,
+            ["id"] = 41635,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.7, ["b"] = 0.2},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Renew
+            ["enabled"] = true,
+            ["id"] = 139,
+            ["point"] = "BOTTOMLEFT",
+            ["color"] = {["r"] = 0.4, ["g"] = 0.7, ["b"] = 0.2},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Power Word: Shield
+            ["enabled"] = true,
+            ["id"] = 17,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.81, ["g"] = 0.85, ["b"] = 0.1},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Power Word: Shield Power Insight
+            ["enabled"] = true,
+            ["id"] = 123258,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.81, ["g"] = 0.85, ["b"] = 0.1},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Power Infusion
+            ["enabled"] = true,
+            ["id"] = 10060,
+            ["point"] = "RIGHT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Guardian Spirit
+            ["enabled"] = true,
+            ["id"] = 47788,
+            ["point"] = "LEFT",
+            ["color"] = {["r"] = 0.86, ["g"] = 0.44, ["b"] = 0},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Pain Suppression
+            ["enabled"] = true,
+            ["id"] = 33206,
+            ["point"] = "LEFT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    DRUID = {
+        {-- Rejuvenation
+            ["enabled"] = true,
+            ["id"] = 774,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.8, ["g"] = 0.4, ["b"] = 0.8},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Regrowth
+            ["enabled"] = true,
+            ["id"] = 8936,
+            ["point"] = "BOTTOMLEFT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.8, ["b"] = 0.2},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Lifebloom
+            ["enabled"] = true,
+            ["id"] = 33763,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.4, ["g"] = 0.8, ["b"] = 0.2},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Wild Growth
+            ["enabled"] = true,
+            ["id"] = 48438,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.8, ["g"] = 0.4, ["b"] = 0},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    PALADIN = {
+        {-- Beacon of Light
+            ["enabled"] = true,
+            ["id"] = 53563,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.7, ["g"] = 0.3, ["b"] = 0.7},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Hand of Protection
+            ["enabled"] = true,
+            ["id"] = 1022,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.2, ["b"] = 1},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Hand of Freedom
+            ["enabled"] = true,
+            ["id"] = 1044,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.45, ["b"] = 0},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Hand of Salvation
+            ["enabled"] = true,
+            ["id"] = 1038,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.93, ["g"] = 0.75, ["b"] = 0},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Hand of Sacrifice
+            ["enabled"] = true,
+            ["id"] = 6940,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.1, ["b"] = 0.1},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Hand of Purity
+            ["enabled"] = true,
+            ["id"] = 114039,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.64, ["g"] = 0.41, ["b"] = 0.72},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Sacred Shield
+            ["enabled"] = true,
+            ["id"] = 20925,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.93, ["g"] = 0.75, ["b"] = 0},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Eternal Flame
+            ["enabled"] = true,
+            ["id"] = 114163,
+            ["point"] = "BOTTOMLEFT",
+            ["color"] = {["r"] = 0.87, ["g"] = 0.7, ["b"] = 0.03},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    SHAMAN = {
+        {-- Riptide
+            ["enabled"] = true,
+            ["id"] = 61295,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.7, ["g"] = 0.3, ["b"] = 0.7},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Earth Shield
+            ["enabled"] = true,
+            ["id"] = 974,
+            ["point"] = "BOTTOMLEFT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.7, ["b"] = 0.2},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Earthliving
+            ["enabled"] = true,
+            ["id"] = 51945,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.7, ["g"] = 0.4, ["b"] = 0.4},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    MONK = {
+        {--Renewing Mist
+            ["enabled"] = true,
+            ["id"] = 119611,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.8, ["g"] = 0.4, ["b"] = 0.8},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Life Cocoon
+            ["enabled"] = true,
+            ["id"] = 116849,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.8, ["b"] = 0.2},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Enveloping Mist
+            ["enabled"] = true,
+            ["id"] = 132120,
+            ["point"] = "BOTTOMLEFT",
+            ["color"] = {["r"] = 0.4, ["g"] = 0.8, ["b"] = 0.2},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Zen Sphere
+            ["enabled"] = true,
+            ["id"] = 124081,
+            ["point"] = "BOTTOMRIGHT",
+            ["color"] = {["r"] = 0.7, ["g"] = 0.4, ["b"] = 0},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    ROGUE = {
+        {-- Tricks of the Trade
+            ["enabled"] = true,
+            ["id"] = 57934,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    MAGE = {
+        {-- Ice Ward
+            ["enabled"] = true,
+            ["id"] = 111264,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.2, ["b"] = 1},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    WARRIOR = {
+        {-- Vigilance
+            ["enabled"] = true,
+            ["id"] = 114030,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.2, ["b"] = 1},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Intervene
+            ["enabled"] = true,
+            ["id"] = 3411,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Safe Guard
+            ["enabled"] = true,
+            ["id"] = 114029,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    DEATHKNIGHT = {
+        {-- Unholy Frenzy
+            ["enabled"] = true,
+            ["id"] = 49016,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
+            ["anyUnit"] = false,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    },
+    HUNTER = {},
+    WARLOCK = {},
+    NONE = {}
+}
+
+local FilterIDs = {
+    ["Blocked"] = [[36900,36901,36893,114216,97821,36032,132365,8733,57724,25771,57723,36032,58539,26013,6788,71041,41425,55711,8326,23445,24755,25163,80354,95809,95223,124275,124274,124273,117870,123981,15007,113942,89140]],
+    ["Allowed"] = [[31821,2825,32182,80353,90355,47788,33206,116849,22812,1490,116202,123059,136431,137332,137375,144351,142863,142864,142865,143198]],
+    ["Strict"] = [[123059,136431,137332,137375,144351,142863,142864,142865,143198]],
+    ["CC"] = [[47476,91800,91807,91797,108194,115001,33786,2637,339,78675,22570,5211,9005,102359,99,127797,45334,102795,114238,113004,3355,1513,19503,34490,24394,64803,19386,117405,128405,50519,91644,90337,54706,4167,90327,56626,50245,50541,96201,96201,31661,118,55021,122,82691,118271,44572,33395,102051,20066,10326,853,105593,31935,105421,605,64044,8122,9484,15487,114404,88625,113792,87194,2094,1776,6770,1833,51722,1330,408,88611,115197,113953,51514,64695,63685,76780,118905,118345,710,6789,118699,5484,6358,30283,24259,115782,115268,118093,89766,137143,20511,7922,676,105771,107566,132168,107570,118895,18498,116706,117368,115078,122242,119392,119381,120086,116709,123407,140023,25046,20549,107079]],
+    ["Shield"] = [[17,47515,45243,45438,115610,48797,48792,49039,87256,55233,50461,33206,47788,62618,47585,104773,110913,108359,22812,102342,106922,61336,19263,53480,1966,31224,74001,5277,45182,98007,30823,108271,1022,6940,114039,31821,498,642,86659,31850,118038,55694,97463,12975,114029,871,114030,120954,131523,122783,122278,115213,116849,20594]],
+    ["Player"] = [[17,47515,45243,45438,45438,115610,110909,12051,12472,80353,12042,32612,110960,108839,111264,108843,48797,48792,49039,87256,49222,55233,50461,49016,51271,96268,33206,47788,62618,47585,6346,10060,114239,119032,27827,104773,110913,108359,113860,113861,113858,88448,22812,102342,106922,61336,117679,102543,102558,102560,16689,132158,106898,1850,106951,29166,52610,69369,112071,124974,19263,53480,51755,54216,34471,3045,3584,131894,90355,90361,31224,74001,5277,45182,51713,114018,2983,121471,11327,108212,57933,79140,13750,98007,30823,108271,16188,2825,79206,16191,8178,58875,108281,108271,16166,114896,1044,1022,1038,6940,114039,31821,498,642,86659,20925,31850,31884,53563,31842,54428,105809,85499,118038,55694,97463,12975,114029,871,114030,18499,1719,23920,114028,46924,3411,107574,120954,131523,122783,122278,115213,116849,125174,116841,20594,59545,20572,26297,68992]],
+    ["Raid"] = [[116281,116784,116417,116942,116161,117708,118303,118048,118135,117878,117949,116835,116778,116525,122761,122760,122740,123812,123180,123474,122835,123081,122125,121885,121949,117436,118091,117519,122752,123011,116161,123121,119985,119086,119775,122151,138349,137371,136767,137641,137359,137972,136903,136753,137633,137731,133767,133768,136050,138569,134691,137440,137408,137360,135000,143436,143579,147383,146124,144851,144358,144774,147207,144215,143990,144330,143494,142990,143919,143766,143773,146589,143777,143385,143974,145183]]
+}
+
+local FilterOverrides = {
+    ["45438"] = 5, ["48797"] = 5, ["87256"] = 4,
+    ["33206"] = 3, ["47585"] = 5, ["22812"] = 2,
+    ["102342"] = 2, ["19263"] = 5, ["5277"] = 5,
+    ["1022"] = 5, ["31821"] = 3, ["498"] = 2,
+    ["642"] = 5, ["86659"] = 4, ["31850"] = 4,
+    ["118038"] = 5, ["114029"] = 2, ["871"] = 3,
+    ["120954"] = 2, ["131523"] = 5
+}
+
+SV.configs["filter"] = {
+    ["CC"] = {},
+    ["Shield"] = {},
+    ["Player"] = {},
+    ["Blocked"] = {},
+    ["Allowed"] = {},
+    ["Strict"] = {},
+    ["Raid"] = {},
+    ["BuffWatch"] = BUFFWATCH_BY_CLASS[filterClass],
+    ["PetBuffWatch"] = {
+        {-- Frenzy
+            ["enabled"] = true,
+            ["id"] = 19615,
+            ["point"] = "TOPLEFT",
+            ["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+        {-- Mend Pet
+            ["enabled"] = true,
+            ["id"] = 136,
+            ["point"] = "TOPRIGHT",
+            ["color"] = {["r"] = 0.2, ["g"] = 0.8, ["b"] = 0.2},
+            ["anyUnit"] = true,
+            ["onlyShowMissing"] = false,
+            ['style'] = 'coloredIcon',
+            ['displayText'] = false,
+            ['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
+            ['textThreshold'] = -1,
+            ['xOffset'] = 0,
+            ['yOffset'] = 0
+        },
+    }
+}
+
+for k, x in pairs(FilterIDs) do
+    local src = {};
+    for id in x:gmatch("([^,]+)") do
+        if(id) then
+            local saved
+            local n = safename(id);
+            local p = FilterOverrides[tostring(id)] or 0;
+            if k == "Strict" then
+                saved = {['enable'] = true, ['spellID'] = id, ['priority'] = p}
+            else
+                saved = {['enable'] = true, ['priority'] = p}
+            end
+            src[n] = saved
+        end
+    end
+    SV.configs["filter"][k] = src
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/setup/installer.lua b/Interface/AddOns/SVUI/setup/installer.lua
new file mode 100644
index 0000000..3ab0d4e
--- /dev/null
+++ b/Interface/AddOns/SVUI/setup/installer.lua
@@ -0,0 +1,1136 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string 	= _G.string;
+local table     = _G.table;
+local format = string.format;
+local tcopy = table.copy;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = select(2, ...)
+local SVLib = LibSuperVillain;
+local L = SV.L;
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local CURRENT_PAGE, MAX_PAGE, XOFF = 0, 9, (GetScreenWidth() * 0.025)
+local okToResetMOVE = false
+local mungs = false;
+local user_music_vol;
+local musicIsPlaying;
+local PageData, OnClickData
+local SVUI_CLASS_COLORS = _G.SVUI_CLASS_COLORS
+local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS
+local scc = SVUI_CLASS_COLORS[SV.class];
+local rcc = RAID_CLASS_COLORS[SV.class];
+local r2 = .1 + (rcc.r * .1)
+local g2 = .1 + (rcc.g * .1)
+local b2 = .1 + (rcc.b * .1)
+--[[
+##########################################################
+SETUP CLASS OBJECT
+##########################################################
+]]--
+SV.Setup = {};
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function PlayThemeSong()
+	if(not musicIsPlaying) then
+		SetCVar("Sound_MusicVolume", 100)
+		SetCVar("Sound_EnableMusic", 1)
+		StopMusic()
+		PlayMusic([[Interface\AddOns\SVUI\assets\sounds\SuperVillain.mp3]])
+		musicIsPlaying = true
+	end
+end
+
+local function SetInstallButton(button)
+    if(not button) then return end
+    button.Left:SetAlpha(0)
+    button.Middle:SetAlpha(0)
+    button.Right:SetAlpha(0)
+    button:SetNormalTexture("")
+    button:SetPushedTexture("")
+    button:SetPushedTexture("")
+    button:SetDisabledTexture("")
+    button:RemoveTextures()
+    button:SetFrameLevel(button:GetFrameLevel() + 1)
+end
+
+local function forceCVars()
+	SetCVar("alternateResourceText",1)
+	SetCVar("statusTextDisplay","BOTH")
+	SetCVar("ShowClassColorInNameplate",1)
+	SetCVar("screenshotQuality",10)
+	SetCVar("chatMouseScroll",1)
+	SetCVar("chatStyle","classic")
+	SetCVar("WholeChatWindowClickable",0)
+	SetCVar("ConversationMode","inline")
+	SetCVar("showTutorials",0)
+	SetCVar("UberTooltips",1)
+	SetCVar("threatWarning",3)
+	SetCVar('alwaysShowActionBars',1)
+	SetCVar('lockActionBars',1)
+	SetCVar('SpamFilter',0)
+	InterfaceOptionsActionBarsPanelPickupActionKeyDropDown:SetValue('SHIFT')
+	InterfaceOptionsActionBarsPanelPickupActionKeyDropDown:RefreshValue()
+end
+
+local function ShowLayout(show40)
+	if(not _G["SVUI_Raid40"] or (show40 and _G["SVUI_Raid40"].forceShow == true)) then return end
+	if(not show40 and _G["SVUI_Raid40"].forceShow ~= true) then return end
+	SV.SVUnit:UpdateGroupConfig(_G["SVUI_Raid40"], show40)
+end
+
+local function BarShuffle()
+	local bar2 = SV.db.SVBar.Bar2.enable;
+	local base = 30;
+	local bS = SV.db.SVBar.Bar1.buttonspacing;
+	local tH = SV.db.SVBar.Bar1.buttonsize  +  (base - bS);
+	local b2h = bar2 and tH or base;
+	local sph = (400 - b2h);
+	local anchors = SV.cache.Anchors
+	if not anchors then anchors = {} end
+	anchors.SVUI_SpecialAbility_MOVE = "BOTTOMSVUIParentBOTTOM0"..sph;
+	anchors.SVUI_ActionBar2_MOVE = "BOTTOMSVUI_ActionBar1TOP0"..(-bS);
+	anchors.SVUI_ActionBar3_MOVE = "BOTTOMLEFTSVUI_ActionBar1BOTTOMRIGHT40";
+	anchors.SVUI_ActionBar5_MOVE = "BOTTOMRIGHTSVUI_ActionBar1BOTTOMLEFT-40";
+	if bar2 then
+		anchors.SVUI_PetActionBar_MOVE = "BOTTOMLEFTSVUI_ActionBar2TOPLEFT04"
+		anchors.SVUI_StanceBar_MOVE = "BOTTOMRIGHTSVUI_ActionBar2TOPRIGHT04";
+	else
+		anchors.SVUI_PetActionBar_MOVE = "BOTTOMLEFTSVUI_ActionBar1TOPLEFT04"
+		anchors.SVUI_StanceBar_MOVE = "BOTTOMRIGHTSVUI_ActionBar1TOPRIGHT04";
+	end
+end
+
+local function UFMoveBottomQuadrant(toggle)
+	local anchors = SV.cache.Anchors
+	if not toggle then
+		anchors.SVUI_Player_MOVE = "BOTTOMSVUIParentBOTTOM-278182"
+		anchors.SVUI_PlayerCastbar_MOVE = "BOTTOMSVUIParentBOTTOM-278122"
+		anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278182"
+		anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278122"
+		anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0181"
+		anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0214"
+		anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432"
+		anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495182"
+	elseif toggle == "shift" then
+		anchors.SVUI_Player_MOVE = "BOTTOMSVUIParentBOTTOM-278210"
+		anchors.SVUI_PlayerCastbar_MOVE = "BOTTOMSVUIParentBOTTOM-278150"
+		anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278210"
+		anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278150"
+		anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0209"
+		anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0242"
+		anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432"
+		anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495210"
+	else
+		local c = 136;
+		local d = 135;
+		local e = 80;
+		anchors.SVUI_Player_MOVE = "BOTTOMSVUIParentBOTTOM"..-c..""..d;
+		anchors.SVUI_PlayerCastbar_MOVE = "BOTTOMSVUIParentBOTTOM"..-c..""..(d-60);
+		anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..d;
+		anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..(d-60);
+		anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM"..-c..""..e;
+		anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..e;
+		anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..(d + 150);
+		anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495"..d;
+	end
+end
+
+local function UFMoveLeftQuadrant(toggle)
+	local anchors = SV.cache.Anchors
+	if not toggle then
+		anchors.SVUI_Assist_MOVE = "TOPLEFTSVUIParentTOPLEFT"..XOFF.."-250"
+		anchors.SVUI_Tank_MOVE = "TOPLEFTSVUIParentTOPLEFT"..XOFF.."-175"
+		anchors.SVUI_Raidpet_MOVE = "TOPLEFTSVUIParentTOPLEFT"..XOFF.."-325"
+		anchors.SVUI_Party_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
+		anchors.SVUI_Raid10_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
+		anchors.SVUI_Raid25_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
+		anchors.SVUI_Raid40_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
+	else
+		anchors.SVUI_Assist_MOVE = "TOPLEFTSVUIParentTOPLEFT4-250"
+		anchors.SVUI_Tank_MOVE = "TOPLEFTSVUIParentTOPLEFT4-175"
+		anchors.SVUI_Raidpet_MOVE = "TOPLEFTSVUIParentTOPLEFT4-325"
+		anchors.SVUI_Party_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
+		anchors.SVUI_Raid40_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
+		anchors.SVUI_Raid10_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
+		anchors.SVUI_Raid25_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
+	end
+end
+
+local function UFMoveTopQuadrant(toggle)
+	local anchors = SV.cache.Anchors
+	if not toggle then
+		anchors.GM_MOVE = "TOPLEFTSVUIParentTOPLEFT250-25"
+		anchors.SVUI_LootFrame_MOVE = "BOTTOMSVUIParentBOTTOM0350"
+		anchors.SVUI_AltPowerBar_MOVE = "TOPSVUIParentTOP0-40"
+		anchors.LoC_MOVE = "BOTTOMSVUIParentBOTTOM0350"
+		anchors.BNET_MOVE = "TOPRIGHTSVUIParentTOPRIGHT-4-250"
+	else
+		anchors.GM_MOVE = "TOPLEFTSVUIParentTOPLEFT344-25"
+		anchors.SVUI_LootFrame_MOVE = "BOTTOMSVUIParentBOTTOM0254"
+		anchors.SVUI_AltPowerBar_MOVE = "TOPSVUIParentTOP0-39"
+		anchors.LoC_MOVE = "BOTTOMSVUIParentBOTTOM0443"
+		anchors.BNET_MOVE = "TOPRIGHTSVUIParentTOPRIGHT-4-248"
+	end
+end
+
+local function UFMoveRightQuadrant(toggle)
+	local anchors = SV.cache.Anchors
+	local dH = SV.db.SVDock.dockRightHeight  +  60
+	if not toggle or toggle == "high" then
+		anchors.SVUI_BossHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
+		anchors.SVUI_ArenaHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
+		anchors.Tooltip_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-284"..dH;
+	else
+		anchors.SVUI_BossHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
+		anchors.SVUI_ArenaHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
+		anchors.Tooltip_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-284"..dH;
+	end
+end
+--[[
+##########################################################
+GLOBAL/MODULE FUNCTIONS
+##########################################################
+]]--
+function SV.Setup:UserScreen(rez, preserve)
+	if not preserve then
+		if okToResetMOVE then
+			SV.Mentalo:Reset("")
+			okToResetMOVE = false;
+		end
+		SV:ResetData("SVUnit")
+	end
+
+	if rez == "low" then
+		if not preserve then
+			SV.db.SVDock.dockLeftWidth = 350;
+			SV.db.SVDock.dockLeftHeight = 180;
+			SV.db.SVDock.dockRightWidth = 350;
+			SV.db.SVDock.dockRightHeight = 180;
+			SV.db.SVAura.wrapAfter = 10
+			SV.db.SVUnit.fontSize = 10;
+			SV.db.SVUnit.player.width = 200;
+			SV.db.SVUnit.player.castbar.width = 200;
+			SV.db.SVUnit.player.classbar.fill = "fill"
+			SV.db.SVUnit.player.health.tags = "[health:color][health:current]"
+			SV.db.SVUnit.target.width = 200;
+			SV.db.SVUnit.target.castbar.width = 200;
+			SV.db.SVUnit.target.health.tags = "[health:color][health:current]"
+			SV.db.SVUnit.pet.power.enable = false;
+			SV.db.SVUnit.pet.width = 200;
+			SV.db.SVUnit.pet.height = 26;
+			SV.db.SVUnit.targettarget.debuffs.enable = false;
+			SV.db.SVUnit.targettarget.power.enable = false;
+			SV.db.SVUnit.targettarget.width = 200;
+			SV.db.SVUnit.targettarget.height = 26;
+			SV.db.SVUnit.boss.width = 200;
+			SV.db.SVUnit.boss.castbar.width = 200;
+			SV.db.SVUnit.arena.width = 200;
+			SV.db.SVUnit.arena.castbar.width = 200
+		end
+		if not mungs then
+			UFMoveBottomQuadrant(true)
+			UFMoveLeftQuadrant(true)
+			UFMoveTopQuadrant(true)
+			UFMoveRightQuadrant(true)
+		end
+		SV.ghettoMonitor = true
+	else
+		SV:ResetData("SVDock")
+		SV:ResetData("SVAura")
+		if not mungs then
+			UFMoveBottomQuadrant()
+			UFMoveLeftQuadrant()
+			UFMoveTopQuadrant()
+			UFMoveRightQuadrant()
+		end
+		SV.ghettoMonitor = nil
+	end
+
+	if(not preserve and not mungs) then
+		BarShuffle()
+    	SV.Mentalo:SetPositions()
+		SVLib:RefreshModule('SVDock')
+		SVLib:RefreshModule('SVAura')
+		SVLib:RefreshModule('SVBar')
+		SVLib:RefreshModule('SVUnit')
+		SV:SavedPopup()
+	end
+end
+
+function SV.Setup:ChatConfigs(mungs)
+	forceCVars()
+	FCF_ResetChatWindows()
+	FCF_SetLocked(ChatFrame1, 1)
+	FCF_DockFrame(ChatFrame2)
+	FCF_SetLocked(ChatFrame2, 1)
+	FCF_OpenNewWindow(LOOT)
+	FCF_DockFrame(ChatFrame3)
+	FCF_SetLocked(ChatFrame3, 1)
+	for i = 1, NUM_CHAT_WINDOWS do
+		local chat = _G["ChatFrame"..i]
+		local chatID = chat:GetID()
+		if i == 1 then
+			chat:ClearAllPoints()
+			chat:Point("BOTTOMLEFT", LeftSuperDock, "BOTTOMLEFT", 5, 5)
+			chat:Point("TOPRIGHT", LeftSuperDock, "TOPRIGHT", -5, -10)
+		end
+		FCF_SavePositionAndDimensions(chat)
+		FCF_StopDragging(chat)
+		FCF_SetChatWindowFontSize(nil, chat, 12)
+		if i == 1 then
+			FCF_SetWindowName(chat, GENERAL)
+		elseif i == 2 then
+			FCF_SetWindowName(chat, GUILD_EVENT_LOG)
+		elseif i == 3 then
+			FCF_SetWindowName(chat, LOOT)
+		end
+	end
+	ChatFrame_RemoveAllMessageGroups(ChatFrame1)
+	ChatFrame_AddMessageGroup(ChatFrame1, "SAY")
+	ChatFrame_AddMessageGroup(ChatFrame1, "EMOTE")
+	ChatFrame_AddMessageGroup(ChatFrame1, "YELL")
+	ChatFrame_AddMessageGroup(ChatFrame1, "GUILD")
+	ChatFrame_AddMessageGroup(ChatFrame1, "OFFICER")
+	ChatFrame_AddMessageGroup(ChatFrame1, "GUILD_ACHIEVEMENT")
+	ChatFrame_AddMessageGroup(ChatFrame1, "WHISPER")
+	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_SAY")
+	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_EMOTE")
+	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_YELL")
+	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_BOSS_EMOTE")
+	ChatFrame_AddMessageGroup(ChatFrame1, "PARTY")
+	ChatFrame_AddMessageGroup(ChatFrame1, "PARTY_LEADER")
+	ChatFrame_AddMessageGroup(ChatFrame1, "RAID")
+	ChatFrame_AddMessageGroup(ChatFrame1, "RAID_LEADER")
+	ChatFrame_AddMessageGroup(ChatFrame1, "RAID_WARNING")
+	ChatFrame_AddMessageGroup(ChatFrame1, "INSTANCE_CHAT")
+	ChatFrame_AddMessageGroup(ChatFrame1, "INSTANCE_CHAT_LEADER")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BATTLEGROUND")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BATTLEGROUND_LEADER")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BG_HORDE")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BG_ALLIANCE")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BG_NEUTRAL")
+	ChatFrame_AddMessageGroup(ChatFrame1, "SYSTEM")
+	ChatFrame_AddMessageGroup(ChatFrame1, "ERRORS")
+	ChatFrame_AddMessageGroup(ChatFrame1, "AFK")
+	ChatFrame_AddMessageGroup(ChatFrame1, "DND")
+	ChatFrame_AddMessageGroup(ChatFrame1, "IGNORED")
+	ChatFrame_AddMessageGroup(ChatFrame1, "ACHIEVEMENT")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BN_WHISPER")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BN_CONVERSATION")
+	ChatFrame_AddMessageGroup(ChatFrame1, "BN_INLINE_TOAST_ALERT")
+	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_FACTION_CHANGE")
+	ChatFrame_AddMessageGroup(ChatFrame1, "SKILL")
+	ChatFrame_AddMessageGroup(ChatFrame1, "LOOT")
+	ChatFrame_AddMessageGroup(ChatFrame1, "MONEY")
+	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_XP_GAIN")
+	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_HONOR_GAIN")
+	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_GUILD_XP_GAIN")
+
+	ChatFrame_RemoveAllMessageGroups(ChatFrame3)
+	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_FACTION_CHANGE")
+	ChatFrame_AddMessageGroup(ChatFrame3, "SKILL")
+	ChatFrame_AddMessageGroup(ChatFrame3, "LOOT")
+	ChatFrame_AddMessageGroup(ChatFrame3, "MONEY")
+	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_XP_GAIN")
+	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_HONOR_GAIN")
+	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_GUILD_XP_GAIN")
+
+	ChatFrame_AddChannel(ChatFrame1, GENERAL)
+
+	ToggleChatColorNamesByClassGroup(true, "SAY")
+	ToggleChatColorNamesByClassGroup(true, "EMOTE")
+	ToggleChatColorNamesByClassGroup(true, "YELL")
+	ToggleChatColorNamesByClassGroup(true, "GUILD")
+	ToggleChatColorNamesByClassGroup(true, "OFFICER")
+	ToggleChatColorNamesByClassGroup(true, "GUILD_ACHIEVEMENT")
+	ToggleChatColorNamesByClassGroup(true, "ACHIEVEMENT")
+	ToggleChatColorNamesByClassGroup(true, "WHISPER")
+	ToggleChatColorNamesByClassGroup(true, "PARTY")
+	ToggleChatColorNamesByClassGroup(true, "PARTY_LEADER")
+	ToggleChatColorNamesByClassGroup(true, "RAID")
+	ToggleChatColorNamesByClassGroup(true, "RAID_LEADER")
+	ToggleChatColorNamesByClassGroup(true, "RAID_WARNING")
+	ToggleChatColorNamesByClassGroup(true, "BATTLEGROUND")
+	ToggleChatColorNamesByClassGroup(true, "BATTLEGROUND_LEADER")
+	ToggleChatColorNamesByClassGroup(true, "INSTANCE_CHAT")
+	ToggleChatColorNamesByClassGroup(true, "INSTANCE_CHAT_LEADER")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL1")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL2")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL3")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL4")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL5")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL6")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL7")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL8")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL9")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL10")
+	ToggleChatColorNamesByClassGroup(true, "CHANNEL11")
+
+	ChangeChatColor("CHANNEL1", 195 / 255, 230 / 255, 232 / 255)
+	ChangeChatColor("CHANNEL2", 232 / 255, 158 / 255, 121 / 255)
+	ChangeChatColor("CHANNEL3", 232 / 255, 228 / 255, 121 / 255)
+
+	if not mungs then
+		if SV.Chat then
+			SV.Chat:ReLoad(true)
+			if SV.SVDock.Cache.RightSuperDockFaded  == true then RightSuperDockToggleButton:Click()end
+			if SV.SVDock.Cache.LeftSuperDockFaded  == true then LeftSuperDockToggleButton:Click()end
+		end
+		SV:SavedPopup()
+	end
+end
+
+function SV.Setup:ColorTheme(style, preserve)
+	style = style or "default";
+
+	if not preserve then
+		SV:ResetData("media")
+	end
+
+	local presets = self:CopyPreset("media", style)
+	--print(table.dump(SV.db))
+	SV.db.LAYOUT.mediastyle = style;
+
+	if(style == "default") then
+		SV.db.SVUnit.healthclass = true;
+	else
+		SV.db.SVUnit.healthclass = false;
+	end
+
+	if(not mungs) then
+		SV:MediaUpdate()
+		SVLib:RefreshModule('SVStats')
+		SVLib:RefreshModule('SVUnit')
+		if(not preserve) then
+			SV:SavedPopup()
+		end
+	end
+end
+
+function SV.Setup:UnitframeLayout(style, preserve)
+	style = style or "default";
+
+	if not preserve then
+		SV:ResetData("SVUnit")
+		SV:ResetData("SVStats")
+		if okToResetMOVE then
+			SV.Mentalo:Reset('')
+			okToResetMOVE = false
+		end
+	end
+
+	local presets = self:CopyPreset("units", style)
+	SV.db.LAYOUT.unitstyle = style
+
+	if(SV.db.LAYOUT.mediastyle == "default") then
+		SV.db.SVUnit.healthclass = true;
+	end
+
+	if(not mungs) then
+		if(not preserve) then
+			if SV.db.LAYOUT.barstyle and (SV.db.LAYOUT.barstyle == "twosmall" or SV.db.LAYOUT.barstyle == "twobig") then
+				UFMoveBottomQuadrant("shift")
+			else
+				UFMoveBottomQuadrant()
+			end
+			SV.Mentalo:SetPositions()
+		end
+		SVLib:RefreshModule('SVStats')
+		SVLib:RefreshModule('SVUnit')
+		if(not preserve) then
+			SV:SavedPopup()
+		end
+	end
+end
+
+function SV.Setup:GroupframeLayout(style, preserve)
+	style = style or "default";
+
+	local presets = self:CopyPreset("layouts", style)
+	SV.db.LAYOUT.groupstyle = style
+
+	if(not mungs) then
+		SVLib:RefreshModule('SVUnit')
+		if(not preserve) then
+			SV:SavedPopup()
+		end
+	end
+end
+
+function SV.Setup:BarLayout(style, preserve)
+	style = style or "default";
+
+	if not preserve then
+		SV:ResetData("SVBar")
+		if okToResetMOVE then
+			SV.Mentalo:Reset('')
+			okToResetMOVE=false
+		end
+	end
+
+	local presets = self:CopyPreset("bars", style)
+	SV.db.LAYOUT.barstyle = style;
+
+	if(not mungs) then
+		if(not preserve) then
+			if(style == 'twosmall' or style == 'twobig') then
+				UFMoveBottomQuadrant("shift")
+			else
+				UFMoveBottomQuadrant()
+			end
+		end
+		if(not preserve) then
+			BarShuffle()
+			SV.Mentalo:SetPositions()
+		end
+		SVLib:RefreshModule('SVStats')
+		SVLib:RefreshModule('SVBar')
+		if(not preserve) then
+			SV:SavedPopup()
+		end
+	end
+end
+
+function SV.Setup:Auralayout(style, preserve)
+	style = style or "default";
+	local presets = self:CopyPreset("auras", style)
+
+	SV.db.LAYOUT.aurastyle = style;
+
+	if(not mungs) then
+		SVLib:RefreshModule('SVStats')
+		SVLib:RefreshModule('SVAura')
+		SVLib:RefreshModule('SVUnit')
+		if(not preserve) then
+			SV:SavedPopup()
+		end
+	end
+end
+
+function SV.Setup:EZDefault()
+	mungs = true;
+	okToResetMOVE = false;
+	self:ChatConfigs(true);
+	self:UserScreen('high');
+	self:ColorTheme("default", true);
+	self:UnitframeLayout("default", true);
+	self:BarLayout("default", true);
+	self:Auralayout("default", true);
+	SVLib:SaveSafeData("install_version", SV.Version)
+	StopMusic()
+	SetCVar("Sound_MusicVolume", user_music_vol)
+	ReloadUI()
+end
+
+function SV.Setup:Complete()
+	SVLib:SaveSafeData("install_version", SV.Version)
+	StopMusic()
+	SetCVar("Sound_MusicVolume", user_music_vol)
+	okToResetMOVE = false;
+	ReloadUI()
+end
+
+local OptionButton_OnClick = function(self)
+	local fn = self.FuncName
+	if(self.ClickIndex) then
+		for option, text in pairs(self.ClickIndex) do
+			SVUI_InstallerFrame[option]:SetText(text)
+		end
+	end
+	if(SV.Setup[fn] and type(SV.Setup[fn]) == "function") then
+		SV.Setup[fn](SV.Setup, self.Arg)
+	end
+end
+
+local InstallerFrame_PreparePage = function(self)
+	self.Option01:Hide()
+	self.Option01:SetScript("OnClick",nil)
+	self.Option01:SetText("")
+	self.Option01.FuncName = nil
+	self.Option01.Arg = nil
+	self.Option01.ClickIndex = nil
+	self.Option01:SetWidth(160)
+	self.Option01.texture:Size(160, 160)
+	self.Option01.texture:SetPoint("CENTER", self.Option01, "BOTTOM", 0, -(160 * 0.09))
+	self.Option01:ClearAllPoints()
+	self.Option01:SetPoint("BOTTOM", 0, 15)
+
+	self.Option02:Hide()
+	self.Option02:SetScript("OnClick",nil)
+	self.Option02:SetText("")
+	self.Option02.FuncName = nil
+	self.Option02.Arg = nil
+	self.Option02.ClickIndex = nil
+	self.Option02:ClearAllPoints()
+	self.Option02:SetPoint("BOTTOMLEFT", self, "BOTTOM", 4, 15)
+
+	self.Option03:Hide()
+	self.Option03:SetScript("OnClick",nil)
+	self.Option03:SetText("")
+	self.Option03.FuncName = nil
+	self.Option03.Arg = nil
+	self.Option03.ClickIndex = nil
+
+	self.Option1:Hide()
+	self.Option1:SetScript("OnClick",nil)
+	self.Option1:SetText("")
+	self.Option1.FuncName = nil
+	self.Option1.Arg = nil
+	self.Option1.ClickIndex = nil
+	self.Option1:SetWidth(160)
+	self.Option1.texture:Size(160, 160)
+	self.Option1.texture:SetPoint("CENTER", self.Option1, "BOTTOM", 0, -(160 * 0.09))
+	self.Option1:ClearAllPoints()
+	self.Option1:SetPoint("BOTTOM", 0, 15)
+
+	self.Option2:Hide()
+	self.Option2:SetScript('OnClick',nil)
+	self.Option2:SetText('')
+	self.Option2.FuncName = nil
+	self.Option2.Arg = nil
+	self.Option2.ClickIndex = nil
+	self.Option2:SetWidth(120)
+	self.Option2.texture:Size(120, 120)
+	self.Option2.texture:SetPoint("CENTER", self.Option2, "BOTTOM", 0, -(120 * 0.09))
+	self.Option2:ClearAllPoints()
+	self.Option2:SetPoint("BOTTOMLEFT", self, "BOTTOM", 4, 15)
+
+	self.Option3:Hide()
+	self.Option3:SetScript('OnClick',nil)
+	self.Option3:SetText('')
+	self.Option3.FuncName = nil
+	self.Option3.Arg = nil
+	self.Option3.ClickIndex = nil
+	self.Option3:SetWidth(120)
+	self.Option3.texture:Size(120, 120)
+	self.Option3.texture:SetPoint("CENTER", self.Option3, "BOTTOM", 0, -(120 * 0.09))
+	self.Option3:ClearAllPoints()
+	self.Option3:SetPoint("LEFT", self.Option2, "RIGHT", 4, 0)
+
+	self.Option4:Hide()
+	self.Option4:SetScript('OnClick',nil)
+	self.Option4:SetText('')
+	self.Option4.FuncName = nil
+	self.Option4.Arg = nil
+	self.Option4.ClickIndex = nil
+	self.Option4:SetWidth(110)
+	self.Option4.texture:Size(110, 110)
+	self.Option4.texture:SetPoint("CENTER", self.Option4, "BOTTOM", 0, -(110 * 0.09))
+	self.Option4:ClearAllPoints()
+	self.Option4:SetPoint("LEFT", self.Option3, "RIGHT", 4, 0)
+
+	self.SubTitle:SetText("")
+	self.Desc1:SetText("")
+	self.Desc2:SetText("")
+	self.Desc3:SetText("")
+
+	if CURRENT_PAGE == 1 then
+		self.Prev:Disable()
+		self.Prev:Hide()
+	else
+		self.Prev:Enable()
+		self.Prev:Show()
+	end
+
+	if CURRENT_PAGE == MAX_PAGE then
+		self.Next:Disable()
+		self.Next:Hide()
+		self:Size(550, 350)
+	else
+		self.Next:Enable()
+		self.Next:Show()
+		self:Size(550,400)
+	end
+end
+
+local InstallerFrame_SetPage = function(self, newPage)
+	PageData, MAX_PAGE = SV.Setup:CopyPage(newPage)
+	CURRENT_PAGE = newPage;
+	local willShowLayout = CURRENT_PAGE == 5 or CURRENT_PAGE == 6
+
+	self:PreparePage()
+	self.Status:SetText(CURRENT_PAGE.."  /  "..MAX_PAGE)
+
+	ShowLayout(willShowLayout)
+
+	for option, data in pairs(PageData) do
+		if(type(data) == "table" and data[1] and data[2]) then
+			if(data[4] and not data[4]()) then return end;
+			self[option]:Show()
+			self[option]:SetText(data[1])
+			self[option].FuncName = data[2]
+			self[option].Arg = data[3]
+			local postclickIndex = ("%d_%s"):format(newPage, option)
+			self[option].ClickIndex = SV.Setup:CopyOnClick(postclickIndex)
+			self[option]:SetScript("OnClick", OptionButton_OnClick)
+		elseif(type(data) == "function") then
+			local optionText = data()
+			self[option]:SetText(optionText)
+		else
+			self[option]:SetText(data)
+		end
+	end
+end
+
+local NextPage_OnClick = function(self)
+	if CURRENT_PAGE ~= MAX_PAGE then
+		CURRENT_PAGE = CURRENT_PAGE + 1;
+		self.parent:SetPage(CURRENT_PAGE)
+	end
+end
+
+local PreviousPage_OnClick = function(self)
+	if CURRENT_PAGE ~= 1 then
+		CURRENT_PAGE = CURRENT_PAGE - 1;
+		self.parent:SetPage(CURRENT_PAGE)
+	end
+end
+
+function SV.Setup:Reset()
+	mungs = true;
+	okToResetMOVE = false;
+	self:ChatConfigs(true);
+	SVLib:WipeDatabase()
+	self:UserScreen()
+
+	if SV.db.LAYOUT.mediastyle then
+        self:ColorTheme(SV.db.LAYOUT.mediastyle)
+    else
+    	SV.db.LAYOUT.mediastyle = nil;
+    	self:ColorTheme()
+    end
+
+    if SV.db.LAYOUT.unitstyle then
+        self:UnitframeLayout(SV.db.LAYOUT.unitstyle)
+    else
+    	SV.db.LAYOUT.unitstyle = nil;
+    	self:UnitframeLayout()
+    end
+
+    if SV.db.LAYOUT.barstyle then
+        self:BarLayout(SV.db.LAYOUT.barstyle)
+    else
+    	SV.db.LAYOUT.barstyle = nil;
+    	self:BarLayout()
+    end
+
+    if SV.db.LAYOUT.aurastyle then
+        self:Auralayout(SV.db.LAYOUT.aurastyle)
+    else
+    	SV.db.LAYOUT.aurastyle = nil;
+    	self:Auralayout()
+    end
+
+    SVLib:WipeCache()
+	SVLib:SaveSafeData("install_version", SV.Version);
+	ReloadUI()
+end
+
+function SV.Setup:Install(autoLoaded)
+	if(not user_music_vol) then
+		user_music_vol = GetCVar("Sound_MusicVolume")
+	end
+
+	local old = SVLib:GetSafeData()
+    local media = old.mediastyle or ""
+    local bars = old.barstyle or ""
+    local units = old.unitstyle or ""
+    local groups = old.groupstyle or ""
+    local auras = old.aurastyle or ""
+
+    SV.db.LAYOUT = {
+        mediastyle = media,
+        barstyle = bars,
+        unitstyle = units,
+        groupstyle = groups,
+        aurastyle = auras
+    }
+
+	if not SVUI_InstallerFrame then
+		local frame = CreateFrame("Button", "SVUI_InstallerFrame", UIParent)
+		frame:Size(550, 400)
+		frame:SetPanelTemplate("Action")
+		frame:SetPoint("CENTER")
+		frame:SetFrameStrata("TOOLTIP")
+
+		frame.SetPage = InstallerFrame_SetPage;
+		frame.PreparePage = InstallerFrame_PreparePage;
+
+		--[[ NEXT PAGE BUTTON ]]--
+
+		frame.Next = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Next:RemoveTextures()
+		frame.Next:Size(110, 25)
+		frame.Next:SetPoint("BOTTOMRIGHT", 50, 5)
+		SetInstallButton(frame.Next)
+		frame.Next.texture = frame.Next:CreateTexture(nil, "BORDER")
+		frame.Next.texture:Size(110, 75)
+		frame.Next.texture:SetPoint("RIGHT")
+		frame.Next.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION-ARROW")
+		frame.Next.texture:SetVertexColor(1, 0.5, 0)
+		frame.Next.text = frame.Next:CreateFontString(nil, "OVERLAY")
+		frame.Next.text:SetFont(SV.Media.font.action, 18, "OUTLINE")
+		frame.Next.text:SetPoint("CENTER")
+		frame.Next.text:SetText(CONTINUE)
+		frame.Next:Disable()
+		frame.Next.parent = frame
+		frame.Next:SetScript("OnClick", NextPage_OnClick)
+		frame.Next:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(1, 1, 0)
+		end)
+		frame.Next:SetScript("OnLeave", function(this)
+			this.texture:SetVertexColor(1, 0.5, 0)
+		end)
+
+		--[[ PREVIOUS PAGE BUTTON ]]--
+
+		frame.Prev = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Prev:RemoveTextures()
+		frame.Prev:Size(110, 25)
+		frame.Prev:SetPoint("BOTTOMLEFT", -50, 5)
+		SetInstallButton(frame.Prev)
+		frame.Prev.texture = frame.Prev:CreateTexture(nil, "BORDER")
+		frame.Prev.texture:Size(110, 75)
+		frame.Prev.texture:SetPoint("LEFT")
+		frame.Prev.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION-ARROW")
+		frame.Prev.texture:SetTexCoord(1, 0, 1, 1, 0, 0, 0, 1)
+		frame.Prev.texture:SetVertexColor(1, 0.5, 0)
+		frame.Prev.text = frame.Prev:CreateFontString(nil, "OVERLAY")
+		frame.Prev.text:SetFont(SV.Media.font.action, 18, "OUTLINE")
+		frame.Prev.text:SetPoint("CENTER")
+		frame.Prev.text:SetText(PREVIOUS)
+		frame.Prev:Disable()
+		frame.Prev.parent = frame
+		frame.Prev:SetScript("OnClick", PreviousPage_OnClick)
+		frame.Prev:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(1, 1, 0)
+		end)
+		frame.Prev:SetScript("OnLeave", function(this)
+			this.texture:SetVertexColor(1, 0.5, 0)
+		end)
+
+		--[[ OPTION 01 ]]--
+
+		frame.Option01 = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Option01:RemoveTextures()
+		frame.Option01:Size(160, 30)
+		frame.Option01:SetPoint("BOTTOM", 0, 15)
+		frame.Option01:SetText("")
+		SetInstallButton(frame.Option01)
+		frame.Option01.texture = frame.Option01:CreateTexture(nil, "BORDER")
+		frame.Option01.texture:Size(160, 160)
+		frame.Option01.texture:SetPoint("CENTER", frame.Option01, "BOTTOM", 0, -15)
+		frame.Option01.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
+		frame.Option01.texture:SetGradient("VERTICAL", 0, 0.3, 0, 0, 0.7, 0)
+		frame.Option01:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(0.5, 1, 0.4)
+		end)
+		frame.Option01:SetScript("OnLeave", function(this)
+			this.texture:SetGradient("VERTICAL", 0, 0.3, 0, 0, 0.7, 0)
+		end)
+		frame.Option01:SetFrameLevel(frame.Option01:GetFrameLevel() + 10)
+		frame.Option01:Hide()
+
+		--[[ OPTION 02 ]]--
+
+		frame.Option02 = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Option02:RemoveTextures()
+		frame.Option02:Size(130, 30)
+		frame.Option02:SetPoint("BOTTOMLEFT", frame, "BOTTOM", 4, 15)
+		frame.Option02:SetText("")
+		SetInstallButton(frame.Option02)
+		frame.Option02.texture = frame.Option02:CreateTexture(nil, "BORDER")
+		frame.Option02.texture:Size(130, 110)
+		frame.Option02.texture:SetPoint("CENTER", frame.Option02, "BOTTOM", 0, -15)
+		frame.Option02.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
+		frame.Option02.texture:SetGradient("VERTICAL", 0.3, 0, 0, 0.7, 0, 0)
+		frame.Option02:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(0.5, 1, 0.4)
+		end)
+		frame.Option02:SetScript("OnLeave", function(this)
+			this.texture:SetGradient("VERTICAL", 0.3, 0, 0, 0.7, 0, 0)
+		end)
+		frame.Option02:SetScript("OnShow", function()
+			if(not frame.Option03:IsShown()) then
+				frame.Option01:SetWidth(130)
+				frame.Option01.texture:Size(130, 130)
+				frame.Option01.texture:SetPoint("CENTER", frame.Option01, "BOTTOM", 0, -(130 * 0.09))
+				frame.Option01:ClearAllPoints()
+				frame.Option01:SetPoint("BOTTOMRIGHT", frame, "BOTTOM", -4, 15)
+			end
+		end)
+		frame.Option02:SetFrameLevel(frame.Option01:GetFrameLevel() + 10)
+		frame.Option02:Hide()
+
+		--[[ OPTION 03 ]]--
+
+		frame.Option03 = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Option03:RemoveTextures()
+		frame.Option03:Size(130, 30)
+		frame.Option03:SetPoint("BOTTOM", frame, "BOTTOM", 0, 15)
+		frame.Option03:SetText("")
+		SetInstallButton(frame.Option03)
+		frame.Option03.texture = frame.Option03:CreateTexture(nil, "BORDER")
+		frame.Option03.texture:Size(130, 110)
+		frame.Option03.texture:SetPoint("CENTER", frame.Option03, "BOTTOM", 0, -15)
+		frame.Option03.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
+		frame.Option03.texture:SetGradient("VERTICAL", 0, 0.1, 0.3, 0, 0.5, 0.7)
+		frame.Option03:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(0.2, 0.5, 1)
+		end)
+		frame.Option03:SetScript("OnLeave", function(this)
+			this.texture:SetGradient("VERTICAL", 0, 0.1, 0.3, 0, 0.5, 0.7)
+		end)
+		frame.Option03:SetScript("OnShow", function(this)
+			this:SetWidth(130)
+			this.texture:Size(130, 130)
+			this.texture:SetPoint("CENTER", this, "BOTTOM", 0, -(130 * 0.09))
+
+			frame.Option01:SetWidth(130)
+			frame.Option01.texture:Size(130, 130)
+			frame.Option01.texture:SetPoint("CENTER", frame.Option01, "BOTTOM", 0, -(130 * 0.09))
+			frame.Option01:ClearAllPoints()
+			frame.Option01:SetPoint("RIGHT", this, "LEFT", -8, 0)
+
+			frame.Option02:SetWidth(130)
+			frame.Option02.texture:Size(130, 130)
+			frame.Option02.texture:SetPoint("CENTER", frame.Option02, "BOTTOM", 0, -(130 * 0.09))
+			frame.Option02:ClearAllPoints()
+			frame.Option02:SetPoint("LEFT", this, "RIGHT", 8, 0)
+		end)
+		frame.Option03:SetFrameLevel(frame.Option01:GetFrameLevel() + 10)
+		frame.Option03:Hide()
+
+		--[[ OPTION 1 ]]--
+
+		frame.Option1 = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Option1:RemoveTextures()
+		frame.Option1:Size(160, 30)
+		frame.Option1:SetPoint("BOTTOM", 0, 15)
+		frame.Option1:SetText("")
+		SetInstallButton(frame.Option1)
+		frame.Option1.texture = frame.Option1:CreateTexture(nil, "BORDER")
+		frame.Option1.texture:Size(160, 160)
+		frame.Option1.texture:SetPoint("CENTER", frame.Option1, "BOTTOM", 0, -15)
+		frame.Option1.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
+		frame.Option1.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		frame.Option1:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(0.5, 1, 0.4)
+		end)
+		frame.Option1:SetScript("OnLeave", function(this)
+			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		end)
+		frame.Option1:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
+		frame.Option1:Hide()
+
+		--[[ OPTION 2 ]]--
+
+		frame.Option2 = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Option2:RemoveTextures()
+		frame.Option2:Size(120, 30)
+		frame.Option2:SetPoint("BOTTOMLEFT", frame, "BOTTOM", 4, 15)
+		frame.Option2:SetText("")
+		SetInstallButton(frame.Option2)
+		frame.Option2.texture = frame.Option2:CreateTexture(nil, "BORDER")
+		frame.Option2.texture:Size(120, 110)
+		frame.Option2.texture:SetPoint("CENTER", frame.Option2, "BOTTOM", 0, -15)
+		frame.Option2.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
+		frame.Option2.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		frame.Option2:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(0.5, 1, 0.4)
+		end)
+		frame.Option2:SetScript("OnLeave", function(this)
+			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		end)
+		frame.Option2:SetScript("OnShow", function()
+			if(not frame.Option3:IsShown() and (not frame.Option4:IsShown())) then
+				frame.Option1:SetWidth(120)
+				frame.Option1.texture:Size(120, 120)
+				frame.Option1.texture:SetPoint("CENTER", frame.Option1, "BOTTOM", 0, -(120 * 0.09))
+				frame.Option1:ClearAllPoints()
+				frame.Option1:SetPoint("BOTTOMRIGHT", frame, "BOTTOM", -4, 15)
+			end
+		end)
+		frame.Option2:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
+		frame.Option2:Hide()
+
+		--[[ OPTION 3 ]]--
+
+		frame.Option3 = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Option3:RemoveTextures()
+		frame.Option3:Size(110, 30)
+		frame.Option3:SetPoint("LEFT", frame.Option2, "RIGHT", 4, 0)
+		frame.Option3:SetText("")
+		SetInstallButton(frame.Option3)
+		frame.Option3.texture = frame.Option3:CreateTexture(nil, "BORDER")
+		frame.Option3.texture:Size(110, 100)
+		frame.Option3.texture:SetPoint("CENTER", frame.Option3, "BOTTOM", 0, -9)
+		frame.Option3.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
+		frame.Option3.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		frame.Option3:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(0.5, 1, 0.4)
+		end)
+		frame.Option3:SetScript("OnLeave", function(this)
+			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		end)
+		frame.Option3:SetScript("OnShow", function(this)
+			if(not frame.Option4:IsShown()) then
+				frame.Option2:SetWidth(110)
+				frame.Option2.texture:Size(110, 110)
+				frame.Option2.texture:SetPoint("CENTER", frame.Option2, "BOTTOM", 0, -(110 * 0.09))
+				frame.Option2:ClearAllPoints()
+				frame.Option2:SetPoint("BOTTOM", frame, "BOTTOM", 0, 15)
+
+				frame.Option1:SetWidth(110)
+				frame.Option1.texture:Size(110, 110)
+				frame.Option1.texture:SetPoint("CENTER", frame.Option1, "BOTTOM", 0, -(110 * 0.09))
+				frame.Option1:ClearAllPoints()
+				frame.Option1:SetPoint("RIGHT", frame.Option2, "LEFT", -4, 0)
+
+				this:SetWidth(110)
+				this.texture:Size(110, 110)
+				this.texture:SetPoint("CENTER", this, "BOTTOM", 0, -(110 * 0.09))
+				this:ClearAllPoints()
+				this:SetPoint("LEFT", frame.Option2, "RIGHT", 4, 0)
+			end
+		end)
+		frame.Option3:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
+		frame.Option3:Hide()
+
+		--[[ OPTION 4 ]]--
+
+		frame.Option4 = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
+		frame.Option4:RemoveTextures()
+		frame.Option4:Size(110, 30)
+		frame.Option4:SetPoint("LEFT", frame.Option3, "RIGHT", 4, 0)
+		frame.Option4:SetText("")
+		SetInstallButton(frame.Option4)
+		frame.Option4.texture = frame.Option4:CreateTexture(nil, "BORDER")
+		frame.Option4.texture:Size(110, 100)
+		frame.Option4.texture:SetPoint("CENTER", frame.Option4, "BOTTOM", 0, -9)
+		frame.Option4.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
+		frame.Option4.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		frame.Option4:SetScript("OnEnter", function(this)
+			this.texture:SetVertexColor(0.5, 1, 0.4)
+		end)
+		frame.Option4:SetScript("OnLeave", function(this)
+			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
+		end)
+		frame.Option4:SetScript("OnShow", function()
+
+			frame.Option2:Width(110)
+			frame.Option2.texture:Size(110, 110)
+			frame.Option2.texture:SetPoint("CENTER", frame.Option2, "BOTTOM", 0, -(110 * 0.09))
+			frame.Option2:ClearAllPoints()
+			frame.Option2:SetPoint("BOTTOMRIGHT", frame, "BOTTOM", -4, 15)
+
+			frame.Option1:Width(110)
+			frame.Option1.texture:Size(110, 110)
+			frame.Option1.texture:SetPoint("CENTER", frame.Option1, "BOTTOM", 0, -(110 * 0.09))
+			frame.Option1:ClearAllPoints()
+			frame.Option1:SetPoint("RIGHT", frame.Option2, "LEFT", -4, 0)
+
+			frame.Option3:SetWidth(110)
+			frame.Option3.texture:Size(110, 110)
+			frame.Option3.texture:SetPoint("CENTER", frame.Option3, "BOTTOM", 0, -(110 * 0.09))
+			frame.Option3:ClearAllPoints()
+			frame.Option3:SetPoint("LEFT", frame.Option2, "RIGHT", 4, 0)
+		end)
+
+		frame.Option4:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
+		frame.Option4:Hide()
+
+		--[[ TEXT HOLDERS ]]--
+
+		local statusHolder = CreateFrame("Frame", nil, frame)
+		statusHolder:SetFrameLevel(statusHolder:GetFrameLevel() + 2)
+		statusHolder:Size(150, 30)
+		statusHolder:Point("BOTTOM", frame, "TOP", 0, 2)
+
+		frame.Status = statusHolder:CreateFontString(nil, "OVERLAY")
+		frame.Status:SetFont(SV.Media.font.numbers, 22, "OUTLINE")
+		frame.Status:SetPoint("CENTER")
+		frame.Status:SetText(CURRENT_PAGE.."  /  "..MAX_PAGE)
+
+		local titleHolder = frame:CreateFontString(nil, "OVERLAY")
+		titleHolder:SetFont(SV.Media.font.narrator, 22, "OUTLINE")
+		titleHolder:Point("TOP", 0, -5)
+		titleHolder:SetText(L["Supervillain UI Installation"])
+
+		frame.SubTitle = frame:CreateFontString(nil, "OVERLAY")
+		frame.SubTitle:SetFont(SV.Media.font.roboto, 16, "OUTLINE")
+		frame.SubTitle:Point("TOP", 0, -40)
+
+		frame.Desc1 = frame:CreateFontString(nil, "OVERLAY")
+		frame.Desc1:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
+		frame.Desc1:Point("TOPLEFT", 20, -75)
+		frame.Desc1:Width(frame:GetWidth()-40)
+
+		frame.Desc2 = frame:CreateFontString(nil, "OVERLAY")
+		frame.Desc2:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
+		frame.Desc2:Point("TOPLEFT", 20, -125)
+		frame.Desc2:Width(frame:GetWidth()-40)
+
+		frame.Desc3 = frame:CreateFontString(nil, "OVERLAY")
+		frame.Desc3:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
+		frame.Desc3:Point("TOPLEFT", 20, -175)
+		frame.Desc3:Width(frame:GetWidth()-40)
+
+		--[[ MISC ]]--
+
+		local closeButton = CreateFrame("Button", nil, frame, "UIPanelCloseButton")
+		closeButton:SetPoint("TOPRIGHT", frame, "TOPRIGHT")
+		closeButton:SetScript("OnClick", function() frame:Hide() end)
+
+		local tutorialImage = frame:CreateTexture(nil, "OVERLAY")
+		tutorialImage:Size(256, 128)
+		tutorialImage:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\SPLASH")
+		tutorialImage:Point("BOTTOM", 0, 70)
+	end
+
+	SVUI_InstallerFrame:SetScript("OnHide", function()
+		StopMusic()
+		SetCVar("Sound_MusicVolume", user_music_vol)
+		musicIsPlaying = nil
+	end)
+
+	SVUI_InstallerFrame:Show()
+	SVUI_InstallerFrame:SetPage(1)
+	if(not autoLoaded) then
+		PlayThemeSong()
+	else
+		SV.Timers:ExecuteTimer(PlayThemeSong, 5)
+	end
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/setup/presets.lua b/Interface/AddOns/SVUI/setup/presets.lua
new file mode 100644
index 0000000..a2d61a8
--- /dev/null
+++ b/Interface/AddOns/SVUI/setup/presets.lua
@@ -0,0 +1,1407 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string 	= _G.string;
+local table     = _G.table;
+local format = string.format;
+local tcopy = table.copy;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = select(2, ...)
+local SVLib = LibSuperVillain
+local L = SV.L;
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local SVUI_CLASS_COLORS = _G.SVUI_CLASS_COLORS
+local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS
+local scc = SVUI_CLASS_COLORS[SV.class];
+local rcc = RAID_CLASS_COLORS[SV.class];
+local r2 = .1 + (rcc.r * .1)
+local g2 = .1 + (rcc.g * .1)
+local b2 = .1 + (rcc.b * .1)
+--[[
+##########################################################
+LAYOUT PRESETS
+##########################################################
+]]--
+local hasOldConfigs = function()
+	return SVLib:GetSafeData("install_version")
+end
+
+local isLowRez = function()
+	if SV.ghettoMonitor then
+		return L["This resolution requires that you change some settings to get everything to fit on your screen."].." "..L["Click the button below to resize your chat frames, unitframes, and reposition your actionbars."].." "..L["You may need to further alter these settings depending how low your resolution is."]
+	else
+		return L["This resolution doesn't require that you change settings for the UI to fit on your screen."].." "..L["Click the button below to resize your chat frames, unitframes, and reposition your actionbars."].." "..L["This is completely optional."]
+	end
+end
+
+local PRESET_DATA, CLICK_DIALOG, PAGE_DIALOG;
+
+local function LoadPresetData()
+	PRESET_DATA = {
+		["media"] = {
+			["link"] = "media",
+			["default"] = {
+				["colors"] = {
+					["special"] = {.37, .32, .29, 1},
+				},
+				["textures"] = {
+					["pattern"] = "SVUI Backdrop 1",
+					["comic"] = "SVUI Comic 1",
+					["unitlarge"] = "SVUI Unit BG 1",
+					["unitsmall"] = "SVUI Small BG 1",
+				},
+				["unitframes"] = {
+					["buff_bars"] = {.91, .91, .31, 1},
+					["health"] = {.1, .6, .02, 1},
+					["casting"] = {.91, .91, .31, 1},
+					["spark"] = {1, .72, 0, 1},
+				},
+			},
+			["kaboom"] = {
+				["colors"] = {
+					["special"] = {.28, .31, .32, 1},
+				},
+				["textures"] = {
+					["pattern"] = "SVUI Backdrop 2",
+					["comic"] = "SVUI Comic 2",
+					["unitlarge"] = "SVUI Unit BG 2",
+					["unitsmall"] = "SVUI Small BG 2",
+				},
+				["unitframes"] = {
+					["buff_bars"] = {.51, .79, 0, 1},
+					["health"] = {.16, .86, .22, 1},
+					["casting"] = {.91, .91, 0, 1},
+					["spark"] = {1, .72, 0, 1},
+				},
+			},
+			["classy"] = {
+				["colors"] = {
+					["special"] = {r2, g2, b2, 1},
+				},
+				["textures"] = {
+					["pattern"] = "SVUI Backdrop 3",
+					["comic"] = "SVUI Comic 3",
+					["unitlarge"] = "SVUI Unit BG 3",
+					["unitsmall"] = "SVUI Small BG 3",
+				},
+				["unitframes"] = {
+					["buff_bars"] = {scc.r, scc.g, scc.b, 1},
+					["health"] = {.16, .86, .22, 1},
+					["casting"] = {.91, .91, 0, 1},
+					["spark"] = {1, .72, 0, 1},
+				},
+			},
+			["dark"] = {
+				["colors"] = {
+					["special"] = {.25, .26, .27, 1},
+				},
+				["textures"] = {
+					["pattern"] = "SVUI Backdrop 4",
+					["comic"] = "SVUI Comic 4",
+					["unitlarge"] = "SVUI Unit BG 4",
+					["unitsmall"] = "SVUI Small BG 4",
+				},
+				["unitframes"] = {
+					["buff_bars"] = {.45, .55, .15, 1},
+					["health"] = {.06, .06, .06, 1},
+					["casting"] = {.8, .8, 0, 1},
+					["spark"] = {1, .72, 0, 1},
+				},
+			},
+		},
+		["auras"] = {
+			["link"] = "SVUnit",
+			["default"] = {
+				["player"] = {
+					["buffs"] = {
+						enable = false,
+						attachTo = "DEBUFFS",
+						anchorPoint = 'TOPLEFT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'RIGHT',
+					},
+					["debuffs"] = {
+						enable = false,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPLEFT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'RIGHT',
+					},
+					["aurabar"] = {
+						enable = false
+					}
+				},
+				["target"] = {
+					["smartAuraDisplay"] = "DISABLED",
+					["buffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "BUFFS",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["aurabar"] = {
+						enable = false
+					}
+				},
+				["focus"] = {
+					["smartAuraDisplay"] = "DISABLED",
+					["buffs"] = {
+						enable = false,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["aurabar"] = {
+						enable = false
+					}
+				}
+			},
+			["icons"] = {
+				["player"] = {
+					["buffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPLEFT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'RIGHT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "BUFFS",
+						anchorPoint = 'TOPLEFT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'RIGHT',
+					},
+					["aurabar"] = {
+						enable = false
+					}
+				},
+				["target"] = {
+					["smartAuraDisplay"] = "DISABLED",
+					["buffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "BUFFS",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["aurabar"] = {
+						enable = false
+					}
+				},
+				["focus"] = {
+					["smartAuraDisplay"] = "DISABLED",
+					["buffs"] = {
+						enable = false,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["aurabar"] = {
+						enable = false
+					}
+				}
+			},
+			["bars"] = {
+				["player"] = {
+					["buffs"] = {
+						enable = false,
+						attachTo = "FRAME"
+					},
+					["debuffs"] = {
+						enable = false,
+						attachTo = "FRAME"
+					},
+					["aurabar"] = {
+						enable = true,
+						attachTo = "FRAME"
+					}
+				},
+				["target"] = {
+					["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
+					["buffs"] = {
+						enable = false,
+						attachTo = "FRAME"
+					},
+					["debuffs"] = {
+						enable = false,
+						attachTo = "FRAME"
+					},
+					["aurabar"] = {
+						enable = true,
+						attachTo = "FRAME"
+					}
+				},
+				["focus"] = {
+					["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
+					["buffs"] = {
+						enable = false,
+						attachTo = "FRAME"
+					},
+					["debuffs"] = {
+						enable = false,
+						attachTo = "FRAME"
+					},
+					["aurabar"] = {
+						enable = true,
+						attachTo = "FRAME"
+					}
+				}
+			},
+			["theworks"] = {
+				["player"] = {
+					["buffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPLEFT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'RIGHT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "BUFFS",
+						anchorPoint = 'TOPLEFT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'RIGHT',
+					},
+					["aurabar"] = {
+						enable = true,
+						attachTo = "DEBUFFS"
+					}
+				},
+				["target"] = {
+					["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
+					["buffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "BUFFS",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["aurabar"] = {
+						enable = true,
+						attachTo = "DEBUFFS"
+					}
+				},
+				["focus"] = {
+					["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
+					["buffs"] = {
+						enable = true,
+						attachTo = "FRAME",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["debuffs"] = {
+						enable = true,
+						attachTo = "BUFFS",
+						anchorPoint = 'TOPRIGHT',
+						verticalGrowth = 'UP',
+						horizontalGrowth = 'LEFT',
+					},
+					["aurabar"] = {
+						enable = true,
+						attachTo = "DEBUFFS"
+					}
+				}
+			},
+		},
+		["bars"] = {
+			["link"] = "SVBar",
+			["default"] = {
+				["Bar1"] = {
+					buttonsize = 32
+				},
+				["Bar2"] = {
+					enable = false
+				},
+				["Bar3"] = {
+					buttons = 6,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 32
+				},
+				["Bar5"] = {
+					buttons = 6,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 32
+				}
+			},
+			["onebig"] = {
+				["Bar1"] = {
+					buttonsize = 40
+				},
+				["Bar2"] = {
+					enable = false
+				},
+				["Bar3"] = {
+					buttons = 6,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 40
+				},
+				["Bar5"] = {
+					buttons = 6,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 40
+				}
+			},
+			["twosmall"] = {
+				["Bar1"] = {
+					buttonsize = 32
+				},
+				["Bar2"] = {
+					enable = true,
+					buttonsize = 32
+				},
+				["Bar3"] = {
+					buttons = 12,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 32
+				},
+				["Bar5"] = {
+					buttons = 12,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 32
+				}
+			},
+			["twobig"] = {
+				["Bar1"] = {
+					buttonsize = 40
+				},
+				["Bar2"] = {
+					enable = true,
+					buttonsize = 40
+				},
+				["Bar3"] = {
+					buttons = 12,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 40
+				},
+				["Bar5"] = {
+					buttons = 12,
+					buttonspacing = 2,
+					buttonsPerRow = 6,
+					buttonsize = 40
+				}
+			},
+		},
+		["units"] = {
+			["link"] = "SVUnit",
+			["default"] = {
+				["player"] = {
+					width = 215,
+					height = 60,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					}
+				},
+				["target"] = {
+					width = 215,
+					height = 60,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					}
+				},
+				["pet"] = {
+					width = 130,
+					height = 30,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					name = {
+						position = "CENTER"
+					},
+				},
+				["targettarget"] = {
+					width = 130,
+					height = 30,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					name = {
+						position = "CENTER"
+					},
+				},
+				["boss"] = {
+					width = 200,
+					height = 45,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					}
+				},
+				["party"] = {
+					width = 75,
+					height = 60,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					name = {
+						position = "INNERTOPLEFT"
+					},
+				},
+				["raid10"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid25"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid40"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+			},
+			["super"] = {
+				["player"] = {
+					width = 215,
+					height = 60,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					}
+				},
+				["target"] = {
+					width = 215,
+					height = 60,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					}
+				},
+				["pet"] = {
+					width = 150,
+					height = 30,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					name = {
+						position = "CENTER"
+					},
+				},
+				["targettarget"] = {
+					width = 150,
+					height = 30,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					name = {
+						position = "CENTER"
+					},
+				},
+				["boss"] = {
+					width = 200,
+					height = 45,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					}
+				},
+				["party"] = {
+					width = 75,
+					height = 60,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					name = {
+						position = "INNERTOPLEFT"
+					},
+				},
+				["raid10"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid25"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid40"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+			},
+			["simple"] = {
+				["player"] = {
+					width = 215,
+					height = 60,
+					portrait = {
+						enable = true,
+						overlay = false,
+						style = "2D",
+						width = 60,
+					}
+				},
+				["target"] = {
+					width = 215,
+					height = 60,
+					portrait = {
+						enable = true,
+						overlay = false,
+						style = "2D",
+						width = 60,
+					}
+				},
+				["pet"] = {
+					width = 150,
+					height = 30,
+					portrait = {
+						enable = true,
+						overlay = false,
+						style = "2D",
+						width = 30,
+					},
+					name = {
+						position = "INNERLEFT"
+					},
+				},
+				["targettarget"] = {
+					width = 150,
+					height = 30,
+					portrait = {
+						enable = true,
+						overlay = false,
+						style = "2D",
+						width = 30,
+					},
+					name = {
+						position = "INNERLEFT"
+					},
+				},
+				["boss"] = {
+					width = 200,
+					height = 45,
+					portrait = {
+						enable = true,
+						overlay = false,
+						style = "2D",
+						width = 45,
+					}
+				},
+				["party"] = {
+					width = 100,
+					height = 35,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					portrait = {
+						enable = true,
+						overlay = false,
+						style = "2D",
+						width = 35,
+					},
+					name = {
+						position = "INNERRIGHT"
+					},
+				},
+				["raid10"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid25"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid40"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+			},
+			["compact"] = {
+				["player"] = {
+					width = 215,
+					height = 50,
+					portrait = {
+						enable = false
+					}
+				},
+				["target"] = {
+					width = 215,
+					height = 50,
+					portrait = {
+						enable = false
+					}
+				},
+				["pet"] = {
+					width = 130,
+					height = 30,
+					portrait = {
+						enable = false
+					},
+					name = {
+						position = "CENTER"
+					},
+				},
+				["targettarget"] = {
+					width = 130,
+					height = 30,
+					portrait = {
+						enable = false
+					},
+					name = {
+						position = "CENTER"
+					},
+				},
+				["boss"] = {
+					width = 200,
+					height = 45,
+					portrait = {
+						enable = false
+					}
+				},
+				["party"] = {
+					width = 70,
+					height = 30,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					portrait = {
+						enable = false
+					},
+					name = {
+						position = "INNERTOPLEFT"
+					},
+				},
+				["raid10"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid25"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+				["raid40"] = {
+					width = 50,
+					height = 30,
+					wrapXOffset = 6,
+					wrapYOffset = 6,
+				},
+			},
+		},
+		["layouts"] = {
+			["link"] = "SVUnit",
+			["default"] = {
+				["grid"] = {
+					["enable"] = false,
+				},
+				["party"] = {
+					width = 75,
+					height = 60,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					icons = {
+						roleIcon = {
+							["attachTo"] = "INNERBOTTOMRIGHT",
+							["xOffset"] = 0,
+							["yOffset"] = 0,
+						},
+					},
+					name = {
+						["font"] = "SVUI Default Font",
+						["fontOutline"] = "OUTLINE",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 0,
+						["yOffset"] = 0,
+					},
+				},
+				["raid10"] = {
+					width = 50,
+					height = 30,
+					gRowCol = 1,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					showBy = "RIGHT_DOWN",
+					["power"] = {
+						["enable"] = false,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERBOTTOMLEFT",
+							["xOffset"] = 8,
+							["yOffset"] = 1,
+						},
+					},
+					["name"] = {
+						["font"] = "SVUI Default Font",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 8,
+						["yOffset"] = 0,
+					},
+				},
+				["raid25"] = {
+					width = 50,
+					height = 30,
+					gRowCol = 1,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					showBy = "RIGHT_DOWN",
+					["power"] = {
+						["enable"] = false,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERBOTTOMLEFT",
+							["xOffset"] = 8,
+							["yOffset"] = 1,
+						},
+					},
+					["name"] = {
+						["font"] = "SVUI Default Font",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 8,
+						["yOffset"] = 0,
+					},
+				},
+				["raid40"] = {
+					width = 50,
+					height = 30,
+					gRowCol = 1,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					showBy = "RIGHT_DOWN",
+					["power"] = {
+						["enable"] = false,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERBOTTOMLEFT",
+							["xOffset"] = 8,
+							["yOffset"] = 1,
+						},
+					},
+					["name"] = {
+						["font"] = "SVUI Default Font",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 8,
+						["yOffset"] = 0,
+					},
+				},
+			},
+			["healer"] = {
+				["grid"] = {
+					["enable"] = false,
+				},
+				["party"] = {
+					width = 75,
+					height = 60,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					portrait = {
+						enable = true,
+						overlay = true,
+						style = "3D",
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERBOTTOMRIGHT",
+							["xOffset"] = 0,
+							["yOffset"] = 0,
+						},
+					},
+					["name"] = {
+						["font"] = "SVUI Default Font",
+						["fontOutline"] = "OUTLINE",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 0,
+						["yOffset"] = 0,
+					},
+				},
+				["raid10"] = {
+					width = 50,
+					height = 30,
+					["showBy"] = "DOWN_RIGHT",
+					["gRowCol"] = 1,
+					["wrapXOffset"] = 4,
+					["wrapYOffset"] = 4,
+					["power"] = {
+						["enable"] = true,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERBOTTOMLEFT",
+							["xOffset"] = 8,
+							["yOffset"] = 0,
+						},
+					},
+					["name"] = {
+						["font"] = "SVUI Default Font",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 8,
+						["yOffset"] = 0,
+					},
+				},
+				["raid25"] = {
+					width = 50,
+					height = 30,
+					["showBy"] = "DOWN_RIGHT",
+					["gRowCol"] = 1,
+					["wrapXOffset"] = 4,
+					["wrapYOffset"] = 4,
+					["power"] = {
+						["enable"] = true,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERBOTTOMLEFT",
+							["xOffset"] = 8,
+							["yOffset"] = 0,
+						},
+					},
+					["name"] = {
+						["font"] = "SVUI Default Font",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 8,
+						["yOffset"] = 0,
+					},
+				},
+				["raid40"] = {
+					width = 50,
+					height = 30,
+					["showBy"] = "DOWN_RIGHT",
+					["gRowCol"] = 1,
+					["wrapXOffset"] = 4,
+					["wrapYOffset"] = 4,
+					["power"] = {
+						["enable"] = true,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERBOTTOMLEFT",
+							["xOffset"] = 8,
+							["yOffset"] = 0,
+						},
+					},
+					["name"] = {
+						["font"] = "SVUI Default Font",
+						["position"] = "INNERTOPLEFT",
+						["xOffset"] = 8,
+						["yOffset"] = 0,
+					},
+				},
+			},
+			["dps"] = {
+				["grid"] = {
+					["enable"] = false,
+				},
+				["party"] = {
+					width = 115,
+					height = 25,
+					wrapXOffset = 9,
+					wrapYOffset = 13,
+					["power"] = {
+						["enable"] = false,
+					},
+					portrait = {
+						enable = false,
+						overlay = false,
+						style = "2D",
+						width = 35,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "LEFT",
+							["xOffset"] = -2,
+							["yOffset"] = 0,
+						},
+					},
+					["name"] = {
+						["font"] = "Roboto",
+						["fontOutline"] = "NONE",
+						["position"] = "CENTER",
+						["xOffset"] = 0,
+						["yOffset"] = 1,
+					},
+				},
+				["raid10"] = {
+					["showBy"] = "UP_RIGHT",
+					["gRowCol"] = 2,
+					["wrapXOffset"] = 4,
+					["wrapYOffset"] = 4,
+					["power"] = {
+						["enable"] = false,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERLEFT",
+							["xOffset"] = 10,
+							["yOffset"] = 1,
+						},
+					},
+					["name"] = {
+						["font"] = "Roboto",
+						["position"] = "CENTER",
+						["xOffset"] = 0,
+						["yOffset"] = 1,
+					},
+					["width"] = 80,
+					["height"] = 20,
+				},
+				["raid25"] = {
+					["showBy"] = "UP_RIGHT",
+					["gRowCol"] = 3,
+					["wrapXOffset"] = 4,
+					["wrapYOffset"] = 4,
+					["power"] = {
+						["enable"] = false,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERLEFT",
+							["xOffset"] = 10,
+							["yOffset"] = 1,
+						},
+					},
+					["name"] = {
+						["font"] = "Roboto",
+						["position"] = "CENTER",
+						["xOffset"] = 0,
+						["yOffset"] = 1,
+					},
+					["width"] = 80,
+					["height"] = 20,
+				},
+				["raid40"] = {
+					["showBy"] = "UP_RIGHT",
+					["gRowCol"] = 4,
+					["wrapXOffset"] = 4,
+					["wrapYOffset"] = 4,
+					["power"] = {
+						["enable"] = false,
+					},
+					["icons"] = {
+						["roleIcon"] = {
+							["attachTo"] = "INNERLEFT",
+							["xOffset"] = 10,
+							["yOffset"] = 1,
+						},
+					},
+					["name"] = {
+						["font"] = "Roboto",
+						["position"] = "CENTER",
+						["xOffset"] = 0,
+						["yOffset"] = 1,
+					},
+					["width"] = 80,
+					["height"] = 20,
+				},
+			},
+			["grid"] = {
+				["grid"] = {
+					["enable"] = true,
+					["size"] = 34,
+					["shownames"] = true,
+				},
+				["party"] = {
+					["gridAllowed"] = true,
+					["wrapXOffset"] = 1,
+					["wrapYOffset"] = 1,
+					["power"] = {
+						["enable"] = false,
+					},
+					portrait = {
+						enable = false,
+					},
+				},
+				["raid10"] = {
+					["gridAllowed"] = true,
+					["wrapXOffset"] = 1,
+					["wrapYOffset"] = 1,
+					["gRowCol"] = 1,
+					["showBy"] = "RIGHT_DOWN",
+				},
+				["raid25"] = {
+					["gridAllowed"] = true,
+					["wrapXOffset"] = 1,
+					["wrapYOffset"] = 1,
+					["gRowCol"] = 1,
+					["showBy"] = "RIGHT_DOWN",
+				},
+				["raid40"] = {
+					["gridAllowed"] = true,
+					["wrapXOffset"] = 1,
+					["wrapYOffset"] = 1,
+					["gRowCol"] = 1,
+					["showBy"] = "RIGHT_DOWN",
+				},
+			},
+		}
+	};
+
+	if(SV.UserPresets) then
+		for key, data in pairs(SV.UserPresets) do
+			for category, presets in pairs(data) do
+				PRESET_DATA[key][category] = presets
+			end
+		end
+	end
+end
+
+local function LoadPageData()
+	PAGE_DIALOG = {
+		--PAGE 1
+		{
+			["SubTitle"] = (L["This is Supervillain UI version %s!"]):format(SV.Version),
+
+			["Desc1"] = L["Before I can turn you loose, persuing whatever villainy you feel will advance your professional career... I need to ask some questions and turn a few screws first."],
+			["Desc2"] = L["At any time you can get to the config options by typing the command  / sv. For quick changes to frame, bar or color sets, call your henchman by clicking the button on the bottom right of your screen. (Its the one with his stupid face on it)"],
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option01"] = {USE.."\n"..DEFAULT.."\n"..SETTINGS, "EZDefault"},
+			["Option02"] = {"PRETEND YOU\nDID THIS\nALREADY", "Complete"},
+			["Option03"] = {"Keep\nSaved\n"..SETTINGS, "Complete", nil, hasOldConfigs},
+		},
+		--PAGE 2
+		{
+			["SubTitle"] = CHAT,
+
+			["Desc1"] = L["Whether you want to or not, you will be needing a communicator so other villains can either update you on their doings-of-evil or inform you about the MANY abilities of Chuck Norris"],
+			["Desc2"] = L["The chat windows function the same as standard chat windows, you can right click the tabs and drag them, rename them, slap them around, you know... whatever. Clickity-click to setup your chat windows."],
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option1"] = {CHAT_DEFAULTS, "ChatConfigs"},
+		},
+		--PAGE 3
+		{
+			["SubTitle"] = RESOLUTION,
+
+			["Desc1"] = (L["Your current resolution is %s, this is considered a %s resolution."]):format(GetCVar("gxResolution"), (SV.ghettoMonitor and LOW or HIGH)),
+			["Desc2"] = isLowRez,
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option1"] = {HIGH, "UserScreen", "high"},
+			["Option2"] = {LOW, "UserScreen", "low"},
+		},
+		--PAGE 4
+		{
+			["SubTitle"] = COLOR.." "..SETTINGS,
+
+			["Desc1"] = L["Choose a theme layout you wish to use for your initial setup."],
+			["Desc2"] = L["You can always change fonts and colors of any element of Supervillain UI from the in-game configuration."],
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option1"] = {L["Kaboom!"], "ColorTheme", "kaboom"},
+			["Option2"] = {L["Darkness"], "ColorTheme", "dark"},
+			["Option3"] = {L["Class" .. "\n" .. "Colors"], "ColorTheme", "classy"},
+			["Option4"] = {L["Vintage"], "ColorTheme"},
+		},
+		--PAGE 5
+		{
+			["SubTitle"] = UNITFRAME_LABEL.." "..SETTINGS,
+
+			["Desc1"] = L["You can now choose what primary unitframe style you wish to use."],
+			["Desc2"] = L["This will change the layout of your unitframes (ie.. Player, Target, Pet, Party, Raid ...etc)."],
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option1"] = {L["Super"], "UnitframeLayout", "super"},
+			["Option2"] = {L["Simple"], "UnitframeLayout", "simple"},
+			["Option3"] = {L["Compact"], "UnitframeLayout", "compact"},
+		},
+		--PAGE 6
+		{
+			["SubTitle"] = "Group Layout",
+
+			["Desc1"] = L["You can now choose what group layout you prefer."],
+			["Desc2"] = L["This will adjust various settings on group units, attempting to make certain roles more usable"],
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option1"] = {L["Standard"], "GroupframeLayout", "default"},
+			["Option2"] = {L["Healer"], "GroupframeLayout", "healer"},
+			["Option3"] = {L["DPS"], "GroupframeLayout", "dps"},
+			["Option4"] = {L["Grid"], "GroupframeLayout", "grid"},
+		},
+		--PAGE 7
+		{
+			["SubTitle"] = ACTIONBAR_LABEL.." "..SETTINGS,
+
+			["Desc1"] = L["Choose a layout for your action bars."],
+			["Desc2"] = L["Sometimes you need big buttons, sometimes you don't. Your choice here."],
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option1"] = {L["Small" .. "\n" .. "Row"], "BarLayout", "default"},
+			["Option2"] = {L["2 Small" .. "\n" .. "Rows"], "BarLayout", "twosmall"},
+			["Option3"] = {L["Big" .. "\n" .. "Row"], "BarLayout", "onebig"},
+			["Option4"] = {L["2 Big" .. "\n" .. "Rows"], "BarLayout", "twobig"},
+		},
+		--PAGE 8
+		{
+			["SubTitle"] = AURAS.." "..SETTINGS,
+
+			["Desc1"] = L["Select an aura layout. \"Icons\" will display only icons and aurabars won't be used. \"Bars\" will display only aurabars and icons won't be used (duh). \"The Works!\" does just what it says.... icons, bars and awesomeness."],
+			["Desc2"] = L["If you have an aura that you don't want to display simply hold down shift and right click the icon for it to suffer a painful death."],
+			["Desc3"] = L["CHOOSE_OR_DIE"],
+
+			["Option1"] = {L["Vintage"], "Auralayout"},
+			["Option2"] = {L["Icons"], "Auralayout", "icons"},
+			["Option3"] = {L["Bars"], "Auralayout", "bars"},
+			["Option4"] = {L["The" .. "\n" .. "Works!"], "Auralayout", "theworks"},
+		},
+		--PAGE 9
+		{
+			["SubTitle"] = BASIC_OPTIONS_TOOLTIP..CONTINUED..AUCTION_TIME_LEFT0,
+
+			["Desc1"] = L["Thats it! All done! Now we just need to hand these choices off to the henchmen so they can get you ready to (..insert evil tasks here..)!"],
+			["Desc2"] = L["Click the button below to reload and get on your way! Good luck villain!"],
+
+			["Option1"] = {L["THE_BUTTON_BELOW"], "Complete"},
+		},
+	};
+end
+
+local function LoadOnClickData()
+	CLICK_DIALOG = {
+		["Page3_Option1"] = {
+			["Desc1"] = L["|cffFF9F00"..HIGH.." "..RESOLUTION.."!|r"],
+			["Desc2"] = L["So what you think your better than me with your big monitor? HUH?!?!"],
+			["Desc3"] = L["Dont forget whos in charge here! But enjoy the incredible detail."],
+		},
+		["Page3_Option2"] = {
+			["Desc1"] = L["|cffFF9F00"..LOW.." "..RESOLUTION.."|r"],
+			["Desc2"] = L["Why are you playing this on what I would assume is a calculator display?"],
+			["Desc3"] = L["Enjoy the ONE incredible pixel that fits on this screen."],
+		},
+		["Page4_Option1"] = {
+			["Desc1"] = L["|cffFF9F00KABOOOOM!|r"],
+			["Desc2"] = L["This theme tells the world that you are a villain who can put on a show"]..CONTINUED,
+			["Desc3"] = CONTINUED..L["or better yet, you ARE the show!"],
+		},
+		["Page4_Option2"] = {
+			["Desc1"] = L["|cffAF30FFThe Darkest Night|r"],
+			["Desc2"] = L["This theme indicates that you have no interest in wasting time"]..CONTINUED,
+			["Desc3"] = CONTINUED..L[" the dying begins NOW!"],
+		},
+		["Page4_Option3"] = {
+			["Desc1"] = L["|cffFFFF00"..CLASS_COLORS.."|r"],
+			["Desc2"] = L["This theme is for villains who take pride in their class"]..CONTINUED,
+			["Desc3"] = CONTINUED..L[" villains know how to reprezent!"],
+		},
+		["Page4_Option4"] = {
+			["Desc1"] = L["|cff00FFFFPlain and Simple|r"],
+			["Desc2"] = L["This theme is for any villain who sticks to their traditions"]..CONTINUED,
+			["Desc3"] = CONTINUED..L["you don't need fancyness to kick some ass!"],
+		},
+		["Page5_Option1"] = {
+			["Desc1"] = L["|cff00FFFFLets Do This|r"],
+			["Desc2"] = L["This layout is anything but minimal! Using this is like being at a rock concert"]..CONTINUED,
+			["Desc3"] = CONTINUED..L["then annihilating the crowd with frickin lazer beams!"],
+		},
+		["Page5_Option2"] = {
+			["Desc1"] = L["|cff00FFFFSimply Simple|r"],
+			["Desc2"] = L["This layout is for the villain who just wants to get things done!"]..CONTINUED,
+			["Desc3"] = CONTINUED..L["but he still wants to see your face before he hits you!"],
+		},
+		["Page5_Option3"] = {
+			["Desc1"] = L["|cff00FFFFEl Compacto|r"],
+			["Desc2"] = L["Just the necessities so you can see more of the world around you"]..CONTINUED,
+			["Desc3"] = CONTINUED..L["you dont need no fanciness getting in the way of world domination do you?"],
+		},
+		["Page6_Option1"] = {
+			["Desc1"] = L["|cff00FFFFStandard|r"],
+			["Desc2"] = L["You are good to go with the default layout"]..CONTINUED,
+			["Desc3"] = CONTINUED..L["frames schmames, lets kill some stuff!"],
+		},
+		["Page6_Option2"] = {
+			["Desc1"] = L["|cff00FFFFMEDIC!!|r"],
+			["Desc2"] = L["You are pretty helpful.. for a VILLAIN!"]..CONTINUED,
+			["Desc3"] = CONTINUED..L["Hey, even a super villain gets his ass kicked once in awhile. We need the likes of you!"],
+		},
+		["Page6_Option3"] = {
+			["Desc1"] = L["|cff00FFFFDeath Dealer|r"],
+			["Desc2"] = L["You are the kings of our craft. Handing out pain like its halloween candy."]..CONTINUED,
+			["Desc3"] = CONTINUED..L["I will move and squeeze group frames out of your way so you have more room for BOOM!"],
+		},
+		["Page6_Option4"] = {
+			["Desc1"] = L["|cff00FFFFCubed|r"],
+			["Desc2"] = L["You are cold and calculated, your frames should reflect as much."]..CONTINUED,
+			["Desc3"] = CONTINUED..L["I'm gonna make these frames so precise that you can cut your finger on them!"],
+		},
+		["Page7_Option1"] = {
+			["Desc1"] = L["|cff00FFFFLean And Clean|r"],
+			["Desc2"] = L["Lets keep it slim and deadly, not unlike a ninja sword."],
+			["Desc3"] = L["You dont ever even look at your bar hardly, so pick this one!"],
+		},
+		["Page7_Option2"] = {
+			["Desc1"] = L["|cff00FFFFMore For Less|r"],
+			["Desc2"] = L["Granted, you dont REALLY need the buttons due to your hotkey-leetness, you just like watching cooldowns!"],
+			["Desc3"] = L["Sure thing cowboy, your secret is safe with me!"],
+		},
+		["Page7_Option3"] = {
+			["Desc1"] = L["|cff00FFFFWhat Big Buttons You Have|r"],
+			["Desc2"] = L["The better to PEW-PEW you with my dear!"],
+			["Desc3"] = L["When you have little time for mouse accuracy, choose this set!"],
+		},
+		["Page7_Option4"] = {
+			["Desc1"] = L["|cff00FFFFThe Double Down|r"],
+			["Desc2"] = L["Lets be honest for a moment. Who doesnt like a huge pair in their face?"],
+			["Desc3"] = L["Double your bars then double their size for maximum button goodness!"],
+		},
+	};
+end
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function _copyPresets(saved, preset)
+	--if not saved then return end
+	if(type(preset) == 'table') then
+        for key,val in pairs(preset) do
+        	if(not saved[key]) then saved[key] = {} end
+    		if(type(val) == "table") then
+    			_copyPresets(saved[key], val)
+    		elseif(saved[key]) then
+            	saved[key] = val
+            end
+        end
+    else
+    	saved = preset
+    end
+end
+
+function SV.Setup:CopyPreset(category, theme)
+	if(not PRESET_DATA) then LoadPresetData() end
+	if(PRESET_DATA and PRESET_DATA[category] and PRESET_DATA[category]["link"]) then
+		theme = theme or "default"
+		local saved = PRESET_DATA[category]["link"]
+		local preset =  PRESET_DATA[category][theme]
+		local data = SV.db[saved]
+
+		if(data) then
+	    	_copyPresets(data, preset)
+	    end
+	end
+end
+
+function SV.Setup:CopyPage(pageNum)
+	if(not PAGE_DIALOG) then LoadPageData() end
+	if(PAGE_DIALOG and PAGE_DIALOG[pageNum]) then
+		return PAGE_DIALOG[pageNum], #PAGE_DIALOG
+	end
+end
+
+function SV.Setup:CopyOnClick(index)
+	if(not CLICK_DIALOG) then LoadOnClickData() end
+	if(CLICK_DIALOG and CLICK_DIALOG[index]) then
+		return CLICK_DIALOG[index]
+	end
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/alerts.lua b/Interface/AddOns/SVUI/system/alerts.lua
index a0a0c4a..f8197a2 100644
--- a/Interface/AddOns/SVUI/system/alerts.lua
+++ b/Interface/AddOns/SVUI/system/alerts.lua
@@ -35,14 +35,15 @@ local random = math.random;
 --[[ TABLE METHODS ]]--
 local tremove, twipe = table.remove, table.wipe;
 --[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
-local assert = enforce;
+local assert = assert;
 --[[
 ##########################################################
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local SVLib = LibSuperVillain;
+local L = SV.L;
 --[[
 ##########################################################
 LOCAL VARS
@@ -86,7 +87,7 @@ SV.SystemAlert["FAILED_UISCALE"] = {
 	text = L["You have changed your UIScale, however you still have the AutoScale option enabled in SVUI. Press accept if you would like to disable the Auto Scale option."],
 	button1 = ACCEPT,
 	button2 = CANCEL,
-	OnAccept = function() SV.db.system.autoScale = false; ReloadUI(); end,
+	OnAccept = function() SV.db.general.autoScale = false; ReloadUI(); end,
 	OnCancel = function() ReloadUI() end,
 	timeout = 0,
 	whileDead = 1,
@@ -191,7 +192,9 @@ SV.SystemAlert["RESET_PROFILE_PROMPT"] = {
 	timeout = 0,
 	hideOnEscape = 1,
 	OnAccept = function()
-		SV.db:Reset()
+		SVLib:WipeDatabase()
+		SVLib:WipeCache("Anchors")
+		ReloadUI()
 	end
 };
 SV.SystemAlert["COPY_PROFILE_PROMPT"] = {
@@ -249,7 +252,7 @@ SV.SystemAlert["CONFIRM_LOSE_BINDING_CHANGES"] = {
 SV.SystemAlert["INCOMPATIBLE_ADDON"] = {
 	text = L["INCOMPATIBLE_ADDON"],
 	OnAccept = function(a)DisableAddOn(SV.SystemAlert["INCOMPATIBLE_ADDON"].addon)ReloadUI()end,
-	OnCancel = function(a)SV.db[lower(SV.SystemAlert["INCOMPATIBLE_ADDON"].package)].enable = false;ReloadUI()end,
+	OnCancel = function(a)SV[lower(SV.SystemAlert["INCOMPATIBLE_ADDON"].package)].db.enable = false; ReloadUI()end,
 	timeout = 0,
 	whileDead = 1,
 	hideOnEscape = false
diff --git a/Interface/AddOns/SVUI/system/animate.lua b/Interface/AddOns/SVUI/system/animate.lua
index f5958f3..5208c28 100644
--- a/Interface/AddOns/SVUI/system/animate.lua
+++ b/Interface/AddOns/SVUI/system/animate.lua
@@ -25,9 +25,8 @@ local select    = _G.select;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0")
+local SV = select(2, ...)
+local L = SV.L
 --[[
 ##########################################################
 LOCALS
@@ -356,7 +355,7 @@ end

 function Animate:Flash(frame, speed, looped)
 	if not frame.anim then
-		Animate:SetTemplate(frame, 'Flash', false, speed, looped)
+		self:SetTemplate(frame, 'Flash', false, speed, looped)
 	end
 	if not frame.anim:IsPlaying() then
 		frame.anim:Play()
@@ -371,7 +370,7 @@ end

 --[[ SLIDING ]]--

-function Animate:Slide(frame, xDirection, yDirection, bounce)
+function Animate:Slide(frame, xDirection, yDirection, bounce, extendedTime)
 	if(not frame or (frame and frame.anim)) then return end

 	frame.anim = frame:CreateAnimationGroup("Slide")
@@ -392,7 +391,7 @@ function Animate:Slide(frame, xDirection, yDirection, bounce)

 	if bounce then
 		frame.anim[3] = SetNewAnimation(frame.anim, "Translation")
-		frame.anim[3]:SetDuration(0.5)
+		frame.anim[3]:SetDuration(extendedTime or 0.5)
 		frame.anim[3]:SetOrder(3)

 		frame.anim[4] = SetNewAnimation(frame.anim, "Translation")
diff --git a/Interface/AddOns/SVUI/system/common.lua b/Interface/AddOns/SVUI/system/common.lua
index 0c3de1c..8dca0d5 100644
--- a/Interface/AddOns/SVUI/system/common.lua
+++ b/Interface/AddOns/SVUI/system/common.lua
@@ -42,9 +42,8 @@ local tremove, tcopy, twipe, tsort, tconcat, tdump = table.remove, table.copy, t
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0")
+local SV = select(2, ...)
+local L = SV.L
 --[[
 ##########################################################
 LOCAL VARS
@@ -55,7 +54,7 @@ local TemplateUpdateFrames = {};
 local FontUpdateFrames = {};
 local NewFrame = CreateFrame;
 local NewHook = hooksecurefunc;
-local STANDARD_TEXT_FONT = _G.STANDARD_TEXT_FONT
+local STANDARD_TEXT_FONT = _G.STANDARD_TEXT_FONT;
 local SCREEN_MOD = 1;

 local function GetUsableScreen()
@@ -80,14 +79,14 @@ function SV:ScreenCalibration(event)
     local scale, evalwidth
     local gxWidth, gxHeight, gxMod = GetUsableScreen()

-    if(IsMacClient() and SVUI_Cache and SVUI_Cache.screenheight and SVUI_Cache.screenwidth) then
-        if(gxHeight ~= SVUI_Cache.screenheight or gxWidth ~= SVUI_Cache.screenwidth) then
-            gxHeight = SVUI_Cache.screenheight;
-            gxWidth = SVUI_Cache.screenwidth
+    if(IsMacClient() and self.DisplaySettings and self.DisplaySettings.screenheight and self.DisplaySettings.screenwidth) then
+        if(gxHeight ~= self.DisplaySettings.screenheight or gxWidth ~= self.DisplaySettings.screenwidth) then
+            gxHeight = self.DisplaySettings.screenheight;
+            gxWidth = self.DisplaySettings.screenwidth
         end
     end

-    if self.db.system.autoScale then
+    if self.db.general.autoScale then
         scale = max(0.64, min(1.15, gxMod))
     else
         scale = max(0.64, min(1.15, GetCVar("uiScale") or UIParent:GetScale() or gxMod))
@@ -102,7 +101,7 @@ function SV:ScreenCalibration(event)
     elseif gxWidth >= 3840 then
         local width = gxWidth;
         local height = gxHeight;
-        if(self.db.system.multiMonitor) then
+        if(self.db.general.multiMonitor) then
             if width >= 9840 then width = 3280; end
             if width >= 7680 and width < 9840 then width = 2560; end
             if width >= 5760 and width < 7680 then width = 1920; end
@@ -136,14 +135,14 @@ function SV:ScreenCalibration(event)

     if(event == 'PLAYER_LOGIN' or event == 'UI_SCALE_CHANGED') then
         if IsMacClient() then
-            SVUI_Cache.screenheight = floor(GetScreenHeight() * 100 + .5) / 100
-            SVUI_Cache.screenwidth = floor(GetScreenWidth() * 100 + .5) / 100
+            self.DisplaySettings.screenheight = floor(GetScreenHeight() * 100 + .5) / 100
+            self.DisplaySettings.screenwidth = floor(GetScreenWidth() * 100 + .5) / 100
         end

         if evalwidth then
             local width = evalwidth
             local height = gxHeight;
-            if not self.db.system.autoScale or height > 1200 then
+            if not self.db.general.autoScale or height > 1200 then
                 height = UIParent:GetHeight();
                 local ratio = gxHeight / height;
                 width = evalwidth / ratio;
@@ -157,7 +156,7 @@ function SV:ScreenCalibration(event)
         self.UIParent:SetPoint("CENTER")

         local change = abs((parsefloat(UIParent:GetScale(),5) * 100) - (parsefloat(scale,5) * 100))
-        if(event == 'UI_SCALE_CHANGED' and change > 1 and self.db.system.autoScale) then
+        if(event == 'UI_SCALE_CHANGED' and change > 1 and self.db.general.autoScale) then
             self:StaticPopup_Show('FAILED_UISCALE')
         elseif(event == 'UI_SCALE_CHANGED' and change > 1) then
             self:StaticPopup_Show('RL_CLIENT')
@@ -186,15 +185,22 @@ do
     end

     function SizeScaled(self, width, height)
-        self:SetSize(scaled(width), scaled(height or width))
+        if(type(width) == "number") then
+            local h = (height and type(height) == "number") and height or width
+            self:SetSize(scaled(width), scaled(h))
+        end
     end

     function WidthScaled(self, width)
-        self:SetWidth(scaled(width))
+        if(type(width) == "number") then
+            self:SetWidth(scaled(width))
+        end
     end

     function HeightScaled(self, height)
-        self:SetHeight(scaled(height))
+        if(type(height) == "number") then
+            self:SetHeight(scaled(height))
+        end
     end

     function PointScaled(self, ...)
@@ -211,7 +217,7 @@ do
     end

     function WrapOuter(self, parent, x, y)
-        x = x or 1
+        x = type(x) == "number" and x or 1
         y = y or x
         local nx = scaled(x);
         local ny = scaled(y);
@@ -224,7 +230,7 @@ do
     end

     function FillInner(self, parent, x, y)
-        x = x or 1
+        x = type(x) == "number" and x or 1
         y = y or x
         local nx = scaled(x);
         local ny = scaled(y);
@@ -287,11 +293,13 @@ APPENDED FONT TEMPLATING METHODS
 ##########################################################
 ]]--
 local function SetFontTemplate(self, font, fontSize, fontStyle, fontJustifyH, fontJustifyV, noUpdate)
-    local STANDARDFONTSIZE = SV.db.media.fonts.size
-    font = font or STANDARD_TEXT_FONT
+    if not self then return end
+    local STANDARDFONTSIZE = SV.db.media.fonts and SV.db.media.fonts.size or 12
+    font = font or [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]]
     fontSize = fontSize or STANDARDFONTSIZE;
     fontJustifyH = fontJustifyH or "CENTER";
     fontJustifyV = fontJustifyV or "MIDDLE";
+    if not font then return end
     self.font = font;
     self.fontSize = fontSize;
     self.fontStyle = fontStyle;
@@ -333,7 +341,7 @@ function SV:UpdateFontTemplates()
     FontTemplateUpdates()
 end

-Registry:NewCallback(FontTemplateUpdates)
+SV:NewCallback(FontTemplateUpdates)
 --[[
 ##########################################################
 APPENDED TEMPLATING METHODS
@@ -1314,10 +1322,7 @@ local function SetButtonTemplate(self, invisible, overridePadding, xOffset, yOff
             FillInner(hover, self.Panel)
             self.hover = hover;
         end
-
-        local color = SV.Media.color.highlight
-        self.hover:SetTexture(color[1], color[2], color[3], 0.5)
-
+        self.hover:SetTexture(0.1, 0.8, 0.8, 0.5)
         self:SetHighlightTexture(self.hover)
     end

@@ -1382,7 +1387,7 @@ local function SetCheckboxTemplate(self, underlay, x, y)
     self.__hooked = true
 end

-local function SetEditboxTemplate(self, x, y)
+local function SetEditboxTemplate(self, x, y, fixed)
     if(not self or (self and self.Panel)) then return end

     if self.TopLeftTex then Die(self.TopLeftTex) end
@@ -1394,8 +1399,9 @@ local function SetEditboxTemplate(self, x, y)
     if self.LeftTex then Die(self.LeftTex) end
     if self.RightTex then Die(self.RightTex) end
     if self.MiddleTex then Die(self.MiddleTex) end
-
-    CreatePanelTemplate(self, "Inset", true, true, 1, x, y)
+    local underlay = true
+    if(fixed ~= nil) then underlay = fixed end
+    CreatePanelTemplate(self, "Inset", underlay, true, 1, x, y)

     local globalName = self:GetName();
     if globalName then
@@ -1553,7 +1559,7 @@ local function FrameTemplateUpdates()
     end
 end

-Registry:NewCallback(FrameTemplateUpdates)
+SV:NewCallback(FrameTemplateUpdates)
 --[[
 ##########################################################
 ENUMERATION
diff --git a/Interface/AddOns/SVUI/system/database.lua b/Interface/AddOns/SVUI/system/database.lua
deleted file mode 100644
index 2729d3f..0000000
--- a/Interface/AddOns/SVUI/system/database.lua
+++ /dev/null
@@ -1,1031 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack    = _G.unpack;
-local select    = _G.select;
-local pairs     = _G.pairs;
-local next 		= _G.next;
-local type      = _G.type;
-local error 	= _G.error;
-local rawset    = _G.rawset;
-local rawget    = _G.rawget;
-local table     = _G.table;
---[[ TABLE METHODS ]]--
-local tremove, tcopy, twipe, tsort, tconcat, tdump = table.remove, table.copy, table.wipe, table.sort, table.concat, table.dump;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local realm = GetRealmName()
-local name = UnitName("player")
-local pkey = ("%s - %s"):format(name, realm)
-local databaseListener = CreateFrame("Frame", nil)
-local CONFIGS = SV.private
---[[
-##########################################################
-DB BUILD HELPERS
-##########################################################
-]]--
-local function SpellName(id)
-	local name, _, _, _, _, _, _, _, _ = GetSpellInfo(id)
-	if not name then
-		SV:Debugger('|cffFF9900SVUI:|r Spell not found: (#ID) '..id)
-		name = "Voodoo Doll";
-	end
-	return name
-end
---[[
-##########################################################
-DB PROFILE
-##########################################################
-]]--
-CONFIGS["copyKey"] = pkey
-CONFIGS["profileKey"] = pkey
-CONFIGS["framelocations"] = {}
-CONFIGS["system"] = {
-	["cooldown"] = true,
-	["autoScale"] = true,
-	["multiMonitor"] = false,
-	["taintLog"] = false,
-	["stickyFrames"] = true,
-	["loginmessage"] = true,
-	["hideErrorFrame"] = true,
-	["threatbar"] = false,
-	["bubbles"] = true,
-	["comix"] = true,
-	["bigComix"] = true,
-	["questWatch"] = true,
-	["woot"] = true,
-	["pvpinterrupt"] = true,
-	["lookwhaticando"] = false,
-	["reactionChat"] = false,
-	["reactionEmote"] = false,
-	["sharingiscaring"] = false,
-	["arenadrink"] = true,
-	["stupidhat"] = true,
-	["totems"] = {
-		["enable"] = true,
-		["showBy"] = "VERTICAL",
-		["sortDirection"] = "ASCENDING",
-		["size"] = 40,
-		["spacing"] = 4
-	},
-}
-CONFIGS["media"] = {
-	["fonts"] = {
-		["default"] = "SVUI System Font",
-		["name"] = "SVUI Name Font",
-		["number"] = "SVUI Number Font",
-		["combat"] = "SVUI Combat Font",
-		["giant"] = "SVUI Action Font",
-		["size"] = 10,
-		["unicodeSize"] = 12,
-	},
-	["textures"] = {
-		["pattern"] 	 = "SVUI Backdrop 1",
-		["comic"] 		 = "SVUI Comic 1",
-		["unitlarge"] 	 = "SVUI Unit BG 3",
-		["unitsmall"] 	 = "SVUI Small BG 3"
-	},
-	["colors"] = {
-		["default"] 	 = {0.2, 0.2, 0.2, 1},
-		["special"] 	 = {0.37, 0.32, 0.29, 1},
-	},
-	["unitframes"] = {
-		["health"] 		 = {0.3, 0.5, 0.3},
-		["power"] 		 = {
-			["MANA"] 		 = {0.41, 0.85, 1},
-			["RAGE"] 		 = {1, 0.31, 0.31},
-			["FOCUS"] 		 = {1, 0.63, 0.27},
-			["ENERGY"] 		 = {0.85, 0.83, 0.25},
-			["RUNES"] 		 = {0.55, 0.57, 0.61},
-			["RUNIC_POWER"] = {0, 0.82, 1},
-			["FUEL"] 		 = {0, 0.75, 0.75}
-		},
-		["reaction"] 	 = {
-			[1] = {0.92, 0.15, 0.15},
-			[2] = {0.92, 0.15, 0.15},
-			[3] = {0.92, 0.15, 0.15},
-			[4] = {0.85, 0.85, 0.13},
-			[5] = {0.19, 0.85, 0.13},
-			[6] = {0.19, 0.85, 0.13},
-			[7] = {0.19, 0.85, 0.13},
-			[8] = {0.19, 0.85, 0.13},
-		},
-		["tapped"] 			 = {0.55, 0.57, 0.61},
-		["disconnected"] 	 = {0.84, 0.75, 0.65},
-		["casting"] 		 = {0.8, 0.8, 0},
-		["spark"] 			 = {1, 0.72, 0},
-		["interrupt"] 		 = {0.78, 0.25, 0.25},
-		["shield_bars"] 	 = {0.56, 0.4, 0.62},
-		["buff_bars"] 		 = {0.31, 0.31, 0.31},
-		["debuff_bars"] 	 = {0.8, 0.1, 0.1},
-		["predict"] 		 = {
-			["personal"] 		 = {0, 1, 0.5, 0.25},
-			["others"] 			 = {0, 1, 0, 0.25},
-			["absorbs"] 		 = {1, 1, 0, 0.25}
-		},
-		["spellcolor"] = {
-			[SpellName(2825)] = {0.98, 0.57, 0.11}, 	--Bloodlust
-			[SpellName(32182)] = {0.98, 0.57, 0.11}, --Heroism
-			[SpellName(80353)] = {0.98, 0.57, 0.11}, --Time Warp
-			[SpellName(90355)] = {0.98, 0.57, 0.11}, --Ancient Hysteria
-			[SpellName(84963)] = {0.98, 0.57, 0.11}, --Inquisition
-			[SpellName(86659)] = {0.98, 0.57, 0.11}, --Guardian of Ancient Kings
-		}
-	}
-}
-CONFIGS["filter"] = {
-	["CC"] = {},
-	["Shield"] = {},
-	["Player"] = {},
-	["Blocked"] = {},
-	["Allowed"] = {},
-	["Strict"] = {},
-	["Raid"] = {},
-}
-
---[[
-##########################################################
-CONSTRUCT FILTER DEFAULTS
-##########################################################
-]]--
-local CLASS_WATCH_INDEX = {
-	PRIEST = {
-		{-- Weakened Soul
-			["enabled"] = true,
-			["id"] = 6788,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Prayer of Mending
-			["enabled"] = true,
-			["id"] = 41635,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.2, ["g"] = 0.7, ["b"] = 0.2},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Renew
-			["enabled"] = true,
-			["id"] = 139,
-			["point"] = "BOTTOMLEFT",
-			["color"] = {["r"] = 0.4, ["g"] = 0.7, ["b"] = 0.2},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Power Word: Shield
-			["enabled"] = true,
-			["id"] = 17,
-			["point"] = "TOPLEFT",
-			["color"] = {["r"] = 0.81, ["g"] = 0.85, ["b"] = 0.1},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Power Word: Shield Power Insight
-			["enabled"] = true,
-			["id"] = 123258,
-			["point"] = "TOPLEFT",
-			["color"] = {["r"] = 0.81, ["g"] = 0.85, ["b"] = 0.1},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Power Infusion
-			["enabled"] = true,
-			["id"] = 10060,
-			["point"] = "RIGHT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Guardian Spirit
-			["enabled"] = true,
-			["id"] = 47788,
-			["point"] = "LEFT",
-			["color"] = {["r"] = 0.86, ["g"] = 0.44, ["b"] = 0},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Pain Suppression
-			["enabled"] = true,
-			["id"] = 33206,
-			["point"] = "LEFT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	DRUID = {
-		{-- Rejuvenation
-			["enabled"] = true,
-			["id"] = 774,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.8, ["g"] = 0.4, ["b"] = 0.8},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Regrowth
-			["enabled"] = true,
-			["id"] = 8936,
-			["point"] = "BOTTOMLEFT",
-			["color"] = {["r"] = 0.2, ["g"] = 0.8, ["b"] = 0.2},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Lifebloom
-			["enabled"] = true,
-			["id"] = 33763,
-			["point"] = "TOPLEFT",
-			["color"] = {["r"] = 0.4, ["g"] = 0.8, ["b"] = 0.2},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Wild Growth
-			["enabled"] = true,
-			["id"] = 48438,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.8, ["g"] = 0.4, ["b"] = 0},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	PALADIN = {
-		{-- Beacon of Light
-			["enabled"] = true,
-			["id"] = 53563,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.7, ["g"] = 0.3, ["b"] = 0.7},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Hand of Protection
-			["enabled"] = true,
-			["id"] = 1022,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.2, ["g"] = 0.2, ["b"] = 1},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Hand of Freedom
-			["enabled"] = true,
-			["id"] = 1044,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.45, ["b"] = 0},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Hand of Salvation
-			["enabled"] = true,
-			["id"] = 1038,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.93, ["g"] = 0.75, ["b"] = 0},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Hand of Sacrifice
-			["enabled"] = true,
-			["id"] = 6940,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.1, ["b"] = 0.1},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Hand of Purity
-			["enabled"] = true,
-			["id"] = 114039,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.64, ["g"] = 0.41, ["b"] = 0.72},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Sacred Shield
-			["enabled"] = true,
-			["id"] = 20925,
-			["point"] = "TOPLEFT",
-			["color"] = {["r"] = 0.93, ["g"] = 0.75, ["b"] = 0},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Eternal Flame
-			["enabled"] = true,
-			["id"] = 114163,
-			["point"] = "BOTTOMLEFT",
-			["color"] = {["r"] = 0.87, ["g"] = 0.7, ["b"] = 0.03},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	SHAMAN = {
-		{-- Riptide
-			["enabled"] = true,
-			["id"] = 61295,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.7, ["g"] = 0.3, ["b"] = 0.7},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Earth Shield
-			["enabled"] = true,
-			["id"] = 974,
-			["point"] = "BOTTOMLEFT",
-			["color"] = {["r"] = 0.2, ["g"] = 0.7, ["b"] = 0.2},
-			["anyUnit"] = true,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Earthliving
-			["enabled"] = true,
-			["id"] = 51945,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.7, ["g"] = 0.4, ["b"] = 0.4},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	MONK = {
-		{--Renewing Mist
-			["enabled"] = true,
-			["id"] = 119611,
-			["point"] = "TOPLEFT",
-			["color"] = {["r"] = 0.8, ["g"] = 0.4, ["b"] = 0.8},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Life Cocoon
-			["enabled"] = true,
-			["id"] = 116849,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.2, ["g"] = 0.8, ["b"] = 0.2},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Enveloping Mist
-			["enabled"] = true,
-			["id"] = 132120,
-			["point"] = "BOTTOMLEFT",
-			["color"] = {["r"] = 0.4, ["g"] = 0.8, ["b"] = 0.2},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Zen Sphere
-			["enabled"] = true,
-			["id"] = 124081,
-			["point"] = "BOTTOMRIGHT",
-			["color"] = {["r"] = 0.7, ["g"] = 0.4, ["b"] = 0},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	ROGUE = {
-		{-- Tricks of the Trade
-			["enabled"] = true,
-			["id"] = 57934,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	MAGE = {
-		{-- Ice Ward
-			["enabled"] = true,
-			["id"] = 111264,
-			["point"] = "TOPLEFT",
-			["color"] = {["r"] = 0.2, ["g"] = 0.2, ["b"] = 1},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	WARRIOR = {
-		{-- Vigilance
-			["enabled"] = true,
-			["id"] = 114030,
-			["point"] = "TOPLEFT",
-			["color"] = {["r"] = 0.2, ["g"] = 0.2, ["b"] = 1},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Intervene
-			["enabled"] = true,
-			["id"] = 3411,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-		{-- Safe Guard
-			["enabled"] = true,
-			["id"] = 114029,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-	DEATHKNIGHT = {
-		{-- Unholy Frenzy
-			["enabled"] = true,
-			["id"] = 49016,
-			["point"] = "TOPRIGHT",
-			["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
-			["anyUnit"] = false,
-			["onlyShowMissing"] = false,
-			['style'] = 'coloredIcon',
-			['displayText'] = false,
-			['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-			['textThreshold'] = -1,
-			['xOffset'] = 0,
-			['yOffset'] = 0
-		},
-	},
-}
-
-local PET_WATCH = {
-	{-- Frenzy
-		["enabled"] = true,
-		["id"] = 19615,
-		["point"] = "TOPLEFT",
-		["color"] = {["r"] = 0.89, ["g"] = 0.09, ["b"] = 0.05},
-		["anyUnit"] = true,
-		["onlyShowMissing"] = false,
-		['style'] = 'coloredIcon',
-		['displayText'] = false,
-		['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-		['textThreshold'] = -1,
-		['xOffset'] = 0,
-		['yOffset'] = 0
-	},
-	{-- Mend Pet
-		["enabled"] = true,
-		["id"] = 136,
-		["point"] = "TOPRIGHT",
-		["color"] = {["r"] = 0.2, ["g"] = 0.8, ["b"] = 0.2},
-		["anyUnit"] = true,
-		["onlyShowMissing"] = false,
-		['style'] = 'coloredIcon',
-		['displayText'] = false,
-		['textColor'] = {["r"] = 1, ["g"] = 1, ["b"] = 1},
-		['textThreshold'] = -1,
-		['xOffset'] = 0,
-		['yOffset'] = 0
-	},
-}
-
-local FilterIDs = {
-	["Blocked"] = [[36900,36901,36893,114216,97821,36032,132365,8733,57724,25771,57723,36032,58539,26013,6788,71041,41425,55711,8326,23445,24755,25163,80354,95809,95223,124275,124274,124273,117870,123981,15007,113942,89140]],
-
-	["Allowed"] = [[31821,2825,32182,80353,90355,47788,33206,116849,22812,1490,116202,123059,136431,137332,137375,144351,142863,142864,142865,143198]],
-
-	["Strict"] = [[123059,136431,137332,137375,144351,142863,142864,142865,143198]],
-
-	["CC"] = [[47476,91800,91807,91797,108194,115001,33786,2637,339,78675,22570,5211,9005,102359,99,127797,45334,102795,114238,113004,3355,1513,19503,34490,24394,64803,19386,117405,128405,50519,91644,90337,54706,4167,90327,56626,50245,50541,96201,96201,31661,118,55021,122,82691,118271,44572,33395,102051,20066,10326,853,105593,31935,105421,605,64044,8122,9484,15487,114404,88625,113792,87194,2094,1776,6770,1833,51722,1330,408,88611,115197,113953,51514,64695,63685,76780,118905,118345,710,6789,118699,5484,6358,30283,24259,115782,115268,118093,89766,137143,20511,7922,676,105771,107566,132168,107570,118895,18498,116706,117368,115078,122242,119392,119381,120086,116709,123407,140023,25046,20549,107079]],
-
-	["Shield"] = [[17,47515,45243,45438,115610,48797,48792,49039,87256,55233,50461,33206,47788,62618,47585,104773,110913,108359,22812,102342,106922,61336,19263,53480,1966,31224,74001,5277,45182,98007,30823,108271,1022,6940,114039,31821,498,642,86659,31850,118038,55694,97463,12975,114029,871,114030,120954,131523,122783,122278,115213,116849,20594]],
-
-	["Player"] = [[17,47515,45243,45438,45438,115610,110909,12051,12472,80353,12042,32612,110960,108839,111264,108843,48797,48792,49039,87256,49222,55233,50461,49016,51271,96268,33206,47788,62618,47585,6346,10060,114239,119032,27827,104773,110913,108359,113860,113861,113858,88448,22812,102342,106922,61336,117679,102543,102558,102560,16689,132158,106898,1850,106951,29166,52610,69369,112071,124974,19263,53480,51755,54216,34471,3045,3584,131894,90355,90361,31224,74001,5277,45182,51713,114018,2983,121471,11327,108212,57933,79140,13750,98007,30823,108271,16188,2825,79206,16191,8178,58875,108281,108271,16166,114896,1044,1022,1038,6940,114039,31821,498,642,86659,20925,31850,31884,53563,31842,54428,105809,85499,118038,55694,97463,12975,114029,871,114030,18499,1719,23920,114028,46924,3411,107574,120954,131523,122783,122278,115213,116849,125174,116841,20594,59545,20572,26297,68992]],
-
-	["Raid"] = [[116281,116784,116417,116942,116161,117708,118303,118048,118135,117878,117949,116835,116778,116525,122761,122760,122740,123812,123180,123474,122835,123081,122125,121885,121949,117436,118091,117519,122752,123011,116161,123121,119985,119086,119775,122151,138349,137371,136767,137641,137359,137972,136903,136753,137633,137731,133767,133768,136050,138569,134691,137440,137408,137360,135000,143436,143579,147383,146124,144851,144358,144774,147207,144215,143990,144330,143494,142990,143919,143766,143773,146589,143777,143385,143974,145183]]
-}
-
-local FilterOverrides = {
-	["45438"] = 5, ["48797"] = 5, ["87256"] = 4,
-	["33206"] = 3, ["47585"] = 5, ["22812"] = 2,
-	["102342"] = 2, ["19263"] = 5, ["5277"] = 5,
-	["1022"] = 5, ["31821"] = 3, ["498"] = 2,
-	["642"] = 5, ["86659"] = 4, ["31850"] = 4,
-	["118038"] = 5, ["114029"] = 2, ["871"] = 3,
-	["120954"] = 2, ["131523"] = 5
-}
-
-local function safename(id)
-	local n = GetSpellInfo(id)
-	if not n then
-		if type(id) == "string" then
-			n = id
-		else
-			SV:Debugger('|cffFF9900SVUI:|r Spell not found: (#ID) '..id)
-			n = "Voodoo Doll";
-		end
-	end
-	return n
-end
-
-for k, x in pairs(FilterIDs) do
-	local src = {};
-	for id in x:gmatch("([^,]+)") do
-		if(id) then
-			local saved
-			local n = safename(id);
-			local p = FilterOverrides[tostring(id)] or 0;
-			if k == "Strict" then
-				saved = {['enable'] = true, ['spellID'] = id, ['priority'] = p}
-			else
-				saved = {['enable'] = true, ['priority'] = p}
-			end
-			src[n] = saved
-		end
-	end
-	CONFIGS.filter[k] = src
-end
-
-CONFIGS.filter.BuffWatch = CLASS_WATCH_INDEX[SV.class] or {}
-CONFIGS.filter.PetBuffWatch = PET_WATCH
---[[
-##########################################################
-CREATE DB
-##########################################################
-]]--
-local function tablecopy(d, s)
-    if type(s) ~= "table" then return end
-    if type(d) == "table" then
-        for k, v in pairs(s) do
-            if type(v) == "table" then
-                if not rawget(d, k) then rawset(d, k, {}) end
-                tablecopy(d[k], v)
-            else
-                if rawget(d, k) == nil then
-                    rawset(d, k, v)
-                end
-            end
-        end
-    end
-end
-
-local function importdata(s, d)
-    if type(d) ~= "table" then d = {} end
-    if type(s) == "table" then
-        for k,v in pairs(s) do
-            if type(v) == "table" then
-                v = importdata(v, d[k])
-            end
-            d[k] = v
-        end
-    end
-    return d
-end
-
-local function setdefaults(t, key, sub, sub2)
-    local sv = rawget(t, "profile")
-    local src = rawget(t, "defaults")
-    local savedProfile = sv[key]
-    if(sub2 and sv[key] and sv[key][sub]) then
-        savedProfile = sv[key][sub][sub2]
-    elseif(sub and sv[key]) then
-        savedProfile = sv[key][sub]
-    else
-        savedProfile = sv[key]
-    end
-    if(savedProfile) then
-        for k,v in pairs(savedProfile) do
-            savedProfile[k] = nil
-        end
-    else
-        sv[key] = {}
-    end
-    tablecopy(sv[key], src[key])
-end
-
-local function getdefaults(t, key)
-    local src = rawget(t, "defaults")
-    return src[key] or {}
-end
-
-local function removedefaults(db, src, nometa)
-    if(type(src) ~= "table") then return end
-    if(not nometa) then
-        setmetatable(db, nil)
-    end
-    for k,v in pairs(src) do
-        if type(v) == "table" and type(db[k]) == "table" then
-            removedefaults(db[k], v, nometa)
-            if next(db[k]) == nil then
-                db[k] = nil
-            end
-        else
-            if db[k] == v then
-                db[k] = nil
-            end
-        end
-    end
-end
-
-local function resetprofile(t)
-    local sv = rawget(t, "profile")
-    local src = rawget(t, "defaults")
-    for k,v in pairs(sv) do
-        sv[k] = nil
-    end
-end
-
-local function importprofile(t, key)
-    local sv = rawget(t, "profile")
-    local dv = rawget(t, "defaults")
-    local globals = SV.public
-    local src = globals.profiles[key]
-    if(not src) then return end
-    for k,v in pairs(sv) do
-        sv[k] = nil
-    end
-    tablecopy(sv, src)
-    sv.copyKey = key
-    ReloadUI()
-end
-
-local function importprompt(t, key)
-    SV.SystemAlert["COPY_PROFILE_PROMPT"].text = L["Are you sure you want to copy the profile '" .. key .. "'?"]
-    SV.SystemAlert["COPY_PROFILE_PROMPT"].OnAccept = function() importprofile(t, key) end
-    SV:StaticPopup_Show("COPY_PROFILE_PROMPT")
-end
-
-local function exportprofile(t, key)
-    local sv = rawget(t, "profile")
-    local dv = rawget(t, "defaults")
-    local globals = SV.public
-    if(not globals.profiles[key]) then globals.profiles[key] = {} end
-    local saved = globals.profiles[key]
-    tablecopy(saved, sv)
-    for k,v in pairs(saved) do
-        removedefaults(saved[k], dv[k])
-    end
-    globals.profileKeys[key] = key
-    SV:SavedPopup()
-end
-
-local function removeprofile(t, key)
-    local globals = SV.public
-    if(globals.profiles[key]) then globals.profiles[key] = nil end
-    if(globals.profileKeys[key]) then globals.profileKeys[key] = nil end
-    collectgarbage("collect")
-end
-
-local function insertdata(t, src)
-    local sv = rawget(t, "profile")
-    local dv = rawget(t, "defaults")
-    for k,v in pairs(src) do
-        if(not sv[k]) then sv[k] = {} end
-        tablecopy(sv[k], src[k])
-        if(not dv[k]) then dv[k] = {} end
-        tablecopy(dv[k], src[k])
-
-        rawset(t, k, sv[k])
-    end
-end
-
-local function initializedata(t)
-    local sv = rawget(t, "profile")
-    if(not sv.copyKey or (sv.copyKey and type(sv.copyKey) ~= "string")) then
-        sv.copyKey = pkey
-    end
-end
-
-local function SanitizeDatabase()
-    if(not SV.db) then return end
-    local db = SV.db
-    local src = SV.private
-    for k,v in pairs(db) do
-        if(src[k]) then
-            removedefaults(db[k], src[k])
-        end
-    end
-end
-
-local DataBase_OnEvent = function(self, event)
-    if event == "PLAYER_LOGOUT" then
-        SanitizeDatabase()
-    elseif(event == "ACTIVE_TALENT_GROUP_CHANGED") then
-    	SV:UpdateDatabase()
-    end
-end
-
-local metadatabase = {
-    __index = function(t, k)
-        if(not k or k == "") then return end
-        local sv = rawget(t, "profile")
-        local dv = rawget(t, "defaults")
-        local src = dv and dv[k]
-        if(not sv[k]) then sv[k] = {} end
-        if(src) then
-            tablecopy(sv[k], src)
-        end
-        rawset(t, k, sv[k])
-        return rawget(t, k)
-    end,
-}
-
-local METAPROFILE = function(sv)
-	local key 		= 1
-	if(sv.SAFEDATA.dualSpecEnabled) then
-		key = GetSpecialization() or 1
-		databaseListener:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
-	end
-
-    local db        = setmetatable({}, metadatabase)
-
-    db.profile 	    = sv.STORED[key]
-    db.protected    = sv.SAFEDATA
-    db.defaults     = SV.private
-    db.Init         = initializedata
-    db.Append       = insertdata
-    db.Reset        = resetprofile
-    db.SetDefault   = setdefaults
-    db.GetDefault   = getdefaults
-    db.TalentSwap 	= changespec
-    db.ToggleSpec   = togglespec
-    db.Import       = importprompt
-    db.Export       = exportprofile
-    db.Remove       = removeprofile
-
-    return db
-end
-
-function SV:AppendDefaults(newIndex, newData)
-    self.private[newIndex] = newData
-end
-
-function SV:GetProfiles()
-    return self.public.profileKeys or {}
-end
-
-function SV:CheckProfiles()
-    local hasProfile = false
-    local list = self.public.profileKeys or {}
-    for key,_ in pairs(list) do
-        hasProfile = true
-    end
-    return hasProfile
-end
-
-function SV:UpdateDatabase(partial)
-	local sv = _G["SVUI_Profile"]
-    twipe(self.db)
-
-    self.db = METAPROFILE(sv)
-    self.db:Init()
-    self.db.profileKey = pkey
-
-    --print("Update db")
-    if(not partial) then
-    	Registry:UpdateAll()
-    end
-end
-
-function SV:ToggleSpecSwap(value)
-	if(value) then
-		databaseListener:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
-		self:UpdateDatabase()
-	else
-		databaseListener:UnregisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
-    end
-end
-
-function SV:TableSplice(targetTable, mergeTable)
-    if type(targetTable) ~= "table" then targetTable = {} end
-
-    if type(mergeTable) == 'table' then
-        for key,val in pairs(mergeTable) do
-            if type(val) == "table" then
-                val = self:TableSplice(targetTable[key], val)
-            end
-            targetTable[key] = val
-        end
-    end
-    return targetTable
-end
-
-function SV:SetDatabaseObjects(init)
-    if(init) then
-        self.db = tcopy(self.private, true)
-    else
-        self.public = self:TableSplice(SVUI_Global, self.public)
-        self.public.profileKeys = {}
-        for k,v in pairs(self.public.profiles) do
-            self.public.profileKeys[k] = k
-        end
-
-        local sv = _G["SVUI_Profile"]
-
-        twipe(self.db)
-
-        --print("Init db")
-        self.db = METAPROFILE(sv)
-        self.db:Init()
-        self.db.profileKey = pkey
-
-        databaseListener:RegisterEvent("PLAYER_LOGOUT")
-        databaseListener:SetScript("OnEvent", DataBase_OnEvent)
-    end
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/load.lua b/Interface/AddOns/SVUI/system/load.lua
index 2fec16b..c9c5db0 100644
--- a/Interface/AddOns/SVUI/system/load.lua
+++ b/Interface/AddOns/SVUI/system/load.lua
@@ -35,9 +35,9 @@ local tcopy = table.copy;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0")
+local SV = select(2, ...)
+local SVLib = LibSuperVillain
+local L = SV.L
 --[[
 ##########################################################
 LOCALS
@@ -53,52 +53,32 @@ local playerClass = select(2,UnitClass("player"));

 local function DeleteOldSavedVars()
 	--[[ BEGIN DEPRECATED ]]--
-    if SVUI_DATA then SVUI_DATA = nil end
-    if SVUI_SAFE_DATA then SVUI_SAFE_DATA = nil end
-    if SVUI_TRACKER then SVUI_TRACKER = nil end
-    if SVUI_ENEMIES then SVUI_ENEMIES = nil end
-    if SVUI_JOURNAL then SVUI_JOURNAL = nil end
-    if SVUI_CHARACTER_LOG then SVUI_CHARACTER_LOG = nil end
-    if SVUI_MOVED_FRAMES then SVUI_MOVED_FRAMES = nil end
-    if SVUI_SystemData then SVUI_SystemData = nil end
-    if SVUI_ProfileData then SVUI_ProfileData = nil end
-    if SVUI_Filters then SVUI_Filters = nil end
-    if SVUI_AuraFilters then SVUI_AuraFilters = nil end
-    if SVUI_AuraWatch then SVUI_AuraWatch = nil end
-    if SVUI_Cache["Mentalo"]["Blizzard"] then SVUI_Cache["Mentalo"]["Blizzard"] = nil end
-    if SVUI_Cache["Mentalo"]["UI"] then SVUI_Cache["Mentalo"]["UI"] = nil end
-    if(SVUI_Profile.SAFEDATA.install_complete) then SVUI_Profile.SAFEDATA.install_complete = nil end
+
     --[[ END DEPRECATED ]]--
 end

 function SV:VersionCheck()
 	local minimumVersion = 4.06;
-	local installedVersion = SVUI_Profile.SAFEDATA.install_version
+	local installedVersion = SVLib:GetSafeData("install_version");
 	if(installedVersion) then
 		if(type(installedVersion) == "string") then
-			installedVersion = tonumber(SVUI_Profile.SAFEDATA.install_version)
+			installedVersion = tonumber(installedVersion)
 		end
 		if(type(installedVersion) == "number" and installedVersion < minimumVersion) then
-			DeleteOldSavedVars()
+			--DeleteOldSavedVars()  -- No current deprecated entries to remove
 			self.Setup:Install(true)
 		end
 	else
-		DeleteOldSavedVars()
 		self.Setup:Install(true)
 	end
 end

 function SV:RefreshEverything(bypass)
 	self:RefreshAllSystemMedia();
-
-	SV.UIParent:Hide();
-
-	self:SetSVMovablesPositions();
-	Registry:Update('SVUnit');
-	Registry:UpdateAll();
-
-	SV.UIParent:Show();
-
+	self.UIParent:Hide();
+	self.Mentalo:SetPositions();
+	SVLib:RefreshAll();
+	self.UIParent:Show();
 	if not bypass then
 		self:VersionCheck()
 	end
@@ -108,30 +88,11 @@ end
 SVUI LOAD PROCESS
 ##########################################################
 ]]--
-local function PrepareStorage()
-	if(not SVUI_Profile) then return end
-	SVUI_Profile.STORED = {}
-	local old = SVUI_Profile.SAFEDATA
-	local media = old.mediastyle or ""
-	local bars = old.barstyle or ""
-	local units = old.unitstyle or ""
-	local groups = old.groupstyle or ""
-	local auras = old.aurastyle or ""
-	local spec = GetSpecialization() or 1
-	SVUI_Profile.STORED[1] = tcopy(SVUI_Profile, true)
-	SVUI_Profile.STORED[1].LAYOUT = {
-		mediastyle = media,
-		barstyle = bars,
-		unitstyle = units,
-		groupstyle = groups,
-		aurastyle = auras
-	}
-	SVUI_Profile.SAFEDATA.mediastyle = nil
-	SVUI_Profile.SAFEDATA.barstyle = nil
-	SVUI_Profile.SAFEDATA.unitstyle = nil
-	SVUI_Profile.SAFEDATA.groupstyle = nil
-	SVUI_Profile.SAFEDATA.aurastyle = nil
-	SVUI_Profile.SAFEDATA.dualSpecEnabled = false
+function SV:ReLoad()
+	self.Timers:ClearAllTimers();
+	self:RefreshAllSystemMedia();
+	self.Mentalo:SetPositions();
+	self:AddonMessage("All user settings reloaded");
 end

 function SV:Load()
@@ -140,51 +101,17 @@ function SV:Load()
 	local rez = GetCVar("gxResolution");
 	local gxHeight = tonumber(match(rez,"%d+x(%d+)"));
 	local gxWidth = tonumber(match(rez,"(%d+)x%d+"));
-
-	if not SVUI_Global then SVUI_Global = {} end
-    if not SVUI_Global["profiles"] then SVUI_Global["profiles"] = {} end
-    if SVUI_Global["gold"] then SVUI_Global["gold"] = nil end
-    if SVUI_Global["profileKeys"] then SVUI_Global["profileKeys"] = nil end
-
-    if not SVUI_Profile then SVUI_Profile = {} end
-    if not SVUI_Profile.SAFEDATA then SVUI_Profile.SAFEDATA = {dualSpecEnabled = false} end
-    if not SVUI_Profile.STORED then PrepareStorage() end

-    if not SVUI_Profile.STORED[2] then
-    	SVUI_Profile.STORED[2] = {}
-	    SVUI_Profile.STORED[2].LAYOUT = SVUI_Profile.STORED[1].LAYOUT
-	end
-
-	if not SVUI_Profile.STORED[3] then
-		SVUI_Profile.STORED[3] = {}
-	    SVUI_Profile.STORED[3].LAYOUT = SVUI_Profile.STORED[1].LAYOUT
-	end
+    SVLib:Initialize()

-	if playerClass == "DRUID" and not SVUI_Profile.STORED[4] then
-		SVUI_Profile.STORED[4] = {}
-	    SVUI_Profile.STORED[4].LAYOUT = SVUI_Profile.STORED[1].LAYOUT
-	end
-
-    for k,v in pairs(SVUI_Profile) do
-    	if(k ~= "STORED" and k ~= "SAFEDATA") then
-    		SVUI_Profile[k] = nil
-    	end
-    end
-
-    if not SVUI_Cache then SVUI_Cache = {} end
-    if not SVUI_Cache["Dock"] then SVUI_Cache["Dock"] = {} end
-    if not SVUI_Cache["Mentalo"] then SVUI_Cache["Mentalo"] = {} end
-    if not SVUI_Cache["Bindings"] then SVUI_Cache["Bindings"] = {} end
-    if(not SVUI_Cache["screenheight"] or (SVUI_Cache["screenheight"] and type(SVUI_Cache["screenheight"]) ~= "number")) then
-    	SVUI_Cache["screenheight"] = gxHeight
+    self.DisplaySettings = SVLib:NewGlobal("Display")
+    if(not self.DisplaySettings.screenheight or (self.DisplaySettings.screenheight and type(self.DisplaySettings.screenheight) ~= "number")) then
+    	self.DisplaySettings.screenheight = gxHeight
     end
-    if(not SVUI_Cache["screenwidth"] or (SVUI_Cache["screenwidth"] and type(SVUI_Cache["screenwidth"]) ~= "number")) then
-    	SVUI_Cache["screenwidth"] = gxWidth
+    if(not self.DisplaySettings.screenwidth or (self.DisplaySettings.screenwidth and type(self.DisplaySettings.screenwidth) ~= "number")) then
+    	self.DisplaySettings.screenwidth = gxWidth
     end

-    self:SetDatabaseObjects(true)
-    Registry:FindAddons()
-
 	self:ScreenCalibration();
 	self:RefreshSystemFonts();
 	self:LoadSystemAlerts();
@@ -194,14 +121,12 @@ function SV:Load()
 end

 function SV:Launch()
-	self:SetDatabaseObjects();
+	SVLib:Launch();
+
 	self:ScreenCalibration("PLAYER_LOGIN");
-	Registry:LoadRegisteredAddons();
-	self:UpdateDatabase(true);
-	Registry:LoadPackages();
 	self:DefinePlayerRole();
-	self:LoadMovables();
-	self:SetSVMovablesPositions();
+
+	self.Mentalo:Initialize()

 	self:VersionCheck()

@@ -209,29 +134,24 @@ function SV:Launch()

 	NewHook("StaticPopup_Show", self.StaticPopup_Show)

-	self.UIParent:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED");
-	self.UIParent:RegisterEvent("PLAYER_TALENT_UPDATE");
-	self.UIParent:RegisterEvent("CHARACTER_POINTS_CHANGED");
-	self.UIParent:RegisterEvent("UNIT_INVENTORY_CHANGED");
-	self.UIParent:RegisterEvent("UPDATE_BONUS_ACTIONBAR");
-	self.UIParent:RegisterEvent("UI_SCALE_CHANGED");
 	self.UIParent:RegisterEvent("PLAYER_ENTERING_WORLD");
+	self.UIParent:RegisterEvent("UI_SCALE_CHANGED");
 	self.UIParent:RegisterEvent("PET_BATTLE_CLOSE");
 	self.UIParent:RegisterEvent("PET_BATTLE_OPENING_START");
 	self.UIParent:RegisterEvent("ADDON_ACTION_BLOCKED");
 	self.UIParent:RegisterEvent("ADDON_ACTION_FORBIDDEN");
-	self.UIParent:RegisterEvent("SPELLS_CHANGED");
+	self.UIParent:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED");
+	self.UIParent:RegisterEvent("PLAYER_TALENT_UPDATE");
+	self.UIParent:RegisterEvent("CHARACTER_POINTS_CHANGED");
+	self.UIParent:RegisterEvent("UNIT_INVENTORY_CHANGED");
+	self.UIParent:RegisterEvent("UPDATE_BONUS_ACTIONBAR");

-	Registry:Update("SVMap");
-	Registry:Update("SVUnit", true);
-	collectgarbage("collect")
+	SVLib:RefreshModule("SVMap");

-	_G["SVUI_Mentalo"]:SetFixedPanelTemplate("Component")
-	_G["SVUI_Mentalo"]:SetPanelColor("yellow")
-	_G["SVUI_MentaloPrecision"]:SetPanelTemplate("Transparent")
+	collectgarbage("collect")

-	if self.db.system.loginmessage then
-		local logMsg = (L["LOGIN_MSG"]):format("|cffFFFF1A", "|cffAA78FF", self.___version)
+	if self.db.general.loginmessage then
+		local logMsg = (L["LOGIN_MSG"]):format("|cffFFFF1A", "|cffAA78FF", self.Version)
 		self:AddonMessage(logMsg);
 	end

@@ -242,9 +162,6 @@ end
 EVENT HANDLERS
 ##########################################################
 ]]--
-local PlayerClass = select(2,UnitClass("player"));
-local droodSpell1, droodSpell2 = GetSpellInfo(110309), GetSpellInfo(4987);
-
 local SVUISystem_OnEvent = function(self, event, arg, ...)
 	if(event == "ADDON_LOADED" and arg == "SVUI") then
 		if(not SV.AddonLoaded) then
@@ -276,15 +193,8 @@ local SVUISystem_OnEvent = function(self, event, arg, ...)
 			SV.Timers:RemoveLoop(SV.BGTimer)
 			SV.BGTimer = nil
 		end
-	elseif(event == "SPELLS_CHANGED") then
-		if (PlayerClass ~= "DRUID") then
-			self:UnregisterEvent("SPELLS_CHANGED")
-			return
-		end
-		if GetSpellInfo(droodSpell1) == droodSpell2 then
-			SV.Dispellable["Disease"] = true
-		elseif(SV.Dispellable["Disease"]) then
-			SV.Dispellable["Disease"] = nil
+		if(not InCombatLockdown()) then
+			collectgarbage("collect")
 		end
 	elseif(event == "PET_BATTLE_CLOSE") then
 		SV:PushDisplayAudit()
@@ -294,16 +204,16 @@ local SVUISystem_OnEvent = function(self, event, arg, ...)
 		SV:TaintHandler(arg, ...)
 	elseif(event == "PLAYER_REGEN_DISABLED") then
 		local forceClosed = false;
-		if IsAddOnLoaded("SVUI_ConfigOMatic") then
+		if IsAddOnLoaded(SV.ConfigID) then
 			local aceConfig=LibStub("AceConfigDialog-3.0")
-			if aceConfig.OpenFrames["SVUI"] then
+			if aceConfig.OpenFrames[SV.NameID] then
 				self:RegisterEvent('PLAYER_REGEN_ENABLED')
-				aceConfig:Close("SVUI")
+				aceConfig:Close(SV.NameID)
 				forceClosed = true
 			end
 		end
-		if SV.MentaloFrames then
-			for frame,_ in pairs(SV.MentaloFrames) do
+		if SV.Mentalo.Frames then
+			for frame,_ in pairs(SV.Mentalo.Frames) do
 				if _G[frame] and _G[frame]:IsShown() then
 					forceClosed = true;
 					_G[frame]:Hide()
@@ -326,4 +236,20 @@ end

 SV.UIParent:RegisterEvent("ADDON_LOADED")
 SV.UIParent:RegisterEvent("PLAYER_LOGIN")
-SV.UIParent:SetScript("OnEvent", SVUISystem_OnEvent)
\ No newline at end of file
+SV.UIParent:SetScript("OnEvent", SVUISystem_OnEvent)
+--[[
+##########################################################
+THE CLEANING LADY
+##########################################################
+]]--
+local LemonPledge = 0;
+local Consuela = CreateFrame("Frame")
+Consuela:RegisterAllEvents()
+Consuela:SetScript("OnEvent", function(self, event)
+	LemonPledge = LemonPledge  +  1
+	if(InCombatLockdown()) then return end;
+	if(LemonPledge > 10000) then
+		collectgarbage("collect");
+		LemonPledge = 0;
+	end
+end)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/media.lua b/Interface/AddOns/SVUI/system/media.lua
index c51778a..9a620c8 100644
--- a/Interface/AddOns/SVUI/system/media.lua
+++ b/Interface/AddOns/SVUI/system/media.lua
@@ -37,9 +37,9 @@ local twipe, tsort = table.wipe, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0")
+local SV = select(2, ...)
+local SVLib = LibSuperVillain
+local L = SV.L
 local LSM = LibStub("LibSharedMedia-3.0")
 --[[
 ##########################################################
@@ -223,8 +223,6 @@ function SV:HexColor(arg1,arg2,arg3)
         local t
         if(self.Media or self.db.media) then
             t = self.Media.color[arg1] or self.db.media.unitframes[arg1]
-        else
-            t = self.private.media.colors[arg1] or self.private.media.unitframes[arg1]
         end
         if t then
             r,g,b = t[1],t[2],t[3]
@@ -258,7 +256,7 @@ function SV:MediaUpdate()

   self.Media.gradient.special = {"VERTICAL",r1,g1,b1,r2,g2,b2}

-  Registry:RunCallbacks()
+  SVLib:RunCallbacks()
 end

 function SV:RefreshSystemFonts()
diff --git a/Interface/AddOns/SVUI/system/mentalo.lua b/Interface/AddOns/SVUI/system/mentalo.lua
index ec0a078..ca44714 100644
--- a/Interface/AddOns/SVUI/system/mentalo.lua
+++ b/Interface/AddOns/SVUI/system/mentalo.lua
@@ -33,10 +33,18 @@ local parsefloat = math.parsefloat;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
-SV.MentaloFrames = {}
+local SV = select(2, ...)
+local L = SV.L;
+
+local Mentalo = {}
+
+Mentalo.Frames = {}
+
+local MentaloUpdateHandler = CreateFrame("Frame", nil)
+
 local Sticky = {};
+Sticky.Frames = {};
+Sticky.Frames[1] = SV.UIParent;
 Sticky.scripts = Sticky.scripts or {}
 Sticky.rangeX = 15
 Sticky.rangeY = 15
@@ -124,7 +132,7 @@ local function SnapStickyFrame(frameA, frameB, left, top, right, bottom)
 	end
 end

-local function GetStickyUpdate(frame, frameList, xoffset, yoffset, left, top, right, bottom)
+function Sticky:GetStickyUpdate(frame, xoffset, yoffset, left, top, right, bottom)
 	return function()
 		local x, y = GetCursorPosition()
 		local s = frame:GetEffectiveScale()
@@ -132,12 +140,12 @@ local function GetStickyUpdate(frame, frameList, xoffset, yoffset, left, top, ri
 		x, y = x / s, y / s
 		frame:ClearAllPoints()
 		frame:SetPoint("CENTER", UIParent, "BOTTOMLEFT", x + xoffset, y + yoffset)
-		Sticky.sticky[frame] = nil
-		for i = 1, #frameList do
-			local v = frameList[i]
-			if frame  ~= v and frame  ~= v:GetParent() and not IsShiftKeyDown() and v:IsVisible() then
+		self.sticky[frame] = nil
+		for i = 1, #Sticky.Frames do
+			local v = Sticky.Frames[i]
+			if(frame ~= v and frame ~= v:GetParent() and not IsShiftKeyDown() and v:IsVisible()) then
 				if SnapStickyFrame(frame, v, left, top, right, bottom) then
-					Sticky.sticky[frame] = v
+					self.sticky[frame] = v
 					break
 				end
 			end
@@ -145,14 +153,14 @@ local function GetStickyUpdate(frame, frameList, xoffset, yoffset, left, top, ri
 	end
 end

-function Sticky:StartMoving(frame, frameList, left, top, right, bottom)
+function Sticky:StartMoving(frame, left, top, right, bottom)
 	local x, y = GetCursorPosition()
 	local aX, aY = frame:GetCenter()
 	local aS = frame:GetEffectiveScale()
 	aX, aY = aX * aS, aY * aS
 	local xoffset, yoffset = (aX - x), (aY - y)
 	self.scripts[frame] = frame:GetScript("OnUpdate")
-	frame:SetScript("OnUpdate", GetStickyUpdate(frame, frameList, xoffset, yoffset, left, top, right, bottom))
+	frame:SetScript("OnUpdate", Sticky.GetStickyUpdate(Sticky, frame, xoffset, yoffset, left, top, right, bottom))
 end

 function Sticky:StopMoving(frame)
@@ -171,84 +179,7 @@ end
 LOCAL VARS
 ##########################################################
 ]]--
-local CurrentFrameTarget = false;
-local UpdateFrameTarget = false;
-local userHolding = false;
-local HandledFrames = {};
-local DraggableFrames = {
-	"AchievementFrame",
-	"AuctionFrame",
-	"ArchaeologyFrame",
-	"BattlefieldMinimap",
-	"BarberShopFrame",
-	"BlackMarketFrame",
-	"CalendarFrame",
-	"CharacterFrame",
-	"ClassTrainerFrame",
-	"DressUpFrame",
-	"EncounterJournal",
-	"FriendsFrame",
-	"GameMenuFrame",
-	"GMSurveyFrame",
-	"GossipFrame",
-	"GuildFrame",
-	"GuildBankFrame",
-	"GuildRegistrarFrame",
-	"HelpFrame",
-	"InterfaceOptionsFrame",
-	"ItemUpgradeFrame",
-	"KeyBindingFrame",
-	"LFGDungeonReadyPopup",
-	"MacOptionsFrame",
-	"MacroFrame",
-	"MailFrame",
-	"MerchantFrame",
-	"PlayerTalentFrame",
-	"PetJournalParent",
-	"PVEFrame",
-	"PVPFrame",
-	"QuestFrame",
-	"QuestLogFrame",
-	"RaidBrowserFrame",
-	"ReadyCheckFrame",
-	"ReforgingFrame",
-	"ReportCheatingDialog",
-	"ReportPlayerNameDialog",
-	"RolePollPopup",
-	"ScrollOfResurrectionSelectionFrame",
-	"SpellBookFrame",
-	"TabardFrame",
-	"TaxiFrame",
-	"TimeManagerFrame",
-	"TradeSkillFrame",
-	"TradeFrame",
-	"TransmorgifyFrame",
-	"TutorialFrame",
-	"VideoOptionsFrame",
-	"VoidStorageFrame",
-	--"WorldStateAlwaysUpFrame"
-};
--- local MentaloUIFrames = {
--- 	"ArcheologyDigsiteProgressBar",
--- };
-local theHand = CreateFrame("Frame", "SVUI_HandOfMentalo", SV.UIParent)
-theHand:SetFrameStrata("DIALOG")
-theHand:SetFrameLevel(99)
-theHand:SetClampedToScreen(true)
-theHand:SetSize(128,128)
-theHand:SetPoint("CENTER")
-theHand.bg = theHand:CreateTexture(nil, "OVERLAY")
-theHand.bg:SetAllPoints(theHand)
-theHand.bg:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-HAND-OFF]])
-theHand.energy = theHand:CreateTexture(nil, "OVERLAY")
-theHand.energy:SetAllPoints(theHand)
-theHand.energy:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-ENERGY]])
-SV.Animate:Orbit(theHand.energy, 10)
-theHand.flash = theHand.energy.anim;
-theHand.energy:Hide()
-theHand.elapsedTime = 0;
-theHand.flash:Stop()
-theHand:Hide()
+local CurrentFrameTarget, UpdateFrameTarget;
 --[[
 ##########################################################
 LOCAL FUNCTIONS
@@ -286,12 +217,105 @@ local function Pinpoint(parent)
         result = "CENTER"
     end
     return result
-end
+end
+
+local function CurrentPosition(frame)
+	if not frame then return end
+	local anchor1, parent, anchor2, x, y = frame:GetPoint()
+	local parentName
+	if not parent then
+		parentName = "SVUIParent"
+	elseif not parent:GetName() then
+		parentName = "SVUI_Player"
+	else
+		parentName = parent:GetName()
+	end
+	return ("%s\031%s\031%s\031%d\031%d"):format(anchor1, parentName, anchor2, parsefloat(x), parsefloat(y))
+end
+
+local function GrabUsableRegions(frame)
+	local parent = frame or SV.UIParent
+	local right = parent:GetRight()
+	local top = parent:GetTop()
+	local center = parent:GetCenter()
+	return right, top, center
+end
+
+local function CalculateOffsets(frame)
+	if(not CurrentFrameTarget) then return end
+	local right, top, center = GrabUsableRegions()
+	local xOffset, yOffset = CurrentFrameTarget:GetCenter()
+	local screenLeft = (right * 0.33);
+	local screenRight = (right * 0.66);
+	local topMedian = (top * 0.5);
+	local anchor, a1, a2;
+
+	if(yOffset >= (top * 0.5)) then
+		a1 = "TOP"
+		yOffset = -(top - CurrentFrameTarget:GetTop())
+	else
+		a1 = "BOTTOM"
+		yOffset = CurrentFrameTarget:GetBottom()
+	end
+
+	if xOffset >= screenRight then
+		a2 = "RIGHT"
+		xOffset = (CurrentFrameTarget:GetRight() - right)
+	elseif xOffset <= screenLeft then
+		a2 = "LEFT"
+		xOffset = CurrentFrameTarget:GetLeft()
+	else
+		a2 = ""
+		xOffset = (xOffset - center)
+	end
+
+	xOffset = parsefloat(xOffset, 0)
+	yOffset = parsefloat(yOffset, 0)
+	anchor = ("%s%s"):format(a1,a2)
+
+	return xOffset, yOffset, anchor
+end

-local function TheHand_SetPos(frame)
-	theHand:SetPoint("CENTER", frame, "TOP", 0, 0)
+local function ResetAllAlphas()
+	for entry,_ in pairs(Mentalo.Frames) do
+		local frame = _G[entry]
+		if(frame) then
+			frame:SetAlpha(0.4)
+		end
+	end
 end

+--[[
+ /$$$$$$$$/$$   /$$ /$$$$$$$$       /$$   /$$  /$$$$$$  /$$   /$$ /$$$$$$$
+|__  $$__/ $$  | $$| $$_____/      | $$  | $$ /$$__  $$| $$$ | $$| $$__  $$
+   | $$  | $$  | $$| $$            | $$  | $$| $$  \ $$| $$$$| $$| $$  \ $$
+   | $$  | $$$$$$$$| $$$$$         | $$$$$$$$| $$$$$$$$| $$ $$ $$| $$  | $$
+   | $$  | $$__  $$| $$__/         | $$__  $$| $$__  $$| $$  $$$$| $$  | $$
+   | $$  | $$  | $$| $$            | $$  | $$| $$  | $$| $$\  $$$| $$  | $$
+   | $$  | $$  | $$| $$$$$$$$      | $$  | $$| $$  | $$| $$ \  $$| $$$$$$$/
+   |__/  |__/  |__/|________/      |__/  |__/|__/  |__/|__/  \__/|_______/
+--]]
+
+local TheHand = CreateFrame("Frame", "SVUI_HandOfMentalo", SV.UIParent)
+TheHand:SetFrameStrata("DIALOG")
+TheHand:SetFrameLevel(99)
+TheHand:SetClampedToScreen(true)
+TheHand:SetSize(128,128)
+TheHand:SetPoint("CENTER")
+TheHand.bg = TheHand:CreateTexture(nil, "OVERLAY")
+TheHand.bg:SetAllPoints(TheHand)
+TheHand.bg:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-HAND-OFF]])
+TheHand.energy = TheHand:CreateTexture(nil, "OVERLAY")
+TheHand.energy:SetAllPoints(TheHand)
+TheHand.energy:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-ENERGY]])
+SV.Animate:Orbit(TheHand.energy, 10)
+TheHand.flash = TheHand.energy.anim;
+TheHand.energy:Hide()
+TheHand.elapsedTime = 0;
+TheHand.flash:Stop()
+TheHand:Hide()
+TheHand.UserHeld = false;
+
 local TheHand_OnUpdate = function(self, elapsed)
 	self.elapsedTime = self.elapsedTime  +  elapsed
 	if self.elapsedTime > 0.1 then
@@ -302,378 +326,367 @@ local TheHand_OnUpdate = function(self, elapsed)
 	end
 end

-local function EnableTheHand()
-	theHand:Show()
-	theHand.bg:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-HAND-ON]])
-	theHand.energy:Show()
-	theHand.flash:Play()
-	theHand:SetScript("OnUpdate", TheHand_OnUpdate)
+function TheHand:Enable()
+	self:Show()
+	self.bg:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-HAND-ON]])
+	self.energy:Show()
+	self.flash:Play()
+	self:SetScript("OnUpdate", TheHand_OnUpdate)
+end
+
+function TheHand:Disable()
+	self.flash:Stop()
+	self.energy:Hide()
+	self.bg:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-HAND-OFF]])
+	self:SetScript("OnUpdate", nil)
+	self.elapsedTime = 0
+	self:Hide()
+end
+--[[
+##########################################################
+HANDLERS
+##########################################################
+]]--
+local Movable_OnMouseUp = function(self)
+	CurrentFrameTarget = self;
+	local xOffset, yOffset, anchor = CalculateOffsets()
+
+	SVUI_MentaloPrecisionSetX.CurrentValue = xOffset;
+	SVUI_MentaloPrecisionSetX:SetText(xOffset)
+
+	SVUI_MentaloPrecisionSetY.CurrentValue = yOffset;
+	SVUI_MentaloPrecisionSetY:SetText(yOffset)
+
+	SVUI_MentaloPrecision.Title:SetText(self.textString)
 end

-local function DisableTheHand()
-	theHand.flash:Stop()
-	theHand.energy:Hide()
-	theHand.bg:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-HAND-OFF]])
-	theHand:SetScript("OnUpdate", nil)
-	theHand.elapsedTime = 0
-	theHand:Hide()
+local Movable_OnUpdate = function(self)
+	local frame = UpdateFrameTarget;
+	if not frame then return end
+	local rightPos, topPos, centerPos = GrabUsableRegions()
+	local centerX, centerY = frame:GetCenter()
+	local calc1 = rightPos * 0.33;
+	local calc2 = rightPos * 0.66;
+	local calc3 = topPos * 0.5;
+	local anchor1, anchor2;
+	if centerY >= calc3 then
+		anchor1 = "TOP"
+		anchor2 = "BOTTOM"
+		centerY = -4
+	else
+		anchor1 = "BOTTOM"
+		anchor2 = "TOP"
+		centerY = 4
+	end
+	if centerX >= calc2 then
+		anchor1 = "RIGHT"
+		anchor2 = "LEFT"
+		centerX = -4
+	elseif centerX <= calc1 then
+		anchor1 = "LEFT"
+		anchor2 = "RIGHT"
+		centerX = 4
+	else
+		centerX = 0
+	end
+	SVUI_MentaloPrecision:ClearAllPoints()
+	SVUI_MentaloPrecision:SetPoint(anchor1, frame, anchor2, centerX, centerY)
+	Movable_OnMouseUp(frame)
 end

-local function Mentalo_OnSizeChanged(frame)
+local Movable_OnSizeChanged = function(self)
 	if InCombatLockdown()then return end
-	if frame.dirtyWidth and frame.dirtyHeight then
-		frame.Avatar:Size(frame.dirtyWidth, frame.dirtyHeight)
+	if self.dirtyWidth and self.dirtyHeight then
+		self.Avatar:Size(self.dirtyWidth, self.dirtyHeight)
 	else
-		frame.Avatar:Size(frame:GetSize())
+		self.Avatar:Size(self:GetSize())
 	end
 end

-local function MakeMovable(frame)
-	if HandledFrames then
-		for _, f in pairs(HandledFrames)do
-			if frame:GetName() == f then return end
-		end
+local Movable_OnDragStart = function(self)
+	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT)return end
+	if SV.db.general.stickyFrames then
+		Sticky:StartMoving(self, self.snapOffset, self.snapOffset, self.snapOffset, self.snapOffset)
+	else
+		self:StartMoving()
 	end
-	if SVUI and frame:GetName() == "LossOfControlFrame" then return end
-	frame:EnableMouse(true)
-	if frame:GetName() == "LFGDungeonReadyPopup" then
-		LFGDungeonReadyDialog:EnableMouse(false)
+	UpdateFrameTarget = self;
+	MentaloUpdateHandler:Show()
+	MentaloUpdateHandler:SetScript("OnUpdate", Movable_OnUpdate)
+	TheHand:Enable()
+	TheHand.UserHeld = true
+end
+
+local Movable_OnDragStop = function(self)
+	if InCombatLockdown()then SV:AddonMessage(ERR_NOT_IN_COMBAT)return end
+	TheHand.UserHeld = false;
+	if SV.db.general.stickyFrames then
+		Sticky:StopMoving(self)
+	else
+		self:StopMovingOrSizing()
 	end
-	frame:SetMovable(true)
-	frame:RegisterForDrag("LeftButton")
-	frame:SetClampedToScreen(true)
-	frame:HookScript("OnUpdate", function(this)
-		if InCombatLockdown() or this:GetName() == "GameMenuFrame" then return end
-		if this.IsMoving then return end
-		this:ClearAllPoints()
-		if this:GetName() == "QuestFrame" then
-			if SVUI_Cache["Mentalo"]["GossipFrame"].Points  ~= nil then
-				this:SetPoint(unpack(SVUI_Cache["Mentalo"]["GossipFrame"].Points))
-			end
-		elseif SVUI_Cache["Mentalo"][this:GetName()].Points  ~= nil then
-			this:SetPoint(unpack(SVUI_Cache["Mentalo"][this:GetName()].Points))
-		end
-	end)
-	frame:SetScript("OnDragStart", function(this)
-		if not this:IsMovable() then return end
-		this:StartMoving()
-		this.IsMoving = true
-	end)
-	frame:SetScript("OnDragStop", function(this)
-		if not this:IsMovable() then return end
-		this.IsMoving = false;
-		this:StopMovingOrSizing()
-		if this:GetName() == "GameMenuFrame"then return end
-		local anchor1, parent, anchor2, x, y = this:GetPoint()
-		parent = this:GetParent():GetName()
-		this:ClearAllPoints()
-		this:SetPoint(anchor1, parent, anchor2, x, y)
-		if this:GetName() == "QuestFrame" then
-			SVUI_Cache["Mentalo"]["GossipFrame"].Points = {anchor1, parent, anchor2, x, y}
-		else
-			SVUI_Cache["Mentalo"][this:GetName()].Points = {anchor1, parent, anchor2, x, y}
-		end
-	end)
-	tinsert(HandledFrames, frame:GetName())
-end
+	local pR, pT, pC = GrabUsableRegions()
+	local cX, cY = self:GetCenter()
+	local newAnchor;
+	if cY >= (pT * 0.5) then
+		newAnchor = "TOP";
+		cY = (-(pT - self:GetTop()))
+	else
+		newAnchor = "BOTTOM"
+		cY = self:GetBottom()
+	end
+	if cX >= (pR * 0.66) then
+		newAnchor = newAnchor.."RIGHT"
+		cX = self:GetRight() - pR
+	elseif cX <= (pR * 0.33) then
+		newAnchor = newAnchor.."LEFT"
+		cX = self:GetLeft()
+	else
+		cX = cX - pC
+	end
+	if self.positionOverride then
+		self.parent:ClearAllPoints()
+		self.parent:Point(self.positionOverride, self, self.positionOverride)
+	end

-local function GrabUsableRegions(frame)
-	local parent = frame or SV.UIParent
-	local right = parent:GetRight()
-	local top = parent:GetTop()
-	local center = parent:GetCenter()
-	return right, top, center
-end
+	self:ClearAllPoints()
+	self:Point(newAnchor, SV.UIParent, newAnchor, cX, cY)

-local function FindLoc(frame)
-	if not frame then return end
-	local anchor1, parent, anchor2, x, y = frame:GetPoint()
-	local parentName
-	if not parent then
-		parentName = "SVUIParent"
-	elseif not parent:GetName() then
-		parentName = "SVUI_Player"
-	else
-		parentName = parent:GetName()
+	Mentalo:SaveMovable(self.name)
+
+	if SVUI_MentaloPrecision then
+		Movable_OnMouseUp(self)
 	end
-	return ("%s\031%s\031%s\031%d\031%d"):format(anchor1, parentName, anchor2, parsefloat(x), parsefloat(y))
+
+	UpdateFrameTarget = nil;
+
+	MentaloUpdateHandler:SetScript("OnUpdate", nil)
+	MentaloUpdateHandler:Hide()
+
+	if(dragStopFunc ~= nil and type(dragStopFunc) == "function") then
+		dragStopFunc(self, Pinpoint(self))
+	end
+	self:SetUserPlaced(false)
+	TheHand:Disable()
+end
+
+local Movable_OnEnter = function(self)
+	if TheHand.UserHeld then return end
+	ResetAllAlphas()
+	self:SetAlpha(1)
+	self.text:SetTextColor(1, 1, 1)
+	UpdateFrameTarget = self;
+	SVUI_Mentalo.Avatar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-ON]])
+	TheHand:SetPoint("CENTER", self, "TOP", 0, 0)
+	TheHand:Show()
+	if CurrentFrameTarget ~= self then
+		SVUI_MentaloPrecision:Hide()
+		Movable_OnMouseUp(self)
+	end
 end

-local function ghost(list, alpha)
-	local frame;
-	for f, _ in pairs(list)do
-		frame = _G[f]
-		if frame then
-			frame:SetAlpha(alpha)
+local Movable_OnLeave = function(self)
+	if TheHand.UserHeld then return end
+	self.text:SetTextColor(0.1, 0.8, 0.8)
+	SVUI_Mentalo.Avatar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-OFF]])
+	TheHand:Hide()
+	if(CurrentFrameTarget ~= self and not SVUI_MentaloPrecision:IsShown()) then
+		self:SetAlpha(0.4)
+	end
+end
+
+local Movable_OnMouseDown = function(self, arg)
+	if arg == "RightButton"then
+		TheHand.UserHeld = false;
+		if(CurrentFrameTarget == self and not SVUI_MentaloPrecision:IsShown()) then
+			Movable_OnUpdate()
+			SVUI_MentaloPrecision:Show()
+		else
+			SVUI_MentaloPrecision:Hide()
+		end
+		if SV.db.general.stickyFrames then
+			Sticky:StopMoving(self)
+		else
+			self:StopMovingOrSizing()
 		end
 	end
-end
+end

-local function SetSVMovable(frame, moveName, title, raised, snap, dragStopFunc)
+local Movable_OnShow = function(self)
+	self:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+--[[
+##########################################################
+CONSTRUCTS
+##########################################################
+]]--
+function Mentalo:New(frame, moveName, title, raised, snap, dragStopFunc)
 	if(not frame) then return end
-	if SV.MentaloFrames[moveName].Created then return end
+	if self.Frames[moveName].Created then return end
 	if raised == nil then raised = true end
+
 	local movable = CreateFrame("Button", moveName, SV.UIParent)
 	movable:SetFrameLevel(frame:GetFrameLevel() + 1)
 	movable:SetClampedToScreen(true)
 	movable:SetWidth(frame:GetWidth())
 	movable:SetHeight(frame:GetHeight())
+
 	movable.parent = frame;
 	movable.name = moveName;
 	movable.textString = title;
 	movable.postdrag = dragStopFunc;
 	movable.overlay = raised;
 	movable.snapOffset = snap or -2;
-	SV.MentaloFrames[moveName].Avatar = movable;
-	SV["Snap"][#SV["Snap"] + 1] = movable;
+
 	if raised == true then
 		movable:SetFrameStrata("DIALOG")
 	else
 		movable:SetFrameStrata("BACKGROUND")
 	end
-	local anchor1, anchorParent, anchor2, xPos, yPos = split("\031", FindLoc(frame))
-	if SV.db.framelocations and SV.db.framelocations[moveName] then
-		if type(SV.db.framelocations[moveName]) == "table"then
-			movable:SetPoint(SV.db.framelocations[moveName]["p"], SV.UIParent, SV.db.framelocations[moveName]["p2"], SV.db.framelocations[moveName]["p3"], SV.db.framelocations[moveName]["p4"])
-			SV.db.framelocations[moveName] = FindLoc(movable)
+
+	local anchor1, anchorParent, anchor2, xPos, yPos = split("\031", CurrentPosition(frame))
+	if(SV.cache.Anchors and SV.cache.Anchors[moveName]) then
+		if(type(SV.cache.Anchors[moveName]) == "table") then
+			movable:SetPoint(SV.cache.Anchors[moveName]["p"], SV.UIParent, SV.cache.Anchors[moveName]["p2"], SV.cache.Anchors[moveName]["p3"], SV.cache.Anchors[moveName]["p4"])
+			SV.cache.Anchors[moveName] = CurrentPosition(movable)
 			movable:ClearAllPoints()
 		end
-		anchor1, anchorParent, anchor2, xPos, yPos = split("\031", SV.db.framelocations[moveName])
+		anchor1, anchorParent, anchor2, xPos, yPos = split("\031", SV.cache.Anchors[moveName])
 		movable:SetPoint(anchor1, anchorParent, anchor2, xPos, yPos)
 	else
 		movable:SetPoint(anchor1, anchorParent, anchor2, xPos, yPos)
 	end
+
 	movable:SetFixedPanelTemplate("Transparent")
 	movable:SetAlpha(0.4)
-	movable:RegisterForDrag("LeftButton", "RightButton")
-	movable:SetScript("OnDragStart", function(this)
-		if InCombatLockdown()then SV:AddonMessage(ERR_NOT_IN_COMBAT)return end
-		if SV.db["system"].stickyFrames then
-			Sticky:StartMoving(this, SV["Snap"], movable.snapOffset, movable.snapOffset, movable.snapOffset, movable.snapOffset)
-		else
-			this:StartMoving()
-		end
-		UpdateFrameTarget = this;
-		_G["SVUI_MentaloEventHandler"]:Show()
-		EnableTheHand()
-		userHolding = true
-	end)
-	movable:SetScript("OnMouseUp", SV.MovableFocused)
-	movable:SetScript("OnDragStop", function(this)
-		if InCombatLockdown()then SV:AddonMessage(ERR_NOT_IN_COMBAT)return end
-		userHolding = false;
-		if SV.db["system"].stickyFrames then
-			Sticky:StopMoving(this)
-		else
-			this:StopMovingOrSizing()
-		end
-		local pR, pT, pC = GrabUsableRegions()
-		local cX, cY = this:GetCenter()
-		local newAnchor;
-		if cY   >= (pT   /   2) then
-			newAnchor = "TOP";
-			cY = (-(pT - this:GetTop()))
-		else
-			newAnchor = "BOTTOM"
-			cY = this:GetBottom()
-		end
-		if cX   >= ((pR   *   2)   /   3) then
-			newAnchor = newAnchor.."RIGHT"
-			cX = this:GetRight() - pR
-		elseif cX   <= (pR   /   3) then
-			newAnchor = newAnchor.."LEFT"
-			cX = this:GetLeft()
-		else
-			cX = cX - pC
-		end
-		if this.positionOverride then
-			this.parent:ClearAllPoints()
-			this.parent:Point(this.positionOverride, this, this.positionOverride)
-		end
-		this:ClearAllPoints()
-		this:Point(newAnchor, SV.UIParent, newAnchor, cX, cY)
-		SV:SaveMovableLoc(moveName)
-		if SVUI_MentaloPrecision then
-			SV:MentaloFocusUpdate(this)
-		end
-		UpdateFrameTarget = nil;
-		_G["SVUI_MentaloEventHandler"]:Hide()
-		if dragStopFunc  ~= nil and type(dragStopFunc) == "function" then
-			dragStopFunc(this, Pinpoint(this))
-		end
-		this:SetUserPlaced(false)
-		DisableTheHand()
-	end)

-	frame:SetScript("OnSizeChanged", Mentalo_OnSizeChanged)
+	self.Frames[moveName].Avatar = movable;
+	Sticky.Frames[#Sticky.Frames + 1] = movable;
+
+	frame:SetScript("OnSizeChanged", Movable_OnSizeChanged)
 	frame.Avatar = movable;
 	frame:ClearAllPoints()
 	frame:SetPoint(anchor1, movable, 0, 0)

-	local u = movable:CreateFontString(nil, "OVERLAY")
-	u:SetFontTemplate()
-	u:SetJustifyH("CENTER")
-	u:SetPoint("CENTER")
-	u:SetText(title or moveName)
-	u:SetTextColor(unpack(SV.Media.color.highlight))
-
-	movable:SetFontString(u)
-	movable.text = u;
-	movable:SetScript("OnEnter", function(this)
-		if userHolding then return end
-		this:SetAlpha(1)
-		this.text:SetTextColor(1, 1, 1)
-		UpdateFrameTarget = this;
-		_G["SVUI_MentaloEventHandler"]:GetScript("OnUpdate")(_G["SVUI_MentaloEventHandler"])
-		SVUI_Mentalo.Avatar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-ON]])
-		TheHand_SetPos(this)
-		theHand:Show()
-		if CurrentFrameTarget  ~= this then
-			SVUI_MentaloPrecision:Hide()
-			SV.MovableFocused(this)
-		end
-	end)
-	movable:SetScript("OnMouseDown", function(this, arg)
-		if arg == "RightButton"then
-			userHolding = false;
-			SVUI_MentaloPrecision:Show()
-			if SV.db["system"].stickyFrames then
-				Sticky:StopMoving(this)
-			else
-				this:StopMovingOrSizing()
-			end
-		end
-	end)
-	movable:SetScript("OnLeave", function(this)
-		if userHolding then return end
-		this:SetAlpha(0.4)
-		this.text:SetTextColor(unpack(SV.Media.color.highlight))
-		SVUI_Mentalo.Avatar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-OFF]])
-		theHand:Hide()
-	end)
-	movable:SetScript("OnShow", function(this)this:SetBackdropBorderColor(unpack(SV.Media.color.highlight))end)
+	local mtext = movable:CreateFontString(nil, "OVERLAY")
+	mtext:SetFontTemplate()
+	mtext:SetJustifyH("CENTER")
+	mtext:SetPoint("CENTER")
+	mtext:SetText(title or moveName)
+	mtext:SetTextColor(0.1, 0.8, 0.8)
+
+	movable:SetFontString(mtext)
+	movable.text = mtext;
+
+	movable:RegisterForDrag("LeftButton", "RightButton")
+	movable:SetScript("OnMouseUp", Movable_OnMouseUp)
+	movable:SetScript("OnDragStart", Movable_OnDragStart)
+	movable:SetScript("OnDragStop", Movable_OnDragStop)
+	movable:SetScript("OnEnter", Movable_OnEnter)
+	movable:SetScript("OnMouseDown", Movable_OnMouseDown)
+	movable:SetScript("OnLeave", Movable_OnLeave)
+	movable:SetScript("OnShow", Movable_OnShow)
+
 	movable:SetMovable(true)
 	movable:Hide()
-	if dragStopFunc  ~= nil and type(dragStopFunc) == "function"then
+
+	if dragStopFunc ~= nil and type(dragStopFunc) == "function" then
 		movable:RegisterEvent("PLAYER_ENTERING_WORLD")
 		movable:SetScript("OnEvent", function(this, event)
-			dragStopFunc(movable, Pinpoint(movable))
+			local point = Pinpoint(this)
+			dragStopFunc(this, point)
 			this:UnregisterAllEvents()
 		end)
 	end
-	SV.MentaloFrames[moveName].Created = true
-end
---[[
-##########################################################
-GLOBAL/MODULE FUNCTIONS
-##########################################################
-]]--
-function SV:MentaloForced(frame)
-	if _G[frame] and _G[frame]:GetScript("OnDragStop") then
-		_G[frame]:GetScript("OnDragStop")(_G[frame])
-	end
-end

-function SV:TestMovableMoved(frame)
-	if SV.db.framelocations and SV.db.framelocations[frame] then
+	self.Frames[moveName].Created = true
+end
+
+function Mentalo:HasMoved(frame)
+	if SV.cache.Anchors and SV.cache.Anchors[frame] then
 		return true
 	else
 		return false
 	end
 end

-function SV:SaveMovableLoc(frame)
-	if not _G[frame] then return end
-	if not SV.db.framelocations then
-		SV.db.framelocations = {}
-	end
-	SV.db.framelocations[frame] = FindLoc(_G[frame])
-end
-
-function SV:SetSnapOffset(frame, snapOffset)
-	if not _G[frame] or not SV.MentaloFrames[frame] then return end
-	SV.MentaloFrames[frame].Avatar.snapOffset = snapOffset or -2;
-	SV.MentaloFrames[frame]["snapoffset"] = snapOffset or -2
+function Mentalo:SaveMovable(frame)
+	if(not _G[frame] or not SV.cache.Anchors) then return end
+	SV.cache.Anchors[frame] = CurrentPosition(_G[frame])
 end

-function SV:SaveMovableOrigin(frame)
-	if not _G[frame] then return end
-	SV.MentaloFrames[frame]["point"] = FindLoc(_G[frame])
-	SV.MentaloFrames[frame]["postdrag"](_G[frame], Pinpoint(_G[frame]))
+function Mentalo:ChangeSnapOffset(frame, snapOffset)
+	if not _G[frame] or not self.Frames[frame] then return end
+	self.Frames[frame].Avatar.snapOffset = snapOffset or -2;
+	self.Frames[frame]["snapoffset"] = snapOffset or -2
 end

-function SV:SetSVMovable(frame, title, raised, snapOffset, dragStopFunc, movableGroup, overrideName)
+function Mentalo:Add(frame, title, raised, snapOffset, dragStopFunc, movableGroup, overrideName)
 	if(not frame or (not overrideName and not frame:GetName())) then return end
 	local frameName = overrideName or frame:GetName()
 	local moveName = ("%s_MOVE"):format(frameName)
 	if not movableGroup then movableGroup = "ALL, GENERAL" end
-	if SV.MentaloFrames[moveName] == nil then
-		SV.MentaloFrames[moveName] = {}
-		SV.MentaloFrames[moveName]["parent"] = frame;
-		SV.MentaloFrames[moveName]["text"] = title;
-		SV.MentaloFrames[moveName]["overlay"] = raised;
-		SV.MentaloFrames[moveName]["postdrag"] = dragStopFunc;
-		SV.MentaloFrames[moveName]["snapoffset"] = snapOffset;
-		SV.MentaloFrames[moveName]["point"] = FindLoc(frame)
-		SV.MentaloFrames[moveName]["type"] = {}
+	if self.Frames[moveName] == nil then
+		self.Frames[moveName] = {}
+		self.Frames[moveName]["parent"] = frame;
+		self.Frames[moveName]["text"] = title;
+		self.Frames[moveName]["overlay"] = raised;
+		self.Frames[moveName]["postdrag"] = dragStopFunc;
+		self.Frames[moveName]["snapoffset"] = snapOffset;
+		self.Frames[moveName]["point"] = CurrentPosition(frame)
+		self.Frames[moveName]["type"] = {}
 		local group = {split(", ", movableGroup)}
 		for i = 1, #group do
 			local this = group[i]
-			SV.MentaloFrames[moveName]["type"][this] = true
+			self.Frames[moveName]["type"][this] = true
 		end
-	end
-	SetSVMovable(frame, moveName, title, raised, snapOffset, dragStopFunc)
-end
+	end

-function SV:ToggleMovables(enabled, configType)
-	for frameName, _ in pairs(SV.MentaloFrames)do
-		if(_G[frameName]) then
-			local movable = _G[frameName]
-			if(not enabled) then
-				movable:Hide()
-			else
-				if SV.MentaloFrames[frameName]["type"][configType]then
-					movable:Show()
-				else
-					movable:Hide()
-				end
-			end
-		end
-	end
-end
+	self:New(frame, moveName, title, raised, snapOffset, dragStopFunc)

-function SV:ResetMovables(request)
+	-- local ghost;
+	-- for entry,_ in pairs(self.Frames) do
+	-- 	ghost = _G[entry]
+	-- 	if(ghost) then
+	-- 		ghost:SetAlpha(0.5)
+	-- 	end
+	-- end
+end
+
+function Mentalo:Reset(request)
 	if request == "" or request == nil then
-		for name, _ in pairs(SV.MentaloFrames)do
+		for name, _ in pairs(self.Frames)do
 			local frame = _G[name];
-			if SV.MentaloFrames[name]["point"] then
-				local u, v, w, x, y = split("\031", SV.MentaloFrames[name]["point"])
+			if self.Frames[name]["point"] then
+				local u, v, w, x, y = split("\031", self.Frames[name]["point"])
 				frame:ClearAllPoints()
 				frame:SetPoint(u, v, w, x, y)
-				for arg, func in pairs(SV.MentaloFrames[name])do
+				for arg, func in pairs(self.Frames[name])do
 					if arg == "postdrag" and type(func) == "function" then
 						func(frame, Pinpoint(frame))
 					end
 				end
 			end
+		end
+		if(SV.cache.Anchors) then
+			SV.cache.Anchors = {}
 		end
-		SV.db:SetDefault("framelocations")
 	else
-		for name, _ in pairs(SV.MentaloFrames)do
-			if SV.MentaloFrames[name]["point"] then
-				for arg1, arg2 in pairs(SV.MentaloFrames[name])do
+		for name, _ in pairs(self.Frames)do
+			if self.Frames[name]["point"] then
+				for arg1, arg2 in pairs(self.Frames[name])do
 					local mover;
 					if arg1 == "text" then
 						if request == arg2 then
 							local frame = _G[name]
-							local u, v, w, x, y = split("\031", SV.MentaloFrames[name]["point"])
+							local u, v, w, x, y = split("\031", self.Frames[name]["point"])
 							frame:ClearAllPoints()
 							frame:SetPoint(u, v, w, x, y)
-							if SV.db.framelocations then
-								SV.db.framelocations[name] = nil
+							if(SV.cache.Anchors and SV.cache.Anchors[name]) then
+								SV.cache.Anchors[name] = nil
 							end
-							if (SV.MentaloFrames[name]["postdrag"] ~= nil and type(SV.MentaloFrames[name]["postdrag"]) == "function")then
-								SV.MentaloFrames[name]["postdrag"](frame, Pinpoint(frame))
+							if (self.Frames[name]["postdrag"] ~= nil and type(self.Frames[name]["postdrag"]) == "function")then
+								self.Frames[name]["postdrag"](frame, Pinpoint(frame))
 							end
 						end
 					end
@@ -683,46 +696,25 @@ function SV:ResetMovables(request)
 	end
 end

-function SV:SetSVMovablesPositions()
-	for name, _ in pairs(SV.MentaloFrames)do
+function Mentalo:SetPositions()
+	for name, _ in pairs(self.Frames)do
 		local frame = _G[name];
 		local anchor1, parent, anchor2, x, y;
 		if frame then
-			if (SV.db.framelocations and SV.db.framelocations[name] and type(SV.db.framelocations[name]) == "string") then
-				anchor1, parent, anchor2, x, y = split("\031", SV.db.framelocations[name])
+			if (SV.cache.Anchors and SV.cache.Anchors[name] and type(SV.cache.Anchors[name]) == "string") then
+				anchor1, parent, anchor2, x, y = split("\031", SV.cache.Anchors[name])
 				frame:ClearAllPoints()
 				frame:SetPoint(anchor1, parent, anchor2, x, y)
-			elseif SV.MentaloFrames[name]["point"] then
-				anchor1, parent, anchor2, x, y = split("\031", SV.MentaloFrames[name]["point"])
+			elseif self.Frames[name]["point"] then
+				anchor1, parent, anchor2, x, y = split("\031", self.Frames[name]["point"])
 				frame:ClearAllPoints()
 				frame:SetPoint(anchor1, parent, anchor2, x, y)
 			end
 		end
 	end
-end
-
-function SV:LoadMovables()
-	for name, _ in pairs(self.MentaloFrames)do
-		local parent, text, overlay, snapoffset, postdrag;
-		for key, value in pairs(self.MentaloFrames[name])do
-			if(key == "parent") then
-				parent = value
-			elseif(key == "text") then
-				text = value
-			elseif(key == "overlay") then
-				overlay = value
-			elseif(key == "snapoffset") then
-				snapoffset = value
-			elseif(key == "postdrag") then
-				postdrag = value
-			end
-		end
-		self:SetMentaloAlphas()
-		SetSVMovable(parent, name, text, overlay, snapoffset, postdrag)
-	end
-end
+end

-function SV:UseMentalo(isConfigMode, configType)
+function Mentalo:Toggle(isConfigMode, configType)
 	if(InCombatLockdown()) then return end
 	local enabled = false;
 	if(isConfigMode  ~= nil and isConfigMode  ~= "") then
@@ -730,8 +722,8 @@ function SV:UseMentalo(isConfigMode, configType)
 	end

 	if(not self.ConfigurationMode) then
-		if IsAddOnLoaded("SVUI_ConfigOMatic")then
-			LibStub("AceConfigDialog-3.0"):Close("SVUI")
+		if IsAddOnLoaded(SV.ConfigID)then
+			LibStub("AceConfigDialog-3.0"):Close(SV.NameID)
 			GameTooltip:Hide()
 			self.ConfigurationMode = true
 		else
@@ -750,167 +742,130 @@ function SV:UseMentalo(isConfigMode, configType)

 	if(not configType or (configType and type(configType)  ~= "string")) then
 		configType = "ALL"
-	end
-
-	self:ToggleMovables(enabled, configType)
-end
-
-function SV:MentaloFocus()
-	local frame = CurrentFrameTarget;
-	local s, t, u = GrabUsableRegions()
-	local v, w = frame:GetCenter()
-	local x;
-	local y = s / 3;
-	local z = s * 2 / 3;
-	local A = t / 2;
-	if w >= A then x = "TOP"else x = "BOTTOM"end
-	if v >= z then x = x.."RIGHT"elseif v <= y then x = x.."LEFT"end
-	v = tonumber(SVUI_MentaloPrecisionSetX.CurrentValue)
-	w = tonumber(SVUI_MentaloPrecisionSetY.CurrentValue)
-	frame:ClearAllPoints()
-	frame:Point(x, SV.UIParent, x, v, w)
-	SV:SaveMovableLoc(frame.name)
-end
-
-function SV:MentaloFocusUpdate(frame)
-	local s, t, u = GrabUsableRegions()
-	local v, w = frame:GetCenter()
-	local y = (s / 3);
-	local z = ((s * 2) / 3);
-	local A = (t / 2);
-	if w  >= A then w = -(t - frame:GetTop())else w = frame:GetBottom()end
-	if v >= z then v = (frame:GetRight() - s) elseif v  <= y then v = frame:GetLeft()else v = (v - u) end
-	v = parsefloat(v, 0)
-	w = parsefloat(w, 0)
-	SVUI_MentaloPrecisionSetX:SetText(v)
-	SVUI_MentaloPrecisionSetY:SetText(w)
-	SVUI_MentaloPrecisionSetX.CurrentValue = v;
-	SVUI_MentaloPrecisionSetY.CurrentValue = w;
-	SVUI_MentaloPrecision.Title:SetText(frame.textString)
-end
-
-function SV:MovableFocused()
-	CurrentFrameTarget = self;
-	SV:MentaloFocusUpdate(self)
-end
+	end

-function SV:SetMentaloAlphas()
-	hooksecurefunc(SV, "SetSVMovable", function(_, frame)
-		frame.Avatar:SetAlpha(0.5)
-	end)
-	ghost(SV.MentaloFrames, 0.5)
-end
+	for frameName, _ in pairs(self.Frames)do
+		if(_G[frameName]) then
+			local movable = _G[frameName]
+			if(not enabled) then
+				movable:Hide()
+			else
+				if self.Frames[frameName]["type"][configType]then
+					movable:Show()
+				else
+					movable:Hide()
+				end
+			end
+		end
+	end
+end
 --[[
 ##########################################################
-XML FRAME SCRIPT HANDLERS
+SCRIPT AND EVENT HANDLERS
 ##########################################################
 ]]--
-function SVUI_MoveEventHandler_OnEvent()
-	if not SVUI_Cache then SVUI_Cache = {} end
-    if not SVUI_Cache["Mentalo"] then SVUI_Cache["Mentalo"] = {} end
-	for _, frame in pairs(DraggableFrames)do
-		if _G[frame] then
-			if SVUI_Cache["Mentalo"][frame] == nil then
-				SVUI_Cache["Mentalo"][frame] = {}
-			end
-			SVUI_Cache["Mentalo"]["GameMenuFrame"] = {}
-			MakeMovable(_G[frame])
-		end
+local XML_Mentalo_OnEvent = function(self)
+	if self:IsShown() then
+		self:Hide()
+		Mentalo:Toggle(true)
 	end
 end

-function SVUI_MentaloEventHandler_Update(self)
-	_G["SVUI_MentaloEventHandler"] = self;
-	local frame = UpdateFrameTarget;
-	local rightPos, topPos, centerPos = GrabUsableRegions()
-	local centerX, centerY = frame:GetCenter()
-	local calc1 = rightPos  /  3;
-	local calc2 = ((rightPos  *  2)  /  3);
-	local calc3 = topPos  /  2;
-	local anchor1, anchor2;
-	if centerY  >= calc3 then
-		anchor1 = "TOP"
-		anchor2 = "BOTTOM"
-		centerY = -(topPos - frame:GetTop())
-	else
-		anchor1 = "BOTTOM"
-		anchor2 = "TOP"
-		centerY = frame:GetBottom()
-	end
-	if centerX  >= calc2 then
-		anchor1 = "RIGHT"
-		anchor2 = "LEFT"
-		centerX = (frame:GetRight() - rightPos)
-	elseif centerX  <= calc1 then
-		anchor1 = "LEFT"
-		anchor2 = "RIGHT"
-		centerX = frame:GetLeft()
-	else
-		centerX = (centerX - centerPos)
+local XML_MentaloLockButton_OnClick = function(self)
+	Mentalo:Toggle(true)
+	if IsAddOnLoaded(SV.ConfigID)then
+		LibStub("AceConfigDialog-3.0"):Open(SV.NameID)
 	end
-	SVUI_MentaloPrecision:ClearAllPoints()
-	SVUI_MentaloPrecision:SetPoint(anchor1, frame, anchor2, 0, 0)
-	SV:MentaloFocusUpdate(frame)
 end

-function SVUI_Mentalo_OnLoad()
-	_G["SVUI_Mentalo"]:RegisterEvent("PLAYER_REGEN_DISABLED")
-	_G["SVUI_Mentalo"]:RegisterForDrag("LeftButton");
-	_G["SVUI_Mentalo"]:SetButtonTemplate()
+local SVUI_MentaloPrecisionResetButton_OnClick = function(self)
+	if(not CurrentFrameTarget) then return end
+	local name = CurrentFrameTarget.name
+	Mentalo:Reset(name)
 end

-function SVUI_Mentalo_OnEvent()
-	if _G["SVUI_Mentalo"]:IsShown() then
-		_G["SVUI_Mentalo"]:Hide()
-		SV:UseMentalo(true)
+local XML_MentaloPrecisionInputX_EnterPressed = function(self)
+	local current = tonumber(self:GetText())
+	if(current) then
+		if(CurrentFrameTarget) then
+			local xOffset, yOffset, anchor = CalculateOffsets()
+			yOffset = tonumber(SVUI_MentaloPrecisionSetY.CurrentValue)
+			CurrentFrameTarget:ClearAllPoints()
+			CurrentFrameTarget:Point(anchor, SVUIParent, anchor, current, yOffset)
+			Mentalo:SaveMovable(CurrentFrameTarget.name)
+		end
+		self.CurrentValue = current
 	end
-end
+	self:SetText(floor((self.CurrentValue or 0) + 0.5))
+	EditBox_ClearFocus(self)
+end

-function SVUI_MentaloLockButton_OnClick()
-	SV:UseMentalo(true)
-	if IsAddOnLoaded("SVUI_ConfigOMatic")then
-		LibStub("AceConfigDialog-3.0"):Open("SVUI")
-	end
-end
+local XML_MentaloPrecisionInputY_EnterPressed = function(self)
+	local current = tonumber(self:GetText())
+	if(current) then
+		if(CurrentFrameTarget) then
+			local xOffset, yOffset, anchor = CalculateOffsets()
+			xOffset = tonumber(SVUI_MentaloPrecisionSetX.CurrentValue)
+			CurrentFrameTarget:ClearAllPoints()
+			CurrentFrameTarget:Point(anchor, SVUIParent, anchor, xOffset, current)
+			Mentalo:SaveMovable(CurrentFrameTarget.name)
+		end
+		self.CurrentValue = current
+	end
+	self:SetText(floor((self.CurrentValue or 0) + 0.5))
+	EditBox_ClearFocus(self)
+end
+--[[
+##########################################################
+Initialize
+##########################################################
+]]--
+function Mentalo:Initialize()
+	SVUI_Mentalo:SetFixedPanelTemplate("Component")
+	SVUI_Mentalo:SetPanelColor("yellow")
+	SVUI_Mentalo:RegisterForDrag("LeftButton")
+	SVUI_Mentalo:RegisterEvent("PLAYER_REGEN_DISABLED")
+	SVUI_Mentalo:SetScript("OnEvent", XML_Mentalo_OnEvent)

-function SVUI_MentaloPrecisionResetButton_OnClick()
-	local name = CurrentFrameTarget.name
-	SV:ResetMovables(name)
-end
+	SVUI_MentaloLockButton:SetScript("OnClick", XML_MentaloLockButton_OnClick)

-function SVUI_MentaloPrecisionInput_EscapePressed(self)
-	self:SetText(parsefloat(self.CurrentValue))
-	EditBox_ClearFocus(self)
-end
+	SVUI_MentaloPrecision:SetPanelTemplate("Transparent")
+	SVUI_MentaloPrecision:EnableMouse(true)

-function SVUI_MentaloPrecisionInput_EnterPressed(self)
-	local txt = tonumber(self:GetText())
-	if(txt) then
-		self.CurrentValue = txt;
-		SV:MentaloFocus()
-	end
-	self:SetText(parsefloat(self.CurrentValue))
-	EditBox_ClearFocus(self)
-end
+	SVUI_MentaloPrecisionSetX:SetEditboxTemplate()
+	SVUI_MentaloPrecisionSetX.CurrentValue = 0;
+	SVUI_MentaloPrecisionSetX:SetScript("OnEnterPressed", XML_MentaloPrecisionInputX_EnterPressed)

-function SVUI_MentaloPrecisionInput_FocusLost(self)
-	self:SetText(parsefloat(self.CurrentValue))
-end
+	SVUI_MentaloPrecisionSetY:SetEditboxTemplate()
+	SVUI_MentaloPrecisionSetY.CurrentValue = 0;
+	SVUI_MentaloPrecisionSetY:SetScript("OnEnterPressed", XML_MentaloPrecisionInputY_EnterPressed)

-function SVUI_MentaloPrecisionInput_OnShow(self)
-	EditBox_ClearFocus(self)
-	self:SetText(parsefloat(self.CurrentValue or 0))
-end
+	SVUI_MentaloPrecisionUpButton:SetButtonTemplate()
+	SVUI_MentaloPrecisionDownButton:SetButtonTemplate()
+	SVUI_MentaloPrecisionLeftButton:SetButtonTemplate()
+	SVUI_MentaloPrecisionRightButton:SetButtonTemplate()
+
+	SV.cache.Anchors = SV.cache.Anchors or {}
+
+	for name, _ in pairs(self.Frames)do
+		local parent, text, overlay, snapoffset, postdrag;
+		for key, value in pairs(self.Frames[name])do
+			if(key == "parent") then
+				parent = value
+			elseif(key == "text") then
+				text = value
+			elseif(key == "overlay") then
+				overlay = value
+			elseif(key == "snapoffset") then
+				snapoffset = value
+			elseif(key == "postdrag") then
+				postdrag = value
+			end
+		end
+		self:New(parent, name, text, overlay, snapoffset, postdrag)
+	end
+
+	self:SetPositions()
+end

-function SVUI_MentaloPrecision_OnLoad()
-	_G["SVUI_MentaloPrecisionSetX"].CurrentValue = 0;
-	_G["SVUI_MentaloPrecisionSetY"].CurrentValue = 0;
-	_G["SVUI_MentaloPrecision"]:EnableMouse(true)
-	_G["SVUI_MentaloPrecisionSetX"]:SetEditboxTemplate()
-	_G["SVUI_MentaloPrecisionSetY"]:SetEditboxTemplate()
-	_G["SVUI_MentaloPrecisionUpButton"]:SetButtonTemplate()
-	_G["SVUI_MentaloPrecisionDownButton"]:SetButtonTemplate()
-	_G["SVUI_MentaloPrecisionLeftButton"]:SetButtonTemplate()
-	_G["SVUI_MentaloPrecisionRightButton"]:SetButtonTemplate()
-	CurrentFrameTarget = false;
-end
\ No newline at end of file
+SV.Mentalo = Mentalo
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/mentalo.xml b/Interface/AddOns/SVUI/system/mentalo.xml
deleted file mode 100644
index 57c4409..0000000
--- a/Interface/AddOns/SVUI/system/mentalo.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-    <Script file="mentalo.lua"/>
-
-    <Frame name="SVUI_MoveEventHandler" hidden="true">
-        <Scripts>
-            <OnLoad>
-                self:RegisterEvent("PLAYER_LOGIN")
-                self:RegisterEvent("ADDON_LOADED")
-                self:RegisterEvent("LFG_UPDATE")
-                self:RegisterEvent("ROLE_POLL_BEGIN")
-                self:RegisterEvent("READY_CHECK")
-                self:RegisterEvent("UPDATE_WORLD_STATES")
-                self:RegisterEvent("WORLD_STATE_TIMER_START")
-                self:RegisterEvent("WORLD_STATE_UI_TIMER_UPDATE")
-            </OnLoad>
-            <OnEvent function="SVUI_MoveEventHandler_OnEvent"/>
-        </Scripts>
-    </Frame>
-
-    <Frame name="SVUI_MentaloEventHandler" hidden="true">
-        <Scripts>
-            <OnLoad>
-                self.UpdateFrameTarget = false;
-            </OnLoad>
-            <OnUpdate function="SVUI_MentaloEventHandler_Update"/>
-        </Scripts>
-    </Frame>
-
-    <Frame name="SVUI_MentaloPrecision" inherits="SVUI_PanelTemplate" hidden="true" frameStrata="DIALOG">
-        <Size x="130" y="60"/>
-        <Anchors>
-            <Anchor point="CENTER"/>
-        </Anchors>
-        <Layers>
-            <Layer level="ARTWORK">
-                <FontString parentKey="Title" inherits="GameFontNormal" text="Focused Position">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativeTo="$parentTitleBG" relativePoint="TOPLEFT"/>
-                        <Anchor point="BOTTOMRIGHT" relativeTo="$parentTitleBG" relativePoint="BOTTOMRIGHT"/>
-                    </Anchors>
-                </FontString>
-                <FontString inherits="NumberFont_Outline_Huge" text="X">
-                    <Anchors>
-                        <Anchor point="RIGHT" relativeTo="$parent" relativePoint="LEFT">
-                            <Offset x="-3" y="0"/>
-                        </Anchor>
-                    </Anchors>
-                    <Color r="1" g="0.5" b="0" a="1"/>
-                </FontString>
-                <FontString inherits="NumberFont_Outline_Huge" text="Y">
-                    <Anchors>
-                        <Anchor point="LEFT" relativeTo="$parent" relativePoint="RIGHT">
-                            <Offset x="3" y="0"/>
-                        </Anchor>
-                    </Anchors>
-                    <Color r="1" g="0.5" b="0" a="1"/>
-                </FontString>
-            </Layer>
-        </Layers>
-        <Frames>
-            <EditBox name="$parentSetX" inherits="InputBoxTemplate" autoFocus="false">
-                <Size x="50" y="17"/>
-                <Anchors>
-                    <Anchor point="BOTTOMRIGHT" relativeTo="$parentBG" relativePoint="CENTER">
-                        <Offset x="-12" y="3"/>
-                    </Anchor>
-                </Anchors>
-
-                <Scripts>
-                    <OnEscapePressed function="SVUI_MentaloPrecisionInput_EscapePressed"/>
-                    <OnEnterPressed function="SVUI_MentaloPrecisionInput_EnterPressed"/>
-                    <OnEditFocusLost function="SVUI_MentaloPrecisionInput_FocusLost"/>
-                    <OnShow>
-                        SVUI_MentaloPrecisionInput_OnShow(self)
-                    </OnShow>
-                </Scripts>
-            </EditBox>
-
-            <EditBox name="$parentSetY" inherits="InputBoxTemplate" autoFocus="false">
-                <Size x="50" y="17"/>
-                <Anchors>
-                    <Anchor point="BOTTOMLEFT" relativeTo="$parentBG" relativePoint="CENTER">
-                        <Offset x="12" y="3"/>
-                    </Anchor>
-                </Anchors>
-                <Scripts>
-                    <OnEscapePressed function="SVUI_MentaloPrecisionInput_EscapePressed"/>
-                    <OnEnterPressed function="SVUI_MentaloPrecisionInput_EnterPressed"/>
-                    <OnEditFocusLost function="SVUI_MentaloPrecisionInput_FocusLost"/>
-                    <OnShow function="SVUI_MentaloPrecisionInput_OnShow"/>
-                </Scripts>
-            </EditBox>
-
-            <Button name="$parentUpButton" inherits="UIPanelSquareButton">
-                <Size x="25" y="20"/>
-                <Anchors>
-                    <Anchor point="TOPLEFT" relativeTo="$parentBG" relativePoint="CENTER">
-                        <Offset x="10" y="-3"/>
-                    </Anchor>
-                </Anchors>
-                <Scripts>
-                    <OnLoad>
-                        SquareButton_SetIcon(self, "UP");
-                        self:RegisterForClicks("AnyUp");
-                    </OnLoad>
-                    <OnClick>
-                        local frame = _G["SVUI_MentaloPrecisionSetY"];
-                        frame:SetText(frame.CurrentValue + 1)
-                        frame:GetScript('OnEnterPressed')(frame)
-                    </OnClick>
-                </Scripts>
-            </Button>
-
-            <Button name="$parentDownButton" inherits="UIPanelSquareButton">
-                <Size x="25" y="20"/>
-                <Anchors>
-                    <Anchor point="LEFT" relativeTo="$parentUpButton" relativePoint="RIGHT">
-                        <Offset x="2" y="0"/>
-                    </Anchor>
-                </Anchors>
-                <Scripts>
-                    <OnLoad>
-                        SquareButton_SetIcon(self, "DOWN");
-                        self:RegisterForClicks("AnyUp");
-                    </OnLoad>
-                    <OnClick>
-                        local frame = _G["SVUI_MentaloPrecisionSetY"];
-                        frame:SetText(frame.CurrentValue - 1)
-                        frame:GetScript('OnEnterPressed')(frame)
-                    </OnClick>
-                </Scripts>
-            </Button>
-
-            <Button name="$parentRightButton" inherits="UIPanelSquareButton">
-                <Size x="25" y="20"/>
-                <Anchors>
-                    <Anchor point="RIGHT" relativeTo="$parentUpButton" relativePoint="LEFT">
-                        <Offset x="-20" y="0"/>
-                    </Anchor>
-                </Anchors>
-                <Scripts>
-                    <OnLoad>
-                        SquareButton_SetIcon(self, "RIGHT");
-                        self:RegisterForClicks("AnyUp");
-                    </OnLoad>
-                    <OnClick>
-                        local frame = _G["SVUI_MentaloPrecisionSetX"];
-                        frame:SetText(frame.CurrentValue + 1)
-                        frame:GetScript('OnEnterPressed')(frame)
-                    </OnClick>
-                </Scripts>
-            </Button>
-
-            <Button name="$parentLeftButton" inherits="UIPanelSquareButton">
-                <Size x="25" y="20"/>
-                <Anchors>
-                    <Anchor point="RIGHT" relativeTo="$parentRightButton" relativePoint="LEFT">
-                        <Offset x="-2" y="0"/>
-                    </Anchor>
-                </Anchors>
-                <Scripts>
-                    <OnLoad>
-                        SquareButton_SetIcon(self, "LEFT");
-                        self:RegisterForClicks("AnyUp");
-                    </OnLoad>
-                    <OnClick>
-                        local frame = _G["SVUI_MentaloPrecisionSetX"];
-                        frame:SetText(frame.CurrentValue - 1)
-                        frame:GetScript('OnEnterPressed')(frame)
-                    </OnClick>
-                </Scripts>
-            </Button>
-        </Frames>
-        <Scripts>
-            <OnLoad function="SVUI_MentaloPrecision_OnLoad"/>
-        </Scripts>
-    </Frame>
-
-	<Frame name="SVUI_Mentalo" movable="true" hidden="true" frameStrata="DIALOG">
-        <Size x="300" y="30"/>
-        <Anchors>
-            <Anchor point="CENTER"/>
-        </Anchors>
-        <Layers>
-            <Layer level="BACKGROUND">
-                <Texture name="$parentBG" setAllPoints="true"/>
-            </Layer>
-            <Layer level="OVERLAY">
-                <Texture name="$parentTitleBG">
-                    <Anchors>
-                        <Anchor point="TOPLEFT"/>
-                        <Anchor point="BOTTOMRIGHT" relativePoint="TOPRIGHT">
-                            <Offset x="0" y="-30"/>
-                        </Anchor>
-                    </Anchors>
-                </Texture>
-            </Layer>
-            <Layer level="ARTWORK">
-                <FontString parentKey="Title" inherits="SystemFont_Small" justifyH="LEFT" text="Mentalo The Frame Mover!">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativeTo="$parentTitleBG">
-                            <Offset x="4" y="0"/>
-                        </Anchor>
-                        <Anchor point="BOTTOMRIGHT" relativeTo="$parentTitleBG"/>
-                    </Anchors>
-                    <Color r="1" g="1" b="1" a="1"/>
-                </FontString>
-                <FontString parentKey="SubTitle" inherits="FriendsFont_Small" justifyH="CENTER" text="Right-click frames to move with precision.">
-                    <Anchors>
-                        <Anchor point="TOPLEFT" relativeTo="$parentTitleBG" relativePoint="BOTTOMLEFT">
-                            <Offset x="4" y="-4"/>
-                        </Anchor>
-                        <Anchor point="TOPRIGHT" relativeTo="$parentTitleBG" relativePoint="BOTTOMRIGHT">
-                            <Offset x="-4" y="-4"/>
-                        </Anchor>
-                    </Anchors>
-                    <Color r="1" g="1" b="0" a="0.8"/>
-                </FontString>
-                <Texture parentKey="Avatar" file="Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-OFF">
-                    <Size x="132" y="132"/>
-                    <Anchors>
-                        <Anchor point="BOTTOM" relativeTo="$parentBG" relativePoint="TOP"/>
-                    </Anchors>
-                </Texture>
-            </Layer>
-        </Layers>
-        <Frames>
-            <Button name="$parentLockButton" inherits="OptionsButtonTemplate" text="Lock">
-                <Size x="96" y="24"/>
-                <Anchors>
-                    <Anchor point="RIGHT" relativeTo="$parentBG">
-                        <Offset x="-4" y="0"/>
-                    </Anchor>
-                </Anchors>
-                <Scripts>
-                    <OnClick function="SVUI_MentaloLockButton_OnClick"/>
-                </Scripts>
-            </Button>
-        </Frames>
-        <Scripts>
-            <OnLoad function="SVUI_Mentalo_OnLoad"/>
-            <OnEvent function="SVUI_Mentalo_OnEvent"/>
-            <OnHide>
-                local frame = _G["SVUI_MentaloPrecision"];
-                frame:Hide();
-            </OnHide>
-            <OnDragStart>
-                _G["SVUI_Mentalo"].moving = true;
-                _G["SVUI_Mentalo"]:StartMoving();
-            </OnDragStart>
-            <OnDragStop>
-                _G["SVUI_Mentalo"].moving = nil;
-                _G["SVUI_Mentalo"]:StopMovingOrSizing();
-            </OnDragStop>
-        </Scripts>
-    </Frame>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/moveable.lua b/Interface/AddOns/SVUI/system/moveable.lua
new file mode 100644
index 0000000..9a32207
--- /dev/null
+++ b/Interface/AddOns/SVUI/system/moveable.lua
@@ -0,0 +1,172 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string 	= _G.string;
+local math 		= _G.math;
+--[[ STRING METHODS ]]--
+local format, split = string.format, string.split;
+--[[ MATH METHODS ]]--
+local min, floor = math.min, math.floor;
+local parsefloat = math.parsefloat;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = select(2, ...)
+local L = SV.L;
+
+local Movable = CreateFrame("Frame", nil)
+local MovableFrames = {}
+MovableFrames["GameMenuFrame"] = {}
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local DraggableFrames = {
+	"AchievementFrame",
+	"AuctionFrame",
+	"ArchaeologyFrame",
+	"BattlefieldMinimap",
+	"BarberShopFrame",
+	"BlackMarketFrame",
+	"CalendarFrame",
+	"CharacterFrame",
+	"ClassTrainerFrame",
+	"DressUpFrame",
+	"EncounterJournal",
+	"FriendsFrame",
+	"GameMenuFrame",
+	"GMSurveyFrame",
+	"GossipFrame",
+	"GuildFrame",
+	"GuildBankFrame",
+	"GuildRegistrarFrame",
+	"HelpFrame",
+	"InterfaceOptionsFrame",
+	"ItemUpgradeFrame",
+	"KeyBindingFrame",
+	"LFGDungeonReadyPopup",
+	"MacOptionsFrame",
+	"MacroFrame",
+	"MailFrame",
+	"MerchantFrame",
+	"PlayerTalentFrame",
+	"PetJournalParent",
+	"PVEFrame",
+	"PVPFrame",
+	"QuestFrame",
+	"QuestLogFrame",
+	"RaidBrowserFrame",
+	"ReadyCheckFrame",
+	"ReforgingFrame",
+	"ReportCheatingDialog",
+	"ReportPlayerNameDialog",
+	"RolePollPopup",
+	"ScrollOfResurrectionSelectionFrame",
+	"SpellBookFrame",
+	"TabardFrame",
+	"TaxiFrame",
+	"TimeManagerFrame",
+	"TradeSkillFrame",
+	"TradeFrame",
+	"TransmorgifyFrame",
+	"TutorialFrame",
+	"VideoOptionsFrame",
+	"VoidStorageFrame",
+	--"WorldStateAlwaysUpFrame"
+};
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local BlizzardFrame_OnUpdate = function(self)
+	if InCombatLockdown() or self:GetName() == "GameMenuFrame" then return end
+	if self.IsMoving then return end
+	self:ClearAllPoints()
+	if self:GetName() == "QuestFrame" then
+		if MovableFrames["GossipFrame"].Points  ~= nil then
+			self:SetPoint(unpack(MovableFrames["GossipFrame"].Points))
+		end
+	elseif MovableFrames[self:GetName()].Points  ~= nil then
+		self:SetPoint(unpack(MovableFrames[self:GetName()].Points))
+	end
+end
+
+local BlizzardFrame_OnDragStart = function(self)
+	if not self:IsMovable() then return end
+	self:StartMoving()
+	self.IsMoving = true
+end
+
+local BlizzardFrame_OnDragStop = function(self)
+	if not self:IsMovable() then return end
+	self.IsMoving = false;
+	self:StopMovingOrSizing()
+	if self:GetName() == "GameMenuFrame" then return end
+	local anchor1, parent, anchor2, x, y = self:GetPoint()
+	parent = self:GetParent():GetName()
+	self:ClearAllPoints()
+	self:SetPoint(anchor1, parent, anchor2, x, y)
+	if self:GetName() == "QuestFrame" then
+		MovableFrames["GossipFrame"].Points = {anchor1, parent, anchor2, x, y}
+	else
+		MovableFrames[self:GetName()].Points = {anchor1, parent, anchor2, x, y}
+	end
+end
+
+local Movable_OnEvent = function(self)
+	for _, frameName in pairs(DraggableFrames) do
+		local frame = _G[frameName]
+		if(frame) then
+			if(frameName ~= "LossOfControlFrame" and (not MovableFrames[frameName])) then
+				frame:EnableMouse(true)
+
+				if(frameName == "LFGDungeonReadyPopup") then
+					LFGDungeonReadyDialog:EnableMouse(false)
+				end
+
+				frame:SetMovable(true)
+				frame:RegisterForDrag("LeftButton")
+				frame:SetClampedToScreen(true)
+				frame:HookScript("OnUpdate", BlizzardFrame_OnUpdate)
+				frame:SetScript("OnDragStart", BlizzardFrame_OnDragStart)
+				frame:SetScript("OnDragStop", BlizzardFrame_OnDragStop)
+				MovableFrames[frameName] = {}
+			end
+		end
+	end
+end
+
+Movable:RegisterEvent("PLAYER_LOGIN")
+Movable:RegisterEvent("ADDON_LOADED")
+Movable:RegisterEvent("LFG_UPDATE")
+Movable:RegisterEvent("ROLE_POLL_BEGIN")
+Movable:RegisterEvent("READY_CHECK")
+Movable:RegisterEvent("UPDATE_WORLD_STATES")
+Movable:RegisterEvent("WORLD_STATE_TIMER_START")
+Movable:RegisterEvent("WORLD_STATE_UI_TIMER_UPDATE")
+
+Movable:SetScript("OnEvent", Movable_OnEvent)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/setup.lua b/Interface/AddOns/SVUI/system/setup.lua
deleted file mode 100644
index ffd317a..0000000
--- a/Interface/AddOns/SVUI/system/setup.lua
+++ /dev/null
@@ -1,2413 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local type 		= _G.type;
-local string 	= _G.string;
-local table     = _G.table;
-local format = string.format;
-local tcopy = table.copy;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local CURRENT_PAGE, MAX_PAGE, XOFF = 0, 9, (GetScreenWidth() * 0.025)
-local okToResetMOVE = false
-local mungs = false;
-local user_music_vol;
-local musicIsPlaying;
-
-local SVUI_CLASS_COLORS = _G.SVUI_CLASS_COLORS
-local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS
-local scc = SVUI_CLASS_COLORS[SV.class];
-local rcc = RAID_CLASS_COLORS[SV.class];
-local r2 = .1 + (rcc.r * .1)
-local g2 = .1 + (rcc.g * .1)
-local b2 = .1 + (rcc.b * .1)
---[[
-##########################################################
-SETUP CLASS OBJECT
-##########################################################
-]]--
-local Setup = {};
---[[
-##########################################################
-LAYOUT PRESETS
-##########################################################
-]]--
-local PRESET_DATA;
-
-local function LoadAllPresets()
-	PRESET_DATA = {}
-
-	PRESET_DATA["media"] = {
-		["link"] = "media",
-		["default"] = {
-			["colors"] = {
-				["special"] = {.37, .32, .29, 1},
-			},
-			["textures"] = {
-				["pattern"] = "SVUI Backdrop 1",
-				["comic"] = "SVUI Comic 1",
-				["unitlarge"] = "SVUI Unit BG 1",
-				["unitsmall"] = "SVUI Small BG 1",
-			},
-			["unitframes"] = {
-				["buff_bars"] = {.91, .91, .31, 1},
-				["health"] = {.1, .6, .02, 1},
-				["casting"] = {.91, .91, .31, 1},
-				["spark"] = {1, .72, 0, 1},
-			},
-		},
-		["kaboom"] = {
-			["colors"] = {
-				["special"] = {.28, .31, .32, 1},
-			},
-			["textures"] = {
-				["pattern"] = "SVUI Backdrop 2",
-				["comic"] = "SVUI Comic 2",
-				["unitlarge"] = "SVUI Unit BG 2",
-				["unitsmall"] = "SVUI Small BG 2",
-			},
-			["unitframes"] = {
-				["buff_bars"] = {.51, .79, 0, 1},
-				["health"] = {.16, .86, .22, 1},
-				["casting"] = {.91, .91, 0, 1},
-				["spark"] = {1, .72, 0, 1},
-			},
-		},
-		["classy"] = {
-			["colors"] = {
-				["special"] = {r2, g2, b2, 1},
-			},
-			["textures"] = {
-				["pattern"] = "SVUI Backdrop 3",
-				["comic"] = "SVUI Comic 3",
-				["unitlarge"] = "SVUI Unit BG 3",
-				["unitsmall"] = "SVUI Small BG 3",
-			},
-			["unitframes"] = {
-				["buff_bars"] = {scc.r, scc.g, scc.b, 1},
-				["health"] = {.16, .86, .22, 1},
-				["casting"] = {.91, .91, 0, 1},
-				["spark"] = {1, .72, 0, 1},
-			},
-		},
-		["dark"] = {
-			["colors"] = {
-				["special"] = {.25, .26, .27, 1},
-			},
-			["textures"] = {
-				["pattern"] = "SVUI Backdrop 4",
-				["comic"] = "SVUI Comic 4",
-				["unitlarge"] = "SVUI Unit BG 4",
-				["unitsmall"] = "SVUI Small BG 4",
-			},
-			["unitframes"] = {
-				["buff_bars"] = {.45, .55, .15, 1},
-				["health"] = {.06, .06, .06, 1},
-				["casting"] = {.8, .8, 0, 1},
-				["spark"] = {1, .72, 0, 1},
-			},
-		},
-	}
-	PRESET_DATA["auras"] = {
-		["link"] = "SVUnit",
-		["default"] = {
-			["player"] = {
-				["buffs"] = {
-					enable = false,
-					attachTo = "DEBUFFS",
-					anchorPoint = 'TOPLEFT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'RIGHT',
-				},
-				["debuffs"] = {
-					enable = false,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPLEFT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'RIGHT',
-				},
-				["aurabar"] = {
-					enable = false
-				}
-			},
-			["target"] = {
-				["smartAuraDisplay"] = "DISABLED",
-				["buffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "BUFFS",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["aurabar"] = {
-					enable = false
-				}
-			},
-			["focus"] = {
-				["smartAuraDisplay"] = "DISABLED",
-				["buffs"] = {
-					enable = false,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["aurabar"] = {
-					enable = false
-				}
-			}
-		},
-		["icons"] = {
-			["player"] = {
-				["buffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPLEFT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'RIGHT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "BUFFS",
-					anchorPoint = 'TOPLEFT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'RIGHT',
-				},
-				["aurabar"] = {
-					enable = false
-				}
-			},
-			["target"] = {
-				["smartAuraDisplay"] = "DISABLED",
-				["buffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "BUFFS",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["aurabar"] = {
-					enable = false
-				}
-			},
-			["focus"] = {
-				["smartAuraDisplay"] = "DISABLED",
-				["buffs"] = {
-					enable = false,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["aurabar"] = {
-					enable = false
-				}
-			}
-		},
-		["bars"] = {
-			["player"] = {
-				["buffs"] = {
-					enable = false,
-					attachTo = "FRAME"
-				},
-				["debuffs"] = {
-					enable = false,
-					attachTo = "FRAME"
-				},
-				["aurabar"] = {
-					enable = true,
-					attachTo = "FRAME"
-				}
-			},
-			["target"] = {
-				["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
-				["buffs"] = {
-					enable = false,
-					attachTo = "FRAME"
-				},
-				["debuffs"] = {
-					enable = false,
-					attachTo = "FRAME"
-				},
-				["aurabar"] = {
-					enable = true,
-					attachTo = "FRAME"
-				}
-			},
-			["focus"] = {
-				["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
-				["buffs"] = {
-					enable = false,
-					attachTo = "FRAME"
-				},
-				["debuffs"] = {
-					enable = false,
-					attachTo = "FRAME"
-				},
-				["aurabar"] = {
-					enable = true,
-					attachTo = "FRAME"
-				}
-			}
-		},
-		["theworks"] = {
-			["player"] = {
-				["buffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPLEFT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'RIGHT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "BUFFS",
-					anchorPoint = 'TOPLEFT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'RIGHT',
-				},
-				["aurabar"] = {
-					enable = true,
-					attachTo = "DEBUFFS"
-				}
-			},
-			["target"] = {
-				["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
-				["buffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "BUFFS",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["aurabar"] = {
-					enable = true,
-					attachTo = "DEBUFFS"
-				}
-			},
-			["focus"] = {
-				["smartAuraDisplay"] = "SHOW_DEBUFFS_ON_FRIENDLIES",
-				["buffs"] = {
-					enable = true,
-					attachTo = "FRAME",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["debuffs"] = {
-					enable = true,
-					attachTo = "BUFFS",
-					anchorPoint = 'TOPRIGHT',
-					verticalGrowth = 'UP',
-					horizontalGrowth = 'LEFT',
-				},
-				["aurabar"] = {
-					enable = true,
-					attachTo = "DEBUFFS"
-				}
-			}
-		},
-	}
-	PRESET_DATA["bars"] = {
-		["link"] = "SVBar",
-		["default"] = {
-			["Bar1"] = {
-				buttonsize = 32
-			},
-			["Bar2"] = {
-				enable = false
-			},
-			["Bar3"] = {
-				buttons = 6,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 32
-			},
-			["Bar5"] = {
-				buttons = 6,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 32
-			}
-		},
-		["onebig"] = {
-			["Bar1"] = {
-				buttonsize = 40
-			},
-			["Bar2"] = {
-				enable = false
-			},
-			["Bar3"] = {
-				buttons = 6,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 40
-			},
-			["Bar5"] = {
-				buttons = 6,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 40
-			}
-		},
-		["twosmall"] = {
-			["Bar1"] = {
-				buttonsize = 32
-			},
-			["Bar2"] = {
-				enable = true,
-				buttonsize = 32
-			},
-			["Bar3"] = {
-				buttons = 12,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 32
-			},
-			["Bar5"] = {
-				buttons = 12,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 32
-			}
-		},
-		["twobig"] = {
-			["Bar1"] = {
-				buttonsize = 40
-			},
-			["Bar2"] = {
-				enable = true,
-				buttonsize = 40
-			},
-			["Bar3"] = {
-				buttons = 12,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 40
-			},
-			["Bar5"] = {
-				buttons = 12,
-				buttonspacing = 2,
-				buttonsPerRow = 6,
-				buttonsize = 40
-			}
-		},
-	}
-	PRESET_DATA["units"] = {
-		["link"] = "SVUnit",
-		["default"] = {
-			["player"] = {
-				width = 215,
-				height = 60,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				}
-			},
-			["target"] = {
-				width = 215,
-				height = 60,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				}
-			},
-			["pet"] = {
-				width = 130,
-				height = 30,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				name = {
-					position = "CENTER"
-				},
-			},
-			["targettarget"] = {
-				width = 130,
-				height = 30,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				name = {
-					position = "CENTER"
-				},
-			},
-			["boss"] = {
-				width = 200,
-				height = 45,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				}
-			},
-			["party"] = {
-				width = 75,
-				height = 60,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				name = {
-					position = "INNERTOPLEFT"
-				},
-			},
-			["raid10"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid25"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid40"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-		},
-		["super"] = {
-			["player"] = {
-				width = 215,
-				height = 60,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				}
-			},
-			["target"] = {
-				width = 215,
-				height = 60,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				}
-			},
-			["pet"] = {
-				width = 150,
-				height = 30,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				name = {
-					position = "CENTER"
-				},
-			},
-			["targettarget"] = {
-				width = 150,
-				height = 30,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				name = {
-					position = "CENTER"
-				},
-			},
-			["boss"] = {
-				width = 200,
-				height = 45,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				}
-			},
-			["party"] = {
-				width = 75,
-				height = 60,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				name = {
-					position = "INNERTOPLEFT"
-				},
-			},
-			["raid10"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid25"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid40"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-		},
-		["simple"] = {
-			["player"] = {
-				width = 215,
-				height = 60,
-				portrait = {
-					enable = true,
-					overlay = false,
-					style = "2D",
-					width = 60,
-				}
-			},
-			["target"] = {
-				width = 215,
-				height = 60,
-				portrait = {
-					enable = true,
-					overlay = false,
-					style = "2D",
-					width = 60,
-				}
-			},
-			["pet"] = {
-				width = 150,
-				height = 30,
-				portrait = {
-					enable = true,
-					overlay = false,
-					style = "2D",
-					width = 30,
-				},
-				name = {
-					position = "INNERLEFT"
-				},
-			},
-			["targettarget"] = {
-				width = 150,
-				height = 30,
-				portrait = {
-					enable = true,
-					overlay = false,
-					style = "2D",
-					width = 30,
-				},
-				name = {
-					position = "INNERLEFT"
-				},
-			},
-			["boss"] = {
-				width = 200,
-				height = 45,
-				portrait = {
-					enable = true,
-					overlay = false,
-					style = "2D",
-					width = 45,
-				}
-			},
-			["party"] = {
-				width = 100,
-				height = 35,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				portrait = {
-					enable = true,
-					overlay = false,
-					style = "2D",
-					width = 35,
-				},
-				name = {
-					position = "INNERRIGHT"
-				},
-			},
-			["raid10"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid25"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid40"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-		},
-		["compact"] = {
-			["player"] = {
-				width = 215,
-				height = 50,
-				portrait = {
-					enable = false
-				}
-			},
-			["target"] = {
-				width = 215,
-				height = 50,
-				portrait = {
-					enable = false
-				}
-			},
-			["pet"] = {
-				width = 130,
-				height = 30,
-				portrait = {
-					enable = false
-				},
-				name = {
-					position = "CENTER"
-				},
-			},
-			["targettarget"] = {
-				width = 130,
-				height = 30,
-				portrait = {
-					enable = false
-				},
-				name = {
-					position = "CENTER"
-				},
-			},
-			["boss"] = {
-				width = 200,
-				height = 45,
-				portrait = {
-					enable = false
-				}
-			},
-			["party"] = {
-				width = 70,
-				height = 30,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				portrait = {
-					enable = false
-				},
-				name = {
-					position = "INNERTOPLEFT"
-				},
-			},
-			["raid10"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid25"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-			["raid40"] = {
-				width = 50,
-				height = 30,
-				wrapXOffset = 6,
-				wrapYOffset = 6,
-			},
-		},
-	}
-	PRESET_DATA["layouts"] = {
-		["link"] = "SVUnit",
-		["default"] = {
-			["grid"] = {
-				["enable"] = false,
-			},
-			["party"] = {
-				width = 75,
-				height = 60,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				icons = {
-					roleIcon = {
-						["attachTo"] = "INNERBOTTOMRIGHT",
-						["xOffset"] = 0,
-						["yOffset"] = 0,
-					},
-				},
-				name = {
-					["font"] = "SVUI Default Font",
-					["fontOutline"] = "OUTLINE",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 0,
-					["yOffset"] = 0,
-				},
-			},
-			["raid10"] = {
-				width = 50,
-				height = 30,
-				gRowCol = 1,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				showBy = "RIGHT_DOWN",
-				["power"] = {
-					["enable"] = false,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERBOTTOMLEFT",
-						["xOffset"] = 8,
-						["yOffset"] = 1,
-					},
-				},
-				["name"] = {
-					["font"] = "SVUI Default Font",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 8,
-					["yOffset"] = 0,
-				},
-			},
-			["raid25"] = {
-				width = 50,
-				height = 30,
-				gRowCol = 1,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				showBy = "RIGHT_DOWN",
-				["power"] = {
-					["enable"] = false,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERBOTTOMLEFT",
-						["xOffset"] = 8,
-						["yOffset"] = 1,
-					},
-				},
-				["name"] = {
-					["font"] = "SVUI Default Font",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 8,
-					["yOffset"] = 0,
-				},
-			},
-			["raid40"] = {
-				width = 50,
-				height = 30,
-				gRowCol = 1,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				showBy = "RIGHT_DOWN",
-				["power"] = {
-					["enable"] = false,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERBOTTOMLEFT",
-						["xOffset"] = 8,
-						["yOffset"] = 1,
-					},
-				},
-				["name"] = {
-					["font"] = "SVUI Default Font",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 8,
-					["yOffset"] = 0,
-				},
-			},
-		},
-		["healer"] = {
-			["grid"] = {
-				["enable"] = false,
-			},
-			["party"] = {
-				width = 75,
-				height = 60,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				portrait = {
-					enable = true,
-					overlay = true,
-					style = "3D",
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERBOTTOMRIGHT",
-						["xOffset"] = 0,
-						["yOffset"] = 0,
-					},
-				},
-				["name"] = {
-					["font"] = "SVUI Default Font",
-					["fontOutline"] = "OUTLINE",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 0,
-					["yOffset"] = 0,
-				},
-			},
-			["raid10"] = {
-				width = 50,
-				height = 30,
-				["showBy"] = "DOWN_RIGHT",
-				["gRowCol"] = 1,
-				["wrapXOffset"] = 4,
-				["wrapYOffset"] = 4,
-				["power"] = {
-					["enable"] = true,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERBOTTOMLEFT",
-						["xOffset"] = 8,
-						["yOffset"] = 0,
-					},
-				},
-				["name"] = {
-					["font"] = "SVUI Default Font",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 8,
-					["yOffset"] = 0,
-				},
-			},
-			["raid25"] = {
-				width = 50,
-				height = 30,
-				["showBy"] = "DOWN_RIGHT",
-				["gRowCol"] = 1,
-				["wrapXOffset"] = 4,
-				["wrapYOffset"] = 4,
-				["power"] = {
-					["enable"] = true,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERBOTTOMLEFT",
-						["xOffset"] = 8,
-						["yOffset"] = 0,
-					},
-				},
-				["name"] = {
-					["font"] = "SVUI Default Font",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 8,
-					["yOffset"] = 0,
-				},
-			},
-			["raid40"] = {
-				width = 50,
-				height = 30,
-				["showBy"] = "DOWN_RIGHT",
-				["gRowCol"] = 1,
-				["wrapXOffset"] = 4,
-				["wrapYOffset"] = 4,
-				["power"] = {
-					["enable"] = true,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERBOTTOMLEFT",
-						["xOffset"] = 8,
-						["yOffset"] = 0,
-					},
-				},
-				["name"] = {
-					["font"] = "SVUI Default Font",
-					["position"] = "INNERTOPLEFT",
-					["xOffset"] = 8,
-					["yOffset"] = 0,
-				},
-			},
-		},
-		["dps"] = {
-			["grid"] = {
-				["enable"] = false,
-			},
-			["party"] = {
-				width = 115,
-				height = 25,
-				wrapXOffset = 9,
-				wrapYOffset = 13,
-				["power"] = {
-					["enable"] = false,
-				},
-				portrait = {
-					enable = false,
-					overlay = false,
-					style = "2D",
-					width = 35,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "LEFT",
-						["xOffset"] = -2,
-						["yOffset"] = 0,
-					},
-				},
-				["name"] = {
-					["font"] = "Roboto",
-					["fontOutline"] = "NONE",
-					["position"] = "CENTER",
-					["xOffset"] = 0,
-					["yOffset"] = 1,
-				},
-			},
-			["raid10"] = {
-				["showBy"] = "UP_RIGHT",
-				["gRowCol"] = 2,
-				["wrapXOffset"] = 4,
-				["wrapYOffset"] = 4,
-				["power"] = {
-					["enable"] = false,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERLEFT",
-						["xOffset"] = 10,
-						["yOffset"] = 1,
-					},
-				},
-				["name"] = {
-					["font"] = "Roboto",
-					["position"] = "CENTER",
-					["xOffset"] = 0,
-					["yOffset"] = 1,
-				},
-				["width"] = 80,
-				["height"] = 20,
-			},
-			["raid25"] = {
-				["showBy"] = "UP_RIGHT",
-				["gRowCol"] = 3,
-				["wrapXOffset"] = 4,
-				["wrapYOffset"] = 4,
-				["power"] = {
-					["enable"] = false,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERLEFT",
-						["xOffset"] = 10,
-						["yOffset"] = 1,
-					},
-				},
-				["name"] = {
-					["font"] = "Roboto",
-					["position"] = "CENTER",
-					["xOffset"] = 0,
-					["yOffset"] = 1,
-				},
-				["width"] = 80,
-				["height"] = 20,
-			},
-			["raid40"] = {
-				["showBy"] = "UP_RIGHT",
-				["gRowCol"] = 4,
-				["wrapXOffset"] = 4,
-				["wrapYOffset"] = 4,
-				["power"] = {
-					["enable"] = false,
-				},
-				["icons"] = {
-					["roleIcon"] = {
-						["attachTo"] = "INNERLEFT",
-						["xOffset"] = 10,
-						["yOffset"] = 1,
-					},
-				},
-				["name"] = {
-					["font"] = "Roboto",
-					["position"] = "CENTER",
-					["xOffset"] = 0,
-					["yOffset"] = 1,
-				},
-				["width"] = 80,
-				["height"] = 20,
-			},
-		},
-		["grid"] = {
-			["grid"] = {
-				["enable"] = true,
-				["size"] = 34,
-				["shownames"] = true,
-			},
-			["party"] = {
-				["gridAllowed"] = true,
-				["wrapXOffset"] = 1,
-				["wrapYOffset"] = 1,
-				["power"] = {
-					["enable"] = false,
-				},
-				portrait = {
-					enable = false,
-				},
-			},
-			["raid10"] = {
-				["gridAllowed"] = true,
-				["wrapXOffset"] = 1,
-				["wrapYOffset"] = 1,
-				["gRowCol"] = 1,
-				["showBy"] = "RIGHT_DOWN",
-			},
-			["raid25"] = {
-				["gridAllowed"] = true,
-				["wrapXOffset"] = 1,
-				["wrapYOffset"] = 1,
-				["gRowCol"] = 1,
-				["showBy"] = "RIGHT_DOWN",
-			},
-			["raid40"] = {
-				["gridAllowed"] = true,
-				["wrapXOffset"] = 1,
-				["wrapYOffset"] = 1,
-				["gRowCol"] = 1,
-				["showBy"] = "RIGHT_DOWN",
-			},
-		},
-	}
-end
-
-local function _copyPresets(saved, preset)
-	if(type(preset) == 'table') then
-        for key,val in pairs(preset) do
-        	if(not saved[key]) then saved[key] = {} end
-    		if(type(val) == "table") then
-    			_copyPresets(saved[key], val)
-    		elseif(saved[key]) then
-            	saved[key] = val
-            end
-        end
-    else
-    	saved = preset
-    end
-end
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local function SetInstallButton(button)
-    if(not button) then return end
-    button.Left:SetAlpha(0)
-    button.Middle:SetAlpha(0)
-    button.Right:SetAlpha(0)
-    button:SetNormalTexture("")
-    button:SetPushedTexture("")
-    button:SetPushedTexture("")
-    button:SetDisabledTexture("")
-    button:RemoveTextures()
-    button:SetFrameLevel(button:GetFrameLevel() + 1)
-end
-
-local function forceCVars()
-	SetCVar("alternateResourceText",1)
-	SetCVar("statusTextDisplay","BOTH")
-	SetCVar("ShowClassColorInNameplate",1)
-	SetCVar("screenshotQuality",10)
-	SetCVar("chatMouseScroll",1)
-	SetCVar("chatStyle","classic")
-	SetCVar("WholeChatWindowClickable",0)
-	SetCVar("ConversationMode","inline")
-	SetCVar("showTutorials",0)
-	SetCVar("UberTooltips",1)
-	SetCVar("threatWarning",3)
-	SetCVar('alwaysShowActionBars',1)
-	SetCVar('lockActionBars',1)
-	SetCVar('SpamFilter',0)
-	InterfaceOptionsActionBarsPanelPickupActionKeyDropDown:SetValue('SHIFT')
-	InterfaceOptionsActionBarsPanelPickupActionKeyDropDown:RefreshValue()
-end
-
-local function ShowLayout(show40)
-	if(not _G["SVUI_Raid40"] or (show40 and _G["SVUI_Raid40"].forceShow == true)) then return end
-	if(not show40 and _G["SVUI_Raid40"].forceShow ~= true) then return end
-	SV.SVUnit:UpdateGroupConfig(_G["SVUI_Raid40"], show40)
-end
-
-local function BarShuffle()
-	local bar2 = SV.db.SVBar.Bar2.enable;
-	local base = 30;
-	local bS = SV.db.SVBar.Bar1.buttonspacing;
-	local tH = SV.db.SVBar.Bar1.buttonsize  +  (base - bS);
-	local b2h = bar2 and tH or base;
-	local sph = (400 - b2h);
-	if not SV.db.framelocations then SV.db.framelocations = {} end
-	SV.db.framelocations.SVUI_SpecialAbility_MOVE = "BOTTOMSVUIParentBOTTOM0"..sph;
-	SV.db.framelocations.SVUI_ActionBar2_MOVE = "BOTTOMSVUI_ActionBar1TOP0"..(-bS);
-	SV.db.framelocations.SVUI_ActionBar3_MOVE = "BOTTOMLEFTSVUI_ActionBar1BOTTOMRIGHT40";
-	SV.db.framelocations.SVUI_ActionBar5_MOVE = "BOTTOMRIGHTSVUI_ActionBar1BOTTOMLEFT-40";
-	if bar2 then
-		SV.db.framelocations.SVUI_PetActionBar_MOVE = "BOTTOMLEFTSVUI_ActionBar2TOPLEFT04"
-		SV.db.framelocations.SVUI_StanceBar_MOVE = "BOTTOMRIGHTSVUI_ActionBar2TOPRIGHT04";
-	else
-		SV.db.framelocations.SVUI_PetActionBar_MOVE = "BOTTOMLEFTSVUI_ActionBar1TOPLEFT04"
-		SV.db.framelocations.SVUI_StanceBar_MOVE = "BOTTOMRIGHTSVUI_ActionBar1TOPRIGHT04";
-	end
-end
-
-local function UFMoveBottomQuadrant(toggle)
-	if not SV.db.framelocations then SV.db.framelocations = {} end
-	if not toggle then
-		SV.db.framelocations.SVUI_Player_MOVE = "BOTTOMSVUIParentBOTTOM-278182"
-		SV.db.framelocations.SVUI_PlayerCastbar_MOVE = "BOTTOMSVUIParentBOTTOM-278122"
-		SV.db.framelocations.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278182"
-		SV.db.framelocations.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278122"
-		SV.db.framelocations.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0181"
-		SV.db.framelocations.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0214"
-		SV.db.framelocations.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432"
-		SV.db.framelocations.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495182"
-	elseif toggle == "shift" then
-		SV.db.framelocations.SVUI_Player_MOVE = "BOTTOMSVUIParentBOTTOM-278210"
-		SV.db.framelocations.SVUI_PlayerCastbar_MOVE = "BOTTOMSVUIParentBOTTOM-278150"
-		SV.db.framelocations.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278210"
-		SV.db.framelocations.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278150"
-		SV.db.framelocations.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0209"
-		SV.db.framelocations.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0242"
-		SV.db.framelocations.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432"
-		SV.db.framelocations.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495210"
-	else
-		local c = 136;
-		local d = 135;
-		local e = 80;
-		SV.db.framelocations.SVUI_Player_MOVE = "BOTTOMSVUIParentBOTTOM"..-c..""..d;
-		SV.db.framelocations.SVUI_PlayerCastbar_MOVE = "BOTTOMSVUIParentBOTTOM"..-c..""..(d-60);
-		SV.db.framelocations.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..d;
-		SV.db.framelocations.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..(d-60);
-		SV.db.framelocations.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM"..-c..""..e;
-		SV.db.framelocations.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..e;
-		SV.db.framelocations.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM"..c..""..(d + 150);
-		SV.db.framelocations.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495"..d;
-	end
-end
-
-local function UFMoveLeftQuadrant(toggle)
-	if not SV.db.framelocations then SV.db.framelocations = {} end
-	if not toggle then
-		SV.db.framelocations.SVUI_Assist_MOVE = "TOPLEFTSVUIParentTOPLEFT"..XOFF.."-250"
-		SV.db.framelocations.SVUI_Tank_MOVE = "TOPLEFTSVUIParentTOPLEFT"..XOFF.."-175"
-		SV.db.framelocations.SVUI_Raidpet_MOVE = "TOPLEFTSVUIParentTOPLEFT"..XOFF.."-325"
-		SV.db.framelocations.SVUI_Party_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
-		SV.db.framelocations.SVUI_Raid10_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
-		SV.db.framelocations.SVUI_Raid25_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
-		SV.db.framelocations.SVUI_Raid40_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT"..XOFF.."400"
-	else
-		SV.db.framelocations.SVUI_Assist_MOVE = "TOPLEFTSVUIParentTOPLEFT4-250"
-		SV.db.framelocations.SVUI_Tank_MOVE = "TOPLEFTSVUIParentTOPLEFT4-175"
-		SV.db.framelocations.SVUI_Raidpet_MOVE = "TOPLEFTSVUIParentTOPLEFT4-325"
-		SV.db.framelocations.SVUI_Party_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
-		SV.db.framelocations.SVUI_Raid40_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
-		SV.db.framelocations.SVUI_Raid10_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
-		SV.db.framelocations.SVUI_Raid25_MOVE = "BOTTOMLEFTSVUIParentBOTTOMLEFT4300"
-	end
-end
-
-local function UFMoveTopQuadrant(toggle)
-	if not SV.db.framelocations then SV.db.framelocations = {} end
-	if not toggle then
-		SV.db.framelocations.GM_MOVE = "TOPLEFTSVUIParentTOPLEFT250-25"
-		SV.db.framelocations.SVUI_LootFrame_MOVE = "BOTTOMSVUIParentBOTTOM0350"
-		SV.db.framelocations.SVUI_AltPowerBar_MOVE = "TOPSVUIParentTOP0-40"
-		SV.db.framelocations.LoC_MOVE = "BOTTOMSVUIParentBOTTOM0350"
-		SV.db.framelocations.BNET_MOVE = "TOPRIGHTSVUIParentTOPRIGHT-4-250"
-	else
-		SV.db.framelocations.GM_MOVE = "TOPLEFTSVUIParentTOPLEFT344-25"
-		SV.db.framelocations.SVUI_LootFrame_MOVE = "BOTTOMSVUIParentBOTTOM0254"
-		SV.db.framelocations.SVUI_AltPowerBar_MOVE = "TOPSVUIParentTOP0-39"
-		SV.db.framelocations.LoC_MOVE = "BOTTOMSVUIParentBOTTOM0443"
-		SV.db.framelocations.BNET_MOVE = "TOPRIGHTSVUIParentTOPRIGHT-4-248"
-	end
-end
-
-local function UFMoveRightQuadrant(toggle)
-	if not SV.db.framelocations then SV.db.framelocations = {} end
-	local dH = SV.db.SVDock.dockRightHeight  +  60
-	if not toggle or toggle == "high" then
-		SV.db.framelocations.SVUI_BossHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
-		SV.db.framelocations.SVUI_ArenaHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
-		SV.db.framelocations.Tooltip_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-284"..dH;
-	else
-		SV.db.framelocations.SVUI_BossHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
-		SV.db.framelocations.SVUI_ArenaHolder_MOVE = "RIGHTSVUIParentRIGHT-1050"
-		SV.db.framelocations.Tooltip_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-284"..dH;
-	end
-end
-
-local function InitializeChatFrames(mungs)
-	forceCVars()
-	FCF_ResetChatWindows()
-	FCF_SetLocked(ChatFrame1, 1)
-	FCF_DockFrame(ChatFrame2)
-	FCF_SetLocked(ChatFrame2, 1)
-	FCF_OpenNewWindow(LOOT)
-	FCF_DockFrame(ChatFrame3)
-	FCF_SetLocked(ChatFrame3, 1)
-	for i = 1, NUM_CHAT_WINDOWS do
-		local chat = _G["ChatFrame"..i]
-		local chatID = chat:GetID()
-		if i == 1 then
-			chat:ClearAllPoints()
-			chat:Point("BOTTOMLEFT", LeftSuperDock, "BOTTOMLEFT", 5, 5)
-			chat:Point("TOPRIGHT", LeftSuperDock, "TOPRIGHT", -5, -10)
-		end
-		FCF_SavePositionAndDimensions(chat)
-		FCF_StopDragging(chat)
-		FCF_SetChatWindowFontSize(nil, chat, 12)
-		if i == 1 then
-			FCF_SetWindowName(chat, GENERAL)
-		elseif i == 2 then
-			FCF_SetWindowName(chat, GUILD_EVENT_LOG)
-		elseif i == 3 then
-			FCF_SetWindowName(chat, LOOT)
-		end
-	end
-	ChatFrame_RemoveAllMessageGroups(ChatFrame1)
-	ChatFrame_AddMessageGroup(ChatFrame1, "SAY")
-	ChatFrame_AddMessageGroup(ChatFrame1, "EMOTE")
-	ChatFrame_AddMessageGroup(ChatFrame1, "YELL")
-	ChatFrame_AddMessageGroup(ChatFrame1, "GUILD")
-	ChatFrame_AddMessageGroup(ChatFrame1, "OFFICER")
-	ChatFrame_AddMessageGroup(ChatFrame1, "GUILD_ACHIEVEMENT")
-	ChatFrame_AddMessageGroup(ChatFrame1, "WHISPER")
-	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_SAY")
-	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_EMOTE")
-	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_YELL")
-	ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_BOSS_EMOTE")
-	ChatFrame_AddMessageGroup(ChatFrame1, "PARTY")
-	ChatFrame_AddMessageGroup(ChatFrame1, "PARTY_LEADER")
-	ChatFrame_AddMessageGroup(ChatFrame1, "RAID")
-	ChatFrame_AddMessageGroup(ChatFrame1, "RAID_LEADER")
-	ChatFrame_AddMessageGroup(ChatFrame1, "RAID_WARNING")
-	ChatFrame_AddMessageGroup(ChatFrame1, "INSTANCE_CHAT")
-	ChatFrame_AddMessageGroup(ChatFrame1, "INSTANCE_CHAT_LEADER")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BATTLEGROUND")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BATTLEGROUND_LEADER")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BG_HORDE")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BG_ALLIANCE")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BG_NEUTRAL")
-	ChatFrame_AddMessageGroup(ChatFrame1, "SYSTEM")
-	ChatFrame_AddMessageGroup(ChatFrame1, "ERRORS")
-	ChatFrame_AddMessageGroup(ChatFrame1, "AFK")
-	ChatFrame_AddMessageGroup(ChatFrame1, "DND")
-	ChatFrame_AddMessageGroup(ChatFrame1, "IGNORED")
-	ChatFrame_AddMessageGroup(ChatFrame1, "ACHIEVEMENT")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BN_WHISPER")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BN_CONVERSATION")
-	ChatFrame_AddMessageGroup(ChatFrame1, "BN_INLINE_TOAST_ALERT")
-	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_FACTION_CHANGE")
-	ChatFrame_AddMessageGroup(ChatFrame1, "SKILL")
-	ChatFrame_AddMessageGroup(ChatFrame1, "LOOT")
-	ChatFrame_AddMessageGroup(ChatFrame1, "MONEY")
-	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_XP_GAIN")
-	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_HONOR_GAIN")
-	ChatFrame_AddMessageGroup(ChatFrame1, "COMBAT_GUILD_XP_GAIN")
-
-	ChatFrame_RemoveAllMessageGroups(ChatFrame3)
-	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_FACTION_CHANGE")
-	ChatFrame_AddMessageGroup(ChatFrame3, "SKILL")
-	ChatFrame_AddMessageGroup(ChatFrame3, "LOOT")
-	ChatFrame_AddMessageGroup(ChatFrame3, "MONEY")
-	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_XP_GAIN")
-	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_HONOR_GAIN")
-	ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_GUILD_XP_GAIN")
-
-	ChatFrame_AddChannel(ChatFrame1, GENERAL)
-
-	ToggleChatColorNamesByClassGroup(true, "SAY")
-	ToggleChatColorNamesByClassGroup(true, "EMOTE")
-	ToggleChatColorNamesByClassGroup(true, "YELL")
-	ToggleChatColorNamesByClassGroup(true, "GUILD")
-	ToggleChatColorNamesByClassGroup(true, "OFFICER")
-	ToggleChatColorNamesByClassGroup(true, "GUILD_ACHIEVEMENT")
-	ToggleChatColorNamesByClassGroup(true, "ACHIEVEMENT")
-	ToggleChatColorNamesByClassGroup(true, "WHISPER")
-	ToggleChatColorNamesByClassGroup(true, "PARTY")
-	ToggleChatColorNamesByClassGroup(true, "PARTY_LEADER")
-	ToggleChatColorNamesByClassGroup(true, "RAID")
-	ToggleChatColorNamesByClassGroup(true, "RAID_LEADER")
-	ToggleChatColorNamesByClassGroup(true, "RAID_WARNING")
-	ToggleChatColorNamesByClassGroup(true, "BATTLEGROUND")
-	ToggleChatColorNamesByClassGroup(true, "BATTLEGROUND_LEADER")
-	ToggleChatColorNamesByClassGroup(true, "INSTANCE_CHAT")
-	ToggleChatColorNamesByClassGroup(true, "INSTANCE_CHAT_LEADER")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL1")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL2")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL3")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL4")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL5")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL6")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL7")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL8")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL9")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL10")
-	ToggleChatColorNamesByClassGroup(true, "CHANNEL11")
-
-	ChangeChatColor("CHANNEL1", 195 / 255, 230 / 255, 232 / 255)
-	ChangeChatColor("CHANNEL2", 232 / 255, 158 / 255, 121 / 255)
-	ChangeChatColor("CHANNEL3", 232 / 255, 228 / 255, 121 / 255)
-
-	if not mungs then
-		if SV.Chat then
-			SV.Chat:ReLoad(true)
-			if SVUI_Cache["Dock"].RightSuperDockFaded  == true then RightSuperDockToggleButton:Click()end
-			if SVUI_Cache["Dock"].LeftSuperDockFaded  == true then LeftSuperDockToggleButton:Click()end
-		end
-		SV:SavedPopup()
-	end
-end
-
-local function SetUserScreen(rez, preserve)
-	if not preserve then
-		if okToResetMOVE then
-			SV:ResetMovables("")
-			okToResetMOVE = false;
-		end
-		SV.db:SetDefault("SVUnit")
-	end
-
-	if not SV.db.framelocations then SV.db.framelocations = {} end
-	if rez == "low" then
-		if not preserve then
-			SV.db.SVDock.dockLeftWidth = 350;
-			SV.db.SVDock.dockLeftHeight = 180;
-			SV.db.SVDock.dockRightWidth = 350;
-			SV.db.SVDock.dockRightHeight = 180;
-			SV.db.SVAura.wrapAfter = 10
-			SV.db.SVUnit.fontSize = 10;
-			SV.db.SVUnit.player.width = 200;
-			SV.db.SVUnit.player.castbar.width = 200;
-			SV.db.SVUnit.player.classbar.fill = "fill"
-			SV.db.SVUnit.player.health.tags = "[health:color][health:current]"
-			SV.db.SVUnit.target.width = 200;
-			SV.db.SVUnit.target.castbar.width = 200;
-			SV.db.SVUnit.target.health.tags = "[health:color][health:current]"
-			SV.db.SVUnit.pet.power.enable = false;
-			SV.db.SVUnit.pet.width = 200;
-			SV.db.SVUnit.pet.height = 26;
-			SV.db.SVUnit.targettarget.debuffs.enable = false;
-			SV.db.SVUnit.targettarget.power.enable = false;
-			SV.db.SVUnit.targettarget.width = 200;
-			SV.db.SVUnit.targettarget.height = 26;
-			SV.db.SVUnit.boss.width = 200;
-			SV.db.SVUnit.boss.castbar.width = 200;
-			SV.db.SVUnit.arena.width = 200;
-			SV.db.SVUnit.arena.castbar.width = 200
-		end
-		if not mungs then
-			UFMoveBottomQuadrant(true)
-			UFMoveLeftQuadrant(true)
-			UFMoveTopQuadrant(true)
-			UFMoveRightQuadrant(true)
-		end
-		SV.ghettoMonitor = true
-	else
-		SV.db:SetDefault("SVDock")
-		SV.db:SetDefault("SVAura")
-		if not mungs then
-			UFMoveBottomQuadrant()
-			UFMoveLeftQuadrant()
-			UFMoveTopQuadrant()
-			UFMoveRightQuadrant()
-		end
-		SV.ghettoMonitor = nil
-	end
-
-	if(not preserve and not mungs) then
-		BarShuffle()
-    	SV:SetSVMovablesPositions()
-		Registry:Update('SVDock')
-		Registry:Update('SVAura')
-		Registry:Update('SVBar')
-		Registry:Update('SVUnit')
-		SV:SavedPopup()
-	end
-end
---[[
-##########################################################
-GLOBAL/MODULE FUNCTIONS
-##########################################################
-]]--
-local function LoadPresetData(category, theme)
-	if(not PRESET_DATA) then LoadAllPresets() end
-	if(PRESET_DATA and PRESET_DATA[category] and PRESET_DATA[category]["link"]) then
-		theme = theme or "default"
-		local saved = PRESET_DATA[category]["link"]
-		local preset =  PRESET_DATA[category][theme]
-	    _copyPresets(SV.db[saved], preset)
-	end
-end
-
-local function SetColorTheme(style, preserve)
-	style = style or "default";
-
-	if not preserve then
-		SV.db:SetDefault("media")
-	end
-
-	local presets = LoadPresetData("media", style)
-	SV.db.LAYOUT.mediastyle = style;
-
-	if(style == "default") then
-		SV.db.SVUnit.healthclass = true;
-	else
-		SV.db.SVUnit.healthclass = false;
-	end
-
-	if(not mungs) then
-		SV:MediaUpdate()
-		Registry:Update('SVStats')
-		Registry:Update('SVUnit')
-		if(not preserve) then
-			SV:SavedPopup()
-		end
-	end
-end
-
-local function SetUnitframeLayout(style, preserve)
-	style = style or "default";
-
-	if not SV.db.framelocations then SV.db.framelocations = {} end
-
-	if not preserve then
-		SV.db:SetDefault("SVUnit")
-		SV.db:SetDefault("SVStats")
-		if okToResetMOVE then
-			SV:ResetMovables('')
-			okToResetMOVE = false
-		end
-	end
-
-	local presets = LoadPresetData("units", style)
-	SV.db.LAYOUT.unitstyle = style
-
-	if(SV.db.LAYOUT.mediastyle == "default") then
-		SV.db.SVUnit.healthclass = true;
-	end
-
-	if(not mungs) then
-		if(not preserve) then
-			if SV.db.LAYOUT.barstyle and (SV.db.LAYOUT.barstyle == "twosmall" or SV.db.LAYOUT.barstyle == "twobig") then
-				UFMoveBottomQuadrant("shift")
-			else
-				UFMoveBottomQuadrant()
-			end
-			SV:SetSVMovablesPositions()
-		end
-		Registry:Update('SVStats')
-		Registry:Update('SVUnit')
-		if(not preserve) then
-			SV:SavedPopup()
-		end
-	end
-end
-
-local function SetGroupframeLayout(style, preserve)
-	style = style or "default";
-
-	local presets = LoadPresetData("layouts", style)
-	SV.db.LAYOUT.groupstyle = style
-
-	if(not mungs) then
-		Registry:Update('SVUnit')
-		if(not preserve) then
-			SV:SavedPopup()
-		end
-	end
-end
-
-local function SetupBarLayout(style, preserve)
-	style = style or "default";
-
-	if not SV.db.framelocations then SV.db.framelocations={} end
-	if not preserve then
-		SV.db:SetDefault("SVBar")
-		if okToResetMOVE then
-			SV:ResetMovables('')
-			okToResetMOVE=false
-		end
-	end
-
-	local presets = LoadPresetData("bars", style)
-	SV.db.LAYOUT.barstyle = style;
-
-	if(not mungs) then
-		if(not preserve) then
-			if(style == 'twosmall' or style == 'twobig') then
-				UFMoveBottomQuadrant("shift")
-			else
-				UFMoveBottomQuadrant()
-			end
-		end
-		if(not preserve) then
-			BarShuffle()
-			SV:SetSVMovablesPositions()
-		end
-		Registry:Update('SVStats')
-		Registry:Update('SVBar')
-		if(not preserve) then
-			SV:SavedPopup()
-		end
-	end
-end
-
-local function SetupAuralayout(style, preserve)
-	style = style or "default";
-	local presets = LoadPresetData("auras", style)
-	SV.db.LAYOUT.aurastyle = style;
-
-	if(not mungs) then
-		Registry:Update('SVStats')
-		Registry:Update('SVAura')
-		Registry:Update('SVUnit')
-		if(not preserve) then
-			SV:SavedPopup()
-		end
-	end
-end
-
-local function PlayThemeSong()
-	if(not musicIsPlaying) then
-		SetCVar("Sound_MusicVolume", 100)
-		SetCVar("Sound_EnableMusic", 1)
-		StopMusic()
-		PlayMusic([[Interface\AddOns\SVUI\assets\sounds\SuperVillain.mp3]])
-		musicIsPlaying = true
-	end
-end
-
-local function InstallComplete()
-	SVUI_Profile.SAFEDATA.install_version = SV.___version;
-	StopMusic()
-	SetCVar("Sound_MusicVolume",user_music_vol)
-	okToResetMOVE = false;
-	ReloadUI()
-end
-
-local function InstallMungsChoice()
-	mungs = true;
-	okToResetMOVE = false;
-	InitializeChatFrames(true);
-	SetUserScreen('high');
-	SV:SetColorTheme();
-	SV.db.LAYOUT.unitstyle = nil;
-	SV:SetUnitframeLayout();
-	SV.db.LAYOUT.groupstyle = nil;
-	SV.db.LAYOUT.barstyle = nil;
-	SV:SetupBarLayout();
-	SV:SetupAuralayout();
-	SVUI_Profile.SAFEDATA.install_version = SV.___version;
-	StopMusic()
-	SetCVar("Sound_MusicVolume",user_music_vol)
-	ReloadUI()
-end
-
-local function ResetAll()
-	SVUI_InstallNextButton:Disable()
-	SVUI_InstallPrevButton:Disable()
-	SVUI_InstallOption01Button:Hide()
-	SVUI_InstallOption01Button:SetScript("OnClick",nil)
-	SVUI_InstallOption01Button:SetText("")
-	SVUI_InstallOption02Button:Hide()
-	SVUI_InstallOption02Button:SetScript("OnClick",nil)
-	SVUI_InstallOption02Button:SetText("")
-	SVUI_InstallOption03Button:Hide()
-	SVUI_InstallOption03Button:SetScript("OnClick",nil)
-	SVUI_InstallOption03Button:SetText("")
-	SVUI_InstallOption1Button:Hide()
-	SVUI_InstallOption1Button:SetScript("OnClick",nil)
-	SVUI_InstallOption1Button:SetText("")
-	SVUI_InstallOption2Button:Hide()
-	SVUI_InstallOption2Button:SetScript('OnClick',nil)
-	SVUI_InstallOption2Button:SetText('')
-	SVUI_InstallOption3Button:Hide()
-	SVUI_InstallOption3Button:SetScript('OnClick',nil)
-	SVUI_InstallOption3Button:SetText('')
-	SVUI_InstallOption4Button:Hide()
-	SVUI_InstallOption4Button:SetScript('OnClick',nil)
-	SVUI_InstallOption4Button:SetText('')
-	SVUI_SetupHolder.SubTitle:SetText("")
-	SVUI_SetupHolder.Desc1:SetText("")
-	SVUI_SetupHolder.Desc2:SetText("")
-	SVUI_SetupHolder.Desc3:SetText("")
-	SVUI_SetupHolder:Size(550,400)
-end
-
-local function SetPage(newPage)
-	CURRENT_PAGE = newPage;
-	ResetAll()
-	InstallStatus.text:SetText(CURRENT_PAGE.."  /  "..MAX_PAGE)
-	local setupFrame = SVUI_SetupHolder;
-	if newPage  ~= MAX_PAGE then
-		SVUI_InstallNextButton:Enable()
-		SVUI_InstallNextButton:Show()
-	end
-	if newPage  ~= 1 then
-		SVUI_InstallPrevButton:Enable()
-		SVUI_InstallPrevButton:Show()
-	end
-	--[[
-		more useful globalstrings
-
-		CUSTOM
-		SETTINGS
-		DEFAULT
-		DEFAULTS
-		USE
-		UIOPTIONS_MENU
-		LFGWIZARD_TITLE
-		CONTINUE
-	]]--
-	ShowLayout()
-	if newPage == 1 then
-		local hasOldConfig = SVUI_Profile.SAFEDATA.install_version
-		SVUI_InstallPrevButton:Disable()
-		SVUI_InstallPrevButton:Hide()
-		okToResetMOVE = true
-		setupFrame.SubTitle:SetText(format(L["This is Supervillain UI version %s!"], SV.___version))
-		setupFrame.Desc1:SetText(L["Before I can turn you loose, persuing whatever villainy you feel will advance your professional career... I need to ask some questions and turn a few screws first."])
-		setupFrame.Desc2:SetText(L["At any time you can get to the config options by typing the command  / sv. For quick changes to frame, bar or color sets, call your henchman by clicking the button on the bottom right of your screen. (Its the one with his stupid face on it)"])
-		setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-		SVUI_InstallOption01Button:Show()
-		SVUI_InstallOption01Button:SetScript("OnClick", InstallMungsChoice)
-		SVUI_InstallOption01Button:SetText(USE.."\n"..DEFAULT.."\n"..SETTINGS)
-
-		SVUI_InstallOption02Button:Show()
-		SVUI_InstallOption02Button:SetScript("OnClick", InstallComplete)
-		SVUI_InstallOption02Button:SetText("PRETEND YOU\nDID THIS\nALREADY")
-
-		if(hasOldConfig) then
-			SVUI_InstallOption03Button:Show()
-			SVUI_InstallOption03Button:SetScript("OnClick", InstallComplete)
-			SVUI_InstallOption03Button:SetText("Keep\nSaved\n"..SETTINGS)
-		end
-
-	elseif newPage == 2 then
-		setupFrame.SubTitle:SetText(CHAT)
-		setupFrame.Desc1:SetText(L["Whether you want to or not, you will be needing a communicator so other villains can either update you on their doings-of-evil or inform you about the MANY abilities of Chuck Norris"])
-		setupFrame.Desc2:SetText(L["The chat windows function the same as standard chat windows, you can right click the tabs and drag them, rename them, slap them around, you know... whatever. Clickity-click to setup your chat windows."])
-		setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", function()
-			InitializeChatFrames(false)
-		end)
-		SVUI_InstallOption1Button:SetText(CHAT_DEFAULTS)
-
-	elseif newPage == 3 then
-		local rez = GetCVar("gxResolution")
-		setupFrame.SubTitle:SetText(RESOLUTION)
-		setupFrame.Desc1:SetText(format(L["Your current resolution is %s, this is considered a %s resolution."], rez, (SV.ghettoMonitor and LOW or HIGH)))
-		if SV.ghettoMonitor then
-			setupFrame.Desc2:SetText(L["This resolution requires that you change some settings to get everything to fit on your screen."].." "..L["Click the button below to resize your chat frames, unitframes, and reposition your actionbars."].." "..L["You may need to further alter these settings depending how low your resolution is."])
-			setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-		else
-			setupFrame.Desc2:SetText(L["This resolution doesn't require that you change settings for the UI to fit on your screen."].." "..L["Click the button below to resize your chat frames, unitframes, and reposition your actionbars."].." "..L["This is completely optional."])
-			setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-		end
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", function()
-			SetUserScreen("high")
-			SVUI_SetupHolder.Desc1:SetText(L["|cffFF9F00"..HIGH.." "..RESOLUTION.."!|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["So what you think your better than me with your big monitor? HUH?!?!"])
-			SVUI_SetupHolder.Desc3:SetText(L["Dont forget whos in charge here! But enjoy the incredible detail."])
-		end)
-		SVUI_InstallOption1Button:SetText(HIGH)
-		SVUI_InstallOption2Button:Show()
-		SVUI_InstallOption2Button:SetScript("OnClick", function()
-			SetUserScreen("low")
-			SVUI_SetupHolder.Desc1:SetText(L["|cffFF9F00"..LOW.." "..RESOLUTION.."|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["Why are you playing this on what I would assume is a calculator display?"])
-			SVUI_SetupHolder.Desc3:SetText(L["Enjoy the ONE incredible pixel that fits on this screen."])
-		end)
-		SVUI_InstallOption2Button:SetText(LOW)
-
-	elseif newPage == 4 then
-		setupFrame.SubTitle:SetText(COLOR.." "..SETTINGS)
-		setupFrame.Desc1:SetText(L["Choose a theme layout you wish to use for your initial setup."])
-		setupFrame.Desc2:SetText(L["You can always change fonts and colors of any element of Supervillain UI from the in-game configuration."])
-		setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", function()
-			SetColorTheme("kaboom")
-			SVUI_SetupHolder.Desc1:SetText(L["|cffFF9F00KABOOOOM!|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["This theme tells the world that you are a villain who can put on a show"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["or better yet, you ARE the show!"])
-		end)
-		SVUI_InstallOption1Button:SetText(L["Kaboom!"])
-		SVUI_InstallOption2Button:Show()
-		SVUI_InstallOption2Button:SetScript("OnClick", function()
-			SetColorTheme("dark")
-			SVUI_SetupHolder.Desc1:SetText(L["|cffAF30FFThe Darkest Night|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["This theme indicates that you have no interest in wasting time"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L[" the dying begins NOW!"])
-		end)
-		SVUI_InstallOption2Button:SetText(L["Darkness"])
-		SVUI_InstallOption3Button:Show()
-		SVUI_InstallOption3Button:SetScript("OnClick", function()
-			SetColorTheme("classy")
-			SVUI_SetupHolder.Desc1:SetText(L["|cffFFFF00"..CLASS_COLORS.."|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["This theme is for villains who take pride in their class"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L[" villains know how to reprezent!"])
-		end)
-		SVUI_InstallOption3Button:SetText(L["Class" .. "\n" .. "Colors"])
-		SVUI_InstallOption4Button:Show()
-		SVUI_InstallOption4Button:SetScript("OnClick", function()
-			SetColorTheme()
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFPlain and Simple|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["This theme is for any villain who sticks to their traditions"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["you don't need fancyness to kick some ass!"])
-		end)
-		SVUI_InstallOption4Button:SetText(L["Vintage"])
-
-	elseif newPage == 5 then
-		ShowLayout(true)
-		setupFrame.SubTitle:SetText(UNITFRAME_LABEL.." "..SETTINGS)
-		setupFrame.Desc1:SetText(L["You can now choose what primary unitframe style you wish to use."])
-		setupFrame.Desc2:SetText(L["This will change the layout of your unitframes (ie.. Player, Target, Pet, Party, Raid ...etc)."])
-		setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.unitstyle = nil;
-			SetUnitframeLayout("super")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFLets Do This|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["This layout is anything but minimal! Using this is like being at a rock concert"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["then annihilating the crowd with frickin lazer beams!"])
-		end)
-		SVUI_InstallOption1Button:SetText(L["Super"])
-		SVUI_InstallOption2Button:Show()
-		SVUI_InstallOption2Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.unitstyle = nil;
-			SetUnitframeLayout("simple")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFSimply Simple|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["This layout is for the villain who just wants to get things done!"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["but he still wants to see your face before he hits you!"])
-		end)
-		SVUI_InstallOption2Button:SetText(L["Simple"])
-		SVUI_InstallOption3Button:Show()
-		SVUI_InstallOption3Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.unitstyle = nil;
-			SetUnitframeLayout("compact")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFEl Compacto|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["Just the necessities so you can see more of the world around you"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["you dont need no fanciness getting in the way of world domination do you?"])
-		end)
-		SVUI_InstallOption3Button:SetText(L["Compact"])
-
-	elseif newPage == 6 then
-		ShowLayout(true)
-		setupFrame.SubTitle:SetText("Group Layout")
-		setupFrame.Desc1:SetText(L["You can now choose what group layout you prefer."])
-		setupFrame.Desc2:SetText(L["This will adjust various settings on group units, attempting to make certain roles more usable"])
-		setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.groupstyle = "default";
-			SetGroupframeLayout("default")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFStandard|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["You are good to go with the default layout"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["frames schmames, lets kill some stuff!"])
-		end)
-		SVUI_InstallOption1Button:SetText(L["Standard"])
-
-		SVUI_InstallOption2Button:Show()
-		SVUI_InstallOption2Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.groupstyle = nil;
-			SetGroupframeLayout("healer")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFMEDIC!!|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["You are pretty helpful.. for a VILLAIN!"]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["Hey, even a super villain gets his ass kicked once in awhile. We need the likes of you!"])
-		end)
-		SVUI_InstallOption2Button:SetText(L["Healer"])
-
-		SVUI_InstallOption3Button:Show()
-		SVUI_InstallOption3Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.groupstyle = nil;
-			SetGroupframeLayout("dps")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFDeath Dealer|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["You are the kings of our craft. Handing out pain like its halloween candy."]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["I will move and squeeze group frames out of your way so you have more room for BOOM!"])
-		end)
-		SVUI_InstallOption3Button:SetText(L["DPS"])
-
-		SVUI_InstallOption4Button:Show()
-		SVUI_InstallOption4Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.groupstyle = nil;
-			SetGroupframeLayout("grid")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFCubed|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["You are cold and calculated, your frames should reflect as much."]..CONTINUED)
-			SVUI_SetupHolder.Desc3:SetText(CONTINUED..L["I'm gonna make these frames so precise that you can cut your finger on them!"])
-		end)
-		SVUI_InstallOption4Button:SetText(L["Grid"])
-
-	elseif newPage == 7 then
-		setupFrame.SubTitle:SetText(ACTIONBAR_LABEL.." "..SETTINGS)
-		setupFrame.Desc1:SetText(L["Choose a layout for your action bars."])
-		setupFrame.Desc2:SetText(L["Sometimes you need big buttons, sometimes you don't. Your choice here."])
-		setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.barstyle = nil;
-			SetupBarLayout("default")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFLean And Clean|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["Lets keep it slim and deadly, not unlike a ninja sword."])
-			SVUI_SetupHolder.Desc3:SetText(L["You dont ever even look at your bar hardly, so pick this one!"])
-		end)
-		SVUI_InstallOption1Button:SetText(L["Small" .. "\n" .. "Row"])
-		SVUI_InstallOption2Button:Show()
-		SVUI_InstallOption2Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.barstyle = nil;
-			SetupBarLayout("twosmall")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFMore For Less|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["Granted, you dont REALLY need the buttons due to your hotkey-leetness, you just like watching cooldowns!"])
-			SVUI_SetupHolder.Desc3:SetText(L["Sure thing cowboy, your secret is safe with me!"])
-		end)
-		SVUI_InstallOption2Button:SetText(L["2 Small" .. "\n" .. "Rows"])
-		SVUI_InstallOption3Button:Show()
-		SVUI_InstallOption3Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.barstyle = nil;
-			SetupBarLayout("onebig")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFWhat Big Buttons You Have|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["The better to PEW-PEW you with my dear!"])
-			SVUI_SetupHolder.Desc3:SetText(L["When you have little time for mouse accuracy, choose this set!"])
-		end)
-		SVUI_InstallOption3Button:SetText(L["Big" .. "\n" .. "Row"])
-		SVUI_InstallOption4Button:Show()
-		SVUI_InstallOption4Button:SetScript("OnClick", function()
-			SV.db.LAYOUT.barstyle = nil;
-			SetupBarLayout("twobig")
-			SVUI_SetupHolder.Desc1:SetText(L["|cff00FFFFThe Double Down|r"])
-			SVUI_SetupHolder.Desc2:SetText(L["Lets be honest for a moment. Who doesnt like a huge pair in their face?"])
-			SVUI_SetupHolder.Desc3:SetText(L["Double your bars then double their size for maximum button goodness!"])
-		end)
-		SVUI_InstallOption4Button:SetText(L["2 Big" .. "\n" .. "Rows"])
-
-	elseif newPage == 8 then
-		setupFrame.SubTitle:SetText(AURAS.." "..SETTINGS)
-		setupFrame.Desc1:SetText(L["Select an aura layout. \"Icons\" will display only icons and aurabars won't be used. \"Bars\" will display only aurabars and icons won't be used (duh). \"The Works!\" does just what it says.... icons, bars and awesomeness."])
-		setupFrame.Desc2:SetText(L["If you have an aura that you don't want to display simply hold down shift and right click the icon for it to suffer a painful death."])
-		setupFrame.Desc3:SetText(L["CHOOSE_OR_DIE"])
-
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", function()
-			SetupAuralayout()
-		end)
-		SVUI_InstallOption1Button:SetText(L["Vintage"])
-
-		SVUI_InstallOption2Button:Show()
-		SVUI_InstallOption2Button:SetScript("OnClick", function()
-			SetupAuralayout("icons")
-		end)
-		SVUI_InstallOption2Button:SetText(L["Icons"])
-
-		SVUI_InstallOption3Button:Show()
-		SVUI_InstallOption3Button:SetScript("OnClick", function()
-			SetupAuralayout("bars")
-		end)
-		SVUI_InstallOption3Button:SetText(L["Bars"])
-
-		SVUI_InstallOption4Button:Show()
-		SVUI_InstallOption4Button:SetScript("OnClick", function()
-			SetupAuralayout("theworks")
-		end)
-		SVUI_InstallOption4Button:SetText(L["The" .. "\n" .. "Works!"])
-
-	elseif newPage == 9 then
-		SVUI_InstallNextButton:Disable()
-		SVUI_InstallNextButton:Hide()
-		setupFrame.SubTitle:SetText(BASIC_OPTIONS_TOOLTIP..CONTINUED..AUCTION_TIME_LEFT0)
-		setupFrame.Desc1:SetText(L["Thats it! All done! Now we just need to hand these choices off to the henchmen so they can get you ready to (..insert evil tasks here..)!"])
-		setupFrame.Desc2:SetText(L["Click the button below to reload and get on your way! Good luck villain!"])
-		SVUI_InstallOption1Button:Show()
-		SVUI_InstallOption1Button:SetScript("OnClick", InstallComplete)
-		SVUI_InstallOption1Button:SetText(L["THE_BUTTON_BELOW"])
-		SVUI_SetupHolder:Size(550, 350)
-	end
-end
-
-local function NextPage()
-	if CURRENT_PAGE ~= MAX_PAGE then
-		CURRENT_PAGE = CURRENT_PAGE + 1;
-		SetPage(CURRENT_PAGE)
-	end
-end
-
-local function PreviousPage()
-	if CURRENT_PAGE ~= 1 then
-		CURRENT_PAGE = CURRENT_PAGE - 1;
-		SetPage(CURRENT_PAGE)
-	end
-end
-
-local function ResetGlobalVariables()
-	for k,v in pairs(SVUI_Cache) do
-		SVUI_Cache[k] = nil
-	end
-end
-
-local function Reset()
-	mungs = true;
-	okToResetMOVE = false;
-	InitializeChatFrames(true);
-	SV.db:Reset()
-	SetUserScreen();
-
-	if SV.db.LAYOUT.mediastyle then
-        SV:SetColorTheme(SV.db.LAYOUT.mediastyle)
-    else
-    	SV.db.LAYOUT.mediastyle = nil;
-    	SV:SetColorTheme()
-    end
-
-    if SV.db.LAYOUT.unitstyle then
-        SV:SetUnitframeLayout(SV.db.LAYOUT.unitstyle)
-    else
-    	SV.db.LAYOUT.unitstyle = nil;
-    	SV:SetUnitframeLayout()
-    end
-
-    if SV.db.LAYOUT.barstyle then
-        SV:SetupBarLayout(SV.db.LAYOUT.barstyle)
-    else
-    	SV.db.LAYOUT.barstyle = nil;
-    	SV:SetupBarLayout()
-    end
-
-    if SV.db.LAYOUT.aurastyle then
-        SV:SetupAuralayout(SV.db.LAYOUT.aurastyle)
-    else
-    	SV.db.LAYOUT.aurastyle = nil;
-    	SV:SetupAuralayout()
-    end
-
-	SVUI_Profile.SAFEDATA.install_version = SV.___version;
-	ResetGlobalVariables()
-	ReloadUI()
-end
-
-function Setup:Install(autoLoaded)
-	if(not user_music_vol) then
-		user_music_vol = GetCVar("Sound_MusicVolume")
-	end
-
-	-- frame
-	if not SVUI_SetupHolder then
-		local frame = CreateFrame("Button", "SVUI_SetupHolder", UIParent)
-		frame.SetPage = SetPage;
-		frame:Size(550, 400)
-		frame:SetPanelTemplate("Action")
-		frame:SetPoint("CENTER")
-		frame:SetFrameStrata("TOOLTIP")
-		frame.Title = frame:CreateFontString(nil, "OVERLAY")
-		frame.Title:SetFont(SV.Media.font.narrator, 22, "OUTLINE")
-		frame.Title:Point("TOP", 0, -5)
-		frame.Title:SetText(L["Supervillain UI Installation"])
-
-		frame.Next = CreateFrame("Button", "SVUI_InstallNextButton", frame, "UIPanelButtonTemplate")
-		frame.Next:RemoveTextures()
-		frame.Next:Size(110, 25)
-		frame.Next:Point("BOTTOMRIGHT", 50, 5)
-		SetInstallButton(frame.Next)
-		frame.Next.texture = frame.Next:CreateTexture(nil, "BORDER")
-		frame.Next.texture:Size(110, 75)
-		frame.Next.texture:Point("RIGHT")
-		frame.Next.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION-ARROW")
-		frame.Next.texture:SetVertexColor(1, 0.5, 0)
-		frame.Next.text = frame.Next:CreateFontString(nil, "OVERLAY")
-		frame.Next.text:SetFont(SV.Media.font.action, 18, "OUTLINE")
-		frame.Next.text:SetPoint("CENTER")
-		frame.Next.text:SetText(CONTINUE)
-		frame.Next:Disable()
-		frame.Next:SetScript("OnClick", NextPage)
-		frame.Next:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(1, 1, 0)
-		end)
-		frame.Next:SetScript("OnLeave", function(this)
-			this.texture:SetVertexColor(1, 0.5, 0)
-		end)
-
-		frame.Prev = CreateFrame("Button", "SVUI_InstallPrevButton", frame, "UIPanelButtonTemplate")
-		frame.Prev:RemoveTextures()
-		frame.Prev:Size(110, 25)
-		frame.Prev:Point("BOTTOMLEFT", -50, 5)
-		SetInstallButton(frame.Prev)
-		frame.Prev.texture = frame.Prev:CreateTexture(nil, "BORDER")
-		frame.Prev.texture:Size(110, 75)
-		frame.Prev.texture:Point("LEFT")
-		frame.Prev.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION-ARROW")
-		frame.Prev.texture:SetTexCoord(1, 0, 1, 1, 0, 0, 0, 1)
-		frame.Prev.texture:SetVertexColor(1, 0.5, 0)
-		frame.Prev.text = frame.Prev:CreateFontString(nil, "OVERLAY")
-		frame.Prev.text:SetFont(SV.Media.font.action, 18, "OUTLINE")
-		frame.Prev.text:SetPoint("CENTER")
-		frame.Prev.text:SetText(PREVIOUS)
-		frame.Prev:Disable()
-		frame.Prev:SetScript("OnClick", PreviousPage)
-		frame.Prev:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(1, 1, 0)
-		end)
-		frame.Prev:SetScript("OnLeave", function(this)
-			this.texture:SetVertexColor(1, 0.5, 0)
-		end)
-		frame.Status = CreateFrame("Frame", "InstallStatus", frame)
-		frame.Status:SetFrameLevel(frame.Status:GetFrameLevel() + 2)
-		frame.Status:Size(150, 30)
-		frame.Status:Point("BOTTOM", frame, "TOP", 0, 2)
-		frame.Status.text = frame.Status:CreateFontString(nil, "OVERLAY")
-		frame.Status.text:SetFont(SV.Media.font.numbers, 22, "OUTLINE")
-		frame.Status.text:SetPoint("CENTER")
-		frame.Status.text:SetText(CURRENT_PAGE.."  /  "..MAX_PAGE)
-
-		frame.Option01 = CreateFrame("Button", "SVUI_InstallOption01Button", frame, "UIPanelButtonTemplate")
-		frame.Option01:RemoveTextures()
-		frame.Option01:Size(160, 30)
-		frame.Option01:Point("BOTTOM", 0, 15)
-		frame.Option01:SetText("")
-		SetInstallButton(frame.Option01)
-		frame.Option01.texture = frame.Option01:CreateTexture(nil, "BORDER")
-		frame.Option01.texture:Size(160, 160)
-		frame.Option01.texture:Point("CENTER", frame.Option01, "BOTTOM", 0, -15)
-		frame.Option01.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
-		frame.Option01.texture:SetGradient("VERTICAL", 0, 0.3, 0, 0, 0.7, 0)
-		frame.Option01:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(0.5, 1, 0.4)
-		end)
-		frame.Option01:SetScript("OnLeave", function(this)
-			this.texture:SetGradient("VERTICAL", 0, 0.3, 0, 0, 0.7, 0)
-		end)
-		hooksecurefunc(frame.Option01, "SetWidth", function(g, h)
-			g.texture:Size(h, h)
-			g.texture:Point("CENTER", g, "BOTTOM", 0, -(h * 0.09))
-		end)
-		frame.Option01:SetFrameLevel(frame.Option01:GetFrameLevel() + 10)
-		frame.Option01:Hide()
-
-		frame.Option02 = CreateFrame("Button", "SVUI_InstallOption02Button", frame, "UIPanelButtonTemplate")
-		frame.Option02:RemoveTextures()
-		frame.Option02:Size(130, 30)
-		frame.Option02:Point("BOTTOMLEFT", frame, "BOTTOM", 4, 15)
-		frame.Option02:SetText("")
-		SetInstallButton(frame.Option02)
-		frame.Option02.texture = frame.Option02:CreateTexture(nil, "BORDER")
-		frame.Option02.texture:Size(130, 110)
-		frame.Option02.texture:Point("CENTER", frame.Option02, "BOTTOM", 0, -15)
-		frame.Option02.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
-		frame.Option02.texture:SetGradient("VERTICAL", 0.3, 0, 0, 0.7, 0, 0)
-		frame.Option02:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(0.5, 1, 0.4)
-		end)
-		frame.Option02:SetScript("OnLeave", function(this)
-			this.texture:SetGradient("VERTICAL", 0.3, 0, 0, 0.7, 0, 0)
-		end)
-		hooksecurefunc(frame.Option02, "SetWidth", function(g, h)
-			g.texture:Size(h, h)
-			g.texture:Point("CENTER", g, "BOTTOM", 0, -(h * 0.09))
-		end)
-		frame.Option02:SetScript("OnShow", function()
-			frame.Option01:SetWidth(130)
-			frame.Option01:ClearAllPoints()
-			frame.Option01:Point("BOTTOMRIGHT", frame, "BOTTOM", -4, 15)
-		end)
-		frame.Option02:SetScript("OnHide", function()
-			frame.Option01:SetWidth(160)
-			frame.Option01:ClearAllPoints()
-			frame.Option01:Point("BOTTOM", 0, 15)
-		end)
-		frame.Option02:SetFrameLevel(frame.Option01:GetFrameLevel() + 10)
-		frame.Option02:Hide()
-
-		frame.Option03 = CreateFrame("Button", "SVUI_InstallOption03Button", frame, "UIPanelButtonTemplate")
-		frame.Option03:RemoveTextures()
-		frame.Option03:Size(130, 30)
-		frame.Option03:Point("BOTTOM", frame, "BOTTOM", 0, 15)
-		frame.Option03:SetText("")
-		SetInstallButton(frame.Option03)
-		frame.Option03.texture = frame.Option03:CreateTexture(nil, "BORDER")
-		frame.Option03.texture:Size(130, 110)
-		frame.Option03.texture:Point("CENTER", frame.Option03, "BOTTOM", 0, -15)
-		frame.Option03.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
-		frame.Option03.texture:SetGradient("VERTICAL", 0, 0.1, 0.3, 0, 0.5, 0.7)
-		frame.Option03:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(0.2, 0.5, 1)
-		end)
-		frame.Option03:SetScript("OnLeave", function(this)
-			this.texture:SetGradient("VERTICAL", 0, 0.1, 0.3, 0, 0.5, 0.7)
-		end)
-		hooksecurefunc(frame.Option03, "SetWidth", function(g, h)
-			g.texture:Size(h, h)
-			g.texture:Point("CENTER", g, "BOTTOM", 0, -(h * 0.09))
-		end)
-		frame.Option03:SetScript("OnShow", function(self)
-			self:SetWidth(130)
-			frame.Option01:SetWidth(130)
-			frame.Option01:ClearAllPoints()
-			frame.Option01:Point("RIGHT", self, "LEFT", -8, 0)
-			frame.Option02:SetWidth(130)
-			frame.Option02:ClearAllPoints()
-			frame.Option02:Point("LEFT", self, "RIGHT", 8, 0)
-		end)
-		frame.Option03:SetScript("OnHide", function()
-			frame.Option01:SetWidth(160)
-			frame.Option01:ClearAllPoints()
-			frame.Option01:Point("BOTTOM", 0, 15)
-			frame.Option02:ClearAllPoints()
-			frame.Option02:Point("BOTTOMLEFT", frame, "BOTTOM", 4, 15)
-		end)
-		frame.Option03:SetFrameLevel(frame.Option01:GetFrameLevel() + 10)
-		frame.Option03:Hide()
-
-		frame.Option1 = CreateFrame("Button", "SVUI_InstallOption1Button", frame, "UIPanelButtonTemplate")
-		frame.Option1:RemoveTextures()
-		frame.Option1:Size(160, 30)
-		frame.Option1:Point("BOTTOM", 0, 15)
-		frame.Option1:SetText("")
-		SetInstallButton(frame.Option1)
-		frame.Option1.texture = frame.Option1:CreateTexture(nil, "BORDER")
-		frame.Option1.texture:Size(160, 160)
-		frame.Option1.texture:Point("CENTER", frame.Option1, "BOTTOM", 0, -15)
-		frame.Option1.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
-		frame.Option1.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		frame.Option1:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(0.5, 1, 0.4)
-		end)
-		frame.Option1:SetScript("OnLeave", function(this)
-			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		end)
-		hooksecurefunc(frame.Option1, "SetWidth", function(g, h)
-			g.texture:Size(h, h)
-			g.texture:Point("CENTER", g, "BOTTOM", 0, -(h * 0.09))
-		end)
-		frame.Option1:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
-		frame.Option1:Hide()
-
-		frame.Option2 = CreateFrame("Button", "SVUI_InstallOption2Button", frame, "UIPanelButtonTemplate")
-		frame.Option2:RemoveTextures()
-		frame.Option2:Size(120, 30)
-		frame.Option2:Point("BOTTOMLEFT", frame, "BOTTOM", 4, 15)
-		frame.Option2:SetText("")
-		SetInstallButton(frame.Option2)
-		frame.Option2.texture = frame.Option2:CreateTexture(nil, "BORDER")
-		frame.Option2.texture:Size(120, 110)
-		frame.Option2.texture:Point("CENTER", frame.Option2, "BOTTOM", 0, -15)
-		frame.Option2.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
-		frame.Option2.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		frame.Option2:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(0.5, 1, 0.4)
-		end)
-		frame.Option2:SetScript("OnLeave", function(this)
-			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		end)
-		hooksecurefunc(frame.Option2, "SetWidth", function(g, h)
-			g.texture:Size(h, h)
-			g.texture:Point("CENTER", g, "BOTTOM", 0, -(h * 0.09))
-		end)
-		frame.Option2:SetScript("OnShow", function()
-			frame.Option1:SetWidth(120)
-			frame.Option1:ClearAllPoints()
-			frame.Option1:Point("BOTTOMRIGHT", frame, "BOTTOM", -4, 15)
-		end)
-		frame.Option2:SetScript("OnHide", function()
-			frame.Option1:SetWidth(160)
-			frame.Option1:ClearAllPoints()
-			frame.Option1:Point("BOTTOM", 0, 15)
-		end)
-		frame.Option2:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
-		frame.Option2:Hide()
-
-		frame.Option3 = CreateFrame("Button", "SVUI_InstallOption3Button", frame, "UIPanelButtonTemplate")
-		frame.Option3:RemoveTextures()
-		frame.Option3:Size(110, 30)
-		frame.Option3:Point("LEFT", frame.Option2, "RIGHT", 4, 0)
-		frame.Option3:SetText("")
-		SetInstallButton(frame.Option3)
-		frame.Option3.texture = frame.Option3:CreateTexture(nil, "BORDER")
-		frame.Option3.texture:Size(110, 100)
-		frame.Option3.texture:Point("CENTER", frame.Option3, "BOTTOM", 0, -9)
-		frame.Option3.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
-		frame.Option3.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		frame.Option3:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(0.5, 1, 0.4)
-		end)
-		frame.Option3:SetScript("OnLeave", function(this)
-			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		end)
-		frame.Option3:SetScript("OnShow", function()
-			frame.Option1:SetWidth(110)
-			frame.Option1:ClearAllPoints()
-			frame.Option1:Point("RIGHT", frame.Option2, "LEFT", -4, 0)
-			frame.Option2:SetWidth(110)
-			frame.Option2:ClearAllPoints()
-			frame.Option2:Point("BOTTOM", frame, "BOTTOM", 0, 15)
-		end)
-		frame.Option3:SetScript("OnHide", function()
-			frame.Option1:SetWidth(160)
-			frame.Option1:ClearAllPoints()
-			frame.Option1:Point("BOTTOM", 0, 15)
-			frame.Option2:SetWidth(120)
-			frame.Option2:ClearAllPoints()
-			frame.Option2:Point("BOTTOMLEFT", frame, "BOTTOM", 4, 15)
-		end)
-		frame.Option3:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
-		frame.Option3:Hide()
-
-		frame.Option4 = CreateFrame("Button", "SVUI_InstallOption4Button", frame, "UIPanelButtonTemplate")
-		frame.Option4:RemoveTextures()
-		frame.Option4:Size(110, 30)
-		frame.Option4:Point("LEFT", frame.Option3, "RIGHT", 4, 0)
-		frame.Option4:SetText("")
-		SetInstallButton(frame.Option4)
-		frame.Option4.texture = frame.Option4:CreateTexture(nil, "BORDER")
-		frame.Option4.texture:Size(110, 100)
-		frame.Option4.texture:Point("CENTER", frame.Option4, "BOTTOM", 0, -9)
-		frame.Option4.texture:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Template\\OPTION")
-		frame.Option4.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		frame.Option4:SetScript("OnEnter", function(this)
-			this.texture:SetVertexColor(0.5, 1, 0.4)
-		end)
-		frame.Option4:SetScript("OnLeave", function(this)
-			this.texture:SetGradient("VERTICAL", 0.3, 0.3, 0.3, 0.7, 0.7, 0.7)
-		end)
-		frame.Option4:SetScript("OnShow", function()
-			frame.Option1:Width(110)
-			frame.Option2:Width(110)
-			frame.Option1:ClearAllPoints()
-			frame.Option1:Point("RIGHT", frame.Option2, "LEFT", -4, 0)
-			frame.Option2:ClearAllPoints()
-			frame.Option2:Point("BOTTOMRIGHT", frame, "BOTTOM", -4, 15)
-		end)
-		frame.Option4:SetScript("OnHide", function()
-			frame.Option1:SetWidth(160)
-			frame.Option1:ClearAllPoints()
-			frame.Option1:Point("BOTTOM", 0, 15)
-			frame.Option2:SetWidth(120)
-			frame.Option2:ClearAllPoints()
-			frame.Option2:Point("BOTTOMLEFT", frame, "BOTTOM", 4, 15)
-		end)
-
-		frame.Option4:SetFrameLevel(frame.Option1:GetFrameLevel() + 10)
-		frame.Option4:Hide()
-
-		frame.SubTitle = frame:CreateFontString(nil, "OVERLAY")
-		frame.SubTitle:SetFont(SV.Media.font.roboto, 16, "OUTLINE")
-		frame.SubTitle:Point("TOP", 0, -40)
-		frame.Desc1 = frame:CreateFontString(nil, "OVERLAY")
-		frame.Desc1:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
-		frame.Desc1:Point("TOPLEFT", 20, -75)
-		frame.Desc1:Width(frame:GetWidth()-40)
-		frame.Desc2 = frame:CreateFontString(nil, "OVERLAY")
-		frame.Desc2:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
-		frame.Desc2:Point("TOPLEFT", 20, -125)
-		frame.Desc2:Width(frame:GetWidth()-40)
-		frame.Desc3 = frame:CreateFontString(nil, "OVERLAY")
-		frame.Desc3:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
-		frame.Desc3:Point("TOPLEFT", 20, -175)
-		frame.Desc3:Width(frame:GetWidth()-40)
-		local closeButton = CreateFrame("Button", "SVUI_InstallCloseButton", frame, "UIPanelCloseButton")
-		closeButton:SetPoint("TOPRIGHT", frame, "TOPRIGHT")
-		closeButton:SetScript("OnClick", function()frame:Hide()end)
-		frame.tutorialImage = frame:CreateTexture("InstallTutorialImage", "OVERLAY")
-		frame.tutorialImage:Size(256, 128)
-		frame.tutorialImage:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\SPLASH")
-		frame.tutorialImage:Point("BOTTOM", 0, 70)
-	end
-
-	SVUI_SetupHolder:SetScript("OnHide", function()
-		StopMusic()
-		SetCVar("Sound_MusicVolume", user_music_vol)
-		musicIsPlaying = nil
-	end)
-
-	SVUI_SetupHolder:Show()
-	NextPage()
-	if(not autoLoaded) then
-		PlayThemeSong()
-	else
-		SV.Timers:ExecuteTimer(PlayThemeSong, 5)
-	end
-end
-
-SV.Setup = Setup
-SV.Setup.SetColorTheme = SetColorTheme
-SV.Setup.SetUnitframeLayout = SetUnitframeLayout
-SV.Setup.SetupBarLayout = SetupBarLayout
-SV.Setup.SetupAuralayout = SetupAuralayout
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/slash.lua b/Interface/AddOns/SVUI/system/slash.lua
index f35afed..efe033d 100644
--- a/Interface/AddOns/SVUI/system/slash.lua
+++ b/Interface/AddOns/SVUI/system/slash.lua
@@ -13,8 +13,8 @@ _____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 S U P E R - V I L L A I N - U I   By: Munglunch                              #
 ##############################################################################
 --]]
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 --[[
 ##########################################################
 LOCAL VARS
@@ -48,7 +48,7 @@ local function SVUIMasterCommand(msg)
 		if (msg == "install") then
 			SV.Setup:Install()
 		elseif (msg == "move" or msg == "mentalo") then
-			SV:UseMentalo()
+			SV.Mentalo:Toggle()
 		elseif (msg == "kb" or msg == "bind") and SV.db.SVBar.enable then
 			SV.SVBar:ToggleKeyBindingMode()
 		elseif (msg == "reset" or msg == "resetui") then
@@ -58,10 +58,6 @@ local function SVUIMasterCommand(msg)
 			MOD.ForceHideBGStats = nil;
 			MOD:Generate()
 			SV:AddonMessage(L['Battleground statistics will now show again if you are inside a battleground.'])
-		elseif (msg == "toasty" or msg == "kombat") then
-			SV:ToastyKombat()
-		elseif (msg == "lol") then
-			PlaySoundFile("Sound\\Character\\Human\\HumanVocalFemale\\HumanFemalePissed04.wav")
 		else
 			SV:ToggleConfig()
 		end
@@ -151,6 +147,16 @@ do
 		end
 	end
 end
+
+SLASH_KOMBAT1 = "/kombat"
+SlashCmdList["KOMBAT"] = function(msg)
+	SV:ToastyKombat()
+end
+
+SLASH_LOLWUT1 = "/lolwut"
+SlashCmdList["LOLWUT"] = function(msg)
+	PlaySoundFile("Sound\\Character\\Human\\HumanVocalFemale\\HumanFemalePissed04.wav")
+end
 --[[
 ##########################################################
 LOAD ALL SLASH FUNCTIONS
diff --git a/Interface/AddOns/SVUI/system/timers.lua b/Interface/AddOns/SVUI/system/timers.lua
index a8201e5..88ecd49 100644
--- a/Interface/AddOns/SVUI/system/timers.lua
+++ b/Interface/AddOns/SVUI/system/timers.lua
@@ -36,8 +36,8 @@ local tremove = table.remove;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 --[[
 ##########################################################
 LOCAL VARS
@@ -123,6 +123,17 @@ function Timers:ClearAllTimers()
 	self:SetScript("OnUpdate", ExeTimerManager_OnUpdate)
 end

+local Timers_EventHandler = function(self, event)
+	if(event == "PLAYER_REGEN_DISABLED") then
+		self:SetScript("OnUpdate", nil)
+	else
+		self:SetScript("OnUpdate", ExeTimerManager_OnUpdate)
+	end
+end
+
+Timers:RegisterEvent('PLAYER_REGEN_ENABLED')
+Timers:RegisterEvent('PLAYER_REGEN_DISABLED')
+Timers:SetScript("OnEvent", Timers_EventHandler)
 Timers:SetScript("OnUpdate", ExeTimerManager_OnUpdate)
 --[[
 ##########################################################
@@ -251,7 +262,7 @@ local Cooldown_OnLoad = function(self, start, duration, elapsed)
 end

 function Timers:AddCooldown(origin)
-	if(origin.HookedCooldown or not SV.db.system.cooldown) then return end
+	if(origin.HookedCooldown or not SV.db.general.cooldown) then return end
 	hooksecurefunc(origin, "SetCooldown", Cooldown_OnLoad)
 	origin.HookedCooldown = true
 end
diff --git a/Interface/AddOns/SVUI/system/utilities.lua b/Interface/AddOns/SVUI/system/utilities.lua
index b2146cd..fe7abb1 100644
--- a/Interface/AddOns/SVUI/system/utilities.lua
+++ b/Interface/AddOns/SVUI/system/utilities.lua
@@ -37,27 +37,19 @@ local iLevelFilter = ITEM_LEVEL:gsub( "%%d", "(%%d+)" )
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale()
+local SV = select(2, ...)
+local L = SV.L
 --[[
 ##########################################################
 MISC UTILITY FUNCTIONS
 ##########################################################
 ]]--
-
---[[
-##########################################################
-DISPEL MECHANICS
-##########################################################
-]]--
 local RefClassRoles, RefUnitRoles;
-local RefMagicSpec;
 local PlayerClass = select(2,UnitClass("player"));

 if(PlayerClass == "PRIEST") then
     RefClassRoles = {"C", "C", "C"}
     RefUnitRoles = {"HEALER", "HEALER", "DAMAGER"}
-    SV.Dispellable = {["Magic"] = true, ["Disease"] = true}
 elseif(PlayerClass == "WARLOCK") then
     RefClassRoles = {"C", "C", "C"}
     RefUnitRoles = {"DAMAGER", "DAMAGER", "DAMAGER"}
@@ -73,38 +65,21 @@ elseif(PlayerClass == "ROGUE") then
 elseif(PlayerClass == "MAGE") then
     RefClassRoles = {"C", "C", "C"}
     RefUnitRoles = {"DAMAGER", "DAMAGER", "DAMAGER"}
-    SV.Dispellable = {["Curse"] = true}
 elseif(PlayerClass == "DEATHKNIGHT") then
     RefClassRoles = {"T", "M", "M"}
     RefUnitRoles = {"TANK", "DAMAGER", "DAMAGER"}
 elseif(PlayerClass == "DRUID") then
-    RefMagicSpec = 4
     RefClassRoles = {"C", "M", "T", "C"}
     RefUnitRoles = {"DAMAGER", "DAMAGER", "TANK", "HEALER"}
-    SV.Dispellable = {["Curse"] = true, ["Poison"] = true}
 elseif(PlayerClass == "SHAMAN") then
-    RefMagicSpec = 3
     RefClassRoles = {"C", "M", "C"}
     RefUnitRoles = {"DAMAGER", "DAMAGER", "HEALER"}
-    SV.Dispellable = {["Curse"] = true}
 elseif(PlayerClass == "MONK") then
-    RefMagicSpec = 2
     RefClassRoles = {"T", "C", "M"}
     RefUnitRoles = {"TANK", "HEALER", "DAMAGER"}
-    SV.Dispellable = {["Disease"] = true, ["Poison"] = true}
 elseif(PlayerClass == "PALADIN") then
-    RefMagicSpec = 1
     RefClassRoles = {"C", "T", "M"}
     RefUnitRoles = {"HEALER", "TANK", "DAMAGER"}
-    SV.Dispellable = {["Poison"] = true, ["Disease"] = true}
-end
-
-local function GetTalentInfo(arg)
-    if type(arg) == "number" then
-        return arg == GetActiveSpecGroup();
-    else
-        return false;
-    end
 end

 function SV:DefinePlayerRole()
@@ -142,13 +117,6 @@ function SV:DefinePlayerRole()
             self.RoleChangedCallback()
         end
     end
-    if RefMagicSpec then
-        if(GetTalentInfo(RefMagicSpec)) then
-            self.Dispellable["Magic"] = true
-        elseif(self.Dispellable["Magic"]) then
-            self.Dispellable["Magic"] = nil
-        end
-    end
 end
 --[[
 ##########################################################
diff --git a/Interface/AddOns/SVUI/system/visibility.lua b/Interface/AddOns/SVUI/system/visibility.lua
index 4a0d18d..3842d35 100644
--- a/Interface/AddOns/SVUI/system/visibility.lua
+++ b/Interface/AddOns/SVUI/system/visibility.lua
@@ -26,14 +26,15 @@ local pairs     = _G.pairs;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUI_ADDON_NAME, SV = ...
-local L = LibLocale();
+local SV = select(2, ...)
+local L = SV.L;
 --[[
 ##########################################################
 LOCALS
 ##########################################################
 ]]--
 local DisplayEventHandler = CreateFrame("Frame");
+local DisplayFrames = {};
 local SecureFadeManager = CreateFrame("Frame");
 local SecureFadeFrames = {};
 --[[
@@ -42,27 +43,24 @@ FRAME VISIBILITY MANAGEMENT
 ##########################################################
 ]]--
 function SV:AddToDisplayAudit(frame)
-    if frame.IsVisible and frame:GetName() then
-        self.DisplayAudit[frame:GetName()] = true
+    if frame.IsVisible and frame.GetParent then
+        DisplayFrames[frame] = frame:GetParent()
     end
 end

 function SV:FlushDisplayAudit()
     if InCombatLockdown() then return end
-    for frame,_ in pairs(self.DisplayAudit)do
-        if _G[frame] then
-            _G[frame]:SetParent(SV.Cloaked)
-        end
+    for frame,_ in pairs(DisplayFrames)do
+        frame:SetParent(SV.Cloaked)
     end
     DisplayEventHandler:RegisterEvent("PLAYER_REGEN_DISABLED")
 end

 function SV:PushDisplayAudit()
-    if InCombatLockdown() then return end
-    for frame,_ in pairs(self.DisplayAudit)do
-        if _G[frame] then
-            _G[frame]:SetParent(UIParent)
-        end
+    if InCombatLockdown() then return end
+    local default = self.UIParent
+    for frame,parent in pairs(DisplayFrames)do
+        frame:SetParent(parent or default)
     end
     DisplayEventHandler:UnregisterEvent("PLAYER_REGEN_DISABLED")
 end
diff --git a/Interface/AddOns/SVUI/xml/system.xml b/Interface/AddOns/SVUI/xml/system.xml
index dc0c93f..4beb4ad 100644
--- a/Interface/AddOns/SVUI/xml/system.xml
+++ b/Interface/AddOns/SVUI/xml/system.xml
@@ -93,4 +93,240 @@
             </Button>
         </Frames>
     </Frame>
+
+    <Frame name="SVUI_MentaloPrecision" inherits="SVUI_PanelTemplate" hidden="true" frameStrata="DIALOG">
+        <Size x="130" y="60"/>
+        <Anchors>
+            <Anchor point="CENTER"/>
+        </Anchors>
+        <Layers>
+            <Layer level="ARTWORK">
+                <FontString parentKey="Title" inherits="GameFontNormal" text="Focused Position">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativeTo="$parentTitleBG" relativePoint="TOPLEFT"/>
+                        <Anchor point="BOTTOMRIGHT" relativeTo="$parentTitleBG" relativePoint="BOTTOMRIGHT"/>
+                    </Anchors>
+                </FontString>
+                <FontString inherits="NumberFont_Outline_Huge" text="X">
+                    <Anchors>
+                        <Anchor point="RIGHT" relativeTo="$parent" relativePoint="LEFT">
+                            <Offset x="-3" y="0"/>
+                        </Anchor>
+                    </Anchors>
+                    <Color r="1" g="0.5" b="0" a="1"/>
+                </FontString>
+                <FontString inherits="NumberFont_Outline_Huge" text="Y">
+                    <Anchors>
+                        <Anchor point="LEFT" relativeTo="$parent" relativePoint="RIGHT">
+                            <Offset x="3" y="0"/>
+                        </Anchor>
+                    </Anchors>
+                    <Color r="1" g="0.5" b="0" a="1"/>
+                </FontString>
+            </Layer>
+        </Layers>
+        <Frames>
+            <EditBox name="$parentSetX" inherits="InputBoxTemplate" autoFocus="false">
+                <Size x="50" y="17"/>
+                <Anchors>
+                    <Anchor point="BOTTOMRIGHT" relativeTo="$parentBG" relativePoint="CENTER">
+                        <Offset x="-12" y="3"/>
+                    </Anchor>
+                </Anchors>
+
+                <Scripts>
+                    <OnEscapePressed>
+                        self:SetText(math.floor((self.CurrentValue or 0) + 0.5))
+                        EditBox_ClearFocus(self)
+                    </OnEscapePressed>
+                    <OnEditFocusLost>
+                        self:SetText(math.floor((self.CurrentValue or 0) + 0.5))
+                    </OnEditFocusLost>
+                    <OnShow>
+                        EditBox_ClearFocus(self)
+                        self:SetText(math.floor((self.CurrentValue or 0) + 0.5))
+                    </OnShow>
+                </Scripts>
+            </EditBox>
+
+            <EditBox name="$parentSetY" inherits="InputBoxTemplate" autoFocus="false">
+                <Size x="50" y="17"/>
+                <Anchors>
+                    <Anchor point="BOTTOMLEFT" relativeTo="$parentBG" relativePoint="CENTER">
+                        <Offset x="12" y="3"/>
+                    </Anchor>
+                </Anchors>
+                <Scripts>
+                    <OnEscapePressed>
+                        self:SetText(math.floor((self.CurrentValue or 0) + 0.5))
+                        EditBox_ClearFocus(self)
+                    </OnEscapePressed>
+                    <OnEditFocusLost>
+                        self:SetText(math.floor((self.CurrentValue or 0) + 0.5))
+                    </OnEditFocusLost>
+                    <OnShow>
+                        EditBox_ClearFocus(self)
+                        self:SetText(math.floor((self.CurrentValue or 0) + 0.5))
+                    </OnShow>
+                </Scripts>
+            </EditBox>
+
+            <Button name="$parentUpButton" inherits="UIPanelSquareButton">
+                <Size x="25" y="20"/>
+                <Anchors>
+                    <Anchor point="TOPLEFT" relativeTo="$parentBG" relativePoint="CENTER">
+                        <Offset x="10" y="-3"/>
+                    </Anchor>
+                </Anchors>
+                <Scripts>
+                    <OnLoad>
+                        SquareButton_SetIcon(self, "UP");
+                        self:RegisterForClicks("AnyUp");
+                    </OnLoad>
+                    <OnClick>
+                        local frame = _G["SVUI_MentaloPrecisionSetY"];
+                        frame.CurrentValue = frame.CurrentValue + 1
+                        frame:SetText(frame.CurrentValue)
+                        frame:GetScript('OnEnterPressed')(frame)
+                    </OnClick>
+                </Scripts>
+            </Button>
+
+            <Button name="$parentDownButton" inherits="UIPanelSquareButton">
+                <Size x="25" y="20"/>
+                <Anchors>
+                    <Anchor point="LEFT" relativeTo="$parentUpButton" relativePoint="RIGHT">
+                        <Offset x="2" y="0"/>
+                    </Anchor>
+                </Anchors>
+                <Scripts>
+                    <OnLoad>
+                        SquareButton_SetIcon(self, "DOWN");
+                        self:RegisterForClicks("AnyUp");
+                    </OnLoad>
+                    <OnClick>
+                        local frame = _G["SVUI_MentaloPrecisionSetY"];
+                        frame.CurrentValue = frame.CurrentValue - 1
+                        frame:SetText(frame.CurrentValue)
+                        frame:GetScript('OnEnterPressed')(frame)
+                    </OnClick>
+                </Scripts>
+            </Button>
+
+            <Button name="$parentRightButton" inherits="UIPanelSquareButton">
+                <Size x="25" y="20"/>
+                <Anchors>
+                    <Anchor point="RIGHT" relativeTo="$parentUpButton" relativePoint="LEFT">
+                        <Offset x="-20" y="0"/>
+                    </Anchor>
+                </Anchors>
+                <Scripts>
+                    <OnLoad>
+                        SquareButton_SetIcon(self, "RIGHT");
+                        self:RegisterForClicks("AnyUp");
+                    </OnLoad>
+                    <OnClick>
+                        local frame = _G["SVUI_MentaloPrecisionSetX"];
+                        frame.CurrentValue = frame.CurrentValue + 1
+                        frame:SetText(frame.CurrentValue)
+                        frame:GetScript('OnEnterPressed')(frame)
+                    </OnClick>
+                </Scripts>
+            </Button>
+
+            <Button name="$parentLeftButton" inherits="UIPanelSquareButton">
+                <Size x="25" y="20"/>
+                <Anchors>
+                    <Anchor point="RIGHT" relativeTo="$parentRightButton" relativePoint="LEFT">
+                        <Offset x="-2" y="0"/>
+                    </Anchor>
+                </Anchors>
+                <Scripts>
+                    <OnLoad>
+                        SquareButton_SetIcon(self, "LEFT");
+                        self:RegisterForClicks("AnyUp");
+                    </OnLoad>
+                    <OnClick>
+                        local frame = _G["SVUI_MentaloPrecisionSetX"];
+                        frame.CurrentValue = frame.CurrentValue - 1
+                        frame:SetText(frame.CurrentValue)
+                        frame:GetScript('OnEnterPressed')(frame)
+                    </OnClick>
+                </Scripts>
+            </Button>
+        </Frames>
+    </Frame>
+
+    <Frame name="SVUI_Mentalo" movable="true" hidden="true" frameStrata="DIALOG">
+        <Size x="300" y="30"/>
+        <Anchors>
+            <Anchor point="CENTER"/>
+        </Anchors>
+        <Layers>
+            <Layer level="BACKGROUND">
+                <Texture name="$parentBG" setAllPoints="true"/>
+            </Layer>
+            <Layer level="OVERLAY">
+                <Texture name="$parentTitleBG">
+                    <Anchors>
+                        <Anchor point="TOPLEFT"/>
+                        <Anchor point="BOTTOMRIGHT" relativePoint="TOPRIGHT">
+                            <Offset x="0" y="-30"/>
+                        </Anchor>
+                    </Anchors>
+                </Texture>
+            </Layer>
+            <Layer level="ARTWORK">
+                <FontString parentKey="Title" inherits="SystemFont_Small" justifyH="LEFT" text="Mentalo The Frame Mover!">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativeTo="$parentTitleBG">
+                            <Offset x="4" y="0"/>
+                        </Anchor>
+                        <Anchor point="BOTTOMRIGHT" relativeTo="$parentTitleBG"/>
+                    </Anchors>
+                    <Color r="1" g="1" b="1" a="1"/>
+                </FontString>
+                <FontString parentKey="SubTitle" inherits="FriendsFont_Small" justifyH="CENTER" text="Right-click frames to move with precision.">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativeTo="$parentTitleBG" relativePoint="BOTTOMLEFT">
+                            <Offset x="4" y="-4"/>
+                        </Anchor>
+                        <Anchor point="TOPRIGHT" relativeTo="$parentTitleBG" relativePoint="BOTTOMRIGHT">
+                            <Offset x="-4" y="-4"/>
+                        </Anchor>
+                    </Anchors>
+                    <Color r="1" g="1" b="0" a="0.8"/>
+                </FontString>
+                <Texture parentKey="Avatar" file="Interface\AddOns\SVUI\assets\artwork\Doodads\MENTALO-OFF">
+                    <Size x="132" y="132"/>
+                    <Anchors>
+                        <Anchor point="BOTTOM" relativeTo="$parentBG" relativePoint="TOP"/>
+                    </Anchors>
+                </Texture>
+            </Layer>
+        </Layers>
+        <Frames>
+            <Button name="$parentLockButton" inherits="OptionsButtonTemplate" text="Lock">
+                <Size x="96" y="24"/>
+                <Anchors>
+                    <Anchor point="RIGHT" relativeTo="$parentBG">
+                        <Offset x="-4" y="0"/>
+                    </Anchor>
+                </Anchors>
+            </Button>
+        </Frames>
+        <Scripts>
+            <OnHide>
+                _G["SVUI_MentaloPrecision"]:Hide();
+            </OnHide>
+            <OnDragStart>
+                self.moving = true;
+                self:StartMoving();
+            </OnDragStart>
+            <OnDragStop>
+                self.moving = nil;
+                self:StopMovingOrSizing();
+            </OnDragStop>
+        </Scripts>
+    </Frame>
 </Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/xml/utility.xml b/Interface/AddOns/SVUI/xml/utility.xml
deleted file mode 100644
index 6d95f19..0000000
--- a/Interface/AddOns/SVUI/xml/utility.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-	<Frame name="SVUI_EventHandler1" hidden="true" virtual="true">
-        <Scripts>
-            <OnEvent function="SVUI_EventHandler1_OnEvent"/>
-        </Scripts>
-    </Frame>
-    <Frame name="SVUI_EventHandler2" hidden="true" virtual="true">
-        <Scripts>
-            <OnEvent function="SVUI_EventHandler2_OnEvent"/>
-        </Scripts>
-    </Frame>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.lua b/Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.lua
deleted file mode 100644
index cdb4e40..0000000
--- a/Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.lua
+++ /dev/null
@@ -1,1002 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack    = _G.unpack;
-local select    = _G.select;
-local pairs     = _G.pairs;
-local ipairs    = _G.ipairs;
-local type      = _G.type;
-local error     = _G.error;
-local pcall     = _G.pcall;
-local assert    = _G.assert;
-local tostring  = _G.tostring;
-local tonumber  = _G.tonumber;
-local tinsert   = _G.tinsert;
-local string    = _G.string;
-local math      = _G.math;
-local table     = _G.table;
---[[ STRING METHODS ]]--
-local lower, upper = string.lower, string.upper;
-local find, format, len, split = string.find, string.format, string.len, string.split;
-local match, sub, join = string.match, string.sub, string.join;
-local gmatch, gsub = string.gmatch, string.gsub;
---[[ MATH METHODS ]]--
-local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;  -- Basic
-local random = math.random;  -- Uncommon
---[[ TABLE METHODS ]]--
-local tremove, tcopy, twipe = table.remove, table.copy, table.wipe;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SVUIAddOnName, PLUGIN = ...;
-local SV = SVUI
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local NewHook = hooksecurefunc;
-
-PLUGIN = Registry:NewPrototype(SVUIAddOnName)
-local SCHEMA = PLUGIN.___schema;
-
-_G["WhisperVillain"] = PLUGIN;
-
-local PlayersName = UnitName("player")
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local playerName = UnitName("player");
-local playerRealm = GetRealmName();
-
-local ConjugationKeys = {[1]={[1]="are",[2]="am",[3]="were",[4]="was",[5]="I",[6]="me",[7]="you",[8]="my",[9]="your",[10]="mine",[11]="your's",[12]="I'm",[13]="you're",[14]="I've",[15]="you've",[16]="I'll",[17]="you'll",[18]="myself",[19]="yourself"},[2]={[1]="am",[2]="are",[3]="was",[4]="were",[5]="you",[6]="you",[7]="me",[8]="your",[9]="my",[10]="your's",[11]="mine",[12]="you're",[13]="I'm",[14]="you've",[15]="I've",[16]="you'll",[17]="I'll",[18]="yourself",[19]="myself"},[3]={[1]="me am",[2]="am me",[3]="mecan",[4]="can me",[5]="me have",[6]="me will",[7]="will me"},[4]={[1]="I am",[2]="am I",[3]="I can",[4]="can I",[5]="I have",[6]="I will",[7]="will I"}};
-local punctuations = {[1]={pattern="%.",value="."},[2]={pattern=",",value=","},[3]={pattern="!",value="!"},[4]={pattern="%?",value="?"},[5]={pattern=":",value=":"},[6]={pattern=";",value=";"},[7]={pattern="&",value="&"},[8]={pattern="\"",value="\""},[9]={pattern="@",value="@"},[10]={pattern="#",value="#"},[11]={pattern="%(",value="("},[12]={pattern="%)",value=")"}};
-
-local PhoneLines = {};
-local ResponseQueue = {};
-
-local ICON_FILE = [[Interface\AddOns\SVUI_AnsweringService\artwork\DOCK-CALL]]
-local DEFAULT_GRADIENT = {"VERTICAL", 0.08, 0.08, 0.08, 0.22, 0.22, 0.22}
-local GREEN_GRADIENT = {"VERTICAL", 0.08, 0.5, 0, 0.25, 0.9, 0.08}
-local YELLOW_GRADIENT = {"VERTICAL", 1, 0.3, 0, 1, 1, 0}
---[[
-##########################################################
-DIALOG TABLES
-##########################################################
-]]--
-local OneLiners = {
-	[1] = "I've got to sit down and work out where I stand.",
-	[2] = "If I save time, when do I get it back?",
-	[3] = "I am not prejudice. I hate everyone equally.",
-	[4] = "Take my advice, I don't use it anyway.",
-	[5] = "The statement below is true. The statement above is false.",
-	[6] = "As I said before, I never repeat myself.",
-	[7] = "If at first you don't succeed, avoid skydiving.",
-	[8] = "War doesn't determine who's right. War determines who's left.",
-	[9] = "Best way to prevent a hangover is to stay drunk.",
-	[10] = "Doesn't expecting the unexpected make the unexpected become the expected?",
-	[11] = "I was born intelligent... education ruined me.",
-	[12] = "A bus station is where a bus stops. A train station is where a train stops. On my desk, I have a work station... What more can I say?",
-	[13] = "If it's true that we are here to help others, then, what exactly are the others here for?",
-	[14] = "Since light travels faster than sound, people appear bright Until you hear them speak.",
-	[15] = "How come \"abbreviated\" is such a long word?",
-	[16] = "Living on Earth may be expensive... but it includes an annual free trip around the Sun.",
-	[17] = "Your future depends on your dreams So go to sleep!",
-	[18] = "A good discussion is like a miniskirt, short enough to hold interest and long enough to cover the subject.",
-	[19] = "A good time to keep your mouth shut is when you are in deep water.",
-	[20] = "How come we choose from just two people for President and 50 for Miss America?",
-	[21] = "No one ever says \"it's just a game\" when they are winning.",
-	[22] = "Suicidal twin kills sister by mistake!",
-	[23] = "He who laughs last thinks slowest!",
-	[24] = "Always remember you're unique, just like everyone else.",
-	[25] = "Hard work has a future payoff. Laziness pays off now.",
-	[26] = "Don't take life too seriously, you won't get out alive.",
-	[27] = "I don't suffer from insanity. I enjoy every minute of it.",
-	[28] = "I'm as confused as a baby in a topless bar.",
-	[29] = "90% of all statistics are made up.",
-	[30] = "If you can't convince them, confuse them.",
-	[31] = "If at first you don't succeed, destroy all evidence that you tried"
-}
-
-local Excuse = {
-	-- OPENERS
-	[1] = "I'd love to, but ",
-	[2] = "I'm being told that ",
-	[3] = "The voices say that ",
-	[4] = "Hang on a sec ",
-	[5] = "You should know that ",
-	[6] = "I just found out that ",
-	[7] = "I would but ",
-	[8] = "Umm... ",
-	[9] = "I don't know about you but ",
-	[10] = "Can't talk right now, ",
-	-- PUNCHLINES
-	[11] = "I have to floss my cat",
-	[12] = "I've dedicated my life to linguini",
-	[13] = "I want to spend more time with my blender",
-	[14] = "the President said he might drop in",
-	[15] = "the man on television told me to say tuned",
-	[16] = "I've been scheduled for a karma transplant",
-	[17] = "I'm staying home to work on my cottage cheese sculpture",
-	[18] = "it's my parakeet's bowling night",
-	[19] = "it wouldn't be fair to the other Beautiful People",
-	[20] = "I'm building a pig from a kit",
-	[21] = "I did my own thing and now I've got to undo it",
-	[22] = "I'm enrolled in aerobic scream therapy",
-	[23] = "there's a disturbance in the Force",
-	[24] = "I'm doing door-to-door collecting for static cling",
-	[25] = "I have to go to the post office to see if I'm still wanted",
-	[26] = "I'm teaching my ferret to yodel",
-	[27] = "I have to check the freshness dates on my dairy products",
-	[28] = "I'm going through cherry cheesecake withdrawl",
-	[29] = "I'm planning to go downtown to try on gloves",
-	[30] = "my crayons all melted together",
-	[31] = "I'm trying to see how long I can go without saying yes",
-	[32] = "I'm in training to be a household pest",
-	[33] = "I'm getting my overalls overhauled",
-	[34] = "my patent is pending",
-	[35] = "I'm attending the opening of my garage door",
-	[36] = "I'm sandblasting my oven",
-	[37] = "I'm worried about my vertical hold",
-	[38] = "I'm going down to the bakery to watch the buns rise",
-	[39] = "I'm being deported",
-	[40] = "the grunion are running",
-	[41] = "I'll be looking for a parking space",
-	[42] = "my Millard Filmore Fan Club meets then",
-	[43] = "the monsters haven't turned blue yet, and I have to eat more dots",
-	[44] = "I'm taking punk totem pole carving",
-	[45] = "I have to fluff my shower cap",
-	[46] = "I'm converting my calendar watch from Julian to Gregorian",
-	[47] = "I've come down with a really horrible case of something or other",
-	[48] = "I made an appointment with a cuticle specialist",
-	[49] = "my plot to take over the world is thickening",
-	[50] = "I have to fulfill my potential",
-	[51] = "I don't want to leave my comfort zone",
-	[52] = "it's too close to the turn of the century",
-	[53] = "I have some real hard words to look up in the dictionary",
-	[54] = "my subconscious says no",
-	[55] = "I'm giving nuisance lessons at a convenience store",
-	[56] = "I left my body in my other clothes",
-	[57] = "the last time I went, I never came back",
-	[58] = "I've got a Friends of Rutabaga meeting",
-	[59] = "I have to answer all of my 'occupant' letters",
-	[60] = "none of my socks match",
-	[61] = "I have to be on the next train to Bermuda",
-	[62] = "I'm having all my plants neutered",
-	[63] = "people are blaming me for the Spanish-American War",
-	[64] = "I changed the lock on my door and now I can't get out",
-	[65] = "I'm making a home movie called 'The Thing That Grew in My Refrigerator'",
-	[66] = "I'm attending a perfume convention as guest sniffer",
-	[67] = "my yucca plant is feeling yucky",
-	[68] = "I'm touring China with a wok band",
-	[69] = "my chocolate-appreciation class meets that night",
-	[70] = "I never go out on days that end in 'Y'",
-	[71] = "my mother would never let me hear the end of it",
-	[72] = "I'm running off to Yugoslavia with a foreign-exchange student named Basil Metabolism",
-	[73] = "I just picked up a book called 'Glue in Many Lands' and I can't put it down",
-	[74] = "I'm too evil for that stuff",
-	[75] = "I have to torment my hair",
-	[76] = "I have too much guilt",
-	[77] = "there are important world issues that need worrying about",
-	[78] = "I have to draw 'Cubby' for an art scholarship",
-	[79] = "I'm uncomfortable when I'm alone or with others",
-	[80] = "I promised to help a friend fold road maps",
-	[81] = "I feel a song coming on",
-	[82] = "I'm trying to be less popular",
-	[83] = "my bathroom tiles need grouting",
-	[84] = "I have to bleach my hare",
-	[85] = "I'm waiting to see if I'm already a winner",
-	[86] = "I'm writing a love letter to Richard Simmons",
-	[87] = "you know how we psychos are",
-	[88] = "my favorite commercial is on TV",
-	[89] = "I have to study for a blood test",
-	[90] = "I'm going to be old someday",
-	[91] = "I've been traded to Cincinnati",
-	[92] = "I'm observing National Apathy Week",
-	[93] = "I have to rotate my crops",
-	[94] = "my uncle escaped again",
-	[95] = "I'm up to my elbows in waxy buildup",
-	[96] = "I have to knit some dust bunnies for a charity bazaar",
-	[97] = "I'm having my baby shoes bronzed",
-	[98] = "I have to go to court for kitty littering",
-	[99] = "I'm going to count the bristles in my toothbrush",
-	[100] = "I have to thaw some karate chops for dinner",
-	[101] = "having fun gives me prickly heat",
-	[102] = "I'm going to the Missing Persons Bureau to see if anyone is looking for me",
-	[103] = "I have to jog my memory",
-	[104] = "my palm reader advised against it",
-	[105] = "my Dress For Obscurity class meets then",
-	[106] = "I have to stay home and see if I snore",
-	[107] = "I prefer to remain an enigma",
-	[108] = "I think you want the OTHER " .. playerName,
-	[109] = "I have to sit up with a sick ant",
-	[110] = "I'm trying to cut down",
-	[111] = ".. well, maybe",
-};
-
-local Phrases = {
-	[1] = "I don't really want to<*",
-	[2] = "Are you going to<*",
-	[3] = "I don't know, should I<*",
-	[4] = "So you are not going to<*",
-	[5] = "Why don't you<*",
-	[6] = "So you think I'm<*",
-	[7] = "What's it to you if I'm<*",
-	[8] = "Did you wanna<*",
-	[9] = "Do you wanna<*",
-	[10] = "Don't you really<*",
-	[11] = "Why don't you<*",
-	[12] = "I bet you can't<*",
-	[13] = "UMADBRO?",
-	[14] = "I'm marginally listening.",
-	[15] = "Let me get this straight, you feel<*",
-	[16] = "Stop feeling<*",
-	[17] = "Why would I<*",
-	[18] = "If your lucky I just might<@",
-	[19] = "So, your really asking me to<*",
-	[20] = "Is there a reason why YOU don't<*",
-	[21] = "Why can't you<*",
-	[22] = "Why are you interested in whether or not I am<*",
-	[23] = "Would you prefer if I were not<*",
-	[24] = "Perhaps in your fantasies I am<*",
-	[25] = "How do you know you can't<*",
-	[26] = "Have you tried?",
-	[27] = "Perhaps you can now<*",
-	[28] = "Did you come to me because you are<*",
-	[29] = "How long have you been<*",
-	[30] = "Do you believe it is normal to be<*",
-	[31] = "Do you enjoy being<*",
-	[32] = "We were discussing you, not me.",
-	[33] = "Oh... <*",
-	[34] = "Doesn't sound like me though, does it?",
-	[35] = "How awesome would it be if you got<*",
-	[36] = "Why do you want<*",
-	[37] = "Suppose you got<*",
-	[38] = "What if you never got<*",
-	[39] = "I sometimes also want<@",
-	[40] = "Whay are you asking me?",
-	[41] = "Does it really matter?",
-	[42] = "Is there a right answer?",
-	[43] = "What do you think?",
-	[44] = "You are asking the wrong questions, wanna try again?",
-	[45] = "What is it that you really want to know?",
-	[46] = "Who else have you asked?",
-	[47] = "Am I the first person you have asked this?",
-	[48] = "Don't you already know the aswer to that?",
-	[49] = "The names aren't important.",
-	[50] = "I won't remember any names, do continue.",
-	[51] = "Is that the real reason?",
-	[52] = "Don't any other reasons come to mind?",
-	[53] = "Does that reason explain anything else?",
-	[54] = "What other reasons might there be?",
-	[55] = "Please don't apologise!",
-	[56] = "Apologies are not necessary.",
-	[57] = "What feelings do you have when you apologise?",
-	[58] = "Don't be so defensive!",
-	[59] = "What does that dream suggest to you?",
-	[60] = "Do you dream often?",
-	[61] = "What persons appear in your dreams?",
-	[62] = "Are you disturbed by your dreams?",
-	[63] = "What?",
-	[64] = "You don't seem quite certain.",
-	[65] = "Why the uncertain tone?",
-	[66] = "Can't you be more positive?",
-	[67] = "You aren't sure?",
-	[68] = "Don't you know?",
-	[69] = "Are you saying no just to be negative?",
-	[70] = "You are being a bit negative.",
-	[71] = "Why not?",
-	[72] = "Are you sure?",
-	[73] = "Why no?",
-	[74] = "Why are you concerned about my<*",
-	[75] = "What about your own<*",
-	[76] = "Can you think of a specific example?",
-	[77] = "When?",
-	[78] = "What are you thinking of?",
-	[79] = "Really, always?",
-	[80] = "Think so?",
-	[81] = "You thought<*",
-	[82] = "You really think<*",
-	[83] = "In what way?",
-	[84] = "What resemblence do you see?",
-	[85] = "What does the similarity suggest to you?",
-	[86] = "What other connections do you see?",
-	[87] = "Could there really be some connection?",
-	[88] = "How?",
-	[89] = "You seem quite positive.",
-	[90] = "ORLY?",
-	[91] = "OIC.",
-	[92] = "Word.",
-	[93] = "You dont have any friends.",
-	[94] = "Why would I care about your friends?",
-	[95] = "Are you sure you know what 'friend' means?",
-	[96] = "Are you sure you have any friends?",
-	[97] = "Do your friends usually get really quiet when you are around?",
-	[98] = "I'm willing to bet your friends hate you.",
-	[99] = "Who still uses the word noob?",
-	[100] = "Are you talking about me specifically?",
-	[101] = "I dunno. What are YOU doing?",
-	[102] = "Would't you like to know?",
-	[103] = "What do you think?",
-	[104] = "I'm guessing you want something from me?",
-	[105] = "I'm playing World of Warcraft... you seriously didn't know that?",
-	[106] = "No kidding? Fo' realz? That's dope fresh son!",
-	[107] = "And what did you learn?",
-	[108] = "Gotcha.",
-	[109] = "MmmmHmmm",
-	[110] = "I don't follow...",
-	[111] = "I'm gonna need a bit more context. Do you know what context means?",
-	[112] = "Wow... just ...wow.",
-	[113] = "Same question huh?",
-	[114] = "Deja Vu!",
-	[115] = "Yeah, lets try this again shall we?",
-	[116] = "Have you recently suffered a head injury?",
-	[117] = "Im hearing an echo I think....",
-	[118] = "Cant all classes heal themselves now?",
-	[119] = "Bandages FTW!",
-	[120] = "Why are you asking me?",
-	[121] = "Thats adorable how excited you are about it!",
-	[122] = "What do you think?",
-	[123] = "What is it that you really want to know?",
-	[124] = "What is your level?",
-	[125] = "Is this your first character?",
-	[126] = "Most guilds are just full of high school kids with nothing better to do.",
-	[127] = "What is a guild?",
-	[128] = "What is the name?",
-	[129] = "Oh really?",
-	[130] = "Great story.",
-	[131] = "Meh.",
-	[132] = "No clue."
-};
-
-local Responses = {
-	[1] =  {Key = "**NO KEY**",	   Question = false, Dialog = {106,107,108,109,110,111,112,129,130,131,132}},
-	[2] =  {Key = "**REPEAT**",	   Question = false, Dialog = {113,114,115,116,117}},
-	[3] =  {Key = "YOU'RE", 	   Question = false, Dialog = {6,7,8,9}},
-	[4] =  {Key = "I DON'T", 	   Question = false, Dialog = {10,11,12,13}},
-	[5] =  {Key = "I FEEL", 	   Question = false, Dialog = {14,15,16 }},
-	[6] =  {Key = "WHY DON'T YOU", Question = false, Dialog = {17,18,19}},
-	[7] =  {Key = "WHY CAN'T I",   Question = false, Dialog = {20,21 }},
-	[8] =  {Key = "ARE YOU", 	   Question = false, Dialog = {22,23,24}},
-	[9] =  {Key = "I CAN'T", 	   Question = false, Dialog = {25,26,27}},
-	[10] = {Key = "I AM", 		   Question = false, Dialog = {28,29,30,31}},
-	[11] = {Key = "I'M", 		   Question = false, Dialog = {28,29,30,31}},
-	[12] = {Key = "YOU", 		   Question = false, Dialog = {32,33,34}},
-	[13] = {Key = "I WANT", 	   Question = false, Dialog = {35,36,37,38,39 }},
-	[14] = {Key = "WHAT", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
-	[15] = {Key = "HOW", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
-	[16] = {Key = "WHO", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
-	[17] = {Key = "WHERE", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
-	[18] = {Key = "WHEN", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
-	[19] = {Key = "WHY",  		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
-	[20] = {Key = "NAME", 		   Question = false, Dialog = {49,50}},
-	[21] = {Key = "CAUSE", 		   Question = false, Dialog = {51,52,53,54}},
-	[22] = {Key = "SORRY", 		   Question = false, Dialog = {55,56,57,58}},
-	[23] = {Key = "DREAM",  	   Question = false, Dialog = {59,60,61,62}},
-	[24] = {Key = "HELLO",  	   Question = false, Dialog = {63}},
-	[25] = {Key = "HI",  		   Question = false, Dialog = {63}},
-	[26] = {Key = "MAYBE",  	   Question = false, Dialog = {64,65,66,67,68}},
-	[27] = {Key = "NO",   		   Question = false, Dialog = {69,70,71,72,73}},
-	[28] = {Key = "YOUR",   	   Question = false, Dialog = {74,75}},
-	[29] = {Key = "ALWAYS", 	   Question = false, Dialog = {76,77,78,79}},
-	[30] = {Key = "THINK",  	   Question = false, Dialog = {80,81,82}},
-	[31] = {Key = "ALIKE",  	   Question = false, Dialog = {83,84,85,86,87,88,89}},
-	[32] = {Key = "YES",   		   Question = false, Dialog = {90,91,92}},
-	[33] = {Key = "FRIEND", 	   Question = false, Dialog = {93,94,95,96,97,98}},
-	[34] = {Key = "NOOB",   	   Question = false, Dialog = {99}},
-	[35] = {Key = "CAN I", 		   Question = false, Dialog = {4,5}},
-	[36] = {Key = "CAN YOU",  	   Question = false, Dialog = {1,2,3}},
-	[37] = {Key = "WILL YOU",  	   Question = false, Dialog = {1,2,3}},
-	[38] = {Key = "WOULD YOU",     Question = false, Dialog = {1,2,3}},
-	[39] = {Key = "COULD YOU",     Question = false, Dialog = {1,2,3}},
-	[40] = {Key = "YOU ARE", 	   Question = false, Dialog = {6,7,8,9 }},
-	[41] = {Key = "HEALER",  	   Question = false, Dialog = {118,119}},
-	[42] = {Key = "HOLY", 		   Question = false, Dialog = {118,119}},
-	[43] = {Key = "RESTORATION",   Question = false, Dialog = {118,119}},
-	[44] = {Key = "HEAL",  		   Question = false, Dialog = {118,119}},
-	[45] = {Key = "PORT", 		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
-	[46] = {Key = "PORTAL",  	   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
-	[47] = {Key = "WATER", 		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
-	[48] = {Key = "FOOD",  		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
-	[49] = {Key = "MONEY",  	   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
-	[50] = {Key = "GOLD", 		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
-	[51] = {Key = "PVP",  		   Question = false, Dialog = {120,121,122,123,124,125}},
-	[52] = {Key = "RAID",  		   Question = false, Dialog = {120,121,122,123,124,125}},
-	[53] = {Key = "KNOW",  		   Question = false, Dialog = {64,65,66,67,68}},
-	[54] = {Key = "POSSIBLE",  	   Question = false, Dialog = {64,65,66,67,68}},
-	[55] = {Key = "WTF",  		   Question = false, Dialog = {64,65,66,67,68}},
-	[56] = {Key = "LOL",  		   Question = false, Dialog = {64,65,66,67,68}},
-	[57] = {Key = "GUILD", 		   Question = false, Dialog = {126,127,128}},
-	[58] = {Key = "TOON", 		   Question = false, Dialog = {49,50}},
-	[59] = {Key = "CHARACTER", 	   Question = false, Dialog = {49,50}},
-	[60] = {Key = "PLAYER", 	   Question = false, Dialog = {49,50}},
-	[61] = {Key = "DOING", 		   Question = false, Dialog = {100,101,102,103,104,105}},
-	[62] = {Key = "UP TO", 		   Question = false, Dialog = {100,101,102,103,104,105}},
-};
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local function ServiceMessage(msg)
-    local msgFrom = SV.db[SCHEMA].prefix == true and "Minion Answering Service" or "";
-    print("|cffffcc1a" .. msgFrom .. ":|r", msg)
-end
-
-local function ClearResponses(caller)
-	for x = 1, #ResponseQueue, 1 do
-		if ResponseQueue[x] then
-			if ResponseQueue[x].CID == caller then
-				tremove(ResponseQueue, x)
-			end
-		end
-	end
-end
-
-local function RemoveCaller(caller)
-	ClearResponses(caller)
-
-	if PhoneLines[caller] then
-		local data = PhoneLines[caller]
-		local btn = _G["HenchmenPhoneLine"..data.Line];
-		btn.Text:SetText("Empty Phone Line");
-		btn:SetPanelColor("default");
-		PhoneLines[caller] = nil
-		ServiceMessage("Caller ("..caller..") was disconnected.");
-	end
-end
---[[
-##########################################################
-MESSAGE PROCESSING
-##########################################################
-]]--
-do
-	local function Conjugate(parse)
-		for i,cj in pairs(ConjugationKeys[1]) do
-			parse = gsub(parse, cj, "#@&"..i)
-		end
-		for i,cj in pairs(ConjugationKeys[2]) do
-			parse = gsub(parse, "#@&"..i, cj)
-		end
-		for i,cj in pairs(ConjugationKeys[3]) do
-			parse = gsub(parse, cj, "#@&"..i)
-		end
-		for i,cj in pairs(ConjugationKeys[4]) do
-			parse = gsub(parse, "#@&"..i, cj)
-		end
-		return parse
-	end
-
-	local function PadString(strng)
-		aString = " "..strng.." "
-		for i = 1, 12, 1 do
-			aString = gsub(aString, punctuations[i].pattern, " "..punctuations[i].value.." ")
-		end
-		return " "..aString.." "
-	end
-
-	local function UnPadString(strng)
-		aString = strng
-		aString = gsub(aString, "  ", " ")
-		if sub(aString, 1, 1) == " " then
-			aString = sub(aString, 2)
-		end
-		if sub(aString, -1, -1) == " " then
-			aString = sub(aString, 1, len(aString)-1)
-		end
-		for i = 1, 12, 1 do
-			aString = gsub(aString, " "..punctuations[i].pattern, punctuations[i].value)
-		end
-		return aString
-	end
-
-	local function TrimString(orgString, unpad)
-		local tmpChars = ".,!?:;&\"@#()^$+-%= "
-		local x = 1
-		local found = true
-
-		if(unpad) then
-			orgString = UnPadString(orgString)
-		end
-
-		while found == true do
-			local tchar = sub(orgString, -(x), -(x))
-			if tchar == "(" or tchar == ")" or tchar == "." or tchar == "%" or tchar == "+" or tchar == "-" or tchar == "*" or tchar == "?" or tchar == "[" or tchar == "]" or tchar == "^" or tchar == "$" then
-				tchar = "%"..tchar
-			end
-			found = find(tchar,tmpChars) and (len(orgString) - x) > 0
-			x = x + 1
-		end
-		x = x - 1
-		if (len(orgString) - x) > 0 then
-			orgString = sub(orgString, 1, len(orgString) - x + 1)
-		end
-		x = 1
-		while find(sub(orgString, x, x),tmpChars) and (len(orgString) - x) > 0 do
-			x = x + 1
-		end
-		if (len(orgString) - x) > 0 then
-			orgString = sub(orgString, x)
-		end
-		return orgString
-	end
-
-	local function PhraseSearch(sString, keyid, data)
-		local thisstr = "";
-		local phrase;
-		local wordkey = Responses[keyid].Key;
-		local links = Responses[keyid].Dialog;
-		idrange = #links
-		if idrange > 1 then
-			while(not phrase) do
-				local mod = floor(random(1, idrange))
-				if links[mod] ~= data.LastKey then
-					phrase = Phrases[links[mod]]
-					data.LastKey = links[mod]
-				end
-			end
-		else
-			data.LastKey = 1
-		end
-		local tempt = sub(phrase, -1, -1)
-		local sTemp = ""
-		if tempt == "*" or tempt == "@" then
-			sTemp = PadString(sString)
-			local wTemp = upper(sTemp)
-			local strpstr = find(wTemp, " "..wordkey.." ")
-			if not strpstr then
-				strpstr = find(wTemp, " "..wordkey)
-			end
-			if not strpstr then
-				strpstr = find(wTemp, wordkey.." ")
-			end
-			strpstr = strpstr + len(wordkey) + 1
-			thisstr = Conjugate(sub(sTemp, strpstr))
-			thisstr = TrimString(thisstr, true)
-			if tempt == "*" then
-				sTemp = gsub(phrase, "<%*", " "..thisstr.."?")
-			else
-				sTemp = gsub(phrase, "<@", " "..thisstr..".")
-			end
-		else
-			sTemp = phrase
-		end
-		return sTemp
-	end
-
-	local function KeywordSearch(wString)
-		for k, v in gmatch(wString, "([%w']+ [%w']+ [%w']+ [%w']+ [%w']+)") do
-			for x = 1, 62, 1 do
-				if Responses[x].Key == k then
-					return x
-				end
-			end
-		end
-		for k, v in gmatch(wString, "([%w']+ [%w']+ [%w']+ [%w']+)") do
-			for x = 1, 62, 1 do
-				if Responses[x].Key == k then
-					return x
-				end
-			end
-		end
-		for k, v in gmatch(wString, "([%w']+ [%w']+ [%w']+)") do
-			for x = 1, 62, 1 do
-				if Responses[x].Key == k then
-					return x
-				end
-			end
-		end
-		for k, v in gmatch(wString, "([%w']+ [%w']+)") do
-			for x = 1, 62, 1 do
-				if Responses[x].Key == k then
-					return x
-				end
-			end
-		end
-		for k, v in gmatch(wString, "([%w]-) ") do
-			for x = 1, 62, 1 do
-				if Responses[x].Key == k then
-					return x
-				end
-			end
-		end
-		return 1
-	end
-
-	local function MakeExcuse(sInput)
-		local joke = random(100)
-		if(joke <= 31) then
-			return OneLiners[joke];
-		end
-		local word_list = {}
-		for k, v in gmatch(sInput, "([%w']+)") do
-			tinsert(word_list, k)
-		end
-		local tBestQuotes = {}
-		local mxWords = 0
-		for x = 11, 101, 1 do
-			local count = 0
-			for y = 1, #word_list, 1 do
-				if find(Excuse[x], word_list[y]) then
-					count = count + 1
-				end
-			end
-			if count > mxWords then
-				tBestQuotes = {}
-				mxWords = count
-				tinsert(tBestQuotes, x)
-			elseif count == mxWords then
-				tinsert(tBestQuotes, x)
-			end
-		end
-
-		local response = Excuse[random(1,10)]
-		local mod = random(11,101)
-		if #tBestQuotes > 0 then
-			mod = tBestQuotes[random(#tBestQuotes)]
-		end
-		response = response .. Excuse[mod]
-		return response;
-	end
-
-	local function MessageBuilder(data, inbound)
-		local sInput = TrimString(inbound);
-		local outbound;
-		local mapkey = 1;
-		if sInput ~= "" and sInput ~= " " and sInput ~= "  " and sInput ~= "." and sInput ~= "," then
-			local wInput = PadString(upper(sInput));
-			mapkey = KeywordSearch(wInput);
-			if Responses[mapkey].Question == true then
-				if sub(inbound, -1, -1) ~= "?" then
-					mapkey = 1
-				end
-			end
-			if(inbound == data.InBound or inbound == data.OutBound) then
-				mapkey = 2
-			elseif mapkey == 1 then
-				if data.FirstResponse == true then
-					outbound = ":)";
-				else
-					if(20 >= random(100)) then
-						outbound = MakeExcuse(sInput)
-					end
-				end
-			end
-			data.FirstResponse = false
-		end
-		if(not outbound) then
-			outbound = PhraseSearch(sInput, mapkey, data)
-		end
-		if(SV.db[SCHEMA].prefix == true) then
-			return ("%s's Answering Service: %s"):format(PlayersName, outbound)
-		else
-			return outbound
-		end
-	end
-
-	function PLUGIN:TakeAMessage(caller, inbound)
-		ClearResponses(caller)
-		local data = PhoneLines[caller];
-		if(data) then
-			if(data.InUse) then
-				local data = PhoneLines[caller];
-				local outbound = MessageBuilder(data, inbound)
-				data.OutBound = outbound
-				local tm = (floor(GetTime()) + ((len(outbound)/400) * 60));
-				tinsert(ResponseQueue, {["ETA"] = tm, ["MSG"] = outbound, ["CID"] = caller})
-			end
-			data.InBound = inbound
-			data.TimeStamp = GetTime()
-		end
-	end
-end
-
-function PLUGIN:AddCaller(caller)
-	local state_text = "now on hold.";
-	local call_answered = false
-	PhoneLines[caller] = {
-		Line = 1,
-		InUse = false,
-		FirstResponse = true,
-		Caller = caller,
-		InBound = "",
-		OutBound = "",
-		LastKey = 1,
-		TimeStamp = 0
-	};
-	for x = 1, 5, 1 do
-		local btn = _G["HenchmenPhoneLine"..x];
-		if(btn.Text:GetText() ~= caller) then
-			btn.Text:SetText(caller);
-			PhoneLines[caller].Line = x
-			call_answered = true
-			if self.db.autoAnswer == true then
-				PhoneLines[caller].InUse = true;
-				btn:SetPanelColor("green");
-				self.Docklet:SetPanelColor("green");
-				self.Docklet.stateColor = GREEN_GRADIENT
-				state_text = "on the line.";
-				PlaySoundFile("Sound\\interface\\iQuestUpdate.wav")
-			end
-			break;
-		end
-	end
-	if(not call_answered) then
-		ServiceMessage("All lines are busy. New caller ("..caller..") was disconnected.")
-	else
-		ServiceMessage("New caller ("..caller..") is "..state_text)
-	end
-end
-
-function PLUGIN:GetServiceState()
-	local inUse = false
-	local onHold = false
-	for x = 1, 5, 1 do
-		local btn = _G["HenchmenPhoneLine"..x];
-		local caller = btn.Text:GetText()
-		if(PhoneLines[caller]) then
-			inUse = true
-			if(not PhoneLines[caller].InUse) then
-				onHold = true
-			end
-		end
-	end
-
-	if inUse then
-		if onHold then
-			self.Docklet:SetPanelColor("yellow")
-			self.Docklet.icon:SetGradient(unpack(YELLOW_GRADIENT))
-			self.Docklet.stateColor = YELLOW_GRADIENT
-		else
-			self.Docklet:SetPanelColor("green")
-			self.Docklet.icon:SetGradient(unpack(GREEN_GRADIENT))
-			self.Docklet.stateColor = GREEN_GRADIENT
-		end
-	else
-		self.Docklet:SetPanelColor("default")
-		self.Docklet.stateColor = DEFAULT_GRADIENT
-	end
-	return inUse,onHold
-end
-
-function PLUGIN:HangUp(caller,ignored)
-	RemoveCaller(caller)
-	local inUse,onHold = self:GetServiceState()
-
-	if inUse == false then
-		self.Window:Hide()
-	elseif onHold == true then
-		self.Window:Show()
-	else
-		self.Window:Show()
-	end
-
-	if(ignored) then
-		ServiceMessage(caller.." is now ignoring you! MwaaHaHa!")
-		PlaySoundFile("Sound\\interface\\RaidWarning.wav")
-	end
-end
---[[
-##########################################################
-EVENTS
-##########################################################
-]]--
-function PLUGIN:PhoneTimeUpdate()
-	local timer = 300;
-	local ttime = GetTime()
-	if #ResponseQueue > 0 then
-		for x = 1, #ResponseQueue, 1 do
-			if ResponseQueue[x] then
-				if ResponseQueue[x].ETA < ttime then
-					SendChatMessage(ResponseQueue[x].MSG, "WHISPER", nil, ResponseQueue[x].CID)
-					tremove(ResponseQueue, x)
-				end
-			end
-		end
-	end
-	if ttime > timer then
-		for x = 1, 5, 1 do
-			local btn = _G["HenchmenPhoneLine"..x];
-			local caller = btn.Text:GetText()
-			if(PhoneLines[caller]) then
-				if PhoneLines[caller].TimeStamp < (ttime - timer) then
-					self:HangUp(caller)
-				end
-			end
-		end
-	end
-end
-
-function PLUGIN:CHAT_MSG_IGNORED(event, inbound_message, caller, ...)
-	if(PhoneLines[caller] and PhoneLines[caller].InUse) then
-		self:HangUp(caller,true)
-	end
-end
-
-function PLUGIN:CHAT_MSG_WHISPER(event, inbound_message, caller)
-	if not UnitIsAFK("player") and not UnitIsDND("player") then
-		if (not PhoneLines[caller]) then
-			self:AddCaller(caller)
-		end
-		self:TakeAMessage(caller, inbound_message)
-	end
-end
-
-function PLUGIN:CHAT_MSG_BN_WHISPER(event, inbound_message, sender, _, _, _, _, _, _, _, _, _, _, presenceID)
-	if(not presenceID) then return end
-	if not UnitIsAFK("player") and not UnitIsDND("player") then
-		local _, bnToon = BNGetToonInfo(presenceID);
-		local caller = bnToon or sender;
-		if (not PhoneLines[caller]) then
-			self:AddCaller(caller)
-		end
-		self:TakeAMessage(caller, inbound_message)
-	end
-end
---[[
-##########################################################
-OTHER HANDLERS
-##########################################################
-]]--
-local AnsweringOnClick = function()
-	if(not PLUGIN.Window) then return end
-	if(PLUGIN.Window:IsShown()) then
-		PLUGIN.Window:Hide()
-	else
-		PLUGIN.Window:Show()
-	end
-end
-
-local PhoneLineClick = function(self, button)
-	local caller = self.Text:GetText()
-	if((caller == "Empty Phone Line") or not PhoneLines[caller]) then return; end
-	if button == "LeftButton" then
-		if(not PhoneLines[caller].InUse) then
-			self:SetPanelColor("green");
-			PhoneLines[caller].InUse = true
-			ServiceMessage("Let the torment of "..caller.." begin!")
-			PLUGIN:TakeAMessage(caller, PhoneLines[caller].InBound)
-		else
-			self:SetPanelColor("yellow");
-			PhoneLines[caller].InUse = false
-			ServiceMessage(caller.." is now on hold")
-		end
-	elseif button == "RightButton" then
-		PLUGIN:HangUp(caller)
-	end
-	PLUGIN:GetServiceState()
-end
---[[
-##########################################################
-LOAD AND CONSTRUCT
-##########################################################
-]]--
-function PLUGIN:Load()
-	if(not SV.db[SCHEMA].enable) then return end
-
-	self.db = SV.db[SCHEMA]
-
-	self:RegisterEvent("CHAT_MSG_WHISPER")
-	self:RegisterEvent("CHAT_MSG_BN_WHISPER")
-	self:RegisterEvent("CHAT_MSG_IGNORED")
-	self:RegisterUpdate("PhoneTimeUpdate", 4)
-
-	local buttonsize = SuperDockToolBarLeft.currentSize
-
-	local docklet = CreateFrame("Button", nil, UIParent)
-	docklet:SetParent(SuperDockToolBarLeft)
-	docklet:Point("LEFT", SuperDockToolBarLeft, "LEFT", 3, 0)
-	docklet:Size(buttonsize, buttonsize)
-	docklet:SetFramedButtonTemplate()
-	docklet.icon = docklet:CreateTexture(nil, "OVERLAY")
-	docklet.icon:FillInner(docklet,2,2)
-	docklet.icon:SetTexture(ICON_FILE)
-	docklet.stateColor = {"VERTICAL", 0.33, 0.25, 0.13, 0.47, 0.39, 0.27}
-	docklet.TText = L["Show / Hide Phone Lines"]
-	docklet:RegisterForClicks("AnyUp")
-
-	SV.SVDock:ActivateDockletButton(docklet, AnsweringOnClick)
-
-	SuperDockToolBarLeft:SetWidth(buttonsize + 4)
-
-	self.Docklet = docklet
-
-	local window = CreateFrame("Frame", nil, UIParent)
-	window:SetFrameStrata("MEDIUM")
-	window:SetWidth(128)
-	window:SetHeight(145)
-	window:SetScript("OnDragStart", function(this) this:StartMoving() end)
-	window:SetScript("OnDragStop", function(this) this:StopMovingOrSizing() end)
-	window:SetPoint("BOTTOMRIGHT", LeftSuperDock, "TOPRIGHT", 0, 6)
-	window:SetFixedPanelTemplate("Transparent")
-	window:SetMovable(true)
-	window:EnableMouse(true)
-	window:SetClampedToScreen(true)
-	window:RegisterForDrag("LeftButton")
-
-	local title = window:CreateFontString("HenchmenOperatorText")
-	title:SetWidth(128)
-	title:SetHeight(50)
-	title:SetFontObject(GameFontNormal)
-	title:SetTextColor(0.5, 0.5, 1, 1)
-	title:SetJustifyH("CENTER")
-	title:SetJustifyV("TOP")
-	title:SetPoint("TOP", window, "TOP", 0, -2)
-	title:SetText("Henchman Answering Service")
-
-	for x = 1, 5, 1 do
-		local phLn = CreateFrame("Button", "HenchmenPhoneLine"..x, window)
-		phLn:SetWidth(124)
-		phLn:SetHeight(20)
-		phLn:SetPoint("TOPLEFT", window, "TOPLEFT", 2, ((-16) - (x * 21)))
-		phLn:RegisterForClicks("AnyUp")
-		phLn:SetScript("OnClick", PhoneLineClick)
-		phLn:SetFixedPanelTemplate("Button")
-		phLn.Text = phLn:CreateFontString()
-		phLn.Text:SetWidth(124)
-		phLn.Text:SetHeight(20)
-		phLn.Text:SetFontObject(GameFontNormalSmall)
-		phLn.Text:SetTextColor(1, 1, 1, 1)
-		phLn.Text:SetJustifyH("CENTER")
-		phLn.Text:SetJustifyV("MIDDLE")
-		phLn.Text:SetPoint("TOP", "HenchmenPhoneLine"..x, "TOP")
-		phLn.Text:SetText("Empty Phone Line")
-	end
-
-	self.Window = window
-	self.Window:Hide()
-
-
-	local strMsg
-	if SV.db[SCHEMA].autoAnswer == true then
-		strMsg = "The Henchmen Operators Are Screening Your Calls.."
-	else
-		strMsg = "The Henchmen Operators Are Standing By.."
-	end
-	SV:AddonMessage(strMsg)
-
-	local option = {
-		order = 2,
-		type = "toggle",
-		name = "Auto Answer",
-		get = function(a) return SV.db[SCHEMA].autoAnswer end,
-		set = function(a,b) SV.db[SCHEMA].autoAnswer = b end
-	};
-	self:AddOption("autoAnswer", option)
-
-	option = {
-		order = 3,
-		type = "toggle",
-		name = "Prefix Messages",
-		get = function(a) return SV.db[SCHEMA].prefix end,
-		set = function(a,b) SV.db[SCHEMA].prefix = b end
-	};
-	self:AddOption("prefix", option)
-end
-
-CONFIGS[SCHEMA] = {
-	["enable"] = true,
-	["autoAnswer"] = false,
-	["prefix"] = true
-}
-
-Registry:NewPlugin(PLUGIN)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.toc b/Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.toc
deleted file mode 100644
index e797e5b..0000000
--- a/Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.toc
+++ /dev/null
@@ -1,11 +0,0 @@
-## Interface: 60000
-## Author: Munglunch
-## Version: 4.4
-## Title: |cffFF9900SVUI |r|cffFFEF00Answering Service|r
-## Notes: Supervillain UI [|cff9911FFAutomatic Whispers|r]
-## RequiredDeps: SVUI
-## LoadOnDemand: 1
-## X-SVUI-Header: Answering Service
-## X-SVUI-Schema: SVAnswer
-
-SVUI_AnsweringService.lua
diff --git a/Interface/AddOns/SVUI_AnsweringService/artwork/DOCK-CALL.blp b/Interface/AddOns/SVUI_AnsweringService/artwork/DOCK-CALL.blp
deleted file mode 100644
index de23af0..0000000
Binary files a/Interface/AddOns/SVUI_AnsweringService/artwork/DOCK-CALL.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ArtOfWar/Bindings.xml b/Interface/AddOns/SVUI_ArtOfWar/Bindings.xml
deleted file mode 100644
index 78f0b62..0000000
--- a/Interface/AddOns/SVUI_ArtOfWar/Bindings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<Bindings>
-  <Binding name="SVUIAOW_RADIO" category="ADDONS" header="SVUIAOW" runOnUp="false">
-    SVUISayIncoming()
-  </Binding>
-</Bindings>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.lua b/Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.lua
deleted file mode 100644
index 328cdde..0000000
--- a/Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.lua
+++ /dev/null
@@ -1,1172 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
-
---[[  CONSTANTS ]]--
-
-BINDING_HEADER_SVUIAOW = "Supervillain UI: Art of War";
-BINDING_NAME_SVUIAOW_RADIO = "Call Out Incoming";
-
---[[ GLOBALS ]]--
-
-local _G = _G;
-local unpack    = _G.unpack;
-local select    = _G.select;
-local pairs     = _G.pairs;
-local ipairs    = _G.ipairs;
-local type      = _G.type;
-local error     = _G.error;
-local pcall     = _G.pcall;
-local assert    = _G.assert;
-local tostring  = _G.tostring;
-local tonumber  = _G.tonumber;
-local tinsert 	= _G.tinsert;
-local string 	= _G.string;
-local math 		= _G.math;
-local table 	= _G.table;
-local bit       = _G.bit;
---[[ STRING METHODS ]]--
-local format, sub = string.format, string.sub;
---[[ MATH METHODS ]]--
-local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;
---[[ TABLE METHODS ]]--
-local tremove, twipe = table.remove, table.wipe;
---[[ BINARY METHODS ]]--
-local band, bor = bit.band, bit.bor;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SVUIAddOnName, PLUGIN = ...;
-local SV = SVUI
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local NewHook = hooksecurefunc;
-
-PLUGIN = Registry:NewPrototype(SVUIAddOnName)
-local SCHEMA = PLUGIN.___schema;
-
-_G["WarVillain"] = PLUGIN;
---[[
-##########################################################
-GLOBAL SLASH FUNCTIONS
-##########################################################
-]]--
-function SVUISayIncoming()
-	local subzoneText = GetSubZoneText()
-	local msg = ("{rt8} Incoming %s {rt8}"):format(subzoneText)
-	SendChatMessage(msg, "INSTANCE_CHAT")
-	return
-end
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local function HeadsUpAlarm(...)
-	if not CombatText_AddMessage then return end
-	CombatText_AddMessage(...)
-end
---[[
-##########################################################
-MUNGLUNCH's FAVORITE EMOTE GENERATOR
-##########################################################
-]]--
-local SpecialEmotes = {
-	"ROFL",
-	"CACKLE",
-	"GIGGLE",
-	"GRIN",
-	"SMIRK",
-	"MOON",
-	"LICK",
-	"YAWN",
-	"FLEX",
-	"TICKLE",
-	"TAUNT",
-	"SHOO",
-	"PRAY",
-	"SPIT",
-	"MOCK",
-	"GLOAT",
-	"PITY",
-	"VIOLIN",
-	"BYE",
-}
-
-local LowHealthPlayerEmotes = {
-	"ROFL",
-	"CACKLE",
-	"GIGGLE",
-	"GRIN",
-	"SMIRK",
-	"MOON",
-	"LICK",
-	"YAWN",
-	"BITE",
-	"NOSEPICK"
-}
-
-local LowHealthTargetEmotes = {
-	"ROFL",
-	"CACKLE",
-	"FLEX",
-	"TICKLE",
-	"TAUNT",
-	"SHOO",
-	"PRAY",
-	"SPIT",
-	"MOCK",
-	"GLOAT",
-	"PITY",
-	"VIOLIN",
-	"BYE",
-}
-
-local KOSEmotes = {
-	"THREATEN",
-	"CRACK",
-	"POINT",
-	"GRIN",
-	"SMIRK",
-	"TAUNT",
-	"CHICKEN"
-}
-
-local StealthEmotes = {
-	"CURIOUS",
-	"EYE",
-	"GASP",
-	"GAZE",
-	"MOCK",
-	"NOSEPICK",
-	"PEER",
-	"POINT",
-	"READY",
-	"STARE",
-	"TAP",
-}
-
-
-function SVUIEmote()
-	local index = random(1,#SpecialEmotes)
-	DoEmote(SpecialEmotes[index])
-end
-
-local function LowHealth_PlayerEmote()
-	local index = random(1,#LowHealthPlayerEmotes)
-	DoEmote(LowHealthPlayerEmotes[index])
-end
-
-local function LowHealth_TargetEmote()
-	local index = random(1,#LowHealthTargetEmotes)
-	DoEmote(LowHealthTargetEmotes[index])
-end
-
-local function KOS_Emote()
-	local index = random(1,#KOSEmotes)
-	DoEmote(KOSEmotes[index])
-end
-
-local function Stealth_Emote(name)
-	local index = random(1,#StealthEmotes)
-	DoEmote(StealthEmotes[index], name)
-end
---[[
-##########################################################
-CORE FUNCTIONS
-##########################################################
-]]--
-local EnemyCache, AlertedCache = {},{}
-
-local playerGUID = UnitGUID('player')
-local playerFaction = UnitFactionGroup("player")
-local classColor = RAID_CLASS_COLORS
-local classColors = SVUI_CLASS_COLORS[SV.class]
-local classR, classG, classB = classColors.r, classColors.g, classColors.b
-local classA = 0.35
-local fallbackColor = {r=1,g=1,b=1}
-local ACTIVE_ZONE = ""
---[[ ICONS ]]--
-local INFO_ICON = [[Interface\AddOns\SVUI_ArtOfWar\artwork\PVP-INFO]]
-local UTILITY_ICON = [[Interface\AddOns\SVUI_ArtOfWar\artwork\PVP-UTILITIES]]
-local RADIO_ICON = [[Interface\AddOns\SVUI_ArtOfWar\artwork\PVP-RADIO]]
-local SCANNER_ICON = [[Interface\AddOns\SVUI_ArtOfWar\artwork\PVP-SCANNER]]
-local ICON_FILE = [[Interface\AddOns\SVUI_ArtOfWar\artwork\DOCK-PVP]]
-local PVP_SAFE = [[Interface\AddOns\SVUI_ArtOfWar\artwork\PVP-SAFE]]
-local PVP_HELP = [[Interface\AddOns\SVUI_ArtOfWar\artwork\PVP-INCOMING]]
-local PVP_LOST = [[Interface\WorldMap\Skull_64Red]]
-local linkString = "|Hplayer:%s:1|h%s|h"
---[[ BG MAP DATA ]]--
-local PVP_NODES = {
-	[461] = { --Arathi Basin (5)
-		"Stables", "Lumber", "Blacksmith", "Mine", "Farm"
-	},
-	[935] = { --Deepwind Gorge (3)
-		"Center Mine", "North Mine", "South Mine"
-	},
-	[482] = { --Eye of the Storm (4)
-		"Fel Reaver", "Blood Elf", "Draenei", "Mage"
-	},
-	[736] = { --The Battle for Gilneas (3)
-		"LightHouse", "WaterWorks", "Mines"
-	},
-}
-
--- local PVP_POI = {
--- 	[401] = { --Alterac Valley (15)
--- 		"Stormpike Aid Station", "Dun Baldar North Bunker", "Dun Baldar South Bunker",
--- 		"Stormpike Graveyard", "Icewing Bunker", "Stonehearth Graveyard",
--- 		"Stonehearth Bunker", "Snowfall Graveyard", "Iceblood Tower",
--- 		"Iceblood Graveyard", "Tower Point", "Frostwolf Graveyard",
--- 		"West Frostwolf Tower", "East Frostwolf Tower", "Frostwolf Relief Hut"
--- 	},
--- 	[935] = { --Deepwind Gorge (2)
--- 		"Horde Cart", "Alliance Cart"
--- 	},
--- 	[482] = { --Eye of the Storm (1)
--- 		"Flag"
--- 	},
--- 	[860] = { --Silvershard Mines (1)
--- 		"Cart"
--- 	},
--- 	[512] = { --Strand of the Ancients (5)
--- 		"Green Emerald", "Blue Sapphire", "Purple Amethyst", "Red Sun", "Yellow Moon"
--- 	},
--- 	[540] = { --Isle of Conquest (5)
--- 		"Quarry", "Hangar", "Workshop", "Docks", "Refinery"
--- 	},
--- 	[856] = { --Temple of Kotmogu (4)
--- 		"Red Orb", "Blue Orb", "Orange Orb", "Purple Orb"
--- 	},
--- 	[626] = { --Twin Peaks (2)
--- 		"Horde Flag", "Alliance Flag"
--- 	},
--- 	[443] = { --Warsong Gulch (2)
--- 		"Horde Flag", "Alliance Flag"
--- 	},
--- }
-
-local Safe_OnEnter = function(self)
-	if InCombatLockdown() then return end
-	local zone = self.name
-	if(zone and zone ~= "") then
-		self:SetBackdropBorderColor(1,0.45,0)
-		GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-		GameTooltip:ClearLines()
-		GameTooltip:AddLine(("%s Is Safe!"):format(zone), 1, 1, 1)
-		GameTooltip:Show()
-	end
-end
-
-local Safe_OnLeave = function(self)
-	if InCombatLockdown() then return end
-	self:SetBackdropBorderColor(0,0,0)
-	if(GameTooltip:IsShown()) then GameTooltip:Hide() end
-end
-
-local Safe_OnClick = function(self)
-	local zone = self.name
-	if(zone and zone ~= "") then
-		SendChatMessage(("{rt4} %s Is Safe {rt4}"):format(zone), "INSTANCE_CHAT")
-	end
-end
-
-local Help_OnEnter = function(self)
-	if InCombatLockdown() then return end
-	local zone = self.name
-	if(zone and zone ~= "") then
-		self:SetBackdropBorderColor(1,0.45,0)
-		GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-		GameTooltip:ClearLines()
-		GameTooltip:AddLine(("%s Needs Help!"):format(zone), 1, 1, 1)
-		GameTooltip:Show()
-	end
-end
-
-local Help_OnLeave = function(self)
-	if InCombatLockdown() then return end
-	self:SetBackdropBorderColor(0,0,0)
-	if(GameTooltip:IsShown()) then GameTooltip:Hide() end
-end
-
-local Help_OnClick = function(self)
-	if(self.name and self.name ~= "") then
-		local msg = ("{rt8} Incoming %s {rt8}"):format(self.name)
-		SendChatMessage(msg, "INSTANCE_CHAT")
-	end
-end
-
-local function AddEnemyScan(guid, timestamp)
-	if(EnemyCache[guid]) then
-		return EnemyCache[guid]
-	end
-	local class, classToken, race, raceToken, sex, name, realm = GetPlayerInfoByGUID(guid)
-	local colors = classColor[classToken] or fallbackColor
-	EnemyCache[guid] = {
-        ["name"] = name,
-        ["realm"] = realm,
-        ["class"] = class,
-        ["race"] = race,
-        ["sex"] = sex,
-        ["colors"] = colors,
-        ["time"] = timestamp
-    }
-    PLUGIN:ScannerLog(EnemyCache[guid])
-    return EnemyCache[guid];
-end
-
-local function SaveEnemyScan(guid, timestamp)
-	local enemy = EnemyCache[guid]
-	if(not enemy) then enemy = AddEnemyScan(guid, timestamp) end
-	SVAOW_Cache[guid] = {
-        ["name"] = enemy.name,
-        ["realm"] = enemy.realm,
-        ["class"] = enemy.class,
-        ["race"] = enemy.race,
-        ["sex"] = enemy.sex,
-        ["colors"] = enemy.colors,
-        ["time"] = enemy.timestamp
-    }
-    local msg = ("Killed By: %s"):format(enemy.name);
-    HeadsUpAlarm(msg, CombatText_StandardScroll, enemy.colors.r, enemy.colors.g, enemy.colors.b, "sticky");
-    PLUGIN:UpdateSummary()
-end
-
-local function KilledEnemyHandler(guid)
-	local enemy = SVAOW_Cache[guid]
-	if(enemy) then
-		HeadsUpAlarm(("Killed Mortal Enemy: %s"):format(enemy.name), CombatText_StandardScroll, 0.2, 1, 0.1, "sticky");
-	end
-	enemy = EnemyCache[guid]
-	if(enemy) then
-		HeadsUpAlarm(("Killed Enemy: %s"):format(enemy.name), CombatText_StandardScroll, 0.1, 0.8, 0);
-	end
-end
-
-local function ClearCacheScans()
-	wipe(EnemyCache)
-	wipe(AlertedCache)
-	if(PLUGIN.LOG and PLUGIN.LOG.Output) then PLUGIN.LOG.Output:Clear() end
-end
-
-local function ClearSavedScans()
-	SVAOW_Cache = {}
-end
-
-local function EnemyAlarm(name, class, colors, kos)
-	if not name then return end
-	local inInstance, instanceType = IsInInstance()
-	if(instanceType ~= "pvp" and not AlertedCache[name]) then
-		local msg
-		if(kos) then
-			msg = ("Mortal Enemy Detected!: %s"):format(name);
-			HeadsUpAlarm(msg, CombatText_StandardScroll, 1, 0, 0)
-		elseif(class and colors) then
-			msg = ("%s Detected"):format(class);
-			HeadsUpAlarm(msg, CombatText_StandardScroll, colors.r, colors.g, colors.b)
-	    end
-	    AlertedCache[name] = true
-	end
-end
-
-local function StealthAlarm(spell, name)
-	local msg = ("%s Detected!"):format(spell);
-    HeadsUpAlarm(msg, CombatText_StandardScroll, 1, 0.5, 0);
-    print(("%s has %sed nearby!"):format(name, spell))
-    --Stealth_Emote(name)
-end
-
-function PLUGIN:UpdateSummary()
-	self.Summary:Clear();
-	local stored = SVAOW_Cache;
-	local amount = 0
-	for _,data in pairs(stored) do
-		if type(data) == "table" and data.name and data.class then
-			amount = amount + 1;
-		end
-	end
-	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8);
-end
-
-function PLUGIN:ResetLogs()
-	wipe(EnemyCache)
-	self.Title:Clear();
-	self.Summary:Clear();
-	self.LOG.Output:Clear();
-	self.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
-	self.Switch:Show()
-	local stored = SVAOW_Cache;
-	local amount = 0
-	for _,data in pairs(stored) do
-		if type(data) == "table" and data.name and data.class then
-			amount = amount + 1;
-		end
-	end
-	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8)
-	collectgarbage("collect")
-end
-
-function PLUGIN:PopulateKOS()
-	self.Title:Clear();
-	self.Summary:Clear();
-	self.LOG.Output:Clear();
-	self.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
-	self.Switch:Show()
-	local stored = SVAOW_Cache;
-	local amount = 0
-	for _,data in pairs(stored) do
-		if type(data) == "table" and data.name and data.class and data.race then
-			amount = amount + 1;
-			local nameLink = linkString:format(data.name, data.name)
-			local hex = ("%s - %s %s"):format(nameLink, data.race, data.class)
-			self.LOG.Output:AddMessage(hex, data.colors.r, data.colors.g, data.colors.b);
-		end
-	end
-	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8)
-end
-
-function PLUGIN:PopulateScans()
-	self.COMM.Unavailable:Hide()
-	self.Title:Clear();
-	self.Summary:Clear();
-	self.LOG.Output:Clear();
-	self.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
-	self.Switch:Show()
-	local stored = SVAOW_Cache;
-	local amount = 0
-	for _,data in pairs(stored) do
-		if type(data) == "table" and data.name and data.class then
-			amount = amount + 1;
-		end
-	end
-	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8);
-	for _,data in pairs(EnemyCache) do
-		if type(data) == "table" and data.name and data.class and data.race then
-			local nameLink = linkString:format(data.name, data.name)
-			local hex = ("%s - %s %s"):format(nameLink, data.race, data.class)
-			self.LOG.Output:AddMessage(hex, data.colors.r, data.colors.g, data.colors.b);
-		end
-	end
-end
-
-function PLUGIN:PauseScanner()
-	if(not self.InPVP) then
-		self.Title:Clear();
-		self.Summary:Clear();
-		self.LOG.Output:Clear();
-		self.Title:AddMessage("Scanning Paused", 1, 0.1, 0);
-		self.Summary:AddMessage(ACTIVE_ZONE, 1, 0.75, 0);
-		self.Switch:Hide()
-		self.LOG.Output:AddMessage(" ", 1, 1, 1);
-		self.LOG.Output:AddMessage(" ", 1, 1, 1);
-		self.LOG.Output:AddMessage("The Enenmy Scanner Will Resume", 0.8, 0.8, 0.8);
-		self.LOG.Output:AddMessage("When You Leave This BattleGround", 0.8, 0.8, 0.8);
-	else
-		self:PopulateScans()
-	end
-end
-
-function PLUGIN:ScannerLog(enemy)
-	if(not enemy.name or not enemy.race or not enemy.class) then return end
-    local nameLink = linkString:format(enemy.name, enemy.name)
-	local hex = ("%s - %s %s"):format(nameLink, enemy.race, enemy.class)
-	self.LOG.Output:AddMessage(hex, enemy.colors.r, enemy.colors.g, enemy.colors.b);
-	EnemyAlarm(enemy.name, enemy.class, enemy.colors)
-end
-
-function PLUGIN:UpdateCommunicator()
-	if(not self.InPVP) then
-		local mapID = GetCurrentMapAreaID()
-		if(mapID) then
-			local points = PVP_NODES[mapID]
-			if(points) then
-				self.COMM.Unavailable:Hide()
-				for i = 1, 5 do
-					local nodeName = ("SVUI_PVPNode%d"):format(i)
-					local node = _G[nodeName]
-					local safe = node.Safe
-					local help = node.Help
-					if(i <= #points) then
-						local name = points[i]
-						safe.name = name
-						help.name = name
-						node.Text:SetText(name)
-						node:Show()
-					else
-						safe.name = ""
-						help.name = ""
-						node.Text:SetText("")
-						node:Hide()
-					end
-				end
-				self.InPVP = true
-				self:UnregisterEvent("UPDATE_BATTLEFIELD_SCORE")
-				self.Scanning = false
-				self:PauseScanner()
-			end
-		end
-	elseif(self.InPVP) then
-		self.COMM.Unavailable:Show()
-		for i = 1, 5 do
-			local nodeName = ("SVUI_PVPNode%d"):format(i)
-			local node = _G[nodeName]
-			local safe = node.Safe
-			local help = node.Help
-			safe.name = ""
-			help.name = ""
-			node.Text:SetText("")
-			node:Hide()
-		end
-		self.InPVP = nil
-		self:RegisterEvent("UPDATE_BATTLEFIELD_SCORE")
-		self.Scanning = true
-
-		self:PopulateScans()
-	end
-end
-
-function PLUGIN:UpdateZoneStatus()
-	local zoneText = GetRealZoneText() or GetZoneText()
-	if(not zoneText or zoneText == "") then
-		SV.Timers:ExecuteTimer(PLUGIN.UpdateZoneStatus, 5)
-		return
-	end
-	if(zoneText ~= ACTIVE_ZONE) then
-		ClearCacheScans()
-		ACTIVE_ZONE = zoneText
-		PLUGIN.Title:Clear();
-		PLUGIN.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
-	end
-	local zonePvP = GetZonePVPInfo()
-	if(zonePvP == "sanctuary" or zoneText == "") then
-		PLUGIN.Scanning = false
-	else
-		PLUGIN.Scanning = true
-		local inInstance, instanceType = IsInInstance()
-		if(inInstance and ((instanceType == "party") or (instanceType == "raid"))) then
-			PLUGIN.Scanning = false
-		elseif (not zonePvP or (zonePvP == "friendly") or (not UnitIsPVP("player"))) then
-			PLUGIN.Scanning = false
-		elseif(instanceType == "pvp") then
-			PLUGIN:PauseScanner()
-			PLUGIN.Scanning = false
-			if(not PLUGIN.InPVP) then
-				PLUGIN:UpdateCommunicator()
-			end
-		end
-	end
-end
-
-local function ParseIncomingLog(timestamp, event, eGuid, eName, pGuid)
-	local cached = SVAOW_Cache[eGuid]
-	local kos, needsUpdate = false, false
-
-	if(cached) then
-		kos = true
-	else
-		cached = EnemyCache[eGuid]
-	end
-
-	if(cached and cached.time) then
-		needsUpdate = (cached.time + 60) < timestamp;
-	else
-		cached = AddEnemyScan(eGuid, timestamp)
-		needsUpdate = true
-	end
-
-	if(cached) then
-		if(needsUpdate) then
-			EnemyAlarm(eName, cached.class, cached.colors, kos)
-			cached.time = timeStamp
-		end
-
-		if(pGuid == playerGUID and not AlertedCache[eName]) then
-			AlertedCache[eName] = true
-			local incoming = ("%s Attacking You!"):format(eName);
-			HeadsUpAlarm(incoming, CombatText_StandardScroll, 1, 0.05, 0, "crit")
-		end
-	end
-end
-
-local function GetSourceType(guid)
-	if not guid then return end
-	local subStr, binStr, bitVal, srcType
-	subStr  = guid:sub(3, 5)
-	binStr  = ("0x%s"):format(subStr)
-	bitVal  = tonumber(binStr)
-	if(not bitVal) then return end
-	srcType = band(bitVal, 0x00F)
-	return srcType
-end
-
-function PLUGIN:COMBAT_LOG_EVENT_UNFILTERED(event, timestamp, event, _, srcGUID, srcName, srcFlags, sourceRaidFlags, dstGUID, dstName, dstFlags, destRaidFlags, _, spellName)
-	if not srcFlags then return end
-	local flagParse = band(srcFlags, COMBATLOG_OBJECT_REACTION_HOSTILE)
-	local flagged = flagParse == COMBATLOG_OBJECT_REACTION_HOSTILE
-
-	if(flagged) then
-		if(srcGUID and srcName) then
-			local isHostile = CombatLog_Object_IsA(srcFlags, COMBATLOG_FILTER_HOSTILE_PLAYERS)
-			local srcType = GetSourceType(srcGUID)
-			if(srcType and (srcType == 0 or srcType == 8) and isHostile) then
-				if(event == "SPELL_AURA_APPLIED" and (spellName == L["Stealth"] or spellName == L["Prowl"])) then
-					StealthAlarm(spellName, srcName)
-				end
-				if(dstGUID == playerGUID) then
-					PLUGIN.HitBy = srcGUID
-				end
-				if(not PLUGIN.Scanning) then return end
-				ParseIncomingLog(timestamp, event, srcGUID, srcName, dstGUID)
-			end
-		end
-
-		if(PLUGIN.Scanning and dstGUID and dstName) then
-			local isHostile = CombatLog_Object_IsA(dstFlags, COMBATLOG_FILTER_HOSTILE_PLAYERS)
-			local srcType = GetSourceType(dstGUID)
-			if(srcType and (srcType == 0 or srcType == 8) and isHostile) then
-				ParseIncomingLog(timestamp, event, dstGUID, dstName, srcGUID)
-			end
-		end
-	end
-
-	if(PLUGIN.Scanning and event == "PARTY_KILL") then
-		if(srcGUID == playerGUID and dstName) then
-			KilledEnemyHandler(dstGUID)
-		end
-	end
-end
-
-function PLUGIN:EventDistributor(event, ...)
-	local inInstance, instanceType = IsInInstance()
-
-	if(event == "PLAYER_REGEN_ENABLED") then
-		self.HitBy = false;
-		if(instanceType == "pvp") then self.Scanning = false end
-	else
-		if(instanceType ~= "pvp") then
-			if(event == "PLAYER_TARGET_CHANGED") then
-				if(UnitIsPlayer("target") and UnitIsEnemy("target", "player")) then
-					local guid = UnitGUID("target")
-					if(not EnemyCache[guid]) then
-						local timestamp = time()
-						AddEnemyScan(guid, timestamp)
-					end
-					if(SVAOW_Cache[guid]) then
-						HeadsUpAlarm("Kill On Sight!", CombatText_StandardScroll, 1, 0, 0, "crit")
-						--KOS_Emote()
-					end
-				end
-			elseif(event == "PLAYER_DEAD") then
-				local guid = self.HitBy
-				if(guid and guid ~= "") then
-					local stamp = time()
-					SaveEnemyScan(guid, stamp)
-				end
-			end
-		else
-			self.Scanning = false
-		end
-	end
-end
-
-local onMouseWheel = function(self, delta)
-	if (delta > 0) then
-		self:ScrollUp()
-	elseif (delta < 0) then
-		self:ScrollDown()
-	end
-end
-
-local function MakeLogWindow()
-	local frame = CreateFrame("Frame", nil, UIParent)
-
-	frame:SetFrameStrata("MEDIUM")
-	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
-	frame:SetPoint("BOTTOMRIGHT", SVUI_ArtOfWarDock, "BOTTOMRIGHT",0,0)
-	frame:SetParent(SVUI_ArtOfWarDock)
-
-	local output = CreateFrame("ScrollingMessageFrame", nil, frame)
-	output:SetSpacing(4)
-	output:SetClampedToScreen(false)
-	output:SetFrameStrata("MEDIUM")
-	output:SetAllPoints(frame)
-	output:SetFont(SV.Media.font.system, 11, "OUTLINE")
-	output:SetJustifyH("CENTER")
-	output:SetJustifyV("MIDDLE")
-	output:SetShadowColor(0, 0, 0, 0)
-	output:SetMaxLines(120)
-	output:EnableMouseWheel(true)
-	output:SetHyperlinksEnabled(true)
-	output:SetScript("OnMouseWheel", onMouseWheel)
-	output:SetFading(false)
-	output:SetInsertMode('TOP')
-
-	output:SetScript("OnHyperlinkEnter", function(self, linkData, link, button)
-		local t = link:explode(":")
-		local name = t[2] or ""
-	    SVUI_TargetScanButton:SetAttribute("macrotext", ("/tar %s"):format(name))
-	    SVUI_TargetScanButton:EnableMouse(true)
-	end)
-
-	frame.Output = output
-
-	PLUGIN.LOG = frame
-
-	_G["SVUI_ArtOfWarTool1"].Window = PLUGIN.LOG
-end
-
-local function MakeCommWindow()
-
-	local frame = CreateFrame("Frame", nil, UIParent)
-
-	frame:SetFrameStrata("MEDIUM")
-	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
-	frame:SetPoint("BOTTOMRIGHT", SVUI_ArtOfWarDock, "BOTTOMRIGHT",0,0)
-	frame:SetParent(SVUI_ArtOfWarDock)
-
-	local fallback = CreateFrame("Frame", nil, frame)
-	fallback:SetAllPoints(frame)
-
-	local fbText = fallback:CreateFontString(nil, "OVERLAY")
-	fbText:SetAllPoints(fallback)
-	fbText:SetFont(SV.Media.font.roboto, 12, "NONE")
-	fbText:SetText("Nothing To Broadcast Right Now")
-
-	frame.Unavailable = fallback
-
-	local DOCK_WIDTH = frame:GetWidth();
-	local DOCK_HEIGHT = frame:GetHeight();
-	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;
-	local sectionWidth = (DOCK_WIDTH / 6) - 2
-	local sectionHeight = (DOCK_HEIGHT / 5) - 2
-	local iconSize = sectionHeight * 0.5
-
-	for i = 1, 5 do
-		local yOffset = (sectionHeight * (i - 1)) + 2
-
-		local poiName = ("SVUI_PVPNode%d"):format(i)
-		local poi = CreateFrame("Frame", poiName, frame)
-		poi:SetSize((DOCK_WIDTH - 2), sectionHeight)
-		poi:SetPoint("TOP", frame, "TOP", 0, -yOffset)
-		poi:SetPanelTemplate("Transparent")
-
-		local safe = CreateFrame("Button", nil, poi)
-		safe:SetSize(sectionWidth, sectionHeight)
-		safe:SetPoint("RIGHT", poi, "RIGHT", -2, 0)
-		safe:SetButtonTemplate()
-		safe:SetPanelColor("green")
-		local sicon = safe:CreateTexture(nil, "OVERLAY")
-		sicon:SetPoint("CENTER", safe, "CENTER", 0, 0)
-		sicon:SetSize(iconSize,iconSize)
-		sicon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		sicon:SetTexture(PVP_SAFE)
-		safe:SetScript("OnEnter", Safe_OnEnter)
-		safe:SetScript("OnLeave", Safe_OnLeave)
-		safe:SetScript("OnClick", Safe_OnClick)
-
-		poi.Safe = safe
-
-		local help = CreateFrame("Button", nil, poi)
-		help:SetSize(sectionWidth, sectionHeight)
-		help:SetPoint("RIGHT", safe, "LEFT", -2, 0)
-		help:SetButtonTemplate()
-		help:SetPanelColor("red")
-		local hicon = help:CreateTexture(nil, "OVERLAY")
-		hicon:SetPoint("CENTER", help, "CENTER", 0, 0)
-		hicon:SetSize(iconSize,iconSize)
-		hicon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		hicon:SetTexture(PVP_HELP)
-		help:SetScript("OnEnter", Help_OnEnter)
-		help:SetScript("OnLeave", Help_OnLeave)
-		help:SetScript("OnClick", Help_OnClick)
-
-		poi.Help = help
-
-		poi.Text = poi:CreateFontString(nil,"OVERLAY")
-		poi.Text:SetFont(SV.Media.font.roboto, 12, "NONE")
-		poi.Text:SetPoint("TOPLEFT", poi, "TOPLEFT", 2, 0)
-		poi.Text:SetPoint("BOTTOMRIGHT", help, "BOTTOMLEFT", -2, 0)
-		poi.Text:SetJustifyH("CENTER")
-		poi.Text:SetText("")
-		poi:Hide()
-	end
-
-	PLUGIN.COMM = frame
-
-	_G["SVUI_ArtOfWarTool2"].Window = PLUGIN.COMM
-
-	PLUGIN.COMM:Hide()
-end
-
-local function MakeUtilityWindow()
-	local frame = CreateFrame("Frame", nil, UIParent)
-
-	frame:SetFrameStrata("MEDIUM")
-	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
-	frame:SetPoint("BOTTOMRIGHT", SVUI_ArtOfWarDock, "BOTTOMRIGHT",0,0)
-	frame:SetParent(SVUI_ArtOfWarDock)
-
-	local fbText = frame:CreateFontString(nil, "OVERLAY")
-	fbText:SetAllPoints(frame)
-	fbText:SetFont(SV.Media.font.roboto, 12, "NONE")
-	fbText:SetText("Utilities Coming Soon....")
-
-	PLUGIN.TOOL = frame
-
-	_G["SVUI_ArtOfWarTool3"].Window = PLUGIN.TOOL
-
-	PLUGIN.TOOL:Hide()
-end
-
-local function MakeInfoWindow()
-	local frame = CreateFrame("Frame", nil, UIParent)
-
-	frame:SetFrameStrata("MEDIUM")
-	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
-	frame:SetPoint("BOTTOMRIGHT", SVUI_ArtOfWarDock, "BOTTOMRIGHT",0,0)
-	frame:SetParent(SVUI_ArtOfWarDock)
-
-	local DATA_WIDTH = (frame:GetWidth() * 0.5) - 2;
-	local DATA_HEIGHT = frame:GetHeight() - 2;
-
-	local leftColumn = CreateFrame("Frame", "SVUI_ArtOfWarInfoLeft", frame)
-	leftColumn:Size(DATA_WIDTH, DATA_HEIGHT)
-	leftColumn:Point("LEFT", frame, "LEFT", 0, 0)
-	leftColumn.lockedOpen = true
-	SV.SVStats:NewAnchor(leftColumn, 3, "ANCHOR_CURSOR", nil, "Transparent", true)
-	leftColumn:SetFrameLevel(0)
-
-	local rightColumn = CreateFrame("Frame", "SVUI_ArtOfWarInfoRight", frame)
-	rightColumn:Size(DATA_WIDTH, DATA_HEIGHT)
-	rightColumn:Point("LEFT", leftColumn, "RIGHT", 2, 0)
-	rightColumn.lockedOpen = true
-	SV.SVStats:NewAnchor(rightColumn, 3, "ANCHOR_CURSOR", nil, "Transparent", true)
-	rightColumn:SetFrameLevel(0)
-
-	PLUGIN.INFO = frame
-
-	_G["SVUI_ArtOfWarTool4"].Window = PLUGIN.INFO
-
-	SV.SVStats.BGPanels = {
-		["SVUI_ArtOfWarInfoLeft"] = {top = "Honor", middle = "Kills", bottom = "Assists"},
-		["SVUI_ArtOfWarInfoRight"] = {top = "Damage", middle = "Healing", bottom = "Deaths"}
-	}
-
-	SV.SVStats:Generate()
-
-	PLUGIN.INFO:Hide()
-end
---[[
-##########################################################
-DOCK ELEMENT HANDLERS
-##########################################################
-]]--
-local ArtOfWarAlert_OnEnter = function(self)
-	if InCombatLockdown() then return; end
-	self:SetBackdropColor(0.9, 0.15, 0.1)
-	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-	GameTooltip:ClearLines()
-	GameTooltip:AddLine(self.TText, 1, 1, 0)
-	GameTooltip:Show()
-end
-
-local ArtOfWarAlert_OnLeave = function(self)
-	GameTooltip:Hide()
-	if InCombatLockdown() then return end
-	self:SetBackdropColor(0.25, 0.52, 0.1)
-end
-
-local ArtOfWarAlert_OnHide = function()
-	if InCombatLockdown() then
-		SV:AddonMessage(ERR_NOT_IN_COMBAT);
-		return;
-	end
-	SuperDockAlertRight:Deactivate()
-end
-
-local ArtOfWarAlert_OnShow = function(self)
-	if InCombatLockdown() then
-		SV:AddonMessage(ERR_NOT_IN_COMBAT);
-		self:Hide()
-		return;
-	end
-	SV:SecureFadeIn(self, 0.3, 0, 1)
-	SuperDockAlertRight:Activate(self)
-end
-
-local ArtOfWarAlert_OnMouseDown = function(self)
-	-- DO STUFF
-	SV:SecureFadeOut(self, 0.5, 1, 0, true)
-end
-
-local ArtOfWarTool_OnEnter = function(self)
-	if InCombatLockdown() then return; end
-	self.icon:SetGradient(unpack(SV.Media.gradient.yellow))
-	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-	GameTooltip:ClearLines()
-	GameTooltip:AddLine(self.TText, 1, 1, 1)
-	GameTooltip:Show()
-end
-
-local ArtOfWarTool_OnLeave = function(self)
-	if InCombatLockdown() then return; end
-	self.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	GameTooltip:Hide()
-end
-
-local ArtOfWarTool_OnMouseDown = function(self)
-	SV:SecureFadeOut(PLUGIN.LOG, 0.5, 1, 0, true)
-	SV:SecureFadeOut(PLUGIN.COMM, 0.5, 1, 0, true)
-	SV:SecureFadeOut(PLUGIN.TOOL, 0.5, 1, 0, true)
-	SV:SecureFadeOut(PLUGIN.INFO, 0.5, 1, 0, true)
-	SV:SecureFadeIn(self.Window, 0.3, 0, 1)
-	PLUGIN.Title:Clear();
-	PLUGIN.Title:AddMessage(self.TTitle, 1, 1, 0);
-end
-
-local Scanner_OnMouseDown = function(self)
-	SV:SecureFadeOut(PLUGIN.LOG, 0.5, 1, 0, true)
-	SV:SecureFadeOut(PLUGIN.COMM, 0.5, 1, 0, true)
-	SV:SecureFadeOut(PLUGIN.TOOL, 0.5, 1, 0, true)
-	SV:SecureFadeOut(PLUGIN.INFO, 0.5, 1, 0, true)
-	SV:SecureFadeIn(self.Window, 0.3, 0, 1)
-	PLUGIN:PopulateScans()
-end
-
-local Switch_OnEnter = function(self)
-	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-	GameTooltip:ClearLines()
-	if(self.ShowingKOS) then
-		GameTooltip:AddDoubleLine("Click", "Show Scan List", 0.1, 1, 0.2, 1, 1, 1)
-	else
-		GameTooltip:AddDoubleLine("Click", 'Show "Kill On Sight" List', 0.1, 1, 0.2, 1, 1, 1)
-	end
-	GameTooltip:AddDoubleLine("[SHIFT] Click", "Clear All Scans", 0.1, 1, 0.2, 1, 1, 1)
-	GameTooltip:AddDoubleLine("[CTRL] Click", 'Clear All "Kill On Sight"', 0.1, 1, 0.2, 1, 1, 1)
-	GameTooltip:Show()
-end
-
-local Switch_OnLeave = function(self)
-	GameTooltip:Hide()
-end
-
-local Switch_OnClick = function(self, button)
-	Switch_OnLeave(self)
-	if(IsControlKeyDown()) then
-		ClearSavedScans()
-		PLUGIN:ResetLogs()
-	elseif(IsShiftKeyDown()) then
-		ClearCacheScans()
-	else
-		if(self.ShowingKOS) then
-			PLUGIN:PopulateScans()
-			self.ShowingKOS = false
-		else
-			PLUGIN:PopulateKOS()
-			self.ShowingKOS = true
-		end
-	end
-	Switch_OnEnter(self)
-end
---[[
-##########################################################
-BUILD FUNCTION
-##########################################################
-]]--
-function PLUGIN:Load()
-	if(not SV.db[SCHEMA].enable) then return end
-
-	local ALERT_HEIGHT = 60;
-	local DOCK_WIDTH = SuperDockWindowRight:GetWidth();
-	local DOCK_HEIGHT = SuperDockWindowRight:GetHeight();
-	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;
-
-	self.db = SV.db[SCHEMA]
-
-	if(not SVAOW_Data) then SVAOW_Data = {} end
-	if(not SVAOW_Cache) then SVAOW_Cache = {} end
-
-	self.HitBy = false;
-	self.Scanning = false;
-	self.InPVP = false
-
-	local holder = CreateFrame("Frame", "SVUI_ArtOfWarDock", SuperDockWindowRight)
-	holder:SetFrameStrata("BACKGROUND")
-	holder:SetWidth(DOCK_WIDTH - 4);
-	holder:SetHeight(DOCK_HEIGHT - 4);
-	holder:SetPoint("CENTER",SuperDockWindowRight,"CENTER",0,0);
-
-	local toolBar = CreateFrame("Frame", "SVUI_ArtOfWarToolBar", holder)
-	toolBar:SetWidth(BUTTON_SIZE + 4);
-	toolBar:SetHeight((BUTTON_SIZE + 4) * 4);
-	toolBar:SetPoint("BOTTOMLEFT",holder,"BOTTOMLEFT",0,0);
-
-	local tbDivider = toolBar:CreateTexture(nil,"OVERLAY")
-    tbDivider:SetTexture(0,0,0,0.5)
-    tbDivider:SetPoint("TOPRIGHT")
-    tbDivider:SetPoint("BOTTOMRIGHT")
-    tbDivider:SetWidth(1)
-
-	local tool4 = CreateFrame("Frame", "SVUI_ArtOfWarTool4", toolBar)
-	tool4:SetPoint("BOTTOM",toolBar,"BOTTOM",0,0)
-	tool4:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	tool4.icon = tool4:CreateTexture(nil, 'OVERLAY')
-	tool4.icon:SetTexture(INFO_ICON)
-	tool4.icon:FillInner(tool4)
-	tool4.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	tool4.TText = "Stats"
-	tool4.TTitle = "Statistics and Information"
-	tool4:SetScript('OnEnter', ArtOfWarTool_OnEnter)
-	tool4:SetScript('OnLeave', ArtOfWarTool_OnLeave)
-	tool4:SetScript('OnMouseDown', ArtOfWarTool_OnMouseDown)
-
-	local tool3 = CreateFrame("Frame", "SVUI_ArtOfWarTool3", toolBar)
-	tool3:SetPoint("BOTTOM",tool4,"TOP",0,2)
-	tool3:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	tool3.icon = tool3:CreateTexture(nil, 'OVERLAY')
-	tool3.icon:SetTexture(UTILITY_ICON)
-	tool3.icon:FillInner(tool3)
-	tool3.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	tool3.TText = "Tools"
-	tool3.TTitle = "Tools and Utilities"
-	tool3:SetScript('OnEnter', ArtOfWarTool_OnEnter)
-	tool3:SetScript('OnLeave', ArtOfWarTool_OnLeave)
-	tool3:SetScript('OnMouseDown', ArtOfWarTool_OnMouseDown)
-
-	local tool2 = CreateFrame("Frame", "SVUI_ArtOfWarTool2", toolBar)
-	tool2:SetPoint("BOTTOM",tool3,"TOP",0,2)
-	tool2:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	tool2.icon = tool2:CreateTexture(nil, 'OVERLAY')
-	tool2.icon:SetTexture(RADIO_ICON)
-	tool2.icon:FillInner(tool2)
-	tool2.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	tool2.TText = "Radio"
-	tool2.TTitle = "Radio Communicator"
-	tool2:SetScript('OnEnter', ArtOfWarTool_OnEnter)
-	tool2:SetScript('OnLeave', ArtOfWarTool_OnLeave)
-	tool2:SetScript('OnMouseDown', ArtOfWarTool_OnMouseDown)
-
-	local tool1 = CreateFrame("Frame", "SVUI_ArtOfWarTool1", toolBar)
-	tool1:SetPoint("BOTTOM",tool2,"TOP",0,2)
-	tool1:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	tool1.icon = tool1:CreateTexture(nil, 'OVERLAY')
-	tool1.icon:SetTexture(SCANNER_ICON)
-	tool1.icon:FillInner(tool1)
-	tool1.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	tool1.TText = "Scanner"
-	tool1.TTitle = "Enemy Scanner"
-	tool1:SetScript('OnEnter', ArtOfWarTool_OnEnter)
-	tool1:SetScript('OnLeave', ArtOfWarTool_OnLeave)
-	tool1:SetScript('OnMouseDown', Scanner_OnMouseDown)
-
-	local title = CreateFrame("ScrollingMessageFrame", nil, holder)
-	title:SetSpacing(4)
-	title:SetClampedToScreen(false)
-	title:SetFrameStrata("MEDIUM")
-	title:SetPoint("TOPLEFT", toolBar, "TOPRIGHT",0,0)
-	title:SetPoint("BOTTOMRIGHT", holder, "TOPRIGHT",0,-16)
-	title:SetFontTemplate(SV.Media.font.names, 16, "OUTLINE", "CENTER", "MIDDLE")
-	title:SetMaxLines(1)
-	title:EnableMouseWheel(false)
-	title:SetFading(false)
-	title:SetInsertMode('TOP')
-
-	local divider1 = title:CreateTexture(nil,"OVERLAY")
-    divider1:SetTexture(0,0,0,0.5)
-    divider1:SetPoint("BOTTOMLEFT")
-    divider1:SetPoint("BOTTOMRIGHT")
-    divider1:SetHeight(1)
-
-    self.Title = title
-
-    local listbutton = CreateFrame("Button", nil, holder)
-    listbutton:SetPoint("TOPLEFT", title, "BOTTOMLEFT",0,0)
-	listbutton:SetPoint("BOTTOMRIGHT", title, "BOTTOMRIGHT",0,-14)
-	listbutton:SetButtonTemplate(true)
-	listbutton.ShowingKOS = false
-	listbutton:SetScript("OnEnter", Switch_OnEnter)
-	listbutton:SetScript("OnLeave", Switch_OnLeave)
-	listbutton:SetScript("OnClick", Switch_OnClick)
-
-	self.Switch = listbutton
-
-    local summary = CreateFrame("ScrollingMessageFrame", nil, holder)
-	summary:SetSpacing(4)
-	summary:SetClampedToScreen(false)
-	summary:SetFrameStrata("MEDIUM")
-	summary:SetPoint("TOPLEFT", title, "BOTTOMLEFT",0,0)
-	summary:SetPoint("BOTTOMRIGHT", title, "BOTTOMRIGHT",0,-14)
-	summary:SetFontTemplate(SV.Media.font.system, 12, "OUTLINE", "CENTER", "MIDDLE")
-	summary:SetMaxLines(1)
-	summary:EnableMouse(false)
-	summary:SetFading(false)
-	summary:SetInsertMode('TOP')
-
-	self.Summary = summary
-
-	local divider2 = summary:CreateTexture(nil,"OVERLAY")
-    divider2:SetTexture(0,0,0,0.5)
-    divider2:SetPoint("BOTTOMLEFT")
-    divider2:SetPoint("BOTTOMRIGHT")
-    divider2:SetHeight(1)
-
-	MakeLogWindow()
-	MakeCommWindow()
-	MakeUtilityWindow()
-	MakeInfoWindow()
-
-	SV:RegisterDocklet("SVUI_ArtOfWarDock", "Art of War", ICON_FILE)
-
-	holder:Hide()
-
-	self:ResetLogs()
-
-	local targetButton = CreateFrame("Button", "SVUI_TargetScanButton", UIParent, "SecureActionButtonTemplate")
-	targetButton:SetAllPoints(self.LOG)
-	targetButton:SetFrameLevel(99)
-	targetButton:RegisterForClicks("AnyUp")
-	targetButton:SetAttribute("type1", "macro")
-	targetButton:SetAttribute("macrotext", "/tar")
-	targetButton:EnableMouse(false)
-	targetButton:HookScript("OnClick", function(this) this:EnableMouse(false) end)
-
-	self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
-
-	self:RegisterEvent("PLAYER_TARGET_CHANGED", "EventDistributor")
-	self:RegisterEvent("PLAYER_REGEN_ENABLED", "EventDistributor")
-	self:RegisterEvent("PLAYER_DEAD", "EventDistributor")
-
-	self:RegisterEvent("ZONE_CHANGED", "UpdateZoneStatus")
-	self:RegisterEvent("ZONE_CHANGED_NEW_AREA", "UpdateZoneStatus")
-	self:RegisterEvent("UNIT_FACTION", "UpdateZoneStatus")
-
-	self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateCommunicator")
-	self:RegisterEvent("UPDATE_BATTLEFIELD_SCORE", "UpdateCommunicator")
-
-	--SVUI_Player.Health.LowAlertFunc = LowHealth_PlayerEmote
-	--SVUI_Target.Health.LowAlertFunc = LowHealth_TargetEmote
-end
-
-CONFIGS[SCHEMA] = {
-	["enable"] = true
-}
-
-Registry:NewPlugin(PLUGIN)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.toc b/Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.toc
deleted file mode 100644
index 201a470..0000000
--- a/Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.toc
+++ /dev/null
@@ -1,13 +0,0 @@
-## Interface: 60000
-## Author: Munglunch
-## Version: 4.4
-## Title: |cffFF9900SVUI |r|cffFFEF00Art of War|r
-## Notes: Supervillain UI [|cff9911FFPvP Tools|r].
-## SavedVariables: SVAOW_Data
-## SavedVariablesPerCharacter: SVAOW_Cache
-## RequiredDeps: SVUI
-## LoadOnDemand: 1
-## X-SVUI-Header: Art of War
-## X-SVUI-Schema: SVAOW
-
-SVUI_ArtOfWar.lua
diff --git a/Interface/AddOns/SVUI_ArtOfWar/artwork/DOCK-PVP.blp b/Interface/AddOns/SVUI_ArtOfWar/artwork/DOCK-PVP.blp
deleted file mode 100644
index a51de9a..0000000
Binary files a/Interface/AddOns/SVUI_ArtOfWar/artwork/DOCK-PVP.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INCOMING.blp b/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INCOMING.blp
deleted file mode 100644
index f72c045..0000000
Binary files a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INCOMING.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INFO.blp b/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INFO.blp
deleted file mode 100644
index 112e648..0000000
Binary files a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INFO.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-RADIO.blp b/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-RADIO.blp
deleted file mode 100644
index 8d38764..0000000
Binary files a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-RADIO.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SAFE.blp b/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SAFE.blp
deleted file mode 100644
index 4c84f3e..0000000
Binary files a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SAFE.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SCANNER.blp b/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SCANNER.blp
deleted file mode 100644
index 6bcd5d3..0000000
Binary files a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SCANNER.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-UTILITIES.blp b/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-UTILITIES.blp
deleted file mode 100644
index eef0a56..0000000
Binary files a/Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-UTILITIES.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_ChatOMatic/License.txt b/Interface/AddOns/SVUI_ChatOMatic/License.txt
new file mode 100644
index 0000000..b9a4d8e
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/License.txt
@@ -0,0 +1,34 @@
+###############################################################################
+#_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+# ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+#  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+#   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+#    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+#     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+#      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+#       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+#        ___\///////////___________\///___________\/////////_____\///////////_#
+###############################################################################
+# S U P E R - V I L L A I N - U I   By: Munglunch                             #
+###############################################################################
+
+SVUI_ChatOMatic License Copyright 2014 http://wowinterface.com
+
+The contents of this addon, excluding third-party resources, are
+copyrighted to their authors with all rights reserved.
+
+Authors of this addon hereby grant you the following rights:
+
+1. 	You may NOT make any modification inside this addon. If you want
+	to create your own edited version, please create it from outside.
+
+2. 	Do not modify the name of this addon, including the addon folders.
+
+3. 	This copyright notice shall be included in all copies or substantial
+	portions of the Software.
+
+All rights not explicitly addressed in this license are reserved by
+the copyright holders.
+
+You can write Munglunch at Wowinterface.com for reporting abuse / bugs,
+or regarding grants allowed for this license.
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/Loader.lua b/Interface/AddOns/SVUI_ChatOMatic/Loader.lua
new file mode 100644
index 0000000..fe4dfea
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/Loader.lua
@@ -0,0 +1,75 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+local AddonName, AddonObject = ...
+
+assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")
+
+local PLUGIN = LibSuperVillain:NewPlugin(AddonName, AddonObject)
+
+local Schema = PLUGIN.Schema;
+local SV = _G["SVUI"];
+local L = SV.L
+--[[
+##########################################################
+CONFIG DATA
+##########################################################
+]]--
+SV.configs[Schema] = {
+  	["enable"] = true,
+    ["saveChats"] = true,
+    ["service"] = true,
+  	["autoAnswer"] = false,
+  	["prefix"] = true
+}
+--[[
+##########################################################
+CONFIG OPTIONS
+##########################################################
+]]--
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["saveChats"] = {
+    order = 2,
+    name = "Save Chat History",
+    type = "toggle",
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) SV.db[Schema][key[#key]] = value end
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["service"] = {
+    order = 3,
+    name = "Answering Service",
+    type = "toggle",
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) SV.db[Schema][key[#key]] = value end
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["autoAnswer"] = {
+    order = 4,
+    name = "Auto Answer",
+    type = "toggle",
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) SV.db[Schema][key[#key]] = value end
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["prefix"] = {
+    order = 5,
+    name = "Prefix Messages",
+    type = "toggle",
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) SV.db[Schema][key[#key]] = value end
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua
new file mode 100644
index 0000000..78a9038
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.lua
@@ -0,0 +1,73 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local PLUGIN = select(2, ...)
+local Schema = PLUGIN.Schema;
+local SV = _G["SVUI"]
+local L = SV.L
+--[[
+##########################################################
+EVENTS
+##########################################################
+]]--
+function PLUGIN:CHAT_MSG_WHISPER(event, ...)
+	if(SV.db.SVChat.enable and SV.db[Schema].saveChats) then
+		self:SAVE_CHAT_HISTORY(event, ...)
+	end
+	if(SV.db[Schema].service) then
+		self:AUTO_MSG_WHISPER(event, ...)
+	end
+end
+
+function PLUGIN:CHAT_MSG_BN_WHISPER(event, ...)
+	if(SV.db.SVChat.enable and SV.db[Schema].saveChats) then
+		self:SAVE_CHAT_HISTORY(event, ...)
+	end
+	if(SV.db[Schema].service) then
+		self:AUTO_MSG_BN_WHISPER(event, ...)
+	end
+end
+--[[
+##########################################################
+LOAD AND CONSTRUCT
+##########################################################
+]]--
+function PLUGIN:Load()
+	if not ChatOMatic_Cache then ChatOMatic_Cache = {} end
+	if(not SV.db[Schema].enable) then return end
+
+	if(SV.db.SVChat.enable and SV.db[Schema].saveChats) then
+		self:EnableChatHistory()
+	end
+
+	if(SV.db[Schema].service) then
+		self:EnableAnsweringService()
+	end
+
+	self:RegisterEvent("CHAT_MSG_WHISPER")
+	self:RegisterEvent("CHAT_MSG_BN_WHISPER")
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc
new file mode 100644
index 0000000..b061970
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.toc
@@ -0,0 +1,14 @@
+## Interface: 60000
+## Author: Munglunch
+## Version: 4.8
+## Title: |cffFF9900SVUI |r|cffFFEF00Chat-O-Matic|r
+## Notes: Supervillain UI [|cff9911FFVarious Chat Gadgets|r]
+## SavedVariables: ChatOMatic_Data
+## SavedVariablesPerCharacter: ChatOMatic_Cache
+## RequiredDeps: SVUI
+## LoadOnDemand: 1
+## X-Email: munglunch@gmail.com
+## X-SVUI-Header: Chat-O-Matic
+## X-SVUI-Schema: ChatOMatic
+
+SVUI_ChatOMatic.xml
diff --git a/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.xml b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.xml
new file mode 100644
index 0000000..18a0238
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/SVUI_ChatOMatic.xml
@@ -0,0 +1,5 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='Loader.lua'/>
+	<Script file='SVUI_ChatOMatic.lua'/>
+	<Include file='components\_load.xml'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/artwork/DOCK-CALL.blp b/Interface/AddOns/SVUI_ChatOMatic/artwork/DOCK-CALL.blp
new file mode 100644
index 0000000..de23af0
Binary files /dev/null and b/Interface/AddOns/SVUI_ChatOMatic/artwork/DOCK-CALL.blp differ
diff --git a/Interface/AddOns/SVUI_ChatOMatic/components/_load.xml b/Interface/AddOns/SVUI_ChatOMatic/components/_load.xml
new file mode 100644
index 0000000..8889662
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/components/_load.xml
@@ -0,0 +1,4 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file="answering_service.lua"/>
+	<Script file="chat_history.lua"/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
new file mode 100644
index 0000000..3830b53
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua
@@ -0,0 +1,968 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+local pairs     = _G.pairs;
+local ipairs    = _G.ipairs;
+local type      = _G.type;
+local error     = _G.error;
+local pcall     = _G.pcall;
+local assert    = _G.assert;
+local tostring  = _G.tostring;
+local tonumber  = _G.tonumber;
+local tinsert   = _G.tinsert;
+local string    = _G.string;
+local math      = _G.math;
+local table     = _G.table;
+--[[ STRING METHODS ]]--
+local lower, upper = string.lower, string.upper;
+local find, format, len, split = string.find, string.format, string.len, string.split;
+local match, sub, join = string.match, string.sub, string.join;
+local gmatch, gsub = string.gmatch, string.gsub;
+--[[ MATH METHODS ]]--
+local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;  -- Basic
+local random = math.random;  -- Uncommon
+--[[ TABLE METHODS ]]--
+local tremove, tcopy, twipe = table.remove, table.copy, table.wipe;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local PLUGIN = select(2, ...)
+
+local Schema = PLUGIN.Schema;
+local PlayersName = UnitName("player")
+
+local SV = _G["SVUI"]
+local L = SV.L
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local playerName = UnitName("player");
+local playerRealm = GetRealmName();
+
+local ConjugationKeys = {[1]={[1]="are",[2]="am",[3]="were",[4]="was",[5]="I",[6]="me",[7]="you",[8]="my",[9]="your",[10]="mine",[11]="your's",[12]="I'm",[13]="you're",[14]="I've",[15]="you've",[16]="I'll",[17]="you'll",[18]="myself",[19]="yourself"},[2]={[1]="am",[2]="are",[3]="was",[4]="were",[5]="you",[6]="you",[7]="me",[8]="your",[9]="my",[10]="your's",[11]="mine",[12]="you're",[13]="I'm",[14]="you've",[15]="I've",[16]="you'll",[17]="I'll",[18]="yourself",[19]="myself"},[3]={[1]="me am",[2]="am me",[3]="mecan",[4]="can me",[5]="me have",[6]="me will",[7]="will me"},[4]={[1]="I am",[2]="am I",[3]="I can",[4]="can I",[5]="I have",[6]="I will",[7]="will I"}};
+local punctuations = {[1]={pattern="%.",value="."},[2]={pattern=",",value=","},[3]={pattern="!",value="!"},[4]={pattern="%?",value="?"},[5]={pattern=":",value=":"},[6]={pattern=";",value=";"},[7]={pattern="&",value="&"},[8]={pattern="\"",value="\""},[9]={pattern="@",value="@"},[10]={pattern="#",value="#"},[11]={pattern="%(",value="("},[12]={pattern="%)",value=")"}};
+
+local PhoneLines = {};
+local ResponseQueue = {};
+
+local ICON_FILE = [[Interface\AddOns\SVUI_ChatOMatic\artwork\DOCK-CALL]]
+local DEFAULT_GRADIENT = {"VERTICAL", 0.08, 0.08, 0.08, 0.22, 0.22, 0.22}
+local GREEN_GRADIENT = {"VERTICAL", 0.08, 0.5, 0, 0.25, 0.9, 0.08}
+local YELLOW_GRADIENT = {"VERTICAL", 1, 0.3, 0, 1, 1, 0}
+--[[
+##########################################################
+DIALOG TABLES
+##########################################################
+]]--
+local OneLiners = {
+	[1] = "I've got to sit down and work out where I stand.",
+	[2] = "If I save time, when do I get it back?",
+	[3] = "I am not prejudice. I hate everyone equally.",
+	[4] = "Take my advice, I don't use it anyway.",
+	[5] = "The statement below is true. The statement above is false.",
+	[6] = "As I said before, I never repeat myself.",
+	[7] = "If at first you don't succeed, avoid skydiving.",
+	[8] = "War doesn't determine who's right. War determines who's left.",
+	[9] = "Best way to prevent a hangover is to stay drunk.",
+	[10] = "Doesn't expecting the unexpected make the unexpected become the expected?",
+	[11] = "I was born intelligent... education ruined me.",
+	[12] = "A bus station is where a bus stops. A train station is where a train stops. On my desk, I have a work station... What more can I say?",
+	[13] = "If it's true that we are here to help others, then, what exactly are the others here for?",
+	[14] = "Since light travels faster than sound, people appear bright Until you hear them speak.",
+	[15] = "How come \"abbreviated\" is such a long word?",
+	[16] = "Living on Earth may be expensive... but it includes an annual free trip around the Sun.",
+	[17] = "Your future depends on your dreams So go to sleep!",
+	[18] = "A good discussion is like a miniskirt, short enough to hold interest and long enough to cover the subject.",
+	[19] = "A good time to keep your mouth shut is when you are in deep water.",
+	[20] = "How come we choose from just two people for President and 50 for Miss America?",
+	[21] = "No one ever says \"it's just a game\" when they are winning.",
+	[22] = "Suicidal twin kills sister by mistake!",
+	[23] = "He who laughs last thinks slowest!",
+	[24] = "Always remember you're unique, just like everyone else.",
+	[25] = "Hard work has a future payoff. Laziness pays off now.",
+	[26] = "Don't take life too seriously, you won't get out alive.",
+	[27] = "I don't suffer from insanity. I enjoy every minute of it.",
+	[28] = "I'm as confused as a baby in a topless bar.",
+	[29] = "90% of all statistics are made up.",
+	[30] = "If you can't convince them, confuse them.",
+	[31] = "If at first you don't succeed, destroy all evidence that you tried"
+}
+
+local Excuse = {
+	-- OPENERS
+	[1] = "I'd love to, but ",
+	[2] = "I'm being told that ",
+	[3] = "The voices say that ",
+	[4] = "Hang on a sec ",
+	[5] = "You should know that ",
+	[6] = "I just found out that ",
+	[7] = "I would but ",
+	[8] = "Umm... ",
+	[9] = "I don't know about you but ",
+	[10] = "Can't talk right now, ",
+	-- PUNCHLINES
+	[11] = "I have to floss my cat",
+	[12] = "I've dedicated my life to linguini",
+	[13] = "I want to spend more time with my blender",
+	[14] = "the President said he might drop in",
+	[15] = "the man on television told me to say tuned",
+	[16] = "I've been scheduled for a karma transplant",
+	[17] = "I'm staying home to work on my cottage cheese sculpture",
+	[18] = "it's my parakeet's bowling night",
+	[19] = "it wouldn't be fair to the other Beautiful People",
+	[20] = "I'm building a pig from a kit",
+	[21] = "I did my own thing and now I've got to undo it",
+	[22] = "I'm enrolled in aerobic scream therapy",
+	[23] = "there's a disturbance in the Force",
+	[24] = "I'm doing door-to-door collecting for static cling",
+	[25] = "I have to go to the post office to see if I'm still wanted",
+	[26] = "I'm teaching my ferret to yodel",
+	[27] = "I have to check the freshness dates on my dairy products",
+	[28] = "I'm going through cherry cheesecake withdrawl",
+	[29] = "I'm planning to go downtown to try on gloves",
+	[30] = "my crayons all melted together",
+	[31] = "I'm trying to see how long I can go without saying yes",
+	[32] = "I'm in training to be a household pest",
+	[33] = "I'm getting my overalls overhauled",
+	[34] = "my patent is pending",
+	[35] = "I'm attending the opening of my garage door",
+	[36] = "I'm sandblasting my oven",
+	[37] = "I'm worried about my vertical hold",
+	[38] = "I'm going down to the bakery to watch the buns rise",
+	[39] = "I'm being deported",
+	[40] = "the grunion are running",
+	[41] = "I'll be looking for a parking space",
+	[42] = "my Millard Filmore Fan Club meets then",
+	[43] = "the monsters haven't turned blue yet, and I have to eat more dots",
+	[44] = "I'm taking punk totem pole carving",
+	[45] = "I have to fluff my shower cap",
+	[46] = "I'm converting my calendar watch from Julian to Gregorian",
+	[47] = "I've come down with a really horrible case of something or other",
+	[48] = "I made an appointment with a cuticle specialist",
+	[49] = "my plot to take over the world is thickening",
+	[50] = "I have to fulfill my potential",
+	[51] = "I don't want to leave my comfort zone",
+	[52] = "it's too close to the turn of the century",
+	[53] = "I have some real hard words to look up in the dictionary",
+	[54] = "my subconscious says no",
+	[55] = "I'm giving nuisance lessons at a convenience store",
+	[56] = "I left my body in my other clothes",
+	[57] = "the last time I went, I never came back",
+	[58] = "I've got a Friends of Rutabaga meeting",
+	[59] = "I have to answer all of my 'occupant' letters",
+	[60] = "none of my socks match",
+	[61] = "I have to be on the next train to Bermuda",
+	[62] = "I'm having all my plants neutered",
+	[63] = "people are blaming me for the Spanish-American War",
+	[64] = "I changed the lock on my door and now I can't get out",
+	[65] = "I'm making a home movie called 'The Thing That Grew in My Refrigerator'",
+	[66] = "I'm attending a perfume convention as guest sniffer",
+	[67] = "my yucca plant is feeling yucky",
+	[68] = "I'm touring China with a wok band",
+	[69] = "my chocolate-appreciation class meets that night",
+	[70] = "I never go out on days that end in 'Y'",
+	[71] = "my mother would never let me hear the end of it",
+	[72] = "I'm running off to Yugoslavia with a foreign-exchange student named Basil Metabolism",
+	[73] = "I just picked up a book called 'Glue in Many Lands' and I can't put it down",
+	[74] = "I'm too evil for that stuff",
+	[75] = "I have to torment my hair",
+	[76] = "I have too much guilt",
+	[77] = "there are important world issues that need worrying about",
+	[78] = "I have to draw 'Cubby' for an art scholarship",
+	[79] = "I'm uncomfortable when I'm alone or with others",
+	[80] = "I promised to help a friend fold road maps",
+	[81] = "I feel a song coming on",
+	[82] = "I'm trying to be less popular",
+	[83] = "my bathroom tiles need grouting",
+	[84] = "I have to bleach my hare",
+	[85] = "I'm waiting to see if I'm already a winner",
+	[86] = "I'm writing a love letter to Richard Simmons",
+	[87] = "you know how we psychos are",
+	[88] = "my favorite commercial is on TV",
+	[89] = "I have to study for a blood test",
+	[90] = "I'm going to be old someday",
+	[91] = "I've been traded to Cincinnati",
+	[92] = "I'm observing National Apathy Week",
+	[93] = "I have to rotate my crops",
+	[94] = "my uncle escaped again",
+	[95] = "I'm up to my elbows in waxy buildup",
+	[96] = "I have to knit some dust bunnies for a charity bazaar",
+	[97] = "I'm having my baby shoes bronzed",
+	[98] = "I have to go to court for kitty littering",
+	[99] = "I'm going to count the bristles in my toothbrush",
+	[100] = "I have to thaw some karate chops for dinner",
+	[101] = "having fun gives me prickly heat",
+	[102] = "I'm going to the Missing Persons Bureau to see if anyone is looking for me",
+	[103] = "I have to jog my memory",
+	[104] = "my palm reader advised against it",
+	[105] = "my Dress For Obscurity class meets then",
+	[106] = "I have to stay home and see if I snore",
+	[107] = "I prefer to remain an enigma",
+	[108] = "I think you want the OTHER " .. playerName,
+	[109] = "I have to sit up with a sick ant",
+	[110] = "I'm trying to cut down",
+	[111] = ".. well, maybe",
+};
+
+local Phrases = {
+	[1] = "I don't really want to<*",
+	[2] = "Are you going to<*",
+	[3] = "I don't know, should I<*",
+	[4] = "So you are not going to<*",
+	[5] = "Why don't you<*",
+	[6] = "So you think I'm<*",
+	[7] = "What's it to you if I'm<*",
+	[8] = "Did you wanna<*",
+	[9] = "Do you wanna<*",
+	[10] = "Don't you really<*",
+	[11] = "Why don't you<*",
+	[12] = "I bet you can't<*",
+	[13] = "UMADBRO?",
+	[14] = "I'm marginally listening.",
+	[15] = "Let me get this straight, you feel<*",
+	[16] = "Stop feeling<*",
+	[17] = "Why would I<*",
+	[18] = "If your lucky I just might<@",
+	[19] = "So, your really asking me to<*",
+	[20] = "Is there a reason why YOU don't<*",
+	[21] = "Why can't you<*",
+	[22] = "Why are you interested in whether or not I am<*",
+	[23] = "Would you prefer if I were not<*",
+	[24] = "Perhaps in your fantasies I am<*",
+	[25] = "How do you know you can't<*",
+	[26] = "Have you tried?",
+	[27] = "Perhaps you can now<*",
+	[28] = "Did you come to me because you are<*",
+	[29] = "How long have you been<*",
+	[30] = "Do you believe it is normal to be<*",
+	[31] = "Do you enjoy being<*",
+	[32] = "We were discussing you, not me.",
+	[33] = "Oh... <*",
+	[34] = "Doesn't sound like me though, does it?",
+	[35] = "How awesome would it be if you got<*",
+	[36] = "Why do you want<*",
+	[37] = "Suppose you got<*",
+	[38] = "What if you never got<*",
+	[39] = "I sometimes also want<@",
+	[40] = "Whay are you asking me?",
+	[41] = "Does it really matter?",
+	[42] = "Is there a right answer?",
+	[43] = "What do you think?",
+	[44] = "You are asking the wrong questions, wanna try again?",
+	[45] = "What is it that you really want to know?",
+	[46] = "Who else have you asked?",
+	[47] = "Am I the first person you have asked this?",
+	[48] = "Don't you already know the aswer to that?",
+	[49] = "The names aren't important.",
+	[50] = "I won't remember any names, do continue.",
+	[51] = "Is that the real reason?",
+	[52] = "Don't any other reasons come to mind?",
+	[53] = "Does that reason explain anything else?",
+	[54] = "What other reasons might there be?",
+	[55] = "Please don't apologise!",
+	[56] = "Apologies are not necessary.",
+	[57] = "What feelings do you have when you apologise?",
+	[58] = "Don't be so defensive!",
+	[59] = "What does that dream suggest to you?",
+	[60] = "Do you dream often?",
+	[61] = "What persons appear in your dreams?",
+	[62] = "Are you disturbed by your dreams?",
+	[63] = "What?",
+	[64] = "You don't seem quite certain.",
+	[65] = "Why the uncertain tone?",
+	[66] = "Can't you be more positive?",
+	[67] = "You aren't sure?",
+	[68] = "Don't you know?",
+	[69] = "Are you saying no just to be negative?",
+	[70] = "You are being a bit negative.",
+	[71] = "Why not?",
+	[72] = "Are you sure?",
+	[73] = "Why no?",
+	[74] = "Why are you concerned about my<*",
+	[75] = "What about your own<*",
+	[76] = "Can you think of a specific example?",
+	[77] = "When?",
+	[78] = "What are you thinking of?",
+	[79] = "Really, always?",
+	[80] = "Think so?",
+	[81] = "You thought<*",
+	[82] = "You really think<*",
+	[83] = "In what way?",
+	[84] = "What resemblence do you see?",
+	[85] = "What does the similarity suggest to you?",
+	[86] = "What other connections do you see?",
+	[87] = "Could there really be some connection?",
+	[88] = "How?",
+	[89] = "You seem quite positive.",
+	[90] = "ORLY?",
+	[91] = "OIC.",
+	[92] = "Word.",
+	[93] = "You dont have any friends.",
+	[94] = "Why would I care about your friends?",
+	[95] = "Are you sure you know what 'friend' means?",
+	[96] = "Are you sure you have any friends?",
+	[97] = "Do your friends usually get really quiet when you are around?",
+	[98] = "I'm willing to bet your friends hate you.",
+	[99] = "Who still uses the word noob?",
+	[100] = "Are you talking about me specifically?",
+	[101] = "I dunno. What are YOU doing?",
+	[102] = "Would't you like to know?",
+	[103] = "What do you think?",
+	[104] = "I'm guessing you want something from me?",
+	[105] = "I'm playing World of Warcraft... you seriously didn't know that?",
+	[106] = "No kidding? Fo' realz? That's dope fresh son!",
+	[107] = "And what did you learn?",
+	[108] = "Gotcha.",
+	[109] = "MmmmHmmm",
+	[110] = "I don't follow...",
+	[111] = "I'm gonna need a bit more context. Do you know what context means?",
+	[112] = "Wow... just ...wow.",
+	[113] = "Same question huh?",
+	[114] = "Deja Vu!",
+	[115] = "Yeah, lets try this again shall we?",
+	[116] = "Have you recently suffered a head injury?",
+	[117] = "Im hearing an echo I think....",
+	[118] = "Cant all classes heal themselves now?",
+	[119] = "Bandages FTW!",
+	[120] = "Why are you asking me?",
+	[121] = "Thats adorable how excited you are about it!",
+	[122] = "What do you think?",
+	[123] = "What is it that you really want to know?",
+	[124] = "What is your level?",
+	[125] = "Is this your first character?",
+	[126] = "Most guilds are just full of high school kids with nothing better to do.",
+	[127] = "What is a guild?",
+	[128] = "What is the name?",
+	[129] = "Oh really?",
+	[130] = "Great story.",
+	[131] = "Meh.",
+	[132] = "No clue."
+};
+
+local Responses = {
+	[1] =  {Key = "**NO KEY**",	   Question = false, Dialog = {106,107,108,109,110,111,112,129,130,131,132}},
+	[2] =  {Key = "**REPEAT**",	   Question = false, Dialog = {113,114,115,116,117}},
+	[3] =  {Key = "YOU'RE", 	   Question = false, Dialog = {6,7,8,9}},
+	[4] =  {Key = "I DON'T", 	   Question = false, Dialog = {10,11,12,13}},
+	[5] =  {Key = "I FEEL", 	   Question = false, Dialog = {14,15,16 }},
+	[6] =  {Key = "WHY DON'T YOU", Question = false, Dialog = {17,18,19}},
+	[7] =  {Key = "WHY CAN'T I",   Question = false, Dialog = {20,21 }},
+	[8] =  {Key = "ARE YOU", 	   Question = false, Dialog = {22,23,24}},
+	[9] =  {Key = "I CAN'T", 	   Question = false, Dialog = {25,26,27}},
+	[10] = {Key = "I AM", 		   Question = false, Dialog = {28,29,30,31}},
+	[11] = {Key = "I'M", 		   Question = false, Dialog = {28,29,30,31}},
+	[12] = {Key = "YOU", 		   Question = false, Dialog = {32,33,34}},
+	[13] = {Key = "I WANT", 	   Question = false, Dialog = {35,36,37,38,39 }},
+	[14] = {Key = "WHAT", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
+	[15] = {Key = "HOW", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
+	[16] = {Key = "WHO", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
+	[17] = {Key = "WHERE", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
+	[18] = {Key = "WHEN", 		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
+	[19] = {Key = "WHY",  		   Question = true,  Dialog = {40,41,42,43,44,45,46,47,48}},
+	[20] = {Key = "NAME", 		   Question = false, Dialog = {49,50}},
+	[21] = {Key = "CAUSE", 		   Question = false, Dialog = {51,52,53,54}},
+	[22] = {Key = "SORRY", 		   Question = false, Dialog = {55,56,57,58}},
+	[23] = {Key = "DREAM",  	   Question = false, Dialog = {59,60,61,62}},
+	[24] = {Key = "HELLO",  	   Question = false, Dialog = {63}},
+	[25] = {Key = "HI",  		   Question = false, Dialog = {63}},
+	[26] = {Key = "MAYBE",  	   Question = false, Dialog = {64,65,66,67,68}},
+	[27] = {Key = "NO",   		   Question = false, Dialog = {69,70,71,72,73}},
+	[28] = {Key = "YOUR",   	   Question = false, Dialog = {74,75}},
+	[29] = {Key = "ALWAYS", 	   Question = false, Dialog = {76,77,78,79}},
+	[30] = {Key = "THINK",  	   Question = false, Dialog = {80,81,82}},
+	[31] = {Key = "ALIKE",  	   Question = false, Dialog = {83,84,85,86,87,88,89}},
+	[32] = {Key = "YES",   		   Question = false, Dialog = {90,91,92}},
+	[33] = {Key = "FRIEND", 	   Question = false, Dialog = {93,94,95,96,97,98}},
+	[34] = {Key = "NOOB",   	   Question = false, Dialog = {99}},
+	[35] = {Key = "CAN I", 		   Question = false, Dialog = {4,5}},
+	[36] = {Key = "CAN YOU",  	   Question = false, Dialog = {1,2,3}},
+	[37] = {Key = "WILL YOU",  	   Question = false, Dialog = {1,2,3}},
+	[38] = {Key = "WOULD YOU",     Question = false, Dialog = {1,2,3}},
+	[39] = {Key = "COULD YOU",     Question = false, Dialog = {1,2,3}},
+	[40] = {Key = "YOU ARE", 	   Question = false, Dialog = {6,7,8,9 }},
+	[41] = {Key = "HEALER",  	   Question = false, Dialog = {118,119}},
+	[42] = {Key = "HOLY", 		   Question = false, Dialog = {118,119}},
+	[43] = {Key = "RESTORATION",   Question = false, Dialog = {118,119}},
+	[44] = {Key = "HEAL",  		   Question = false, Dialog = {118,119}},
+	[45] = {Key = "PORT", 		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
+	[46] = {Key = "PORTAL",  	   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
+	[47] = {Key = "WATER", 		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
+	[48] = {Key = "FOOD",  		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
+	[49] = {Key = "MONEY",  	   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
+	[50] = {Key = "GOLD", 		   Question = false, Dialog = {40,41,42,43,44,45,46,47,48}},
+	[51] = {Key = "PVP",  		   Question = false, Dialog = {120,121,122,123,124,125}},
+	[52] = {Key = "RAID",  		   Question = false, Dialog = {120,121,122,123,124,125}},
+	[53] = {Key = "KNOW",  		   Question = false, Dialog = {64,65,66,67,68}},
+	[54] = {Key = "POSSIBLE",  	   Question = false, Dialog = {64,65,66,67,68}},
+	[55] = {Key = "WTF",  		   Question = false, Dialog = {64,65,66,67,68}},
+	[56] = {Key = "LOL",  		   Question = false, Dialog = {64,65,66,67,68}},
+	[57] = {Key = "GUILD", 		   Question = false, Dialog = {126,127,128}},
+	[58] = {Key = "TOON", 		   Question = false, Dialog = {49,50}},
+	[59] = {Key = "CHARACTER", 	   Question = false, Dialog = {49,50}},
+	[60] = {Key = "PLAYER", 	   Question = false, Dialog = {49,50}},
+	[61] = {Key = "DOING", 		   Question = false, Dialog = {100,101,102,103,104,105}},
+	[62] = {Key = "UP TO", 		   Question = false, Dialog = {100,101,102,103,104,105}},
+};
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function ServiceMessage(msg)
+    local msgFrom = SV.db[Schema].prefix == true and "Minion Answering Service" or "";
+    print("|cffffcc1a" .. msgFrom .. ":|r", msg)
+end
+
+local function ClearResponses(caller)
+	for x = 1, #ResponseQueue, 1 do
+		if ResponseQueue[x] then
+			if ResponseQueue[x].CID == caller then
+				tremove(ResponseQueue, x)
+			end
+		end
+	end
+end
+
+local function RemoveCaller(caller)
+	ClearResponses(caller)
+
+	if PhoneLines[caller] then
+		local data = PhoneLines[caller]
+		local btn = _G["HenchmenPhoneLine"..data.Line];
+		btn.Text:SetText("Empty Phone Line");
+		btn:SetPanelColor("default");
+		PhoneLines[caller] = nil
+		ServiceMessage("Caller ("..caller..") was disconnected.");
+	end
+end
+--[[
+##########################################################
+MESSAGE PROCESSING
+##########################################################
+]]--
+do
+	local function Conjugate(parse)
+		for i,cj in pairs(ConjugationKeys[1]) do
+			parse = gsub(parse, cj, "#@&"..i)
+		end
+		for i,cj in pairs(ConjugationKeys[2]) do
+			parse = gsub(parse, "#@&"..i, cj)
+		end
+		for i,cj in pairs(ConjugationKeys[3]) do
+			parse = gsub(parse, cj, "#@&"..i)
+		end
+		for i,cj in pairs(ConjugationKeys[4]) do
+			parse = gsub(parse, "#@&"..i, cj)
+		end
+		return parse
+	end
+
+	local function PadString(strng)
+		aString = " "..strng.." "
+		for i = 1, 12, 1 do
+			aString = gsub(aString, punctuations[i].pattern, " "..punctuations[i].value.." ")
+		end
+		return " "..aString.." "
+	end
+
+	local function UnPadString(strng)
+		aString = strng
+		aString = gsub(aString, "  ", " ")
+		if sub(aString, 1, 1) == " " then
+			aString = sub(aString, 2)
+		end
+		if sub(aString, -1, -1) == " " then
+			aString = sub(aString, 1, len(aString)-1)
+		end
+		for i = 1, 12, 1 do
+			aString = gsub(aString, " "..punctuations[i].pattern, punctuations[i].value)
+		end
+		return aString
+	end
+
+	local function TrimString(orgString, unpad)
+		local tmpChars = ".,!?:;&\"@#()^$+-%= "
+		local x = 1
+		local found = true
+
+		if(unpad) then
+			orgString = UnPadString(orgString)
+		end
+
+		while found == true do
+			local tchar = sub(orgString, -(x), -(x))
+			if tchar == "(" or tchar == ")" or tchar == "." or tchar == "%" or tchar == "+" or tchar == "-" or tchar == "*" or tchar == "?" or tchar == "[" or tchar == "]" or tchar == "^" or tchar == "$" then
+				tchar = "%"..tchar
+			end
+			found = find(tchar,tmpChars) and (len(orgString) - x) > 0
+			x = x + 1
+		end
+		x = x - 1
+		if (len(orgString) - x) > 0 then
+			orgString = sub(orgString, 1, len(orgString) - x + 1)
+		end
+		x = 1
+		while find(sub(orgString, x, x),tmpChars) and (len(orgString) - x) > 0 do
+			x = x + 1
+		end
+		if (len(orgString) - x) > 0 then
+			orgString = sub(orgString, x)
+		end
+		return orgString
+	end
+
+	local function PhraseSearch(sString, keyid, data)
+		local thisstr = "";
+		local phrase;
+		local wordkey = Responses[keyid].Key;
+		local links = Responses[keyid].Dialog;
+		idrange = #links
+		if idrange > 1 then
+			while(not phrase) do
+				local mod = floor(random(1, idrange))
+				if links[mod] ~= data.LastKey then
+					phrase = Phrases[links[mod]]
+					data.LastKey = links[mod]
+				end
+			end
+		else
+			data.LastKey = 1
+		end
+		local tempt = sub(phrase, -1, -1)
+		local sTemp = ""
+		if tempt == "*" or tempt == "@" then
+			sTemp = PadString(sString)
+			local wTemp = upper(sTemp)
+			local strpstr = find(wTemp, " "..wordkey.." ")
+			if not strpstr then
+				strpstr = find(wTemp, " "..wordkey)
+			end
+			if not strpstr then
+				strpstr = find(wTemp, wordkey.." ")
+			end
+			strpstr = strpstr + len(wordkey) + 1
+			thisstr = Conjugate(sub(sTemp, strpstr))
+			thisstr = TrimString(thisstr, true)
+			if tempt == "*" then
+				sTemp = gsub(phrase, "<%*", " "..thisstr.."?")
+			else
+				sTemp = gsub(phrase, "<@", " "..thisstr..".")
+			end
+		else
+			sTemp = phrase
+		end
+		return sTemp
+	end
+
+	local function KeywordSearch(wString)
+		for k, v in gmatch(wString, "([%w']+ [%w']+ [%w']+ [%w']+ [%w']+)") do
+			for x = 1, 62, 1 do
+				if Responses[x].Key == k then
+					return x
+				end
+			end
+		end
+		for k, v in gmatch(wString, "([%w']+ [%w']+ [%w']+ [%w']+)") do
+			for x = 1, 62, 1 do
+				if Responses[x].Key == k then
+					return x
+				end
+			end
+		end
+		for k, v in gmatch(wString, "([%w']+ [%w']+ [%w']+)") do
+			for x = 1, 62, 1 do
+				if Responses[x].Key == k then
+					return x
+				end
+			end
+		end
+		for k, v in gmatch(wString, "([%w']+ [%w']+)") do
+			for x = 1, 62, 1 do
+				if Responses[x].Key == k then
+					return x
+				end
+			end
+		end
+		for k, v in gmatch(wString, "([%w]-) ") do
+			for x = 1, 62, 1 do
+				if Responses[x].Key == k then
+					return x
+				end
+			end
+		end
+		return 1
+	end
+
+	local function MakeExcuse(sInput)
+		local joke = random(100)
+		if(joke <= 31) then
+			return OneLiners[joke];
+		end
+		local word_list = {}
+		for k, v in gmatch(sInput, "([%w']+)") do
+			tinsert(word_list, k)
+		end
+		local tBestQuotes = {}
+		local mxWords = 0
+		for x = 11, 101, 1 do
+			local count = 0
+			for y = 1, #word_list, 1 do
+				if find(Excuse[x], word_list[y]) then
+					count = count + 1
+				end
+			end
+			if count > mxWords then
+				tBestQuotes = {}
+				mxWords = count
+				tinsert(tBestQuotes, x)
+			elseif count == mxWords then
+				tinsert(tBestQuotes, x)
+			end
+		end
+
+		local response = Excuse[random(1,10)]
+		local mod = random(11,101)
+		if #tBestQuotes > 0 then
+			mod = tBestQuotes[random(#tBestQuotes)]
+		end
+		response = response .. Excuse[mod]
+		return response;
+	end
+
+	local function MessageBuilder(data, inbound)
+		local sInput = TrimString(inbound);
+		local outbound;
+		local mapkey = 1;
+		if sInput ~= "" and sInput ~= " " and sInput ~= "  " and sInput ~= "." and sInput ~= "," then
+			local wInput = PadString(upper(sInput));
+			mapkey = KeywordSearch(wInput);
+			if Responses[mapkey].Question == true then
+				if sub(inbound, -1, -1) ~= "?" then
+					mapkey = 1
+				end
+			end
+			if(inbound == data.InBound or inbound == data.OutBound) then
+				mapkey = 2
+			elseif mapkey == 1 then
+				if data.FirstResponse == true then
+					outbound = ":)";
+				else
+					if(20 >= random(100)) then
+						outbound = MakeExcuse(sInput)
+					end
+				end
+			end
+			data.FirstResponse = false
+		end
+		if(not outbound) then
+			outbound = PhraseSearch(sInput, mapkey, data)
+		end
+		if(SV.db[Schema].prefix == true) then
+			return ("%s's Answering Service: %s"):format(PlayersName, outbound)
+		else
+			return outbound
+		end
+	end
+
+	function PLUGIN:TakeAMessage(caller, inbound)
+		ClearResponses(caller)
+		local data = PhoneLines[caller];
+		if(data) then
+			if(data.InUse) then
+				local data = PhoneLines[caller];
+				local outbound = MessageBuilder(data, inbound)
+				data.OutBound = outbound
+				local tm = (floor(GetTime()) + ((len(outbound)/400) * 60));
+				tinsert(ResponseQueue, {["ETA"] = tm, ["MSG"] = outbound, ["CID"] = caller})
+			end
+			data.InBound = inbound
+			data.TimeStamp = GetTime()
+		end
+	end
+end
+
+function PLUGIN:AddCaller(caller)
+	local state_text = "now on hold.";
+	local call_answered = false
+	PhoneLines[caller] = {
+		Line = 1,
+		InUse = false,
+		FirstResponse = true,
+		Caller = caller,
+		InBound = "",
+		OutBound = "",
+		LastKey = 1,
+		TimeStamp = 0
+	};
+	for x = 1, 5, 1 do
+		local btn = _G["HenchmenPhoneLine"..x];
+		if(btn.Text:GetText() ~= caller) then
+			btn.Text:SetText(caller);
+			PhoneLines[caller].Line = x
+			call_answered = true
+			if SV.db[Schema].autoAnswer == true then
+				PhoneLines[caller].InUse = true;
+				btn:SetPanelColor("green");
+				self.Docklet:SetPanelColor("green");
+				self.Docklet.stateColor = GREEN_GRADIENT
+				state_text = "on the line.";
+				PlaySoundFile("Sound\\interface\\iQuestUpdate.wav")
+			end
+			break;
+		end
+	end
+	if(not call_answered) then
+		ServiceMessage("All lines are busy. New caller ("..caller..") was disconnected.")
+	else
+		ServiceMessage("New caller ("..caller..") is "..state_text)
+	end
+end
+
+function PLUGIN:GetServiceState()
+	local inUse = false
+	local onHold = false
+	for x = 1, 5, 1 do
+		local btn = _G["HenchmenPhoneLine"..x];
+		local caller = btn.Text:GetText()
+		if(PhoneLines[caller]) then
+			inUse = true
+			if(not PhoneLines[caller].InUse) then
+				onHold = true
+			end
+		end
+	end
+
+	if inUse then
+		if onHold then
+			self.Docklet:SetPanelColor("yellow")
+			self.Docklet.icon:SetGradient(unpack(YELLOW_GRADIENT))
+			self.Docklet.stateColor = YELLOW_GRADIENT
+		else
+			self.Docklet:SetPanelColor("green")
+			self.Docklet.icon:SetGradient(unpack(GREEN_GRADIENT))
+			self.Docklet.stateColor = GREEN_GRADIENT
+		end
+	else
+		self.Docklet:SetPanelColor("default")
+		self.Docklet.stateColor = DEFAULT_GRADIENT
+	end
+	return inUse,onHold
+end
+
+function PLUGIN:HangUp(caller,ignored)
+	RemoveCaller(caller)
+	local inUse,onHold = self:GetServiceState()
+
+	if inUse == false then
+		self.Window:Hide()
+	elseif onHold == true then
+		self.Window:Show()
+	else
+		self.Window:Show()
+	end
+
+	if(ignored) then
+		ServiceMessage(caller.." is now ignoring you! MwaaHaHa!")
+		PlaySoundFile("Sound\\interface\\RaidWarning.wav")
+	end
+end
+--[[
+##########################################################
+EVENTS
+##########################################################
+]]--
+function PLUGIN:PhoneTimeUpdate()
+	local timer = 300;
+	local ttime = GetTime()
+	if #ResponseQueue > 0 then
+		for x = 1, #ResponseQueue, 1 do
+			if ResponseQueue[x] then
+				if ResponseQueue[x].ETA < ttime then
+					SendChatMessage(ResponseQueue[x].MSG, "WHISPER", nil, ResponseQueue[x].CID)
+					tremove(ResponseQueue, x)
+				end
+			end
+		end
+	end
+	if ttime > timer then
+		for x = 1, 5, 1 do
+			local btn = _G["HenchmenPhoneLine"..x];
+			local caller = btn.Text:GetText()
+			if(PhoneLines[caller]) then
+				if PhoneLines[caller].TimeStamp < (ttime - timer) then
+					self:HangUp(caller)
+				end
+			end
+		end
+	end
+end
+
+function PLUGIN:CHAT_MSG_IGNORED(event, inbound_message, caller, ...)
+	if(PhoneLines[caller] and PhoneLines[caller].InUse) then
+		self:HangUp(caller,true)
+	end
+end
+
+function PLUGIN:AUTO_MSG_WHISPER(event, inbound_message, caller)
+	if not UnitIsAFK("player") and not UnitIsDND("player") then
+		if (not PhoneLines[caller]) then
+			self:AddCaller(caller)
+		end
+		self:TakeAMessage(caller, inbound_message)
+	end
+end
+
+function PLUGIN:AUTO_MSG_BN_WHISPER(event, inbound_message, sender, _, _, _, _, _, _, _, _, _, _, presenceID)
+	if(not presenceID) then return end
+	if not UnitIsAFK("player") and not UnitIsDND("player") then
+		local _, bnToon = BNGetToonInfo(presenceID);
+		local caller = bnToon or sender;
+		if (not PhoneLines[caller]) then
+			self:AddCaller(caller)
+		end
+		self:TakeAMessage(caller, inbound_message)
+	end
+end
+--[[
+##########################################################
+OTHER HANDLERS
+##########################################################
+]]--
+local AnsweringOnClick = function()
+	if(not PLUGIN.Window) then return end
+	if(PLUGIN.Window:IsShown()) then
+		PLUGIN.Window:Hide()
+	else
+		PLUGIN.Window:Show()
+	end
+end
+
+local PhoneLineClick = function(self, button)
+	local caller = self.Text:GetText()
+	if((caller == "Empty Phone Line") or not PhoneLines[caller]) then return; end
+	if button == "LeftButton" then
+		if(not PhoneLines[caller].InUse) then
+			self:SetPanelColor("green");
+			PhoneLines[caller].InUse = true
+			ServiceMessage("Let the torment of "..caller.." begin!")
+			PLUGIN:TakeAMessage(caller, PhoneLines[caller].InBound)
+		else
+			self:SetPanelColor("yellow");
+			PhoneLines[caller].InUse = false
+			ServiceMessage(caller.." is now on hold")
+		end
+	elseif button == "RightButton" then
+		PLUGIN:HangUp(caller)
+	end
+	PLUGIN:GetServiceState()
+end
+--[[
+##########################################################
+LOAD AND CONSTRUCT
+##########################################################
+]]--
+function PLUGIN:EnableAnsweringService()
+	self:RegisterEvent("CHAT_MSG_IGNORED")
+	self:RegisterUpdate("PhoneTimeUpdate", 4)
+
+	local buttonsize = SuperDockToolBarLeft.currentSize
+
+	local docklet = CreateFrame("Button", nil, UIParent)
+	docklet:SetParent(SuperDockToolBarLeft)
+	docklet:Point("LEFT", SuperDockToolBarLeft, "LEFT", 3, 0)
+	docklet:Size(buttonsize, buttonsize)
+	docklet:SetFramedButtonTemplate()
+	docklet.icon = docklet:CreateTexture(nil, "OVERLAY")
+	docklet.icon:FillInner(docklet,2,2)
+	docklet.icon:SetTexture(ICON_FILE)
+	docklet.stateColor = {"VERTICAL", 0.33, 0.25, 0.13, 0.47, 0.39, 0.27}
+	docklet.TText = L["Show / Hide Phone Lines"]
+	docklet:RegisterForClicks("AnyUp")
+
+	SV.SVDock:ActivateDockletButton(docklet, AnsweringOnClick)
+
+	SuperDockToolBarLeft:SetWidth(buttonsize + 4)
+
+	self.Docklet = docklet
+
+	local window = CreateFrame("Frame", nil, UIParent)
+	window:SetFrameStrata("MEDIUM")
+	window:SetWidth(128)
+	window:SetHeight(145)
+	window:SetScript("OnDragStart", function(this) this:StartMoving() end)
+	window:SetScript("OnDragStop", function(this) this:StopMovingOrSizing() end)
+	window:SetPoint("BOTTOMRIGHT", LeftSuperDock, "TOPRIGHT", 0, 6)
+	window:SetFixedPanelTemplate("Transparent")
+	window:SetMovable(true)
+	window:EnableMouse(true)
+	window:SetClampedToScreen(true)
+	window:RegisterForDrag("LeftButton")
+
+	local title = window:CreateFontString("HenchmenOperatorText")
+	title:SetWidth(128)
+	title:SetHeight(50)
+	title:SetFontObject(GameFontNormal)
+	title:SetTextColor(0.5, 0.5, 1, 1)
+	title:SetJustifyH("CENTER")
+	title:SetJustifyV("TOP")
+	title:SetPoint("TOP", window, "TOP", 0, -2)
+	title:SetText("Henchman Answering Service")
+
+	for x = 1, 5, 1 do
+		local phLn = CreateFrame("Button", "HenchmenPhoneLine"..x, window)
+		phLn:SetWidth(124)
+		phLn:SetHeight(20)
+		phLn:SetPoint("TOPLEFT", window, "TOPLEFT", 2, ((-16) - (x * 21)))
+		phLn:RegisterForClicks("AnyUp")
+		phLn:SetScript("OnClick", PhoneLineClick)
+		phLn:SetFixedPanelTemplate("Button")
+		phLn.Text = phLn:CreateFontString()
+		phLn.Text:SetWidth(124)
+		phLn.Text:SetHeight(20)
+		phLn.Text:SetFontObject(GameFontNormalSmall)
+		phLn.Text:SetTextColor(1, 1, 1, 1)
+		phLn.Text:SetJustifyH("CENTER")
+		phLn.Text:SetJustifyV("MIDDLE")
+		phLn.Text:SetPoint("TOP", "HenchmenPhoneLine"..x, "TOP")
+		phLn.Text:SetText("Empty Phone Line")
+	end
+
+	self.Window = window
+	self.Window:Hide()
+
+	local strMsg
+	if SV.db[Schema].autoAnswer == true then
+		strMsg = "The Henchmen Operators Are Screening Your Calls.."
+	else
+		strMsg = "The Henchmen Operators Are Standing By.."
+	end
+	SV:AddonMessage(strMsg)
+end
+
+function PLUGIN:DisableAnsweringService()
+	self:UnregisterEvent("CHAT_MSG_IGNORED")
+	self:UnregisterUpdate("PhoneTimeUpdate")
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ChatOMatic/components/chat_history.lua b/Interface/AddOns/SVUI_ChatOMatic/components/chat_history.lua
new file mode 100644
index 0000000..d267cb8
--- /dev/null
+++ b/Interface/AddOns/SVUI_ChatOMatic/components/chat_history.lua
@@ -0,0 +1,154 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local type 		= _G.type;
+local tinsert 	= _G.tinsert;
+local string 	= _G.string;
+local math 		= _G.math;
+local table 	= _G.table;
+--[[ STRING METHODS ]]--
+local format, split = string.format, string.split;
+--[[ MATH METHODS ]]--
+local floor, random = math.floor, math.random;
+--[[ TABLE METHODS ]]--
+local twipe, tcopy, tsort = table.wipe, table.copy, table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local PLUGIN = select(2, ...)
+local Schema = PLUGIN.Schema;
+
+local SV = _G["SVUI"];
+local L = SV.L;
+--[[
+##########################################################
+CHAT HISTORY
+##########################################################
+]]--
+local function MessageTimeStamp()
+	local timestamp, current;
+	local actual = time();
+	local estimate = GetTime()
+	if(not estimate) then
+		current = random(1, 999)
+	else
+		current = select(2, ("."):split(estimate, 2)) or 0
+	end
+	timestamp = ("%d.%d"):format(actual, current)
+	return timestamp;
+end
+
+function PLUGIN:SAVE_CHAT_HISTORY(event, ...)
+	local temp_cache = {}
+	for i = 1, select('#', ...) do
+		temp_cache[i] = select(i, ...) or false
+	end
+	if(#temp_cache > 0) then
+	  	temp_cache[20] = event
+	  	local timestamp = MessageTimeStamp()
+		local lineNum, lineID = 0
+
+		self.ChatHistory[timestamp] = temp_cache
+
+		local history = self.ChatHistory
+		for id, data in pairs(history) do
+			lineNum = lineNum + 1
+			if((not lineID) or lineID > id) then
+				lineID = id
+			end
+		end
+
+		if(lineNum > 128) then
+			self.ChatHistory[lineID] = nil
+		end
+	end
+	temp_cache = nil
+end
+
+function PLUGIN:PLAYER_ENTERING_WORLD()
+	local history = self.ChatHistory
+	local temp_cache, data_cache = {}
+	for id, _ in pairs(history) do
+		tinsert(temp_cache, tonumber(id))
+	end
+	tsort(temp_cache, function(a, b)
+		return a < b
+	end)
+	for i = 1, #temp_cache do
+		data_cache = history[tostring(temp_cache[i])]
+		if type(data_cache) == "table" and data_cache[20] ~= nil then
+			ChatFrame_MessageEventHandler(DEFAULT_CHAT_FRAME, data_cache[20], unpack(data_cache))
+		end
+	end
+	temp_cache = nil
+	data_cache = nil
+	self:UnregisterEvent("PLAYER_ENTERING_WORLD")
+end
+
+function PLUGIN:EnableChatHistory()
+	if not ChatOMatic_Cache["chat"] then ChatOMatic_Cache["chat"] = {} end
+
+	self.ChatHistory = ChatOMatic_Cache["chat"]
+
+	self:RegisterEvent("CHAT_MSG_CHANNEL", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_EMOTE", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_GUILD_ACHIEVEMENT", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_RAID_WARNING", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_SAY", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_YELL", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_WHISPER_INFORM", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_GUILD", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_OFFICER", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_PARTY", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_PARTY_LEADER", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_RAID", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_RAID_LEADER", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_INSTANCE_CHAT", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_INSTANCE_CHAT_LEADER", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_BN_CONVERSATION", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("CHAT_MSG_BN_WHISPER_INFORM", "SAVE_CHAT_HISTORY")
+	self:RegisterEvent("PLAYER_ENTERING_WORLD")
+end
+
+function PLUGIN:DisableChatHistory()
+	self:UnregisterEvent("CHAT_MSG_CHANNEL")
+	self:UnregisterEvent("CHAT_MSG_EMOTE")
+	self:UnregisterEvent("CHAT_MSG_GUILD_ACHIEVEMENT")
+	self:UnregisterEvent("CHAT_MSG_RAID_WARNING")
+	self:UnregisterEvent("CHAT_MSG_SAY")
+	self:UnregisterEvent("CHAT_MSG_YELL")
+	self:UnregisterEvent("CHAT_MSG_WHISPER_INFORM")
+	self:UnregisterEvent("CHAT_MSG_GUILD")
+	self:UnregisterEvent("CHAT_MSG_OFFICER")
+	self:UnregisterEvent("CHAT_MSG_PARTY")
+	self:UnregisterEvent("CHAT_MSG_PARTY_LEADER")
+	self:UnregisterEvent("CHAT_MSG_RAID")
+	self:UnregisterEvent("CHAT_MSG_RAID_LEADER")
+	self:UnregisterEvent("CHAT_MSG_INSTANCE_CHAT")
+	self:UnregisterEvent("CHAT_MSG_INSTANCE_CHAT_LEADER")
+	self:UnregisterEvent("CHAT_MSG_BN_CONVERSATION")
+	self:UnregisterEvent("CHAT_MSG_BN_WHISPER_INFORM")
+	self:UnregisterEvent("PLAYER_ENTERING_WORLD")
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
index fa7c078..9b30328 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
@@ -29,12 +29,13 @@ local tsort = table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SV = SVUI;
-local L = LibLocale();
+local SV = _G["SVUI"];
+local L = SV.L;
 local Ace3Config = LibStub("AceConfig-3.0");
 local Ace3ConfigDialog = LibStub("AceConfigDialog-3.0");
-Ace3Config:RegisterOptionsTable("SVUI", SV.Options);
-Ace3ConfigDialog:SetDefaultSize("SVUI", 890, 651);
+Ace3Config:RegisterOptionsTable(SV.NameID, SV.Options);
+Ace3ConfigDialog:SetDefaultSize(SV.NameID, 890, 651);
+
 local AceGUI = LibStub("AceGUI-3.0", true);
 local posOpts = {TOPLEFT='TOPLEFT',LEFT='LEFT',BOTTOMLEFT='BOTTOMLEFT',RIGHT='RIGHT',TOPRIGHT='TOPRIGHT',BOTTOMRIGHT='BOTTOMRIGHT',CENTER='CENTER',TOP='TOP',BOTTOM='BOTTOM'};
 local GEAR = SV.SVGear;
@@ -53,8 +54,6 @@ local function CommonFontSizeUpdate()

     SV.db.SVBar.fontSize = smallfont;
     SV.db.SVPlate.fontSize = smallfont;
-
-    SV.db.SVLaborer.fontSize = largefont;

     SV.db.SVUnit.player.health.fontSize = largefont;
     SV.db.SVUnit.player.power.fontSize = largefont;
@@ -124,7 +123,7 @@ SET PACKAGE OPTIONS
 SV.Options.args.SVUI_Header = {
 	order = 1,
 	type = "header",
-	name = "You are using |cffff9900Super Villain UI|r - "..L["Version"]..format(": |cff99ff33%s|r", SV.___version),
+	name = "You are using |cffff9900Super Villain UI|r - "..L["Version"]..format(": |cff99ff33%s|r", SV.Version),
 	width = "full"
 }

@@ -132,8 +131,8 @@ SV.Options.args.primary = {
 	type = "group",
 	order = 1,
 	name = L["Main"],
-	get = function(j)return SV.db.system[j[#j]]end,
-	set = function(j, value)SV.db.system[j[#j]] = value end,
+	get = function(j)return SV.db[j[#j]]end,
+	set = function(j, value)SV.db[j[#j]] = value end,
 	args = {
 		introGroup1 = {
 			order = 1,
@@ -170,7 +169,7 @@ SV.Options.args.primary = {
 					type = "execute",
 					name = L["Move Frames"],
 					desc = L["Unlock various elements of the UI to be repositioned."],
-					func = function() SV:UseMentalo() end
+					func = function() SV.Mentalo:Toggle() end
 				},
 				ResetAllMovers = {
 					order = 5,
@@ -210,8 +209,8 @@ SV.Options.args.common = {
 	order = 2,
 	name = L["General"],
 	childGroups = "tab",
-	get = function(j)return SV.db.system[j[#j]]end,
-	set = function(j, value)SV.db.system[j[#j]] = value end,
+	get = function(key) return SV.db[key[#key]] end,
+	set = function(key, value) SV.db[key[#key]] = value end,
 	args = {
 		commonGroup = {
 			order = 1,
@@ -235,31 +234,31 @@ SV.Options.args.common = {
 									name = L["Auto Scale"],
 									desc = L["Automatically scale the User Interface based on your screen resolution"],
 									type = "toggle",
-									get = function(j)return SV.db.system.autoScale end,
-									set = function(j,value)SV.db.system.autoScale = value;SV:StaticPopup_Show("RL_CLIENT")end
+									get = function(j)return SV.db.general.autoScale end,
+									set = function(j,value)SV.db.general.autoScale = value;SV:StaticPopup_Show("RL_CLIENT")end
 								},
 								multiMonitor = {
 									order = 2,
 									name = L["Multi Monitor"],
 									desc = L["Adjust UI dimensions to accomodate for multiple monitor setups"],
 									type = "toggle",
-									get = function(j)return SV.db.system.multiMonitor end,
-									set = function(j,value)SV.db.system.multiMonitor = value;SV:StaticPopup_Show("RL_CLIENT")end
+									get = function(j)return SV.db.general.multiMonitor end,
+									set = function(j,value)SV.db.general.multiMonitor = value;SV:StaticPopup_Show("RL_CLIENT")end
 								},
 								hideErrorFrame = {
 									order = 3,
 									name = L["Hide Error Text"],
 									desc = L["Hides the red error text at the top of the screen while in combat."],
 									type = "toggle",
-									get = function(j)return SV.db.system.hideErrorFrame end,
-									set = function(j,value)SV.db.system.hideErrorFrame = value;SV:StaticPopup_Show("RL_CLIENT")end
+									get = function(j)return SV.db.general.hideErrorFrame end,
+									set = function(j,value)SV.db.general.hideErrorFrame = value;SV:StaticPopup_Show("RL_CLIENT")end
 								},
 								LoginMessage = {
 									order = 4,
 									type = 'toggle',
 									name = L['Login Message'],
-									get = function(j)return SV.db.system.loginmessage end,
-									set = function(j,value)SV.db.system.loginmessage = value end
+									get = function(j)return SV.db.general.loginmessage end,
+									set = function(j,value)SV.db.general.loginmessage = value end
 								},
 							}
 						},
@@ -294,7 +293,7 @@ SV.Options.args.common = {
 									max = 328,
 									step = 1,
 									get = function()return SV.db.SVOverride.lootRollWidth end,
-									set = function(a,b)OVR:ChangeDBVar(b,a[#a]); end,
+									set = function(a,b) OVR:ChangeDBVar(b,a[#a]); end,
 								},
 								lootRollHeight = {
 									order = 4,
@@ -305,7 +304,7 @@ SV.Options.args.common = {
 									max = 58,
 									step = 1,
 									get = function()return SV.db.SVOverride.lootRollHeight end,
-									set = function(a,b)OVR:ChangeDBVar(b,a[#a]); end,
+									set = function(a,b) OVR:ChangeDBVar(b,a[#a]); end,
 								},
 							}
 						},
@@ -319,72 +318,72 @@ SV.Options.args.common = {
 									order = 1,
 									type = 'toggle',
 									name = L["Enable Comic Popups"],
-									get = function(j)return SV.db.system.comix end,
-									set = function(j,value)SV.db.system.comix = value;SV:ToggleComix()end
+									get = function(j)return SV.db.general.comix end,
+									set = function(j,value) SV.db.general.comix = value; SV:ToggleComix() end
 								},
 								bigComix = {
 									order = 1,
 									type = 'toggle',
 									name = L["Include Large Comics"],
-									disabled = function() return not SV.db.system.comix end,
-									get = function(j) return SV.db.system.bigComix end,
-									set = function(j,value) SV.db.system.bigComix = value end
+									disabled = function() return not SV.db.general.comix end,
+									get = function(j) return SV.db.general.bigComix end,
+									set = function(j,value) SV.db.general.bigComix = value end
 								},
 								bubbles = {
 									order = 2,
 									type = "toggle",
 									name = L['Chat Bubbles Style'],
 									desc = L['Style the blizzard chat bubbles.'],
-									get = function(j)return SV.db.system.bubbles end,
-									set = function(j,value)SV.db.system.bubbles = value;SV:StaticPopup_Show("RL_CLIENT")end
+									get = function(j)return SV.db.general.bubbles end,
+									set = function(j,value)SV.db.general.bubbles = value;SV:StaticPopup_Show("RL_CLIENT")end
 								},
 								woot = {
 									order = 3,
 									type = 'toggle',
 									name = L["Say Thanks"],
 									desc = L["Thank someone when they cast specific spells on you. Typically resurrections"],
-									get = function(j)return SV.db.system.woot end,
-									set = function(j,value)SV.db.system.woot = value;SV:ToggleReactions()end
+									get = function(j)return SV.db.general.woot end,
+									set = function(j,value)SV.db.general.woot = value;SV:ToggleReactions()end
 								},
 								pvpinterrupt = {
 									order = 4,
 									type = 'toggle',
 									name = L["Report PVP Actions"],
 									desc = L["Announce your interrupts, as well as when you have been sapped!"],
-									get = function(j)return SV.db.system.pvpinterrupt end,
-									set = function(j,value)SV.db.system.pvpinterrupt = value;SV:ToggleReactions()end
+									get = function(j)return SV.db.general.pvpinterrupt end,
+									set = function(j,value)SV.db.general.pvpinterrupt = value;SV:ToggleReactions()end
 								},
 								lookwhaticando = {
 									order = 5,
 									type = 'toggle',
 									name = L["Report Spells"],
 									desc = L["Announce various helpful spells cast by players in your party/raid"],
-									get = function(j)return SV.db.system.lookwhaticando end,
-									set = function(j,value)SV.db.system.lookwhaticando = value;SV:ToggleReactions()end
+									get = function(j)return SV.db.general.lookwhaticando end,
+									set = function(j,value)SV.db.general.lookwhaticando = value;SV:ToggleReactions()end
 								},
 								sharingiscaring = {
 									order = 6,
 									type = 'toggle',
 									name = L["Report Shareables"],
 									desc = L["Announce when someone in your party/raid has laid a feast or repair bot"],
-									get = function(j)return SV.db.system.sharingiscaring end,
-									set = function(j,value)SV.db.system.sharingiscaring = value;SV:ToggleReactions()end
+									get = function(j)return SV.db.general.sharingiscaring end,
+									set = function(j,value)SV.db.general.sharingiscaring = value;SV:ToggleReactions()end
 								},
 								reactionChat = {
 									order = 7,
 									type = 'toggle',
 									name = L["Report in Chat"],
 									desc = L["Announcements will be sent to group chat channels"],
-									get = function(j)return SV.db.system.reactionChat end,
-									set = function(j,value)SV.db.system.reactionChat = value;SV:ToggleReactions()end
+									get = function(j)return SV.db.general.reactionChat end,
+									set = function(j,value)SV.db.general.reactionChat = value;SV:ToggleReactions()end
 								},
 								reactionEmote = {
 									order = 8,
 									type = 'toggle',
 									name = L["Auto Emotes"],
 									desc = L["Some announcements are accompanied by player emotes."],
-									get = function(j)return SV.db.system.reactionEmote end,
-									set = function(j,value)SV.db.system.reactionEmote = value;SV:ToggleReactions()end
+									get = function(j)return SV.db.general.reactionEmote end,
+									set = function(j,value)SV.db.general.reactionEmote = value;SV:ToggleReactions()end
 								},
 							}
 						},
@@ -398,18 +397,18 @@ SV.Options.args.common = {
 									order = 1,
 									type = "toggle",
 									name = L['Threat Thermometer'],
-									get = function(j)return SV.db.system.threatbar end,
-									set = function(j, value)SV.db.system.threatbar = value;SV:StaticPopup_Show("RL_CLIENT")end
+									get = function(j)return SV.db.general.threatbar end,
+									set = function(j, value)SV.db.general.threatbar = value;SV:StaticPopup_Show("RL_CLIENT")end
 								},
 								totems = {
 									order = 2,
 									type = "toggle",
 									name = L["Totems"],
 									get = function(j)
-										return SV.db.system.totems.enable
+										return SV.db.totems.enable
 									end,
 									set = function(j, value)
-										SV.db.system.totems.enable = value;
+										SV.db.totems.enable = value;
 										SV:StaticPopup_Show("RL_CLIENT")
 									end
 								},
@@ -418,8 +417,8 @@ SV.Options.args.common = {
 									order = 3,
 									name = L['Cooldown Text'],
 									desc = L["Display cooldown text on anything with the cooldown spiral."],
-									get = function(j)return SV.db.system.cooldown end,
-									set = function(j,value)SV.db.system.cooldown = value;SV:StaticPopup_Show("RL_CLIENT")end
+									get = function(j)return SV.db.general.cooldown end,
+									set = function(j,value)SV.db.general.cooldown = value;SV:StaticPopup_Show("RL_CLIENT")end
 								},
 								size = {
 									order = 4,
@@ -430,10 +429,10 @@ SV.Options.args.common = {
 									max = 60,
 									step = 1,
 									get = function(j)
-										return SV.db.system.totems[j[#j]]
+										return SV.db.totems[j[#j]]
 									end,
 									set = function(j, value)
-										SV.db.system.totems[j[#j]] = value
+										SV.db.totems[j[#j]] = value
 									end
 								},
 								spacing = {
@@ -445,10 +444,10 @@ SV.Options.args.common = {
 									max = 10,
 									step = 1,
 									get = function(j)
-										return SV.db.system.totems[j[#j]]
+										return SV.db.totems[j[#j]]
 									end,
 									set = function(j, value)
-										SV.db.system.totems[j[#j]] = value
+										SV.db.totems[j[#j]] = value
 									end
 								},
 								sortDirection = {
@@ -460,10 +459,10 @@ SV.Options.args.common = {
 										['DESCENDING'] = L['Descending']
 									},
 									get = function(j)
-										return SV.db.system.totems[j[#j]]
+										return SV.db.totems[j[#j]]
 									end,
 									set = function(j, value)
-										SV.db.system.totems[j[#j]] = value
+										SV.db.totems[j[#j]] = value
 									end
 								},
 								showBy = {
@@ -475,10 +474,10 @@ SV.Options.args.common = {
 										['HORIZONTAL'] = L['Horizontal']
 									},
 									get = function(j)
-										return SV.db.system.totems[j[#j]]
+										return SV.db.totems[j[#j]]
 									end,
 									set = function(j, value)
-										SV.db.system.totems[j[#j]] = value
+										SV.db.totems[j[#j]] = value
 									end
 								}
 							}
@@ -489,8 +488,8 @@ SV.Options.args.common = {
 					order = 2,
 					type = "group",
 					name = L["Media"],
-					get = function(j)return SV.db.system[j[#j]]end,
-					set = function(j, value)SV.db.system[j[#j]] = value end,
+					get = function(j)return SV.db[j[#j]] end,
+					set = function(j, value) SV.db[j[#j]] = value end,
 					args = {
 						texture = {
 							order = 1,
@@ -536,7 +535,10 @@ SV.Options.args.common = {
 									min = 6,
 									max = 22,
 									step = 1,
-									set = function(j,value)SV.db.media.fonts[j[#j]] = value;CommonFontSizeUpdate()end
+									get = function(key)
+										return SV.db.media.fonts[key[#key]]
+									end,
+									set = function(key,value)SV.db.media.fonts[key[#key]] = value; CommonFontSizeUpdate() end
 								},
 								unicodeSize = {
 									order = 2,
@@ -547,7 +549,10 @@ SV.Options.args.common = {
 									min = 6,
 									max = 22,
 									step = 1,
-									set = function(j,value)SV.db.media.fonts[j[#j]] = value;CommonFontSizeUpdate()end
+									get = function(key)
+										return SV.db.media.fonts[key[#key]]
+									end,
+									set = function(key,value)SV.db.media.fonts[key[#key]] = value; CommonFontSizeUpdate() end
 								},
 								fontSpacer1 = {
 									order = 3,
@@ -653,10 +658,10 @@ SV.Options.args.common = {
 						}
 					}
 				},
-				gear={
+				gear = {
 					order = 3,
 					type = 'group',
-					name = L['Gear Managment'],
+					name = SV.SVGear.TitleID,
 					get = function(a)return SV.db.SVGear[a[#a]]end,
 					set = function(a,b)SV.db.SVGear[a[#a]]=b;GEAR:ReLoad()end,
 					args={
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
index 1402902..0bb6d7b 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
+++ b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc
@@ -1,11 +1,12 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 4.4
-## Title: |cffFF9900SVUI |r|cffFFEF00Config O Matic|r
+## Version: 4.8
+## Title: |cffFF9900SVUI |r|cffFFEF00Config-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFConfig Options|r]
 ## RequiredDeps: SVUI
 ## LoadOnDemand: 1
 ## X-Notes: Special thanks to Elv and Tukz for their incredible work.
 ## X-Email: munglunch@gmail.com
+## X-SVUI-Header: Config-O-Matic

-_load.xml
+SVUI_ConfigOMatic.xml
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.xml b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.xml
new file mode 100644
index 0000000..8eac23d
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.xml
@@ -0,0 +1,6 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Include file='libs\_load.xml'/>
+	<Include file='language\_load.xml'/>
+	<Script file='SVUI_ConfigOMatic.lua'/>
+	<Include file='components\_load.xml'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/_load.xml b/Interface/AddOns/SVUI_ConfigOMatic/_load.xml
deleted file mode 100644
index 1157f0d..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/_load.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-	<Include file='libs\_load.xml'/>
-	<Include file='language\_load.xml'/>
-	<Script file='SVUI_ConfigOMatic.lua'/>
-	<Include file='modules\_load.xml'/>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/_load.xml b/Interface/AddOns/SVUI_ConfigOMatic/components/_load.xml
new file mode 100644
index 0000000..a350879
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/_load.xml
@@ -0,0 +1,15 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='map.lua'/>
+	<Script file='bar.lua'/>
+	<Script file='aura.lua'/>
+	<Script file='bag.lua'/>
+	<Script file='dock.lua'/>
+	<Script file='chat.lua'/>
+	<Script file='henchmen.lua'/>
+	<Script file='stat.lua'/>
+	<Script file='filter.lua'/>
+	<Script file='plate.lua'/>
+	<Script file='tip.lua'/>
+	<Include file='units\_load.xml'/>
+	<Script file='profiles.lua'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/aura.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/aura.lua
new file mode 100644
index 0000000..995723b
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/aura.lua
@@ -0,0 +1,318 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVAura;
+local MAP = SV.SVMap;
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+local auraOptionsTemplate = {
+	scaleGroup = {
+		order = 1,
+		guiInline = true,
+		type = "group",
+		name = L["Scale Options"],
+		args = {
+			size = {
+				type = "range",
+				name = L["Size"],
+				desc = L["Set the size of the individual auras."],
+				min = 16,
+				max = 60,
+				step = 2,
+				order = 1
+			},
+			wrapXOffset = {
+				order = 2,
+				type = "range",
+				name = L["Horizontal Spacing"],
+				min = 0,
+				max = 50,
+				step = 1
+			},
+			wrapYOffset = {
+				order = 3,
+				type = "range",
+				name = L["Vertical Spacing"],
+				min = 0,
+				max = 50,
+				step = 1
+			},
+		}
+	},
+	layoutGroup = {
+		order = 2,
+		guiInline = true,
+		type = "group",
+		name = L["Directional Options"],
+		args = {
+			showBy = {
+				type = "select",
+				order = 1,
+				name = L["Growth Direction"],
+				desc = L["The direction the auras will grow and then the direction they will grow after they reach the wrap after limit."],
+				values = {
+					DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
+					DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
+					UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
+					UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
+					RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
+					RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
+					LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
+					LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"])
+				}
+			},
+			wrapAfter = {
+				type = "range",
+				order = 2,
+				name = L["Wrap After"],
+				desc = L["Begin a new row or column after this many auras."],
+				min = 1,
+				max = 32,
+				step = 1
+			},
+			maxWraps = {
+				name = L["Max Wraps"],
+				order = 3,
+				desc = L["Limit the number of rows or columns."],
+				type = "range",
+				min = 1,
+				max = 32,
+				step = 1
+			},
+		}
+	},
+	sortGroup = {
+		order = 1,
+		guiInline = true,
+		type = "group",
+		name = L["Sorting Options"],
+		args = {
+			sortMethod = {
+				order = 1,
+				name = L["Sort Method"],
+				desc = L["Defines how the group is sorted."],
+				type = "select",
+				values = {
+					["INDEX"] = L["Index"],
+					["TIME"] = L["Time"],
+					["NAME"] = L["Name"]
+				}
+			},
+			sortDir = {
+				order = 2,
+				name = L["Sort Direction"],
+				desc = L["Defines the sort order of the selected sort method."],
+				type = "select",
+				values = {
+					["+"] = L["Ascending"],
+					["-"] = L["Descending"]
+				}
+			},
+			isolate = {
+				order = 3,
+				name = L["Seperate"],
+				desc = L["Indicate whether buffs you cast yourself should be separated before or after."],
+				type = "select",
+				values = {
+					[-1] = L["Other's First"],
+					[0] = L["No Sorting"],
+					[1] = L["Your Auras First"]
+				}
+			}
+		}
+	},
+}
+
+SV.Options.args.SVAura = {
+	type = "group",
+	name = MOD.TitleID,
+	childGroups = "tab",
+	get = function(a)return SV.db.SVAura[a[#a]]end,
+	set = function(a,b)
+		MOD:ChangeDBVar(b,a[#a]);
+		MOD:UpdateAuraHeader(SVUI_PlayerBuffs, "buffs")
+		MOD:UpdateAuraHeader(SVUI_PlayerDebuffs, "debuffs")
+	end,
+	args = {
+		intro = {
+			order = 1,
+			type = "description",
+			name = L["AURAS_DESC"]
+		},
+		enable = {
+			order = 2,
+			type = "toggle",
+			name = L["Enable"],
+			get = function(a)return SV.db.SVAura.enable end,
+			set = function(a,b)SV.db.SVAura.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
+		},
+		disableBlizzard = {
+			order = 3,
+			type = "toggle",
+			name = L["Disabled Blizzard"],
+			get = function(a)return SV.db.SVAura.disableBlizzard end,
+			set = function(a,b)SV.db.SVAura.disableBlizzard = b;SV:StaticPopup_Show("RL_CLIENT")end
+		},
+		auraGroups = {
+			order = 4,
+			type = "group",
+			name = L["Options"],
+			childGroups = "tree",
+			args = {
+				common = {
+					order = 10,
+					type = "group",
+					name = L["General"],
+					args = {
+						fadeBy = {
+							type = "range",
+							name = L["Fade Threshold"],
+							desc = L["Threshold before text changes red, goes into decimal form, and the icon will fade. Set to -1 to disable."],
+							min = -1,
+							max = 30,
+							step = 1,
+							order = 1
+						},
+						font = {
+							type = "select",
+							dialogControl = "LSM30_Font",
+							order = 2,
+							name = L["Font"],
+							values = AceGUIWidgetLSMlists.font
+						},
+						fontSize = {
+							order = 3,
+							name = L["Font Size"],
+							type = "range",
+							min = 6,
+							max = 22,
+							step = 1
+						},
+						fontOutline = {
+							order = 4,
+							name = L["Font Outline"],
+							desc = L["Set the font outline."],
+							type = "select",
+							values = {
+								["NONE"] = L["None"],
+								["OUTLINE"] = "OUTLINE",
+								["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+								["THICKOUTLINE"] = "THICKOUTLINE"
+							}
+						},
+						timeOffsetH = {
+							order = 5,
+							name = L["Time xOffset"],
+							type = "range",
+							min = -60,
+							max = 60,
+							step = 1
+						},
+						timeOffsetV = {
+							order = 6,
+							name = L["Time yOffset"],
+							type = "range",
+							min = -60,
+							max = 60,
+							step = 1
+						},
+						countOffsetH = {
+							order = 7,
+							name = L["Count xOffset"],
+							type = "range",
+							min = -60,
+							max = 60,
+							step = 1
+						},
+						countOffsetV = {
+							order = 8,
+							name = L["Count yOffset"],
+							type = "range",
+							min = -60,
+							max = 60,
+							step = 1
+						}
+					}
+				},
+				hyperBuffs = {
+					order = 20,
+					type = "group",
+					name = L["Hyper Buffs"],
+					get = function(b)return SV.db.SVAura.hyperBuffs[b[#b]]end,
+					set = function(a,b)
+						MOD:ChangeDBVar(b,a[#a],"hyperBuffs");
+						MOD:ToggleConsolidatedBuffs();
+						SV.SVMap:ReLoad();
+						MOD:UpdateAuraHeader(SVUI_PlayerBuffs, "buffs")
+					end,
+					args = {
+						enable = {
+							order = 1,
+							type = "toggle",
+							name = L["Enable"],
+							desc = L["Display the consolidated buffs bar."],
+							disabled = function()return not SV.db.SVMap.enable end,
+						},
+						filter = {
+							order = 2,
+							name = L["Filter Hyper"],
+							desc = L["Only show consolidated icons on the consolidated bar that your class/spec is interested in. This is useful for raid leading."],
+							type = "toggle",
+							disabled = function()return not SV.db.SVAura.hyperBuffs.enable end,
+						}
+					}
+				},
+				buffs = {
+					order = 30,
+					type = "group",
+					name = L["Buffs"],
+					get = function(b)return SV.db.SVAura.buffs[b[#b]]end,
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"buffs");MOD:UpdateAuraHeader(SVUI_PlayerBuffs, "buffs")end,
+					args = auraOptionsTemplate
+				},
+				debuffs = {
+					order = 40,
+					type = "group",
+					name = L["Debuffs"],
+					get = function(b)return SV.db.SVAura.debuffs[b[#b]]end,
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"debuffs");MOD:UpdateAuraHeader(SVUI_PlayerDebuffs, "debuffs")end,
+					args = auraOptionsTemplate
+				}
+			}
+		},
+	}
+}
+
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua
new file mode 100644
index 0000000..ee248ce
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/bag.lua
@@ -0,0 +1,312 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+
+local MOD = SV.SVBag
+
+local pointList = {
+	["TOPLEFT"] = "TOPLEFT",
+	["TOPRIGHT"] = "TOPRIGHT",
+	["BOTTOMLEFT"] = "BOTTOMLEFT",
+	["BOTTOMRIGHT"] = "BOTTOMRIGHT",
+}
+
+SV.Options.args.SVBag = {
+	type = 'group',
+	name = MOD.TitleID,
+	childGroups = "tab",
+	get = function(a)return SV.db.SVBag[a[#a]]end,
+	set = function(a,b)MOD:ChangeDBVar(b,a[#a]) end,
+	args = {
+		intro = {
+			order = 1,
+			type = "description",
+			name = L["BAGS_DESC"]
+		},
+		enable = {
+			order = 2,
+			type = "toggle",
+			name = L["Enable"],
+			desc = L["Enable/Disable the all-in-one bag."],
+			get = function(a)return SV.db.SVBag.enable end,
+			set = function(a,b)SV.db.SVBag.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
+		},
+		bagGroups={
+			order = 3,
+			type = 'group',
+			name = L['Bag Options'],
+			guiInline = true,
+			args = {
+				common={
+					order = 1,
+						type = "group",
+						guiInline = true,
+						name = L["General"],
+						disabled = function()return not SV.db.SVBag.enable end,
+						args = {
+						bagSize = {
+							order = 1,
+							type = "range",
+							name = L["Button Size (Bag)"],
+							desc = L["The size of the individual buttons on the bag frame."],
+							min = 15,
+							max = 45,
+							step = 1,
+							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout()end
+						},
+						bankSize = {
+							order = 2,
+							type = "range",
+							name = L["Button Size (Bank)"],
+							desc = L["The size of the individual buttons on the bank frame."],
+							min = 15,
+							max = 45,
+							step = 1,
+							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout(true)end
+						},
+						sortInverted = {
+							order = 3,
+							type = "toggle",
+							name = L["Sort Inverted"],
+							desc = L["Direction the bag sorting will use to allocate the items."]
+						},
+						bagWidth = {
+							order = 4,
+							type = "range",
+							name = L["Panel Width (Bags)"],
+							desc = L["Adjust the width of the bag frame."],
+							min = 150,
+							max = 700,
+							step = 1,
+							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout()end,
+							disabled = function()return SV.db.SVBag.alignToChat end
+						},
+						bankWidth = {
+							order = 5,
+							type = "range",
+							name = L["Panel Width (Bank)"],
+							desc = L["Adjust the width of the bank frame."],
+							min = 150,
+							max = 700,
+							step = 1,
+							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout(true)end,
+							disabled = function()return SV.db.SVBag.alignToChat end
+						},
+						currencyFormat = {
+							order = 6,
+							type = "select",
+							name = L["Currency Format"],
+							desc = L["The display format of the currency icons that get displayed below the main bag. (You have to be watching a currency for this to display)"],
+							values = {
+								["ICON"] = L["Icons Only"],
+								["ICON_TEXT"] = L["Icons and Text"]
+							},
+							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:RefreshTokens()end
+						},
+						bagTools = {
+							order = 7,
+							type = "toggle",
+							name = L["Profession Tools"],
+							desc = L["Enable/Disable Prospecting, Disenchanting and Milling buttons on the bag frame."],
+							set = function(a,b)MOD:ChangeDBVar(b,a[#a])SV:StaticPopup_Show("RL_CLIENT")end
+						},
+						ignoreItems = {
+							order = 100,
+							name = L["Ignore Items"],
+							desc = L["List of items to ignore when sorting. If you wish to add multiple items you must seperate the word with a comma."],
+							type = "input",
+							width = "full",
+							multiline = true,
+							set = function(a,b) SV.db.SVBag[a[#a]] = b end
+						}
+					}
+				},
+				position = {
+					order = 2,
+					type = "group",
+					guiInline = true,
+					name = L["Bag/Bank Positioning"],
+					disabled = function()return not SV.db.SVBag.enable end,
+					args = {
+						alignToChat = {
+							order = 1,
+							type = "toggle",
+							name = L["Align To Chat"],
+							desc = L["Align the width of the bag frame to fit inside the chat box."],
+							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout()MOD:Layout(true)end
+						},
+						bags = {
+							order = 2,
+							type = "group",
+							name = L["Bag Position"],
+							guiInline = true,
+							get = function(key) return SV.db.SVBag.bags[key[#key]] end,
+							set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bags"); MOD:ModifyBags() end,
+							disabled = function() return not SV.db.SVBag.enable end,
+							args = {
+								point = {
+									order = 1,
+									name = L["Anchor Point"],
+									type = "select",
+									values = pointList,
+								},
+								xOffset = {
+									order = 2,
+									type = "range",
+									name = L["X Offset"],
+									width = "full",
+									min = -600,
+									max = 600,
+									step = 1,
+								},
+								yOffset = {
+									order = 3,
+									type = "range",
+									name = L["Y Offset"],
+									width = "full",
+									min = -600,
+									max = 600,
+									step = 1,
+								},
+							}
+						},
+						bank = {
+							order = 3,
+							type = "group",
+							name = L["Bank Position"],
+							guiInline = true,
+							get = function(key) return SV.db.SVBag.bank[key[#key]] end,
+							set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bank"); MOD:ModifyBags() end,
+							disabled = function() return not SV.db.SVBag.enable end,
+							args = {
+								point = {
+									order = 1,
+									name = L["Anchor Point"],
+									type = "select",
+									values = pointList,
+								},
+								xOffset = {
+									order = 2,
+									type = "range",
+									name = L["X Offset"],
+									width = "full",
+									min = -600,
+									max = 600,
+									step = 1,
+								},
+								yOffset = {
+									order = 3,
+									type = "range",
+									name = L["Y Offset"],
+									width = "full",
+									min = -600,
+									max = 600,
+									step = 1,
+								},
+							}
+						},
+					}
+				},
+
+				bagBar = {
+					order = 4,
+					type = "group",
+					name = L["Bag-Bar"],
+					guiInline = true,
+					get = function(key) return SV.db.SVBag.bagBar[key[#key]] end,
+					set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bagBar"); MOD:ModifyBagBar() end,
+					args={
+						enable = {
+							order = 1,
+							type = "toggle",
+							name = L["Enable"],
+							desc = L["Enable/Disable the Bag-Bar."],
+							get = function() return SV.db.SVBag.bagBar.enable end,
+							set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bagBar"); SV:StaticPopup_Show("RL_CLIENT")end
+						},
+						mouseover = {
+							order = 2,
+							name = L["Mouse Over"],
+							desc = L["Hidden unless you mouse over the frame."],
+							type = "toggle"
+						},
+						showBackdrop = {
+							order = 3,
+							name = L["Backdrop"],
+							desc = L["Show/Hide bag bar backdrop"],
+							type = "toggle"
+						},
+						size = {
+							order = 4,
+							type = "range",
+							name = L["Button Size"],
+							desc = L["Set the size of your bag buttons."],
+							min = 24,
+							max = 60,
+							step = 1
+						},
+						spacing = {
+							order = 5,
+							type = "range",
+							name = L["Button Spacing"],
+							desc = L["The spacing between buttons."],
+							min = 1,
+							max = 10,
+							step = 1
+						},
+						sortDirection = {
+							order = 6,
+							type = "select",
+							name = L["Sort Direction"],
+							desc = L["The direction that the bag frames will grow from the anchor."],
+							values = {
+								["ASCENDING"] = L["Ascending"],
+								["DESCENDING"] = L["Descending"]
+							}
+						},
+						showBy = {
+							order = 7,
+							type = "select",
+							name = L["Bar Direction"],
+							desc = L["The direction that the bag frames be (Horizontal or Vertical)."],
+							values = {
+								["VERTICAL"] = L["Vertical"],
+								["HORIZONTAL"] = L["Horizontal"]
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/bar.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/bar.lua
new file mode 100644
index 0000000..b6e59a7
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/bar.lua
@@ -0,0 +1,799 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local SVLib = LibSuperVillain;
+local L = SV.L;
+local MOD = SV.SVBar;
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+local bar_configs;
+local function BarConfigLoader()
+	local b = {["TOPLEFT"] = "TOPLEFT", ["TOPRIGHT"] = "TOPRIGHT", ["BOTTOMLEFT"] = "BOTTOMLEFT", ["BOTTOMRIGHT"] = "BOTTOMRIGHT"}
+	for d = 1, 6 do
+		local name = L["Bar "]..d;
+		bar_configs["Bar"..d] = {
+			order = d,
+			name = name,
+			type = "group",
+			order = (d  +  10),
+			guiInline = false,
+			disabled = function()return not SV.db.SVBar.enable end,
+			get = function(key)
+				return SV.db.SVBar["Bar"..d][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], "Bar"..d);
+				MOD:RefreshBar("Bar"..d)
+			end,
+			args = {
+				enable = {
+					order = 1,
+					type = "toggle",
+					name = L["Enable"],
+				},
+				backdrop = {
+					order = 2,
+					name = L["Background"],
+					type = "toggle",
+					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
+				},
+				mouseover = {
+					order = 3,
+					name = L["Mouse Over"],
+					desc = L["The frame is not shown unless you mouse over the frame."],
+					type = "toggle",
+					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
+				},
+				restorePosition = {
+					order = 4,
+					type = "execute",
+					name = L["Restore Bar"],
+					desc = L["Restore the actionbars default settings"],
+					func = function()
+						SV:ResetData("SVBar", "Bar"..d)
+						SV.Mentalo:Reset("Bar "..d)
+						MOD:RefreshBar("Bar"..d)
+					end,
+					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
+				},
+				adjustGroup = {
+					name = L["Bar Adjustments"],
+					type = "group",
+					order = 5,
+					guiInline = true,
+					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
+					args = {
+						point = {
+							order = 1,
+							type = "select",
+							name = L["Anchor Point"],
+							desc = L["The first button anchors itself to this point on the bar."],
+							values = b
+						},
+						buttons = {
+							order = 2,
+							type = "range",
+							name = L["Buttons"],
+							desc = L["The amount of buttons to display."],
+							min = 1,
+							max = NUM_ACTIONBAR_BUTTONS,
+							step = 1
+						},
+						buttonsPerRow = {
+							order = 3,
+							type = "range",
+							name = L["Buttons Per Row"],
+							desc = L["The amount of buttons to display per row."],
+							min = 1,
+							max = NUM_ACTIONBAR_BUTTONS,
+							step = 1
+						},
+						buttonsize = {
+							type = "range",
+							name = L["Button Size"],
+							desc = L["The size of the action buttons."],
+							min = 15,
+							max = 60,
+							step = 1,
+							order = 4
+						},
+						buttonspacing = {
+							type = "range",
+							name = L["Button Spacing"],
+							desc = L["The spacing between buttons."],
+							min = 1,
+							max = 10,
+							step = 1,
+							order = 5
+						},
+						alpha = {
+							order = 6,
+							type = "range",
+							name = L["Alpha"],
+							isPercent = true,
+							min = 0,
+							max = 1,
+							step = 0.01
+						},
+					}
+				},
+				pagingGroup = {
+					name = L["Bar Paging"],
+					type = "group",
+					order = 6,
+					guiInline = true,
+					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
+					args = {
+						useCustomPaging = {
+							order = 1,
+							type = "toggle",
+							name = L["Enable"],
+							desc = L["Allow the use of custom paging for this bar"],
+							get = function()return SV.db.SVBar["Bar"..d].useCustomPaging end,
+							set = function(e, f)
+								SV.db.SVBar["Bar"..d].useCustomPaging = f;
+								MOD:UpdateBarPagingDefaults();
+								MOD:RefreshBar("Bar"..d)
+							end
+						},
+						resetStates = {
+							order = 2,
+							type = "execute",
+							name = L["Restore Defaults"],
+							desc = L["Restore default paging attributes for this bar"],
+							func = function()
+								SV:ResetData("SVBar", "Bar"..d, "customPaging")
+								MOD:UpdateBarPagingDefaults();
+								MOD:RefreshBar("Bar"..d)
+							end
+						},
+						customPaging = {
+							order = 3,
+							type = "input",
+							width = "full",
+							name = L["Paging"],
+							desc = L["|cffFF0000ADVANCED:|r Set the paging attributes for this bar"],
+							get = function(e)return SV.db.SVBar["Bar"..d].customPaging[SV.class] end,
+							set = function(e, f)
+								SV.db.SVBar["Bar"..d].customPaging[SV.class] = f;
+								MOD:UpdateBarPagingDefaults();
+								MOD:RefreshBar("Bar"..d)
+							end,
+							disabled = function()return not SV.db.SVBar["Bar"..d].useCustomPaging end,
+						},
+						useCustomVisibility = {
+							order = 4,
+							type = "toggle",
+							name = L["Enable"],
+							desc = L["Allow the use of custom paging for this bar"],
+							get = function()return SV.db.SVBar["Bar"..d].useCustomVisibility end,
+							set = function(e, f)
+								SV.db.SVBar["Bar"..d].useCustomVisibility = f;
+								MOD:UpdateBarPagingDefaults();
+								MOD:RefreshBar("Bar"..d)
+							end
+						},
+						resetVisibility = {
+							order = 5,
+							type = "execute",
+							name = L["Restore Defaults"],
+							desc = L["Restore default visibility attributes for this bar"],
+							func = function()
+								SV:ResetData("SVBar", "Bar"..d, "customVisibility")
+								MOD:UpdateBarPagingDefaults();
+								MOD:RefreshBar("Bar"..d)
+							end
+						},
+						customVisibility = {
+							order = 6,
+							type = "input",
+							width = "full",
+							name = L["Visibility"],
+							desc = L["|cffFF0000ADVANCED:|r Set the visibility attributes for this bar"],
+							get = function(e)return SV.db.SVBar["Bar"..d].customVisibility end,
+							set = function(e, f)
+								SV.db.SVBar["Bar"..d].customVisibility = f;
+								MOD:UpdateBarPagingDefaults();
+								MOD:RefreshBar("Bar"..d)
+							end,
+							disabled = function()return not SV.db.SVBar["Bar"..d].useCustomVisibility end,
+						},
+
+					}
+				}
+			}
+		}
+	end
+
+	bar_configs["Micro"] = {
+		order = d,
+		name = L["Micro Menu"],
+		type = "group",
+		order = 100,
+		guiInline = false,
+		disabled = function()return not SV.db.SVBar.enable end,
+		get = function(key)
+			return SV.db.SVBar["Micro"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], "Micro");
+			MOD:UpdateMicroButtons()
+		end,
+		args = {
+			enable = {
+				order = 1,
+				type = "toggle",
+				name = L["Enable"]
+			},
+			mouseover = {
+				order = 2,
+				name = L["Mouse Over"],
+				desc = L["The frame is not shown unless you mouse over the frame."],
+				disabled = function()return not SV.db.SVBar["Micro"].enable end,
+				type = "toggle"
+			},
+			buttonsize = {
+				order = 3,
+				type = "range",
+				name = L["Button Size"],
+				desc = L["The size of the action buttons."],
+				min = 15,
+				max = 60,
+				step = 1,
+				disabled = function()return not SV.db.SVBar["Micro"].enable end,
+			},
+			buttonspacing = {
+				order = 4,
+				type = "range",
+				name = L["Button Spacing"],
+				desc = L["The spacing between buttons."],
+				min = 1,
+				max = 10,
+				step = 1,
+				disabled = function()return not SV.db.SVBar["Micro"].enable end,
+			},
+		}
+	};
+
+	bar_configs["Pet"] = {
+		order = d,
+		name = L["Pet Bar"],
+		type = "group",
+		order = 200,
+		guiInline = false,
+		disabled = function()return not SV.db.SVBar.enable end,
+		get = function(e)return SV.db.SVBar["Pet"][e[#e]]end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], "Pet");
+			MOD:RefreshBar("Pet")
+		end,
+		args = {
+			enable = {
+				order = 1,
+				type = "toggle",
+				name = L["Enable"]
+			},
+			backdrop = {
+				order = 2,
+				name = L["Background"],
+				type = "toggle",
+				disabled = function()return not SV.db.SVBar["Pet"].enable end,
+			},
+			mouseover = {
+				order = 3,
+				name = L["Mouse Over"],
+				desc = L["The frame is not shown unless you mouse over the frame."],
+				type = "toggle",
+				disabled = function()return not SV.db.SVBar["Pet"].enable end,
+			},
+			restorePosition = {
+				order = 4,
+				type = "execute",
+				name = L["Restore Bar"],
+				desc = L["Restore the actionbars default settings"],
+				func = function()
+					SV:ResetData("SVBar", "Pet")
+					SV.Mentalo:Reset("Pet Bar")
+					MOD:RefreshBar("Pet")
+				end,
+				disabled = function()return not SV.db.SVBar["Pet"].enable end,
+			},
+			adjustGroup = {
+				name = L["Bar Adjustments"],
+				type = "group",
+				order = 5,
+				guiInline = true,
+				disabled = function()return not SV.db.SVBar["Pet"].enable end,
+				args = {
+					point = {
+						order = 1,
+						type = "select",
+						name = L["Anchor Point"],
+						desc = L["The first button anchors itself to this point on the bar."],
+						values = b
+					},
+					buttons = {
+						order = 2,
+						type = "range",
+						name = L["Buttons"],
+						desc = L["The amount of buttons to display."],
+						min = 1,
+						max = NUM_PET_ACTION_SLOTS,
+						step = 1
+					},
+					buttonsPerRow = {
+						order = 3,
+						type = "range",
+						name = L["Buttons Per Row"],
+						desc = L["The amount of buttons to display per row."],
+						min = 1,
+						max = NUM_PET_ACTION_SLOTS,
+						step = 1
+					},
+					buttonsize = {
+						order = 4,
+						type = "range",
+						name = L["Button Size"],
+						desc = L["The size of the action buttons."],
+						min = 15,
+						max = 60,
+						step = 1,
+						disabled = function()return not SV.db.SVBar.enable end
+					},
+					buttonspacing = {
+						order = 5,
+						type = "range",
+						name = L["Button Spacing"],
+						desc = L["The spacing between buttons."],
+						min = 1,
+						max = 10,
+						step = 1,
+						disabled = function()return not SV.db.SVBar.enable end
+					},
+					alpha = {
+						order = 6,
+						type = "range",
+						name = L["Alpha"],
+						isPercent = true,
+						min = 0,
+						max = 1,
+						step = 0.01
+					},
+				}
+			},
+			customGroup = {
+				name = L["Visibility Options"],
+				type = "group",
+				order = 6,
+				guiInline = true,
+				args = {
+					useCustomVisibility = {
+						order = 1,
+						type = "toggle",
+						name = L["Enable"],
+						desc = L["Allow the use of custom paging for this bar"],
+						get = function()return SV.db.SVBar["Pet"].useCustomVisibility end,
+						set = function(e,f)
+							SV.db.SVBar["Pet"].useCustomVisibility = f;
+							MOD:RefreshBar("Pet")
+						end
+					},
+					resetVisibility = {
+						order = 2,
+						type = "execute",
+						name = L["Restore Defaults"],
+						desc = L["Restore default visibility attributes for this bar"],
+						func = function()
+							SV:ResetData("SVBar", "Pet", "customVisibility")
+							MOD:RefreshBar("Pet")
+						end
+					},
+					customVisibility = {
+						order = 3,
+						type = "input",
+						width = "full",
+						name = L["Visibility"],
+						desc = L["|cffFF0000ADVANCED:|r Set the visibility attributes for this bar"],
+						get = function(e)return SV.db.SVBar["Pet"].customVisibility end,
+						set = function(e,f)
+							SV.db.SVBar["Pet"].customVisibility = f;
+							MOD:RefreshBar("Pet")
+						end,
+						disabled = function()return not SV.db.SVBar["Pet"].useCustomVisibility end,
+					},
+				}
+			}
+		}
+	};
+
+	bar_configs["Stance"] = {
+		order = d,
+		name = L["Stance Bar"],
+		type = "group",
+		order = 300,
+		guiInline = false,
+		disabled = function()return not SV.db.SVBar.enable end,
+		get = function(e)return SV.db.SVBar["Stance"][e[#e]]end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], "Stance");
+			MOD:RefreshBar("Stance")
+		end,
+		args = {
+			enable = {
+				order = 1,
+				type = "toggle",
+				name = L["Enable"]
+			},
+			backdrop = {
+				order = 2,
+				name = L["Background"],
+				type = "toggle",
+				disabled = function()return not SV.db.SVBar["Stance"].enable end,
+			},
+			mouseover = {
+				order = 3,
+				name = L["Mouse Over"],
+				desc = L["The frame is not shown unless you mouse over the frame."],
+				type = "toggle",
+				disabled = function()return not SV.db.SVBar["Stance"].enable end,
+			},
+			restorePosition = {
+				order = 4,
+				type = "execute",
+				name = L["Restore Bar"],
+				desc = L["Restore the actionbars default settings"],
+				func = function()
+					SVLib:SetDefault("SVBar","Stance")
+					SV.Mentalo:Reset("Stance Bar")
+					MOD:RefreshBar("Stance")
+				end,
+				disabled = function()return not SV.db.SVBar["Stance"].enable end,
+			},
+			adjustGroup = {
+				name = L["Bar Adjustments"],
+				type = "group",
+				order = 5,
+				guiInline = true,
+				disabled = function()return not SV.db.SVBar["Stance"].enable end,
+				args = {
+					point = {
+						order = 1,
+						type = "select",
+						name = L["Anchor Point"],
+						desc = L["The first button anchors itself to this point on the bar."],
+						values = b
+					},
+					buttons = {
+						order = 2,
+						type = "range",
+						name = L["Buttons"],
+						desc = L["The amount of buttons to display."],
+						min = 1,
+						max = NUM_STANCE_SLOTS,
+						step = 1
+					},
+					buttonsPerRow = {
+						order = 3,
+						type = "range",
+						name = L["Buttons Per Row"],
+						desc = L["The amount of buttons to display per row."],
+						min = 1,
+						max = NUM_STANCE_SLOTS,
+						step = 1
+					},
+					buttonsize = {
+						order = 4,
+						type = "range",
+						name = L["Button Size"],
+						desc = L["The size of the action buttons."],
+						min = 15,
+						max = 60,
+						step = 1
+					},
+					buttonspacing = {
+						order = 5,
+						type = "range",
+						name = L["Button Spacing"],
+						desc = L["The spacing between buttons."],
+						min = 1,
+						max = 10,
+						step = 1
+					},
+					alpha = {
+						order = 6,
+						type = "range",
+						name = L["Alpha"],
+						isPercent = true,
+						min = 0,
+						max = 1,
+						step = 0.01
+					},
+				}
+			},
+			customGroup = {
+				name = L["Visibility Options"],
+				type = "group",
+				order = 6,
+				guiInline = true,
+				disabled = function()return not SV.db.SVBar["Stance"].enable end,
+				args = {
+					style = {
+						order = 1,
+						type = "select",
+						name = L["Style"],
+						desc = L["This setting will be updated upon changing stances."],
+						values = {
+							["darkenInactive"] = L["Darken Inactive"],
+							["classic"] = L["Classic"]
+						}
+					},
+					spacer1 = {
+						order = 2,
+						type = "description",
+						name = "",
+					},
+					spacer2 = {
+						order = 3,
+						type = "description",
+						name = "",
+					},
+					useCustomVisibility = {
+						order = 4,
+						type = "toggle",
+						name = L["Enable"],
+						desc = L["Allow the use of custom paging for this bar"],
+						get = function()return SV.db.SVBar["Stance"].useCustomVisibility end,
+						set = function(e,f)
+							SV.db.SVBar["Stance"].useCustomVisibility = f;
+							MOD:RefreshBar("Stance")
+						end
+					},
+					resetVisibility = {
+						order = 5,
+						type = "execute",
+						name = L["Restore Defaults"],
+						desc = L["Restore default visibility attributes for this bar"],
+						func = function()
+							SV:ResetData("SVBar", "Stance", "customVisibility")
+							MOD:RefreshBar("Stance")
+						end
+					},
+					customVisibility = {
+						order = 6,
+						type = "input",
+						width = "full",
+						name = L["Visibility"],
+						desc = L["|cffFF0000ADVANCED:|r Set the visibility attributes for this bar"],
+						get = function(e)return SV.db.SVBar["Stance"].customVisibility end,
+						set = function(e,f)
+							SV.db.SVBar["Stance"].customVisibility = f;
+							MOD:RefreshBar("Stance")
+						end,
+						disabled = function()return not SV.db.SVBar["Stance"].useCustomVisibility end,
+					},
+				}
+			}
+		}
+	}
+end
+
+SV.Options.args.SVBar = {
+	type = "group",
+	name = MOD.TitleID,
+	childGroups = "tab",
+	get = function(key)
+		return SV.db.SVBar[key[#key]]
+	end,
+	set = function(key, value)
+		MOD:ChangeDBVar(value, key[#key]);
+		MOD:RefreshActionBars()
+	end,
+	args = {
+		enable = {
+			order = 1,
+			type = "toggle",
+			name = L["Enable"],
+			get = function(e)return SV.db.SVBar[e[#e]]end,
+			set = function(e, f)SV.db.SVBar[e[#e]] = f;SV:StaticPopup_Show("RL_CLIENT")end
+		},
+		barGroup = {
+			order = 2,
+			type = "group",
+			name = L["Bar Options"],
+			childGroups = "tree",
+			disabled = function()return not SV.db.SVBar.enable end,
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						macrotext = {
+							type = "toggle",
+							name = L["Macro Text"],
+							desc = L["Display macro names on action buttons."],
+							order = 2
+						},
+						hotkeytext = {
+							type = "toggle",
+							name = L["Keybind Text"],
+							desc = L["Display bind names on action buttons."],
+							order = 3
+						},
+						keyDown = {
+							type = "toggle",
+							name = L["Key Down"],
+							desc = OPTION_TOOLTIP_ACTION_BUTTON_USE_KEY_DOWN,
+							order = 4
+						},
+						showGrid = {
+							type = "toggle",
+							name = ALWAYS_SHOW_MULTIBARS_TEXT,
+							desc = OPTION_TOOLTIP_ALWAYS_SHOW_MULTIBARS,
+							order = 5
+						},
+						unlock = {
+							type = "select",
+							width = "full",
+							name = PICKUP_ACTION_KEY_TEXT,
+							desc = L["The button you must hold down in order to drag an ability to another action button."],
+							order = 6,
+							values = {
+								["SHIFT"] = SHIFT_KEY,
+								["ALT"] = ALT_KEY,
+								["CTRL"] = CTRL_KEY
+							}
+						},
+						unc = {
+							type = "color",
+							order = 7,
+							name = L["Out of Range"],
+							desc = L["Color of the actionbutton when out of range."],
+							hasAlpha = true,
+							get = function(key)
+								local color = SV.db.SVBar[key[#key]]
+								return color[1], color[2], color[3], color[4]
+							end,
+							set = function(key, rValue, gValue, bValue, aValue)
+								SV.db.SVBar[key[#key]] = {rValue, gValue, bValue, aValue}
+								MOD:RefreshActionBars()
+							end,
+						},
+						unpc = {
+							type = "color",
+							order = 8,
+							name = L["Out of Power"],
+							desc = L["Color of the actionbutton when out of power (Mana, Rage, Focus, Holy Power)."],
+							hasAlpha = true,
+							get = function(key)
+								local color = SV.db.SVBar[key[#key]]
+								return color[1], color[2], color[3], color[4]
+							end,
+							set = function(key, rValue, gValue, bValue, aValue)
+								SV.db.SVBar[key[#key]] = {rValue, gValue, bValue, aValue}
+								MOD:RefreshActionBars()
+							end,
+						},
+						rightClickSelf = {
+							type = "toggle",
+							name = L["Self Cast"],
+							desc = L["Right-click any action button to self cast"],
+							order = 9
+						}
+					}
+				},
+				fontGroup = {
+					order = 2,
+					type = "group",
+					disabled = function()return not SV.db.SVBar.enable end,
+					name = L["Fonts"],
+					args = {
+						font = {
+							type = "select",
+							width = "full",
+							dialogControl = "LSM30_Font",
+							order = 1,
+							name = L["Font"],
+							values = AceGUIWidgetLSMlists.font
+						},
+						fontSize = {
+							order = 2,
+							width = "full",
+							name = L["Font Size"],
+							type = "range",
+							min = 6,
+							max = 22,
+							step = 1
+						},
+						fontOutline = {
+							order = 3,
+							width = "full",
+							name = L["Font Outline"],
+							desc = L["Set the font outline."],
+							type = "select",
+							values = {
+								["NONE"] = L["None"],
+								["OUTLINE"] = "OUTLINE",
+								["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+								["THICKOUTLINE"] = "THICKOUTLINE"
+							}
+						},
+						countFont = {
+							type = "select",
+							width = "full",
+							dialogControl = "LSM30_Font",
+							order = 4,
+							name = L["Count Font"],
+							values = AceGUIWidgetLSMlists.font
+						},
+						countFontSize = {
+							order = 5,
+							width = "full",
+							name = L["Count Font Size"],
+							type = "range",
+							min = 6,
+							max = 22,
+							step = 1
+						},
+						countFontOutline = {
+							order = 6,
+							width = "full",
+							name = L["Count Font Outline"],
+							desc = L["Set the font outline."],
+							type = "select",
+							values = {
+								["NONE"] = L["None"],
+								["OUTLINE"] = "OUTLINE",
+								["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+								["THICKOUTLINE"] = "THICKOUTLINE"
+							}
+						},
+						cooldownSize = {
+							order = 7,
+							width = "full",
+							name = L["Cooldown Font Size"],
+							type = "range",
+							min = 6,
+							max = 22,
+							step = 1
+						},
+					}
+				}
+			}
+		}
+	}
+}
+bar_configs = SV.Options.args.SVBar.args.barGroup.args
+BarConfigLoader();
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/chat.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/chat.lua
new file mode 100644
index 0000000..490d6d0
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/chat.lua
@@ -0,0 +1,200 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVChat;
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+SV.Options.args.SVChat={
+	type = "group",
+	name = MOD.TitleID,
+	get = function(a)return SV.db.SVChat[a[#a]]end,
+	set = function(a,b)MOD:ChangeDBVar(b,a[#a]); end,
+	args = {
+		intro = {
+			order = 1,
+			type = "description",
+			name = L["CHAT_DESC"]
+		},
+		enable = {
+			order = 2,
+			type = "toggle",
+			name = L["Enable"],
+			get = function(a)return SV.db.SVChat.enable end,
+			set = function(a,b)SV.db.SVChat.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
+		},
+		common = {
+			order = 3,
+			type = "group",
+			name = L["General"],
+			guiInline = true,
+			args = {
+				sticky = {
+					order = 1,
+					type = "toggle",
+					name = L["Sticky Chat"],
+					desc = L["When opening the Chat Editbox to type a message having this option set means it will retain the last channel you spoke in. If this option is turned off opening the Chat Editbox should always default to the SAY channel."]
+				},
+				url = {
+					order = 2,
+					type = "toggle",
+					name = L["URL Links"],
+					desc = L["Attempt to create URL links inside the chat."],
+					set = function(a,b) MOD:ChangeDBVar(b,a[#a]) end
+				},
+				hyperlinkHover = {
+					order = 3,
+					type = "toggle",
+					name = L["Hyperlink Hover"],
+					desc = L["Display the hyperlink tooltip while hovering over a hyperlink."],
+					set = function(a,b) MOD:ChangeDBVar(b,a[#a]); MOD:ToggleHyperlinks(b); end
+				},
+				smileys = {
+					order = 4,
+					type = "toggle",
+					name = L["Emotion Icons"],
+					desc = L["Display emotion icons in chat."]
+				},
+				tabStyled = {
+					order = 5,
+					type = "toggle",
+					name = L["Custom Tab Style"],
+					set = function(a,b) MOD:ChangeDBVar(b,a[#a]);SV:StaticPopup_Show("RL_CLIENT") end,
+				},
+				timeStampFormat = {
+					order = 6,
+					type = "select",
+					name = TIMESTAMPS_LABEL,
+					desc = OPTION_TOOLTIP_TIMESTAMPS,
+					values = {
+						["NONE"] = NONE,
+						["%I:%M "] = "03:27",
+						["%I:%M:%S "] = "03:27:32",
+						["%I:%M %p "] = "03:27 PM",
+						["%I:%M:%S %p "] = "03:27:32 PM",
+						["%H:%M "] = "15:27",
+						["%H:%M:%S "] = "15:27:32"
+					}
+				},
+				psst = {
+					order = 7,
+					type = "select",
+					dialogControl = "LSM30_Sound",
+					name = L["Whisper Alert"],
+					disabled = function()return not SV.db.SVChat.psst end,
+					values = AceGUIWidgetLSMlists.sound,
+					set = function(a,b) MOD:ChangeDBVar(b,a[#a]) end
+				},
+				spacer2 = {
+					order = 8,
+					type = "description",
+					name = ""
+				},
+				throttleInterval = {
+					order = 9,
+					type = "range",
+					name = L["Spam Interval"],
+					desc = L["Prevent the same messages from displaying in chat more than once within this set amount of seconds, set to zero to disable."],
+					min = 0,
+					max = 120,
+					step = 1,
+					width = "full",
+					set = function(a,b) MOD:ChangeDBVar(b,a[#a]) end
+				},
+			}
+		},
+		fontGroup = {
+			order = 4,
+			type = "group",
+			guiInline = true,
+			name = L["Fonts"],
+			set = function(a,b)MOD:ChangeDBVar(b,a[#a]);MOD:RefreshChatFrames()end,
+			args = {
+				font = {
+					type = "select",
+					dialogControl = "LSM30_Font",
+					order = 1,
+					name = L["Font"],
+					values = AceGUIWidgetLSMlists.font
+				},
+				fontOutline = {
+					order = 2,
+					name = L["Font Outline"],
+					desc = L["Set the font outline."],
+					type = "select",
+					values = {
+						["NONE"] = L["None"],
+						["OUTLINE"] = "OUTLINE",
+						["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+						["THINOUTLINE"] = "THINOUTLINE",
+						["THICKOUTLINE"] = "THICKOUTLINE"
+					}
+				},
+				fontSpacer = {
+					type = "description",
+					order = 3,
+					name = "",
+				},
+				tabFont = {
+					type = "select",
+					dialogControl = "LSM30_Font",
+					order = 4,
+					name = L["Tab Font"],
+					values = AceGUIWidgetLSMlists.font
+				},
+				tabFontSize = {
+					order = 5,
+					name = L["Tab Font Size"],
+					type = "range",
+					min = 6,
+					max = 22,
+					step = 1
+				},
+				tabFontOutline = {
+					order = 6,
+					name = L["Tab Font Outline"],
+					desc = L["Set the font outline."],
+					type = "select",
+					values = {
+						["NONE"] = L["None"],
+						["OUTLINE"] = "OUTLINE",
+						["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+						["THICKOUTLINE"] = "THICKOUTLINE"
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua
new file mode 100644
index 0000000..9e71d08
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua
@@ -0,0 +1,302 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVDock
+local CHAT = SV.SVChat
+local BAG = SV.SVBag
+
+SV.Options.args.SVDock = {
+  type = "group",
+  name = MOD.TitleID,
+  args = {}
+}
+
+SV.Options.args.SVDock.args["intro"] = {
+	order = 1,
+	type = "description",
+	name = "Configure the various frame docks around the screen"
+};
+
+SV.Options.args.SVDock.args["common"] = {
+	order = 2,
+	type = "group",
+	name = "General",
+	guiInline = true,
+	args = {
+		bottomPanel = {
+			order = 1,
+			type = 'toggle',
+			name = L['Bottom Panel'],
+			desc = L['Display a border across the bottom of the screen.'],
+			get = function(j)return SV.db.SVDock.bottomPanel end,
+			set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:BottomPanelVisibility()end
+		},
+		topPanel = {
+			order = 2,
+			type = 'toggle',
+			name = L['Top Panel'],
+			desc = L['Display a border across the top of the screen.'],
+			get = function(j)return SV.db.SVDock.topPanel end,
+			set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:TopPanelVisibility()end
+		},
+		dockStatWidth = {
+			order = 3,
+			type = "range",
+			name = L["Bottom Stats Width"],
+			desc = L["PANEL_DESC"],
+			min = 150,
+			max = 1200,
+			step = 1,
+			width = "full",
+			get = function()return SV.db.SVDock.dockStatWidth end,
+			set = function(key,value)
+				MOD:ChangeDBVar(value,key[#key]);
+				MOD:UpdateSuperDock(true)
+			end,
+		},
+	}
+};
+
+SV.Options.args.SVDock.args["leftDockGroup"] = {
+		order = 3,
+		type = "group",
+		name = L["Left Dock"],
+		guiInline = true,
+		args = {
+			leftDockBackdrop = {
+				order = 1,
+				type = 'toggle',
+				name = L['Left Dock Backdrop'],
+				desc = L['Display a backdrop behind the left-side dock.'],
+				get = function(j)return SV.db.SVDock.leftDockBackdrop end,
+				set = function(key,value)
+					MOD:ChangeDBVar(value,key[#key]);
+					MOD:UpdateDockBackdrops()
+				end
+			},
+			dockLeftHeight = {
+				order = 2,
+				type = "range",
+				name = L["Left Dock Height"],
+				desc = L["PANEL_DESC"],
+				min = 150,
+				max = 600,
+				step = 1,
+				width = "full",
+				get = function()return SV.db.SVDock.dockLeftHeight;end,
+				set = function(key,value)
+					MOD:ChangeDBVar(value,key[#key]);
+					MOD:UpdateSuperDock(true)
+					CHAT:RefreshChatFrames(true)
+				end,
+			},
+			dockLeftWidth = {
+				order = 3,
+				type = "range",
+				name = L["Left Dock Width"],
+				desc = L["PANEL_DESC"],
+				min = 150,
+				max = 700,
+				step = 1,
+				width = "full",
+				get = function()return SV.db.SVDock.dockLeftWidth;end,
+				set = function(key,value)
+					MOD:ChangeDBVar(value,key[#key]);
+					MOD:UpdateSuperDock(true)
+					CHAT:RefreshChatFrames(true)
+				end,
+			},
+		}
+	};
+
+local acceptableDocklets = {
+	["alDamageMeter"] = L["alDamageMeter"],
+	["Skada"] = L["Skada"],
+	["Recount"] = L["Recount"],
+	["TinyDPS"] = L["TinyDPS"],
+	["Omen"] = L["Omen"]
+};
+
+local function GetLiveDockletsA()
+	local test = SV.db.SVDock.docklets.DockletExtra;
+	local t = {["None"] = L["None"]};
+	for n,l in pairs(acceptableDocklets) do
+		if IsAddOnLoaded(n) or IsAddOnLoaded(l) then
+			if n=="Skada" and Skada then
+				for index,window in pairs(Skada:GetWindows()) do
+				    local key = window.db.name
+				    t["Skada"..key] = (key=="Skada") and "Skada - Main" or "Skada - "..key;
+				end
+			elseif (test ~= n and test ~= l) then
+				t[n] = l;
+			end
+		end
+	end
+	return t;
+end
+
+local function GetLiveDockletsB()
+	local test = SV.db.SVDock.docklets.DockletMain;
+	local t = {["None"] = L["None"]};
+	for n,l in pairs(acceptableDocklets) do
+		if IsAddOnLoaded(n) or IsAddOnLoaded(l) then
+			if n=="Skada" and Skada then
+				for index,window in pairs(Skada:GetWindows()) do
+				    local key = window.db.name
+				    t["Skada"..key] = (key=="Skada") and "Skada - Main" or "Skada - "..key;
+				end
+			elseif (test ~= n and test ~= l) then
+				t[n] = l;
+			end
+		end
+	end
+	return t;
+end
+
+SV.Options.args.SVDock.args["rightDockGroup"] = {
+	order = 4,
+	type = "group",
+	name = L["Right Dock"],
+	guiInline = true,
+	args = {
+		rightDockBackdrop = {
+			order = 1,
+			type = 'toggle',
+			name = L['Right Dock Backdrop'],
+			desc = L['Display a backdrop behind the right-side dock.'],
+			get = function(j)return SV.db.SVDock.rightDockBackdrop end,
+			set = function(key,value)
+				MOD:ChangeDBVar(value,key[#key]);
+				MOD:UpdateDockBackdrops()
+			end
+		},
+		dockRightHeight = {
+			order = 2,
+			type = "range",
+			name = L["Right Dock Height"],
+			desc = L["PANEL_DESC"],
+			min = 150,
+			max = 600,
+			step = 1,
+			width = "full",
+			get = function()return SV.db.SVDock.dockRightHeight;end,
+			set = function(key,value)
+				MOD:ChangeDBVar(value,key[#key]);
+				MOD:UpdateSuperDock(true)
+				CHAT:RefreshChatFrames(true)
+			end,
+		},
+		dockRightWidth = {
+			order = 3,
+			type = "range",
+			name = L["Right Dock Width"],
+			desc = L["PANEL_DESC"],
+			min = 150,
+			max = 700,
+			step = 1,
+			width = "full",
+			get = function()return SV.db.SVDock.dockRightWidth;end,
+			set = function(key,value)
+				MOD:ChangeDBVar(value,key[#key]);
+				MOD:UpdateSuperDock(true)
+				CHAT:RefreshChatFrames(true)
+				BAG:Layout()
+				BAG:Layout(true)
+			end,
+		},
+		quest = {
+			order = 4,
+			type = "group",
+			name = L['Quest Watch Docklet'],
+			args = {
+				enable = {
+					order = 1,
+					type = "toggle",
+					name = L["Enable"],
+					get = function()return SV.db.general.questWatch end,
+				 	set = function(j, value) SV.db.general.questWatch = value; SV:StaticPopup_Show("RL_CLIENT") end
+				}
+			}
+		},
+		docklets = {
+			order = 100,
+			type = 'group',
+			name = 'Addon Docklets',
+			guiInline=true,
+			args = {
+				docked = {
+					order=0,
+					type='group',
+					name='Docklet Settings',
+					guiInline=true,
+					args = {
+						DockletMain = {
+							type = "select",
+							order = 1,
+							name = "Primary Docklet",
+							desc = "Select an addon to occupy the primary docklet window",
+							values = function()return GetLiveDockletsA()end,
+							get = function()return SV.db.SVDock.docklets.DockletMain end,
+							set = function(a,value)SV.db.SVDock.docklets.DockletMain = value;SV:ReloadDocklets()end,
+						},
+						DockletCombatFade = {
+							type = "toggle",
+							order = 2,
+							name = "Out of Combat (Hide)",
+							get = function()return SV.db.SVDock.docklets.DockletCombatFade end,
+							set = function(a,value)SV.db.SVDock.docklets.DockletCombatFade = value;end
+						},
+						enableExtra = {
+							type = "toggle",
+							order = 3,
+							name = "Split Docklet",
+							desc = "Split the primary docklet window for 2 addons.",
+							get = function()return SV.db.SVDock.docklets.enableExtra end,
+							set = function(a,value)SV.db.SVDock.docklets.enableExtra = value;SV:ReloadDocklets()end,
+						},
+						DockletExtra = {
+							type = "select",
+							order = 4,
+							name = "Secondary Docklet",
+							desc = "Select another addon",
+							disabled = function()return (not SV.db.SVDock.docklets.enableExtra or SV.db.SVDock.docklets.DockletMain == "None") end,
+							values = function()return GetLiveDockletsB()end,
+							get = function()return SV.db.SVDock.docklets.DockletExtra end,
+							set = function(a,value)SV.db.SVDock.docklets.DockletExtra = value;SV:ReloadDocklets()end,
+						}
+					}
+				}
+			}
+		}
+	}
+};
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/filter.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/filter.lua
new file mode 100644
index 0000000..a59fabb
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/filter.lua
@@ -0,0 +1,781 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...;
+local selectedSpell,filterType,filters;
+local nameMapping = {
+	["CC"] = "Control Type Auras",
+	["Shield"] = "Defensive Auras",
+	["Player"] = "Player Only Auras",
+	["Blocked"] = "Blocked Auras",
+	["Allowed"] = "Always Allowed Auras",
+	["Strict"] = "Specific Auras",
+	["Raid"] = "Raid Buffs/Debuffs",
+	["BuffWatch"] = "(AuraWatch) Player Buffs",
+	["PetBuffWatch"] = "(AuraWatch) Pet Buffs",
+}
+
+local function generateFilterOptions()
+	if filterType == 'AuraBar Colors' then
+
+		SV.Options.args.filters.args.filterGroup = {
+			type = "group",
+			name = filterType,
+			guiInline = true,
+			order = 10,
+			args = {
+				addSpell = {
+					order = 1,
+					name = L["Add Spell"],
+					desc = L["Add a spell to the filter."],
+					type = "input",
+					guiInline = true,
+					get = function(e)return""end,
+					set = function(e, arg)
+						if not SV.db.media.unitframes.spellcolor[arg] then
+							SV.db.media.unitframes.spellcolor[arg] = false
+						end
+						generateFilterOptions()
+						MOD:SetUnitFrame("player")
+						MOD:SetUnitFrame("target")
+						MOD:SetUnitFrame("focus")
+					end
+				},
+				removeSpell = {
+					order = 2,
+					name = L["Remove Spell"],
+					desc = L["Remove a spell from the filter."],
+					type = "input",
+					guiInline = true,
+					get = function(e)return""end,
+					set = function(e, arg)
+						if SV.db.media.unitframes.spellcolor[arg]then
+							SV.db.media.unitframes.spellcolor[arg] = false;
+							SV:AddonMessage(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
+						else
+							SV.db.media.unitframes.spellcolor[arg] = nil
+						end
+						selectedSpell = nil;
+						generateFilterOptions()
+						MOD:SetUnitFrame("player")
+						MOD:SetUnitFrame("target")
+						MOD:SetUnitFrame("focus")
+					end
+				},
+				selectSpell = {
+					name = L["Select Spell"],
+					type = "select",
+					order = 3,
+					guiInline = true,
+					get = function(e)return selectedSpell end,
+					set = function(e, arg)
+						selectedSpell = arg;
+						generateFilterOptions()
+					end,
+					values = function()
+						local filters = {}
+						filters[""] = NONE;
+						for g in pairs(SV.db.media.unitframes.spellcolor)do
+							filters[g] = g
+						end
+						return filters
+					end
+				}
+			}
+		}
+
+		if not selectedSpell or SV.db.media.unitframes.spellcolor[selectedSpell] == nil then
+			SV.Options.args.filters.args.spellGroup = nil;
+			return
+		end
+
+		SV.Options.args.filters.args.spellGroup = {
+			type = "group",
+			name = selectedSpell,
+			order = 15,
+			guiInline = true,
+			args = {
+				color = {
+					name = L["Color"],
+					type = "color",
+					order = 1,
+					get = function(e)
+						local abColor = SV.db.media.unitframes.spellcolor[selectedSpell]
+						if type(abColor) == "boolean"then
+							return 0, 0, 0, 1
+						else
+							return abColor[1], abColor[2], abColor[3], abColor[4]
+						end
+					end,
+					set = function(e, r, g, b)
+						if type(SV.db.media.unitframes.spellcolor[selectedSpell]) ~= "table"then
+							SV.db.media.unitframes.spellcolor[selectedSpell] = {}
+						end
+						local abColor = {r, g, b}
+						SV.db.media.unitframes.spellcolor[selectedSpell] = abColor
+						MOD:SetUnitFrame("player")
+						MOD:SetUnitFrame("target")
+						MOD:SetUnitFrame("focus")
+					end
+				},
+				removeColor = {
+					type = "execute",
+					order = 2,
+					name = L["Restore Defaults"],
+					func = function(e, arg)
+						SV.db.media.unitframes.spellcolor[selectedSpell] = false;
+						MOD:SetUnitFrame("player")
+						MOD:SetUnitFrame("target")
+						MOD:SetUnitFrame("focus")
+					end
+				}
+			}
+		}
+
+	elseif filterType == 'PetBuffWatch' then
+
+		local watchedBuffs = {}
+
+		if not SV.db.filter.PetBuffWatch then
+			SV.db.filter.PetBuffWatch = {}
+		end
+		for o,f in pairs(SV.db.filter.PetBuffWatch)do
+			tinsert(watchedBuffs,f)
+		end
+
+		SV.Options.args.filters.args.filterGroup = {
+			type = "group",
+			name = filterType,
+			guiInline = true,
+			order = -10,
+			childGroups = "tab",
+			args = {
+				addSpellID = {
+					order = 1,
+					name = L["Add SpellID"],
+					desc = L["Add a spell to the filter."],
+					type = "input",
+					get = function(e)return""end,
+					set = function(e, arg)
+						if not tonumber(arg) then
+							SV:AddonMessage(L["Value must be a number"])
+						elseif not GetSpellInfo(arg)then
+							SV:AddonMessage(L["Not valid spell id"])
+						else
+							tinsert(SV.db.filter.PetBuffWatch, {["enable"] = true, ["id"] = tonumber(arg), ["point"] = "TOPRIGHT", ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0}, ["anyUnit"] = true})
+							generateFilterOptions()
+							MOD:SetUnitFrame("pet")
+							selectedSpell = nil
+						end
+					end
+				},
+				removeSpellID = {
+					order = 2,
+					name = L["Remove SpellID"],
+					desc = L["Remove a spell from the filter."],
+					type = "input",
+					get = function(e)return""end,
+					set = function(e, arg)
+						if not tonumber(arg)then
+							SV:AddonMessage(L["Value must be a number"])
+						elseif not GetSpellInfo(arg)then
+							SV:AddonMessage(L["Not valid spell id"])
+						else
+							local p;
+							for q, r in pairs(SV.db.filter.PetBuffWatch)do
+								if r["id"] == tonumber(arg)then
+									p = r;
+									if SV.db.filter.PetBuffWatch[q]then
+										SV.db.filter.PetBuffWatch[q].enable = false;
+									else
+										SV.db.filter.PetBuffWatch[q] = nil
+									end
+								end
+							end
+							if p == nil then
+								SV:AddonMessage(L["Spell not found in list."])
+							else
+								generateFilterOptions()
+							end
+						end
+						selectedSpell = nil;
+						generateFilterOptions()
+						MOD:SetUnitFrame("pet")
+					end
+				},
+				selectSpell = {
+					name = L["Select Spell"],
+					type = "select",
+					order = 3,
+					values = function()
+						local v = {}
+						watchedBuffs = {}
+						for o, f in pairs(SV.db.filter.PetBuffWatch)do
+							tinsert(watchedBuffs, f)
+						end
+						for o, l in pairs(watchedBuffs)do
+							if l.id then
+								local name = GetSpellInfo(l.id)
+								v[l.id] = name
+							end
+						end
+						return v
+					end,
+					get = function(e)return selectedSpell end,
+					set = function(e, arg)selectedSpell = arg; generateFilterOptions()end
+				}
+			}
+		}
+
+		local registeredSpell;
+
+		for t,l in pairs(SV.db.filter.PetBuffWatch)do
+			if l.id == selectedSpell then
+				registeredSpell = t
+			end
+		end
+
+		if selectedSpell and registeredSpell then
+			local currentSpell = GetSpellInfo(selectedSpell)
+			SV.Options.args.filters.args.filterGroup.args[currentSpell] = {
+				name = currentSpell.." ("..selectedSpell..")",
+				type = "group",
+				get = function(e)return SV.db.filter.PetBuffWatch[registeredSpell][e[#e]] end,
+				set = function(e, arg)
+					SV.db.filter.PetBuffWatch[registeredSpell][e[#e]] = arg;
+					MOD:SetUnitFrame("pet")
+				end,
+				order = -10,
+				args = {
+					enable = {
+						name = L["Enable"],
+						order = 0,
+						type = "toggle"
+					},
+					point = {
+						name = L["Anchor Point"],
+						order = 1,
+						type = "select",
+						values = {
+							["TOPLEFT"] = "TOPLEFT",
+							["TOPRIGHT"] = "TOPRIGHT",
+							["BOTTOMLEFT"] = "BOTTOMLEFT",
+							["BOTTOMRIGHT"] = "BOTTOMRIGHT",
+							["LEFT"] = "LEFT",
+							["RIGHT"] = "RIGHT",
+							["TOP"] = "TOP",
+							["BOTTOM"] = "BOTTOM"
+						}
+					},
+					xOffset = {order = 2, type = "range", name = L["xOffset"], min = -75, max = 75, step = 1},
+					yOffset = {order = 2, type = "range", name = L["yOffset"], min = -75, max = 75, step = 1},
+					style = {
+						name = L["Style"],
+						order = 3,
+						type = "select",
+						values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], [""] = NONE}
+					},
+					color = {
+						name = L["Color"],
+						type = "color",
+						order = 4,
+						get = function(e)
+							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
+							return abColor.r,  abColor.g,  abColor.b,  abColor.a
+						end,
+						set = function(e, i, j, k)
+							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
+							abColor.r,  abColor.g,  abColor.b = i, j, k;
+							MOD:SetUnitFrame("pet")
+						end
+					},
+					displayText = {
+						name = L["Display Text"],
+						type = "toggle",
+						order = 5
+					},
+					textColor = {
+						name = L["Text Color"],
+						type = "color",
+						order = 6,
+						get = function(e)
+							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
+							if abColor then
+								return abColor.r,abColor.g,abColor.b,abColor.a
+							else
+								return 1,1,1,1
+							end
+						end,
+						set = function(e,i,j,k)
+							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
+							abColor.r,abColor.g,abColor.b = i,j,k;
+							MOD:SetUnitFrame("pet")
+						end
+					},
+					textThreshold = {
+						name = L["Text Threshold"],
+						desc = L["At what point should the text be displayed. Set to -1 to disable."],
+						type = "range",
+						order = 6,
+						min = -1,
+						max = 60,
+						step = 1
+					},
+					anyUnit = {
+						name = L["Show Aura From Other Players"],
+						order = 7,
+						type = "toggle"
+					},
+					onlyShowMissing = {
+						name = L["Show When Not Active"],
+						order = 8,
+						type = "toggle",
+						disabled = function()return SV.db.filter.PetBuffWatch[registeredSpell].style == "text"end
+					}
+				}
+			}
+		end
+
+		watchedBuffs = nil;
+
+	elseif filterType == 'BuffWatch' then
+
+		local watchedBuffs={}
+
+		if not SV.db.filter.BuffWatch then
+			SV.db.filter.BuffWatch = {}
+		end
+		for o,f in pairs(SV.db.filter.BuffWatch) do
+			tinsert(watchedBuffs,f)
+		end
+
+		SV.Options.args.filters.args.filterGroup = {
+			type = "group",
+			name = filterType,
+			guiInline = true,
+			order = -10,
+			childGroups = "tab",
+			args = {
+				addSpellID = {
+					order = 1,
+					name = L["Add SpellID"],
+					desc = L["Add a spell to the filter."],
+					type = "input",
+					get = function(e)return""end,
+					set = function(e, arg)
+						if not tonumber(arg)then
+							SV:AddonMessage(L["Value must be a number"])
+						elseif not GetSpellInfo(arg)then
+							SV:AddonMessage(L["Not valid spell id"])
+						else
+							tinsert(SV.db.filter.BuffWatch, {["enable"] = true, ["id"] = tonumber(arg), ["point"] = "TOPRIGHT", ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0}, ["anyUnit"] = false})
+							generateFilterOptions()
+							for t = 10, 40, 15 do
+								MOD:UpdateGroupAuraWatch("raid"..t)
+							end
+							MOD:UpdateGroupAuraWatch("party")
+							MOD:UpdateGroupAuraWatch("raidpet", true)
+							selectedSpell = nil
+						end
+					end
+				},
+				removeSpellID = {
+					order = 2,
+					name = L["Remove SpellID"],
+					desc = L["Remove a spell from the filter."],
+					type = "input",
+					get = function(e)return""end,
+					set = function(e, arg)
+						if not tonumber(arg)then
+							SV:AddonMessage(L["Value must be a number"])
+						elseif not GetSpellInfo(arg)then
+							SV:AddonMessage(L["Not valid spell id"])
+						else
+							local p;
+							for q, r in pairs(SV.db.filter.BuffWatch)do
+								if r["id"] == tonumber(arg)then
+									p = r;
+									if SV.db.filter.BuffWatch[q]then
+										SV.db.filter.BuffWatch[q].enable = false;
+									else
+										SV.db.filter.BuffWatch[q] = nil
+									end
+								end
+							end
+							if p == nil then
+								SV:AddonMessage(L["Spell not found in list."])
+							else
+								generateFilterOptions()
+							end
+						end
+						selectedSpell = nil;
+						generateFilterOptions()
+						for t = 10, 40, 15 do
+							MOD:UpdateGroupAuraWatch("raid"..t)
+						end
+						MOD:UpdateGroupAuraWatch("party")
+						MOD:UpdateGroupAuraWatch("raidpet", true)
+					end
+				},
+				selectSpell = {
+					name = L["Select Spell"],
+					type = "select",
+					order = 3,
+					values = function()
+						local v = {}
+						watchedBuffs = {}
+						for o, f in pairs(SV.db.filter.BuffWatch)do
+							tinsert(watchedBuffs, f)
+						end
+						for o, l in pairs(watchedBuffs)do
+							if l.id then
+								local name = GetSpellInfo(l.id)
+								v[l.id] = name
+							end
+						end
+						return v
+					end,
+					get = function(e)return selectedSpell end,
+					set = function(e, arg)selectedSpell = arg;generateFilterOptions()end
+				}
+			}
+		}
+		local registeredSpell;
+		for t,l in pairs(SV.db.filter.BuffWatch)do if l.id==selectedSpell then registeredSpell=t end end
+		if selectedSpell and registeredSpell then
+			local currentSpell=GetSpellInfo(selectedSpell)
+			SV.Options.args.filters.args.filterGroup.args[currentSpell] = {
+				name = currentSpell.." ("..selectedSpell..")",
+				type = "group",
+				get = function(e)return SV.db.filter.BuffWatch[registeredSpell][e[#e]]end,
+				set = function(e, arg)
+					SV.db.filter.BuffWatch[registeredSpell][e[#e]] = arg;
+					for t = 10, 40, 15 do
+						MOD:UpdateGroupAuraWatch("raid"..t)
+					end
+					MOD:UpdateGroupAuraWatch("party")
+					MOD:UpdateGroupAuraWatch("raidpet", true)
+				end,
+				order = -10,
+				args = {
+					enable = {name = L["Enable"], order = 0, type = "toggle"},
+					point = {
+						name = L["Anchor Point"],
+						order = 1,
+						type = "select",
+						values = {
+							["TOPLEFT"] = "TOPLEFT",
+							["TOPRIGHT"] = "TOPRIGHT",
+							["BOTTOMLEFT"] = "BOTTOMLEFT",
+							["BOTTOMRIGHT"] = "BOTTOMRIGHT",
+							["LEFT"] = "LEFT",
+							["RIGHT"] = "RIGHT",
+							["TOP"] = "TOP",
+							["BOTTOM"] = "BOTTOM"
+						}
+					},
+					xOffset = {order = 2, type = "range", name = L["xOffset"], min = -75, max = 75, step = 1},
+					yOffset = {order = 2, type = "range", name = L["yOffset"], min = -75, max = 75, step = 1},
+					style = {name = L["Style"], order = 3, type = "select", values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], [""] = NONE}},
+					color = {
+						name = L["Color"],
+						type = "color",
+						order = 4,
+						get = function(e)
+							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
+							return abColor.r,  abColor.g,  abColor.b,  abColor.a
+						end,
+						set = function(e, i, j, k)
+							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
+							abColor.r,  abColor.g,  abColor.b = i, j, k;
+							for t = 10, 40, 15 do
+								MOD:UpdateGroupAuraWatch("raid"..t)
+							end
+							MOD:UpdateGroupAuraWatch("party")
+							MOD:UpdateGroupAuraWatch("raidpet", true)
+						end
+					},
+					displayText = {
+						name = L["Display Text"],
+						type = "toggle",
+						order = 5
+					},
+					textColor = {
+						name = L["Text Color"],
+						type = "color",
+						order = 6,
+						get = function(e)
+							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
+							if abColor then
+								return abColor.r,  abColor.g,  abColor.b,  abColor.a
+							else
+								return 1, 1, 1, 1
+							end
+						end,
+						set = function(e, i, j, k)
+							SV.db.filter.BuffWatch[registeredSpell][e[#e]] = SV.db.filter.BuffWatch[registeredSpell][e[#e]] or {}
+							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
+							abColor.r,  abColor.g,  abColor.b = i, j, k;
+							for t = 10, 40, 15 do
+								MOD:UpdateGroupAuraWatch("raid"..t)
+							end
+							MOD:UpdateGroupAuraWatch("party")
+							MOD:UpdateGroupAuraWatch("raidpet", true)
+						end
+					},
+					textThreshold = {
+						name = L["Text Threshold"],
+						desc = L["At what point should the text be displayed. Set to -1 to disable."],
+						type = "range",
+						order = 6,
+						min = -1,
+						max = 60,
+						step = 1
+					},
+					anyUnit = {
+						name = L["Show Aura From Other Players"],
+						order = 7,
+						type = "toggle"
+					},
+					onlyShowMissing = {
+						name = L["Show When Not Active"],
+						order = 8,
+						type = "toggle",
+						disabled = function()return SV.db.filter.BuffWatch[registeredSpell].style == "text" end
+					}
+				}
+			}
+		end
+		watchedBuffs=nil
+	else
+		if not filterType or not SV.db.filter[filterType]then
+			SV.Options.args.filters.args.filterGroup = nil;
+			SV.Options.args.filters.args.spellGroup = nil;
+			return
+		end
+		SV.Options.args.filters.args.filterGroup = {
+			type = "group",
+			name = filterType,
+			guiInline = true,
+			order = 10,
+			args = {
+				addSpell = {
+					order = 1,
+					name = L["Add Spell"],
+					desc = L["Add a spell to the filter."],
+					type = "input",
+					get = function(e)return""end,
+					set = function(e, arg)
+						if not SV.db.filter[filterType][arg]then
+							SV.db.filter[filterType][arg] = {
+								["enable"] = true,
+								["priority"] = 0
+							}
+						end
+						generateFilterOptions()
+						MOD:RefreshUnitFrames()
+					end
+				},
+				removeSpell = {
+					order = 2,
+					name = L["Remove Spell"],
+					desc = L["Remove a spell from the filter."],
+					type = "input",
+					get = function(e)return""end,
+					set = function(e, arg)
+						if SV.db.filter[filterType] then
+							if SV.db.filter[filterType][arg] then
+								SV.db.filter[filterType][arg].enable = false;
+								SV:AddonMessage(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
+							else
+								SV.db.filter[filterType][arg] = nil
+							end
+						else
+							SV.db.filter[filterType][arg] = nil
+						end
+						generateFilterOptions()
+						MOD:RefreshUnitFrames()
+					end
+				},
+				selectSpell = {
+					name = L["Select Spell"],
+					type = "select",
+					order = 3,
+					guiInline = true,
+					get = function(e)return selectedSpell end,
+					set = function(e, arg)
+						selectedSpell = arg;
+						generateFilterOptions()
+					end,
+					values = function()
+						local filters = {}
+						local list = SV.db.filter[filterType]
+						filters[""] = NONE;
+						for g in pairs(list)do
+							filters[g] = g
+						end
+						return filters
+					end
+				}
+			}
+		}
+
+		if not selectedSpell or not SV.db.filter[filterType][selectedSpell] then
+			SV.Options.args.filters.args.spellGroup = nil;
+			return
+		end
+
+		SV.Options.args.filters.args.spellGroup = {
+			type = "group",
+			name = selectedSpell,
+			order = 15,
+			guiInline = true,
+			args = {
+				enable = {
+					name = L["Enable"],
+					type = "toggle",
+					get = function()
+						if selectedFolder or not selectedSpell then
+							return false
+						else
+							return SV.db.filter[filterType][selectedSpell].enable
+						end
+					end,
+					set = function(e, arg)
+						SV.db.filter[filterType][selectedSpell].enable = arg;
+						generateFilterOptions()
+						MOD:RefreshUnitFrames()
+					end
+				},
+				priority = {
+					name = L["Priority"],
+					type = "range",
+					get = function()
+						if selectedFolder or not selectedSpell then
+							return 0
+						else
+							return SV.db.filter[filterType][selectedSpell].priority
+						end
+					end,
+					set = function(e, arg)
+						SV.db.filter[filterType][selectedSpell].priority = arg;
+						generateFilterOptions()
+						MOD:RefreshUnitFrames()
+					end,
+					min = 0,
+					max = 99,
+					step = 1,
+					desc = L["Set the priority order of the spell, please note that prioritys are only used for the raid debuff package, not the standard buff/debuff package. If you want to disable set to zero."]
+				}
+			}
+		}
+	end
+	MOD:RefreshUnitFrames()
+	collectgarbage("collect")
+end
+SV.Options.args.filters = {
+	type = "group",
+	name = L["Filters"],
+	order = -10,
+	args = {
+		createFilter = {
+			order = 1,
+			name = L["Create Filter"],
+			desc = L["Create a filter, once created a filter can be set inside the buffs/debuffs section of each unit."],
+			type = "input",
+			get = function(e)return""end,
+			set = function(e, arg)
+				SV.db.filter[arg] = {}
+				SV.db.filter[arg]["spells"] = {}
+			end
+		},
+		deleteFilter = {
+			type = "select",
+			order = 2,
+			name = L["Delete Filter"],
+			desc = L["Delete a created filter, you cannot delete pre-existing filters, only custom ones."],
+			get = function(e)return""end,
+			set = function(e, arg)
+				if SV.db.filter[arg] then
+					SV:AddonMessage(L["You can't remove a pre-existing filter."])
+				else
+					SV.db.filter[arg] = nil;
+					filterType = nil;
+					selectedSpell = nil;
+					SV.Options.args.filters.args.filterGroup = nil
+				end
+			end,
+			values = function()
+				filters = {}
+				filters[""] = NONE;
+				for g in pairs(SV.db.filter) do
+					filters[g] = nameMapping[g] or g
+				end
+				return filters
+			end
+		},
+		selectFilter = {
+			order = 3,
+			type = "select",
+			name = L["Select Filter"],
+			get = function(e)return filterType end,
+			set = function(e, arg)
+				if arg == "" then
+					filterType = nil;
+					selectedSpell = nil
+				else
+					filterType = arg
+				end
+				generateFilterOptions()
+			end,
+			values = function()
+				filters = {}
+				filters[""] = NONE;
+				for g in pairs(SV.db.filter) do
+					filters[g] = nameMapping[g] or g
+				end
+				filters["AuraBar Colors"] = "AuraBar Colors"
+				return filters
+			end
+		}
+	}
+}
+
+
+function ns:SetToFilterConfig(newFilter)
+	filterType = newFilter or "BuffWatch"
+	generateFilterOptions()
+	LibStub("AceConfigDialog-3.0"):SelectGroup(SV.NameID, "filters")
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/henchmen.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/henchmen.lua
new file mode 100644
index 0000000..ae30fcd
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/henchmen.lua
@@ -0,0 +1,186 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVHenchmen;
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+SV.Options.args.SVHenchmen={
+	type = "group",
+	name = MOD.TitleID,
+	get = function(a)return SV.db.SVHenchmen[a[#a]]end,
+	set = function(a,b)MOD:ChangeDBVar(b,a[#a]); end,
+	args = {
+		intro = {
+			order = 1,
+			type = "description",
+			name = L["Adjust the behavior and features that your henchmen will use."]
+		},
+		common = {
+			order = 2,
+			type = "group",
+			name = L["General"],
+			guiInline = true,
+			args = {
+				automationGroup1 = {
+					order = 1,
+					type = "group",
+					guiInline = true,
+					name = L["Task Minions"],
+					desc = L['Minions that can make certain tasks easier by handling them automatically.'],
+					args = {
+						mailOpener = {
+							order = 1,
+							type = 'toggle',
+							name = L["Enable Mail Helper"],
+							get = function(j)return SV.db.SVHenchmen.mailOpener end,
+							set = function(j,value)SV.db.SVHenchmen.mailOpener = value;MOD:ToggleMailMinions()end
+						},
+						autoAcceptInvite = {
+							order = 2,
+							name = L['Accept Invites'],
+							desc = L['Automatically accept invites from guild/friends.'],
+							type = 'toggle',
+							get = function(j)return SV.db.SVHenchmen.autoAcceptInvite end,
+							set = function(j,value)SV.db.SVHenchmen.autoAcceptInvite = value end
+						},
+						vendorGrays = {
+							order = 3,
+							name = L['Vendor Grays'],
+							desc = L['Automatically vendor gray items when visiting a vendor.'],
+							type = 'toggle',
+							get = function(j)return SV.db.SVHenchmen.vendorGrays end,
+							set = function(j,value)SV.db.SVHenchmen.vendorGrays = value end
+						},
+						autoRoll = {
+							order = 4,
+							name = L['Auto Greed/DE'],
+							desc = L['Automatically select greed or disenchant (when available) on green quality items. This will only work if you are the max level.'],
+							type = 'toggle',
+							get = function(j)return SV.db.SVHenchmen.autoRoll end,
+							set = function(j,value)SV.db.SVHenchmen.autoRoll = value end,
+							disabled = function()return not SV.db.SVOverride.lootRoll end
+						},
+						pvpautorelease = {
+							order = 5,
+							type = "toggle",
+							name = L['PvP Autorelease'],
+							desc = L['Automatically release body when killed inside a battleground.'],
+							get = function(j)return SV.db.SVHenchmen.pvpautorelease end,
+							set = function(j,value)SV.db.SVHenchmen.pvpautorelease = value;SV:StaticPopup_Show("RL_CLIENT")end
+						},
+						autorepchange = {
+							order = 6,
+							type = "toggle",
+							name = L['Track Reputation'],
+							desc = L['Automatically change your watched faction on the reputation bar to the faction you got reputation points for.'],
+							get = function(j)return SV.db.SVHenchmen.autorepchange end,
+							set = function(j,value)SV.db.SVHenchmen.autorepchange = value end
+						},
+						skipcinematics = {
+							order = 7,
+							type = "toggle",
+							name = L['Skip Cinematics'],
+							desc = L['Automatically skip any cinematic sequences.'],
+							get = function(j)return SV.db.SVHenchmen.skipcinematics end,
+							set = function(j,value)SV.db.SVHenchmen.skipcinematics = value;SV:StaticPopup_Show("RL_CLIENT") end
+						},
+						autoRepair = {
+							order = 8,
+							name = L['Auto Repair'],
+							desc = L['Automatically repair using the following method when visiting a merchant.'],
+							type = 'select',
+							values = {
+								['NONE'] = NONE,
+								['GUILD'] = GUILD,
+								['PLAYER'] = PLAYER
+							},
+							get = function(j)return SV.db.SVHenchmen.autoRepair end,
+							set = function(j,value)SV.db.SVHenchmen.autoRepair = value end
+						},
+					}
+				},
+				automationGroup2 = {
+					order = 2,
+					type = "group",
+					guiInline = true,
+					name = L["Quest Minions"],
+					desc = L['Minions that can make questing easier by automatically accepting/completing quests.'],
+					args = {
+						autoquestaccept = {
+							order = 1,
+							type = "toggle",
+							name = L['Accept Quests'],
+							desc = L['Automatically accepts quests as they are presented to you.'],
+							get = function(j)return SV.db.SVHenchmen.autoquestaccept end,
+							set = function(j,value) SV.db.SVHenchmen.autoquestaccept = value end
+						},
+						autoquestcomplete = {
+							order = 2,
+							type = "toggle",
+							name = L['Complete Quests'],
+							desc = L['Automatically complete quests when possible.'],
+							get = function(j)return SV.db.SVHenchmen.autoquestcomplete end,
+							set = function(j,value)SV.db.SVHenchmen.autoquestcomplete = value end
+						},
+						autoquestreward = {
+							order = 3,
+							type = "toggle",
+							name = L['Select Quest Reward'],
+							desc = L['Automatically select the quest reward with the highest vendor sell value.'],
+							get = function(j)return SV.db.SVHenchmen.autoquestreward end,
+							set = function(j,value)SV.db.SVHenchmen.autoquestreward = value end
+						},
+						autodailyquests = {
+							order = 4,
+							type = "toggle",
+							name = L['Only Automate Dailies'],
+							desc = L['Force the auto accept functions to only respond to daily quests. NOTE: This does not apply to daily heroics for some reason.'],
+							get = function(j)return SV.db.SVHenchmen.autodailyquests end,
+							set = function(j,value)SV.db.SVHenchmen.autodailyquests = value end
+						},
+						autopvpquests = {
+							order = 5,
+							type = "toggle",
+							name = L['Accept PVP Quests'],
+							get = function(j)return SV.db.SVHenchmen.autopvpquests end,
+							set = function(j,value)SV.db.SVHenchmen.autopvpquests = value end
+						},
+					}
+				},
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/map.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/map.lua
new file mode 100644
index 0000000..8a5a340
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/map.lua
@@ -0,0 +1,239 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVMap
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local textSelect = {
+	['HIDE'] = L['Hide This'],
+	['CUSTOM'] = L['Use Custom Style'],
+	['SIMPLE'] = L['Use Simple Style']
+};
+local colorSelect = {
+	['light'] = L['Light'],
+	['dark'] = L['Dark'],
+	['class'] = L['Class']
+};
+--[[
+##########################################################
+OPTIONS TABLE
+##########################################################
+]]--
+SV.Options.args.SVMap = {
+	type = 'group',
+	childGroups = "tree",
+	name = MOD.TitleID,
+	get = function(a)return SV.db.SVMap[a[#a]]end,
+	set = function(a,b)MOD:ChangeDBVar(b,a[#a]);MOD:ReLoad()end,
+	args={
+		intro={
+			order = 1,
+			type = 'description',
+			name = L["Options for the Minimap"]
+		},
+		enable={
+			type = "toggle",
+			order = 2,
+			name = L['Enable'],
+			desc = L['Enable/Disable the Custom Minimap.'],
+			get = function(a)return SV.db.SVMap.enable end,
+			set = function(a,b)SV.db.SVMap.enable=b; SV:StaticPopup_Show("RL_CLIENT") end
+		},
+		common = {
+			order = 3,
+			type = "group",
+			name = MINIMAP_LABEL,
+			desc = L['General display settings'],
+			guiInline = true,
+			disabled = function()return not SV.db.SVMap.enable end,
+			args = {
+				size = {
+					order = 1,
+					type = "range",
+					name = L["Size"],
+					desc = L['Adjust the size of the minimap.'],
+					min = 120,
+					max = 240,
+					width = "full",
+					step = 1
+				},
+				bordersize = {
+					order = 2,
+					type = "range",
+					name = "Border Size",
+					desc = "Adjust the size of the minimap's outer border",
+					min = 0,
+					max = 20,
+					step = 1,
+					width = "full"
+				},
+				bordercolor = {
+					order = 3,
+					type = 'select',
+					name = "Border Color",
+					desc = "Adjust the color of the minimap's outer border",
+					values = colorSelect,
+				},
+				customshape = {
+					order = 4,
+					type = "toggle",
+					name = "Custom Shape",
+					desc = "Toggle the use of either rectangular or square minimap.",
+				}
+			}
+		},
+		spacer1 = {
+			order = 4,
+			type = "group",
+			name = "",
+			guiInline = true,
+			args = {}
+		},
+		common2 = {
+			order = 5,
+			type = "group",
+			name = "Labels and Info",
+			desc = L['Configure various minimap texts'],
+			guiInline = true,
+			disabled = function()return not SV.db.SVMap.enable end,
+			args = {
+				locationText = {
+					order = 1,
+					type = "select",
+					name = L["Location Text"],
+					values = textSelect,
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
+				},
+				playercoords = {
+					order = 2,
+					type = "select",
+					name = L["Player Coords"],
+					values = textSelect,
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
+				}
+			}
+		},
+		spacer2 = {
+			order = 6,
+			type = "group",
+			name = "",
+			guiInline = true,
+			args = {}
+		},
+		mmButtons = {
+			order = 7,
+			type = "group",
+			name = "Minimap Buttons",
+			get = function(j)return SV.db.SVMap.minimapbar[j[#j]]end,
+			guiInline = true,
+			disabled = function()return not SV.db.SVMap.enable end,
+			args = {
+				enable = {
+					order = 1,
+					type = 'toggle',
+					name = L['Buttons Styled'],
+					desc = L['Style the minimap buttons.'],
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")SV:StaticPopup_Show("RL_CLIENT")end,
+				},
+				mouseover = {
+					order = 2,
+					name = L["Mouse Over"],
+					desc = L["Hidden unless you mouse over the frame."],
+					type = "toggle",
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")MOD:UpdateMinimapButtonSettings()end,
+				},
+				styleType = {
+					order = 3,
+					type = 'select',
+					name = L['Button Bar Layout'],
+					desc = L['Change settings for how the minimap buttons are styled.'],
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")MOD:UpdateMinimapButtonSettings()end,
+					disabled = function()return not SV.db.SVMap.minimapbar.enable end,
+					values = {
+						['NOANCHOR'] = L['No Anchor Bar'],
+						['HORIZONTAL'] = L['Horizontal Anchor Bar'],
+						['VERTICAL'] = L['Vertical Anchor Bar']
+					}
+				},
+				buttonSize = {
+					order = 4,
+					type = 'range',
+					name = L['Buttons Size'],
+					desc = L['The size of the minimap buttons.'],
+					min = 16,
+					max = 40,
+					step = 1,
+					width = "full",
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")MOD:UpdateMinimapButtonSettings()end,
+					disabled = function()return not SV.db.SVMap.minimapbar.enable or SV.db.SVMap.minimapbar.styleType == 'NOANCHOR'end
+				},
+			}
+		},
+		spacer3 = {
+			order = 8,
+			type = "group",
+			name = "",
+			guiInline = true,
+			args = {}
+		},
+		worldMap = {
+			order = 9,
+			type = "group",
+			name = "WorldMap",
+			guiInline = true,
+			args = {
+				tinyWorldMap = {
+					order = 1,
+					type = "toggle",
+					name = L["Tiny Map"],
+					desc = L["Don't scale the large world map to block out sides of the screen."],
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
+				},
+				mapAlpha = {
+					order = 2,
+					name = L['Map Alpha While Moving'],
+					desc = L['Controls what the transparency of the worldmap will be set to when you are moving.'],
+					type = 'range',
+					isPercent = true,
+					min = 0,
+					max = 1,
+					step = 0.01,
+					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
+				},
+			}
+		},
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/plate.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/plate.lua
new file mode 100644
index 0000000..3f5e41c
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/plate.lua
@@ -0,0 +1,736 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVPlate;
+local _, ns = ...;
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+local positionTable = {
+	TOPLEFT = "TOPLEFT",
+	LEFT = "LEFT",
+	BOTTOMLEFT = "BOTTOMLEFT",
+	RIGHT = "RIGHT",
+	TOPRIGHT = "TOPRIGHT",
+	BOTTOMRIGHT = "BOTTOMRIGHT",
+	CENTER = "CENTER",
+	TOP = "TOP",
+	BOTTOM = "BOTTOM",
+	RIGHTTOP = "RIGHTTOP",
+    LEFTTOP = "LEFTTOP",
+    RIGHTBOTTOM = "RIGHTBOTTOM",
+    LEFTBOTTOM = "LEFTBOTTOM"
+};
+
+local activeFilter,filters;
+
+local function UpdateFilterGroupOptions()
+	if not activeFilter or not SV.db['SVPlate']['filter'][activeFilter] then
+		SV.Options.args.SVPlate.args.filters.args.filterGroup=nil;
+		return
+	end
+	SV.Options.args.SVPlate.args.filters.args.filterGroup = {
+		type = "group",
+		name = activeFilter,
+		guiInline = true,
+		order = -10,
+		get = function(d)return SV.db["SVPlate"]["filter"][activeFilter][d[#d]] end,
+		set = function(d,e)
+			SV.db["SVPlate"]["filter"][activeFilter][d[#d]] = e;
+			MOD:PlateIteration("AssertFiltering")
+			MOD:UpdateAllPlates()
+			UpdateFilterGroupOptions()
+		end,
+		args = {
+			enable = {
+				type = "toggle",
+				order = 1,
+				name = L["Enable"],
+				desc = L["Use this filter."]
+			},
+			hide = {
+				type = "toggle",
+				order = 2,
+				name = L["Hide"],
+				desc = L["Prevent any nameplate with this unit name from showing."]
+			},
+			customColor = {
+				type = "toggle",
+				order = 3,
+				name = L["Custom Color"],
+				desc = L["Disable threat coloring for this plate and use the custom color."]
+			},
+			color = {
+				type = "color",
+				order = 4,
+				name = L["Color"],
+				get = function(key)
+					local color = SV.db["SVPlate"]["filter"][activeFilter][key[#key]]
+					if color then
+						return color[1],color[2],color[3],color[4]
+					end
+				end,
+				set = function(key,r,g,b)
+					SV.db["SVPlate"]["filter"][activeFilter][key[#key]] = {}
+					local color = SV.db["SVPlate"]["filter"][activeFilter][key[#key]]
+					if color then
+						color = {r,g,b};
+						UpdateFilterGroupOptions()
+						MOD:PlateIteration("CheckFilterAndHealers")
+						MOD:UpdateAllPlates()
+					end
+				end
+			},
+			customScale = {
+				type = "range",
+				name = L["Custom Scale"],
+				desc = L["Set the scale of the nameplate."],
+				min = 0.67,
+				max = 2,
+				step = 0.01
+			}
+		}
+	}
+end
+
+SV.Options.args.SVPlate = {
+	type = "group",
+	name = MOD.TitleID,
+	childGroups = "tab",
+	args = {
+		commonGroup = {
+			order = 1,
+			type = 'group',
+			name = L['NamePlate Options'],
+			childGroups = "tree",
+			args = {
+				intro = {order = 1, type = "description", name = L["NAMEPLATE_DESC"]},
+				enable={
+					order=2,type="toggle",name=L["Enable"],
+					get=function(d)return SV.db.SVPlate[d[#d]]end,
+					set=function(d,e)SV.db.SVPlate[d[#d]]=e;SV:StaticPopup_Show("RL_CLIENT")end,
+				},
+				common = {
+					order = 1,
+					type = "group",
+					name = L["General"],
+					get = function(d)return SV.db.SVPlate[d[#d]]end,
+					set = function(d,e)MOD:ChangeDBVar(e,d[#d]);MOD:UpdateAllPlates() end,
+					disabled = function()return not SV.db.SVPlate.enable end,
+					args = {
+						combatHide = {
+							type = "toggle",
+							order = 1,
+							name = L["Combat Toggle"],
+							desc = L["Toggle the nameplates to be visible outside of combat and visible inside combat."],
+							set = function(d,e)MOD:ChangeDBVar(e,d[#d])MOD:CombatToggle()end
+						},
+						comboPoints = {
+							type = "toggle",
+							order = 2,
+							name = L["Combo Points"],
+							desc = L["Display combo points on nameplates."]
+						},
+						colorNameByValue = {
+							type = "toggle",
+							order = 3,
+							name = L["Color Name By Health Value"]
+						},
+						targetcount = {
+							type = "toggle",
+							order = 4,
+							name = L["Target Count"],
+							desc = L["Display the number of party / raid members targetting the nameplate unit."]
+						},
+						showthreat = {
+							type = "toggle",
+							order = 5,
+							name = L["Threat Text"],
+							desc = L["Display threat level as text on targeted,	boss or mouseover nameplate."]
+						},
+						nonTargetAlpha = {
+							type = "range",
+							order = 6,
+							name = L["Non-Target Alpha"],
+							desc = L["Alpha of nameplates that are not your current target."],
+							min = 0,
+							max = 1,
+							step = 0.01,
+							isPercent = true
+						},
+						fontGroup = {
+							order = 100,
+							type = "group",
+							guiInline = true,
+							name = L["Fonts"],
+							args = {
+								font = {
+									type = "select",
+									dialogControl = "LSM30_Font",
+									order = 4,
+									name = L["Font"],
+									values = AceGUIWidgetLSMlists.font
+								},
+								fontSize = {
+									order = 5,
+									name = L["Font Size"],
+									type = "range",
+									min = 6,
+									max = 22,
+									step = 1
+								},
+								fontOutline = {
+									order = 6,
+									name = L["Font Outline"],
+									desc = L["Set the font outline."],
+									type = "select",
+									values = {
+										["NONE"] = L["None"],
+										["OUTLINE"] = "OUTLINE",
+										["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+										["THICKOUTLINE"] = "THICKOUTLINE"
+									}
+								}
+							}
+						},
+						reactions = {
+							order = 200,
+							type = "group",
+							name = L["Reaction Coloring"],
+							guiInline = true,
+							get = function(key)
+								local color = SV.db.SVPlate.reactions[key[#key]]
+								if color then
+									return color[1],color[2],color[3],color[4]
+								end
+							end,
+							set = function(key,r,g,b)
+								local color = {r,g,b}
+								MOD:ChangeDBVar(color, key[#key], "reactions")
+								MOD:UpdateAllPlates()
+							end,
+							args = {
+								friendlyNPC = {
+									type = "color",
+									order = 1,
+									name = L["Friendly NPC"],
+									hasAlpha = false
+								},
+								friendlyPlayer = {
+									name = L["Friendly Player"],
+									order = 2,
+									type = "color",
+									hasAlpha = false
+								},
+								neutral = {
+									name = L["Neutral"],
+									order = 3,
+									type = "color",
+									hasAlpha = false
+								},
+								enemy = {
+									name = L["Enemy"],
+									order = 4,
+									type = "color",
+									hasAlpha = false
+								},
+								tapped = {
+									name = L["Tagged NPC"],
+									order = 5,
+									type = "color",
+									hasAlpha = false
+								}
+							}
+						},
+					}
+				},
+				healthBar = {
+					type = "group",
+					order = 2,
+					name = L["Health Bar"],
+					disabled = function()return not SV.db.SVPlate.enable end,
+					get = function(d)return SV.db.SVPlate.healthBar[d[#d]]end,
+					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"healthBar");MOD:UpdateAllPlates()end,
+					args = {
+						width = {
+							type = "range",
+							order = 1,
+							name = L["Width"],
+							desc = L["Controls the width of the nameplate"],
+							type = "range",
+							min = 50,
+							max = 125,
+							step = 1
+						},
+						height = {
+							type = "range",
+							order = 2,
+							name = L["Height"],
+							desc = L["Controls the height of the nameplate"],
+							type = "range",
+							min = 4,
+							max = 30,
+							step = 1
+						},
+						lowThreshold = {
+							type = "range",
+							order = 3,
+							name = L["Low Health Threshold"],
+							desc = L["Color the border of the nameplate yellow when it reaches this point,it will be colored red when it reaches half this value."],
+							isPercent = true,
+							min = 0,
+							max = 1,
+							step = 0.01
+						},
+						fontGroup = {
+							order = 4,
+							type = "group",
+							name = L["Fonts"],
+							guiInline = true,
+							get = function(d)return SV.db.SVPlate.healthBar.text[d[#d]]end,
+							set = function(d,e)MOD:ChangeDBVar(e,d[#d],"healthBar","text");MOD:UpdateAllPlates()end,
+							args = {
+								enable = {
+									type = "toggle",
+									name = L["Enable"],
+									order = 1
+								},
+								attachTo = {
+									type = "select",
+									order = 2,
+									name = L["Attach To"],
+									values = {
+										TOPLEFT = "TOPLEFT",
+										LEFT = "LEFT",
+										BOTTOMLEFT = "BOTTOMLEFT",
+										RIGHT = "RIGHT",
+										TOPRIGHT = "TOPRIGHT",
+										BOTTOMRIGHT = "BOTTOMRIGHT",
+										CENTER = "CENTER",
+										TOP = "TOP",
+										BOTTOM = "BOTTOM"
+									}
+								},
+								format = {
+									type = "select",
+									order = 3,
+									name = L["Format"],
+									values = {
+										["CURRENT_MAX_PERCENT"] = L["Current - Max | Percent"],
+										["CURRENT_PERCENT"] = L["Current - Percent"],
+										["CURRENT_MAX"] = L["Current - Max"],
+										["CURRENT"] = L["Current"],
+										["PERCENT"] = L["Percent"],
+										["DEFICIT"] = L["Deficit"]
+									}
+								},
+								xOffset = {
+									type = "range",
+									order = 4,
+									name = L["X-Offset"],
+									min = -150,
+									max = 150,
+									step = 1
+								},
+								yOffset = {
+									type = "range",
+									order = 5,
+									name = L["Y-Offset"],
+									min = -150,
+									max = 150,
+									step = 1
+								}
+							}
+						}
+					}
+				},
+				castBar = {
+					type = "group",
+					order = 3,
+					name = L["Cast Bar"],
+					disabled = function()return not SV.db.SVPlate.enable end,
+					get = function(d)return SV.db.SVPlate.castBar[d[#d]]end,
+					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"castBar");MOD:UpdateAllPlates()end,
+					args = {
+						height = {
+							type = "range",
+							order = 1,
+							name = L["Height"],
+							type = "range",
+							min = 4,
+							max = 30,
+							step = 1
+						},
+						colors = {
+							order = 100,
+							type = "group",
+							name = L["Colors"],
+							guiInline = true,
+							get = function(key)
+								local color = SV.db.SVPlate.castBar[key[#key]]
+								if color then
+									return color[1],color[2],color[3],color[4]
+								end
+							end,
+							set = function(key,r,g,b)
+								local color = {r,g,b}
+								MOD:ChangeDBVar(color, key[#key], "castBar")
+								MOD:UpdateAllPlates()
+							end,
+							args = {
+								color = {
+									type = "color",
+									order = 1,
+									name = L["Can Interrupt"],
+									hasAlpha = false
+								},
+								noInterrupt = {
+									name = "No Interrupt",
+									order = 2,
+									type = "color",
+									hasAlpha = false
+								}
+							}
+						}
+					}
+				},
+				pointer = {
+					type = "group",
+					order = 4,
+					name = L["Target Indicator"],
+					get = function(d)return SV.db.SVPlate.pointer[d[#d]]end,
+					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"pointer");WorldFrame.elapsed = 3;MOD:UpdateAllPlates()end,
+					args = {
+						enable = {
+							order = 1,
+							type = "toggle",
+							name = L["Enable"]
+						},
+						colorMatchHealthBar = {
+							order = 2,
+							type = "toggle",
+							name = L["Color By Healthbar"],
+							desc = L["Match the color of the healthbar."],
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key], "pointer");
+								if value then
+									WorldFrame.elapsed = 3
+								end
+							end
+						},
+						color = {
+							type = "color",
+							name = L["Color"],
+							order = 3,
+							disabled = function()return SV.db.SVPlate.pointer.colorMatchHealthBar end,
+							get = function(key)
+								local color = SV.db.SVPlate.pointer[key[#key]]
+								if color then
+									return color[1],color[2],color[3],color[4]
+								end
+							end,
+							set = function(key,r,g,b)
+								local color = {r,g,b}
+								MOD:ChangeDBVar(color, key[#key], "pointer")
+								MOD:UpdateAllPlates()
+							end,
+						}
+					}
+				},
+				raidHealIcon = {
+					type = "group",
+					order = 5,
+					name = L["Raid Icon"],
+					get = function(d)return SV.db.SVPlate.raidHealIcon[d[#d]]end,
+					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"raidHealIcon")MOD:UpdateAllPlates()end,
+					args = {
+						attachTo = {
+							type = "select",
+							order = 1,
+							name = L["Attach To"],
+							values = positionTable
+						},
+						xOffset = {
+							type = "range",
+							order = 2,
+							name = L["X-Offset"],
+							min = -150,
+							max = 150,
+							step = 1
+						},
+						yOffset = {
+							type = "range",
+							order = 3,
+							name = L["Y-Offset"],
+							min = -150,
+							max = 150,
+							step = 1
+						},
+						size = {
+							order = 4,
+							type = "range",
+							name = L["Size"],
+							width = "full",
+							min = 10,
+							max = 200,
+							step = 1
+						},
+					}
+				},
+				auras = {
+					type = "group",
+					order = 4,
+					name = L["Auras"],
+					get = function(d)return SV.db.SVPlate.auras[d[#d]]end,
+					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"auras")MOD:UpdateAllPlates()end,
+					args = {
+						numAuras = {
+							type = "range",
+							order = 1,
+							name = L["Number of Auras"],
+							min = 2,
+							max = 8,
+							step = 1
+						},
+						additionalFilter = {
+							type = "select",
+							order = 2,
+							name = L["Additional Filter"],
+							values = function()
+								filters = {}
+								filters[""] = NONE;
+								for j in pairs(SV.db.filter) do
+									filters[j] = j
+								end
+								return filters
+							end
+						},
+						configureButton = {
+							order = 4,
+							name = L["Configure Selected Filter"],
+							type = "execute",
+							width = "full",
+							func = function()ns:SetToFilterConfig(SV.db.SVPlate.auras.additionalFilter)end
+						},
+						fontGroup = {
+							order = 100,
+							type = "group",
+							guiInline = true,
+							name = L["Fonts"],
+							args = {
+								font = {
+									type = "select",
+									dialogControl = "LSM30_Font",
+									order = 4,
+									name = L["Font"],
+									values = AceGUIWidgetLSMlists.font
+								},
+								fontSize = {
+									order = 5,
+									name = L["Font Size"],
+									type = "range",
+									min = 6,
+									max = 22,
+									step = 1
+								},
+								fontOutline = {
+									order = 6,
+									name = L["Font Outline"],
+									desc = L["Set the font outline."],
+									type = "select",
+									values = {
+										["NONE"] = L["None"],
+										["OUTLINE"] = "OUTLINE",
+										["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+										["THICKOUTLINE"] = "THICKOUTLINE"
+									}
+								}
+							}
+						}
+					}
+				},
+				threat = {
+					type = "group",
+					order = 6,
+					name = L["Threat"],
+					get = function(d)return SV.db.SVPlate.threat[d[#d]]end,
+					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"threat")MOD:UpdateAllPlates()end,
+					args = {
+						enable = {
+							type = "toggle",
+							order = 1,
+							name = L["Enable"]
+						},
+						scaling = {
+							type = "group",
+							name = L["Scaling"],
+							guiInline = true,
+							order = 2,
+							args = {
+								goodScale = {
+									type = "range",
+									name = L["Good"],
+									order = 1,
+									min = 0.5,
+									max = 1.5,
+									step = 0.01,
+									isPercent = true
+								},
+								badScale = {
+									type = "range",
+									name = L["Bad"],
+									order = 1,
+									min = 0.5,
+									max = 1.5,
+									step = 0.01,
+									isPercent = true
+								}
+							}
+						},
+						colors = {
+							order = 3,
+							type = "group",
+							name = L["Colors"],
+							guiInline = true,
+							get = function(key)
+								local color = SV.db.SVPlate.threat[key[#key]]
+								if color then
+									return color[1],color[2],color[3],color[4]
+								end
+							end,
+							set = function(key,r,g,b)
+								local color = {r,g,b}
+								MOD:ChangeDBVar(color, key[#key], "threat")
+								MOD:UpdateAllPlates()
+							end,
+							args = {
+								goodColor = {
+									type = "color",
+									order = 1,
+									name = L["Good"],
+									hasAlpha = false
+								},
+								badColor = {
+									name = L["Bad"],
+									order = 2,
+									type = "color",
+									hasAlpha = false
+								},
+								goodTransitionColor = {
+									name = L["Good Transition"],
+									order = 3,
+									type = "color",
+									hasAlpha = false
+								},
+								badTransitionColor = {
+									name = L["Bad Transition"],
+									order = 4,
+									type = "color",
+									hasAlpha = false
+								}
+							}
+						}
+					}
+				},
+				filters = {
+					type = "group",
+					order = 200,
+					name = L["Filters"],
+					disabled = function()return not SV.db.SVPlate.enable end,
+					args = {
+						addname = {
+							type = "input",
+							order = 1,
+							name = L["Add Name"],
+							get = function(d)return""end,
+							set = function(d,e)
+								if SV.db["SVPlate"]["filter"][e]then
+									SV:AddonMessage(L["Filter already exists!"])
+									return
+								end
+								SV.db["SVPlate"]["filter"][e] = {
+									["enable"] = true,
+									["hide"] = false,
+									["customColor"] = false,
+									["customScale"] = 1,
+									["color"] = {
+										g = 104/255,
+										h = 138/255,
+										i = 217/255
+									}
+								}
+								UpdateFilterGroupOptions()
+								MOD:UpdateAllPlates()
+							end
+						},
+						deletename = {
+							type = "input",
+							order = 2,
+							name = L["Remove Name"],
+							get = function(d)return""end,
+							set = function(d,e)
+								if G["SVPlate"]["filter"][e]then
+									SV.db["SVPlate"]["filter"][e].enable = false;
+									SV:AddonMessage(L["You can't remove a default name from the filter,disabling the name."])
+								else
+									SV.db["SVPlate"]["filter"][e] = nil;
+									SV.Options.args.SVPlate.args.filters.args.filterGroup = nil
+								end
+								UpdateFilterGroupOptions()
+								MOD:UpdateAllPlates()
+							end
+						},
+						selectFilter = {
+							order = 3,
+							type = "select",
+							name = L["Select Filter"],
+							get = function(d)return activeFilter end,
+							set = function(d,e)activeFilter = e;UpdateFilterGroupOptions()end,
+							values = function()
+								filters = {}
+								if(SV.db["SVPlate"]["filter"]) then
+									for j in pairs(SV.db["SVPlate"]["filter"])do
+										filters[j] = j
+									end
+								end
+								return filters
+							end
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/profiles.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/profiles.lua
new file mode 100644
index 0000000..d19affc
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/profiles.lua
@@ -0,0 +1,144 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local SVLib = LibSuperVillain;
+local L = SV.L;
+
+local playerRealm = GetRealmName()
+local playerName = UnitName("player")
+local profileKey = ("%s - %s"):format(playerName, playerRealm)
+
+SV.Options.args.profiles = {
+	order = 9999,
+	type = "group",
+	name = L["profiles"],
+	childGroups = "tab",
+	args = {
+		desc = {
+			order = 1,
+			type = "description",
+			name = L["intro"] .. "\n",
+		},
+		spacer1 = {
+			order = 2,
+			type = "description",
+			name = "",
+			width = "full",
+		},
+		importdesc = {
+			order = 3,
+			type = "description",
+			name = "\n" .. L["import_desc"],
+			width = "full"
+		},
+		save = {
+			order = 4,
+			type = "execute",
+			name = SAVE,
+			desc = function() return SAVE .. " " .. L["current"] .. " " .. NORMAL_FONT_COLOR_CODE .. profileKey .. FONT_COLOR_CODE_CLOSE end,
+			func = function() SVLib:ExportDatabase(profileKey) SV:SavedPopup() end,
+		},
+		export = {
+			name = L["export"],
+			desc = L["export_sub"],
+			type = "input",
+			order = 5,
+			get = false,
+			set = function(key, value) SVLib:ExportDatabase(value) SV:SavedPopup() end,
+		},
+		import = {
+			name = L["import"],
+			desc = L["import_sub"],
+			type = "select",
+			order = 6,
+			get = function() return " SELECT ONE" end,
+			set = function(key, value) SV:ImportProfile(value) end,
+			disabled = function() local t = SVLib:CheckProfiles() return (not t) end,
+			values = SVLib:GetProfiles(),
+		},
+		spacer2 = {
+			order = 7,
+			type = "description",
+			name = "",
+			width = "full",
+		},
+		deldesc = {
+			order = 8,
+			type = "description",
+			name = "\n" .. L["delete_desc"],
+		},
+		delete = {
+			order = 9,
+			type = "select",
+			name = L["delete"],
+			desc = L["delete_sub"],
+			get = function() return " SELECT ONE" end,
+			set = function(key, value) SVLib:Remove(value) end,
+			values = SVLib:GetProfiles(),
+			disabled = function() local t = SVLib:CheckProfiles() return (not t) end,
+			confirm = true,
+			confirmText = L["delete_confirm"],
+		},
+		spacer3 = {
+			order = 10,
+			type = "description",
+			name = "",
+			width = "full",
+		},
+		descreset = {
+			order = 11,
+			type = "description",
+			name = L["reset_desc"],
+		},
+		reset = {
+			order = 12,
+			type = "execute",
+			name = function() return L["reset"] .. " " .. NORMAL_FONT_COLOR_CODE .. profileKey .. FONT_COLOR_CODE_CLOSE end,
+			desc = L["reset_sub"],
+			func = function() SV:StaticPopup_Show("RESET_PROFILE_PROMPT") end,
+			width = "full",
+		},
+		spacer4 = {
+			order = 13,
+			type = "description",
+			name = "",
+			width = "full",
+		},
+		dualSpec = {
+			order = 14,
+			type = "toggle",
+			name = "Dual-Spec Switching",
+			get = function() return SVLib:CheckDualProfile() end,
+			set = function(key, value) SVLib:ToggleDualProfile(value) end,
+		},
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/stat.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/stat.lua
new file mode 100644
index 0000000..590e554
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/stat.lua
@@ -0,0 +1,158 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G 		 =  _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local string 	 =  _G.string;
+local upper 	 =  string.upper;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVStats;
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+SV.Options.args.SVStats = {
+	type = "group",
+	name = MOD.TitleID,
+	childGroups = "tab",
+	get = function(key) return SV.db.SVStats[key[#key]] end,
+	set = function(key, value) MOD:ChangeDBVar(value, key[#key]); MOD:Generate() end,
+	args = {
+		intro = {
+			order = 1,
+			type = "description",
+			name = L["STATS_DESC"]
+		},
+		time24 = {
+			order = 2,
+			type = "toggle",
+			name = L["24-Hour Time"],
+			desc = L["Toggle 24-hour mode for the time datatext."]
+		},
+		localtime = {
+			order = 3,
+			type = "toggle",
+			name = L["Local Time"],
+			desc = L["If not set to true then the server time will be displayed instead."]
+		},
+		battleground = {
+			order = 4,
+			type = "toggle",
+			name = L["Battleground Texts"],
+			desc = L["When inside a battleground display personal scoreboard information on the main datatext bars."]
+		},
+		showBackground = {
+			order = 5,
+			name = "Show Backgrounds",
+			desc = L["Display statistic background textures"],
+			type = "toggle",
+			set = function(key, value) MOD:ChangeDBVar(value, key[#key]); SV:StaticPopup_Show("RL_CLIENT") end,
+		},
+		shortGold = {
+			order = 6,
+			type = "toggle",
+			name = L["Shortened Gold Text"],
+		},
+		fontGroup = {
+			order = 7,
+			type = "group",
+			guiInline = true,
+			name = L["Fonts"],
+			set = function(key, value) MOD:ChangeDBVar(value, key[#key]); MOD:Generate() end,
+			args = {
+				font = {
+					type = "select",
+					dialogControl = "LSM30_Font",
+					order = 4,
+					name = L["Font"],
+					values = AceGUIWidgetLSMlists.font
+				},
+				fontSize = {
+					order = 5,
+					name = L["Font Size"],
+					type = "range",
+					min = 6,
+					max = 22,
+					step = 1
+				},
+				fontOutline = {
+					order = 6,
+					name = L["Font Outline"],
+					desc = L["Set the font outline."],
+					type = "select",
+					values = {
+						["NONE"] = L["None"],
+						["OUTLINE"] = "OUTLINE",
+						["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+						["THICKOUTLINE"] = "THICKOUTLINE"
+					}
+				}
+			}
+		},
+		panels = {
+			type = "group",
+			name = L["Panels"],
+			order = 100,
+			args = {},
+			guiInline = true
+		},
+	}
+}
+
+do
+	local orderIncrement = 0;
+	local statValues = MOD.StatListing
+	local configTable = SV.db.SVStats.panels;
+	local optionTable = SV.Options.args.SVStats.args.panels.args;
+
+	for panelName, panelPositions in pairs(configTable)do
+		orderIncrement = orderIncrement + 1;
+		if(not _G[panelName]) then
+			optionTable[panelName] = nil;
+			return
+		end
+		if(type(panelPositions) == "table") then
+			optionTable[panelName] = {
+				type = 'group',
+				args = {},
+				name = L[panelName] or panelName,
+				guiInline = true,
+				order = (orderIncrement + 10)
+			}
+			for position,_ in pairs(panelPositions) do
+				optionTable[panelName].args[position] = {
+					type = 'select',
+					name = L[position] or upper(position),
+					values = statValues,
+					get = function(key) return SV.db.SVStats.panels[panelName][key[#key]] end,
+					set = function(key, value) MOD:ChangeDBVar(value, key[#key], "panels", panelName); MOD:Generate() end
+				}
+			end
+		end
+	end
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/tip.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/tip.lua
new file mode 100644
index 0000000..6fe229a
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/tip.lua
@@ -0,0 +1,179 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVTip;
+local LSM = LibStub("LibSharedMedia-3.0");
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+SV.Options.args.SVTip = {
+	type = "group",
+	name = MOD.TitleID,
+	childGroups = "tab",
+	get = function(a)return SV.db.SVTip[a[#a]] end,
+	set = function(a, b)SV.db.SVTip[a[#a]] = b end,
+	args = {
+		commonGroup = {
+			order = 1,
+			type = "group",
+			name = L["Tooltip Options"],
+			childGroups = "tree",
+			args = {
+				intro = {
+					order = 1,
+					type = "description",
+					name = L["TOOLTIP_DESC"]
+				},
+				enable = {
+					order = 2,
+					type = "toggle",
+					name = L["Enable"],
+					get = function(a)return SV.db.SVTip[a[#a]]end,
+					set = function(a, b)SV.db.SVTip[a[#a]] = b;SV:StaticPopup_Show("RL_CLIENT") end
+				},
+				common = {
+					order = 3,
+					type = "group",
+					name = L["General"],
+					disabled = function() return not SV.db.SVTip.enable end,
+					args = {
+						cursorAnchor = {
+							order = 1,
+							type = "toggle",
+							name = L["Cursor Anchor"],
+							desc = L["Should tooltip be anchored to mouse cursor"]
+						},
+						targetInfo = {
+							order = 2,
+							type = "toggle",
+							name = L["Target Info"],
+							desc = L["When in a raid group display if anyone in your raid is targeting the current tooltip unit."]
+						},
+						playerTitles = {
+							order = 3,
+							type = "toggle",
+							name = L["Player Titles"],
+							desc = L["Display player titles."]
+						},
+						guildRanks = {
+							order = 4,
+							type = "toggle",
+							name = L["Guild Ranks"],
+							desc = L["Display guild ranks if a unit is guilded."]
+						},
+						inspectInfo = {
+							order = 5,
+							type = "toggle",
+							name = L["Talent Spec"],
+							desc = L["Display the players talent spec in the tooltip, this may not immediately update when mousing over a unit."]
+						},
+						spellID = {
+							order = 6,
+							type = "toggle",
+							name = L["Spell/Item IDs"],
+							desc = L["Display the spell or item ID when mousing over a spell or item tooltip."],
+							get = function(a)return SV.db.SVTip.spellID end,
+							set = function(a, b)SV.db.SVTip.spellID = b;SV:StaticPopup_Show("RL_CLIENT") end,
+						}
+					}
+
+				},
+				visibility={
+					order=100,
+					type="group",
+					name=L["Visibility"],
+					get=function(a)return SV.db.SVTip.visibility[a[#a]]end,
+					set=function(a,b)SV.db.SVTip.visibility[a[#a]]=b end,
+					args={
+						combat={order=1,type='toggle',name=COMBAT,desc=L["Hide tooltip while in combat."]},
+						unitFrames={order=2,type='select',name=L['Unitframes'],desc=L["Don't display the tooltip when mousing over a unitframe."],values={['ALL']=L['Always Hide'],['NONE']=L['Never Hide'],['SHIFT']=SHIFT_KEY,['ALT']=ALT_KEY,['CTRL']=CTRL_KEY}}
+					}
+				},
+				healthBar={
+					order=200,
+					type="group",
+					name=L["Health Bar"],
+					get=function(a)return SV.db.SVTip.healthBar[a[#a]]end,
+					set=function(a,b)SV.db.SVTip.healthBar[a[#a]]=b end,
+					args={
+						height = {
+							order = 1,
+							name = L["Height"],
+							type = "range",
+							min = 1,
+							max = 15,
+							step = 1,
+							width = "full",
+							set = function(a,b)SV.db.SVTip.healthBar.height = b;GameTooltipStatusBar:Height(b)end
+						},
+						fontGroup = {
+							order = 2,
+							name = L["Fonts"],
+							type = "group",
+							guiInline = true,
+							args = {
+								text = {
+									order = 1,
+									type = "toggle",
+									name = L["Text"],
+									set = function(a,b)SV.db.SVTip.healthBar.text = b;if b then GameTooltipStatusBar.text:Show()else GameTooltipStatusBar.text:Hide()end end
+								},
+								font = {
+									type = "select",
+									dialogControl = "LSM30_Font",
+									order = 2,
+									width = "full",
+									name = L["Font"],
+									values = AceGUIWidgetLSMlists.font,
+									set = function(a,b)SV.db.SVTip.healthBar.font = b;GameTooltipStatusBar.text:SetFontTemplate(LSM:Fetch("font",SV.db.SVTip.healthBar.font), SV.db.SVTip.healthBar.fontSize,"OUTLINE")end
+								},
+								fontSize = {
+									order = 3,
+									name = L["Font Size"],
+									type = "range",
+									min = 6,
+									max = 22,
+									step = 1,
+									width = "full",
+									set = function(a,b)SV.db.SVTip.healthBar.fontSize = b;GameTooltipStatusBar.text:SetFontTemplate(LSM:Fetch("font",SV.db.SVTip.healthBar.font),SV.db.SVTip.healthBar.fontSize,"OUTLINE")end
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/_load.xml b/Interface/AddOns/SVUI_ConfigOMatic/components/units/_load.xml
new file mode 100644
index 0000000..e835fb5
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/_load.xml
@@ -0,0 +1,11 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='core.lua'/>
+	<Script file='player.lua'/>
+	<Script file='target.lua'/>
+	<Script file='focus.lua'/>
+	<Script file='pet.lua'/>
+	<Script file='party.lua'/>
+	<Script file='raid.lua'/>
+	<Script file='other.lua'/>
+	<Script file='grid.lua'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua
new file mode 100644
index 0000000..8cdabd8
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/core.lua
@@ -0,0 +1,2090 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+local string     =  _G.string;
+local find,gsub,upper = string.find, string.gsub, string.upper;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...;
+local ACD = LibStub("AceConfigDialog-3.0");
+--[[
+##########################################################
+LOCAL VARS/FUNCTIONS
+##########################################################
+]]--
+local filterList = {};
+local textStringFormats = {
+	["none"] = "None",
+	["current"] = "Current",
+	["deficit"] = "Deficit",
+	["percent"] = "Percent",
+	["curpercent"] = "Current - Percent",
+	["curmax"] = "Current - Maximum",
+	["curmax-percent"] = "Current - Maximum | %",
+}
+--[[
+##########################################################
+SET PACKAGE OPTIONS
+##########################################################
+]]--
+function ns:SetCastbarConfigGroup(updateFunction, unitName, count)
+	local configTable = {
+		order = 800,
+		type = "group",
+		name = L["Castbar"],
+		get = function(key)
+			return SV.db.SVUnit[unitName]["castbar"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "castbar")
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {
+			enable = {
+				type = "toggle",
+				order = 1,
+				name = L["Enable"]
+			},
+			commonGroup = {
+				order = 2,
+				guiInline = true,
+				type = "group",
+				name = L["Base Settings"],
+				args = {
+					forceshow = {
+						order = 1,
+						name = SHOW.." / "..HIDE,
+						type = "execute",
+						func = function()
+							local v = unitName:gsub("(.)", upper, 1)
+							v = "SVUI_"..v;
+							v = v:gsub("t(arget)", "T%1")
+							if count then
+								for w = 1, count do
+									local castbar = _G[v..w].Castbar;
+									if not castbar.oldHide then
+										castbar.oldHide = castbar.Hide;
+										castbar.Hide = castbar.Show;
+										castbar:Show()
+									else
+										castbar.Hide = castbar.oldHide;
+										castbar.oldHide = nil;
+										castbar:Hide()
+										castbar.lastUpdate = 0
+									end
+								end
+							else
+								local castbar = _G[v].Castbar;
+								if not castbar.oldHide then
+									castbar.oldHide = castbar.Hide;
+									castbar.Hide = castbar.Show;
+									castbar:Show()
+								else
+									castbar.Hide = castbar.oldHide;
+									castbar.oldHide = nil;
+									castbar:Hide()
+									castbar.lastUpdate = 0
+								end
+							end
+						end,
+					},
+					icon = {
+						order = 2,
+						name = L["Icon"],
+						type = "toggle"
+					},
+					latency = {
+						order = 3,
+						name = L["Latency"],
+						type = "toggle"
+					},
+					spark = {
+						order = 4,
+						type = "toggle",
+						name = L["Spark"]
+					},
+				}
+			},
+			sizeGroup = {
+				order = 3,
+				guiInline = true,
+				type = "group",
+				name = L["Size Settings"],
+				args = {
+					matchFrameWidth = {
+						order = 1,
+						name = L["Auto Width"],
+						desc = "Force the castbar to ALWAYS match its unitframes width.",
+						type = "toggle",
+					},
+					matchsize = {
+						order = 2,
+						type = "execute",
+						name = L["Match Frame Width"],
+						desc = "Set the castbar width to match its unitframe.",
+						func = function()
+							SV.db.SVUnit[unitName]["castbar"]["width"] = SV.db.SVUnit[unitName]["width"]
+							updateFunction(MOD, unitName, count)
+						end
+					},
+					width = {
+						order = 3,
+						name = L["Width"],
+						type = "range",
+						width = "full",
+						min = 50,
+						max = 600,
+						step = 1,
+						disabled = function() return SV.db.SVUnit[unitName]["castbar"].matchFrameWidth end
+					},
+					height = {
+						order = 4,
+						name = L["Height"],
+						type = "range",
+						width = "full",
+						min = 10,
+						max = 85,
+						step = 1
+					},
+				}
+			},
+			colorGroup = {
+				order = 4,
+				type = "group",
+				guiInline = true,
+				name = L["Custom Coloring"],
+				args = {
+					useCustomColor = {
+						type = "toggle",
+						order = 1,
+						name = L["Enable"]
+					},
+					castingColor = {
+						order = 2,
+						name = L["Custom Bar Color"],
+						type = "color",
+						get = function(key)
+							local color = SV.db.SVUnit[unitName]["castbar"]["castingColor"]
+							return color[1], color[2], color[3], color[4]
+						end,
+						set = function(key, rValue, gValue, bValue)
+							SV.db.SVUnit[unitName]["castbar"]["castingColor"] = {rValue, gValue, bValue}
+							MOD:RefreshUnitFrames()
+						end,
+						disabled = function() return not SV.db.SVUnit[unitName]["castbar"].useCustomColor end
+					},
+					sparkColor = {
+						order = 3,
+						name = L["Custom Spark Color"],
+						type = "color",
+						get = function(key)
+							local color = SV.db.SVUnit[unitName]["castbar"]["sparkColor"]
+							return color[1], color[2], color[3], color[4]
+						end,
+						set = function(key, rValue, gValue, bValue)
+							SV.db.SVUnit[unitName]["castbar"]["sparkColor"] = {rValue, gValue, bValue}
+							MOD:RefreshUnitFrames()
+						end,
+						disabled = function() return not SV.db.SVUnit[unitName]["castbar"].useCustomColor end
+					},
+				}
+			},
+			formatGroup = {
+				order = 4,
+				guiInline = true,
+				type = "group",
+				name = L["Text Settings"],
+				args = {
+					format = {
+						order = 1,
+						type = "select",
+						name = L["Format"],
+						values = { ["CURRENTMAX"] = L["Current / Max"], ["CURRENT"] = L["Current"], ["REMAINING"] = L["Remaining"] }
+					},
+				}
+			}
+		}
+	}
+	if(unitName == "player") then
+		configTable.args.commonGroup.args.ticks = {
+			order = 6,
+			type = "toggle",
+			name = L["Ticks"],
+			desc = L["Display tick marks on the castbar."]
+		}
+		configTable.args.commonGroup.args.displayTarget = {
+			order = 7,
+			type = "toggle",
+			name = L["Display Target"],
+			desc = L["Display the target of your current cast."]
+		}
+	end
+	return configTable
+end
+
+function ns:SetAuraConfigGroup(custom, auraType, unused, updateFunction, unitName, count)
+	local configTable = {
+		order = auraType == "buffs" and 600 or 700,
+		type = "group",
+		name = auraType == "buffs" and L["Buffs"] or L["Debuffs"],
+		get = function(key)
+			return SV.db.SVUnit[unitName][auraType][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, auraType)
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {
+			enable = {
+				type = "toggle",
+				order = 1,
+				name = L["Enable"]
+			},
+			commonGroup = {
+				order = 2,
+				guiInline = true,
+				type = "group",
+				name = L["Base Settings"],
+				args = {
+					verticalGrowth = {type = "select", order = 1, name = L["Vertical Growth"], desc = L["The vertical direction that the auras will position themselves"], values = {UP = "UP", DOWN = "DOWN"}},
+					horizontalGrowth = {type = "select", order = 2, name = L["Horizontal Growth"], desc = L["The horizontal direction that the auras will position themselves"], values = {LEFT = "LEFT", RIGHT = "RIGHT"}},
+					perrow = {type = "range", order = 3, width = "full", name = L["Per Row"], min = 1, max = 20, step = 1},
+					numrows = {type = "range", order = 4, width = "full", name = L["Num Rows"], min = 1, max = 4, step = 1},
+					sizeOverride = {type = "range", order = 5, width = "full", name = L["Size Override"], desc = L["If not set to 0 then override the size of the aura icon to this."], min = 0, max = 60, step = 1},
+				}
+			},
+			positionGroup = {
+				order = 3,
+				guiInline = true,
+				type = "group",
+				name = L["Position Settings"],
+				args = {
+					xOffset = {order = 1, type = "range", name = L["xOffset"], width = "full", min = -60, max = 60, step = 1},
+					yOffset = {order = 2, type = "range", name = L["yOffset"], width = "full", min = -60, max = 60, step = 1},
+					anchorPoint = {type = "select", order = 3, name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = SV.PointIndexes},
+				}
+			},
+			filters = {name = L["Filters"], guiInline = true, type = "group", order = 500, args = {}}
+		}
+	}
+	if auraType == "buffs"then
+		configTable.args.positionGroup.args.attachTo = {type = "select", order = 7, name = L["Attach To"], desc = L["What to attach the buff anchor frame to."], values = {["FRAME"] = L["Frame"], ["DEBUFFS"] = L["Debuffs"]}}
+	else
+		configTable.args.positionGroup.args.attachTo = {type = "select", order = 7, name = L["Attach To"], desc = L["What to attach the buff anchor frame to."], values = {["FRAME"] = L["Frame"], ["BUFFS"] = L["Buffs"]}}
+	end
+	if custom then
+		configTable.args.filters.args.filterPlayer = {order = 10, type = "toggle", name = L["Only Show Your Auras"], desc = L["Don't display auras that are not yours."]}
+		configTable.args.filters.args.filterBlocked = {order = 11, type = "toggle", name = L["Force Blocked List"], desc = L["Don't display any auras found on the Blocked filter."]}
+		configTable.args.filters.args.filterAllowed = {order = 12, type = "toggle", name = L["Force Allowed List"], desc = L["If no other filter options are being used then it will block anything not on the Allowed filter."]}
+		configTable.args.filters.args.filterInfinite = {order = 13, type = "toggle", name = L["Block Auras Without Duration"], desc = L["Don't display auras that have no duration."]}
+		configTable.args.filters.args.filterDispellable = {order = 13, type = "toggle", name = L["Block Non-Dispellable Auras"], desc = L["Don't display auras that cannot be purged or dispelled by your class."]}
+		if auraType == "buffs"then
+			configTable.args.filters.args.filterRaid = {order = 14, type = "toggle", name = L["Block Raid Buffs"], desc = L["Don't display raid buffs."]}
+		end
+		configTable.args.filters.args.useFilter = {
+			order = 15,
+			name = L["Additional Filter"],
+			desc = L["Select an additional filter to use."],
+			type = "select",
+			values = function()
+				filterList = {}
+				filterList[""] = NONE;
+				for n in pairs(SV.db.filter) do
+					filterList[n] = n
+				end
+				return filterList
+			end
+		}
+
+	else
+		configTable.args.filters.args.filterPlayer = {
+			order = 10,
+			guiInline = true,
+			type = "group",
+			name = L["Only Show Your Auras"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"],
+					desc = L["If the unit is friendly to you."].." "..L["Don't display auras that are not yours."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterPlayer.friendly end,
+					set = function(l, m)
+					SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = m;
+						updateFunction(MOD, unitName, count)
+					end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"],
+					desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that are not yours."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterPlayer.enemy end,
+					set = function(l, m)
+						SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = m;
+						updateFunction(MOD, unitName, count)
+					end
+				}
+			}
+		}
+		configTable.args.filters.args.filterBlocked = {
+			order = 11,
+			guiInline = true,
+			type = "group",
+			name = L["Force Blocked List"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"],
+					desc = L["If the unit is friendly to you."].." "..L["Don't display any auras found on the Blocked filter."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterBlocked.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterBlocked.friendly = m;updateFunction(MOD, unitName, count)end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"],
+					desc = L["If the unit is an enemy to you."].." "..L["Don't display any auras found on the Blocked filter."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterBlocked.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterBlocked.enemy = m;updateFunction(MOD, unitName, count)end
+				}
+			}
+		}
+		configTable.args.filters.args.filterAllowed = {
+			order = 12,
+			guiInline = true,
+			type = "group",
+			name = L["Force Allowed List"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"],
+					desc = L["If the unit is friendly to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterAllowed.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterAllowed.friendly = m;updateFunction(MOD, unitName, count)end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"],
+					desc = L["If the unit is an enemy to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterAllowed.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterAllowed.enemy = m;updateFunction(MOD, unitName, count)end
+				}
+			}
+		}
+		configTable.args.filters.args.filterInfinite = {
+			order = 13,
+			guiInline = true,
+			type = "group",
+			name = L["Block Auras Without Duration"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"],
+					desc = L["If the unit is friendly to you."].." "..L["Don't display auras that have no duration."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterInfinite.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = m;updateFunction(MOD, unitName, count)end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"],
+					desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that have no duration."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterInfinite.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = m;updateFunction(MOD, unitName, count)end
+				}
+			}
+		}
+		configTable.args.filters.args.filterDispellable = {
+			order = 13,
+			guiInline = true,
+			type = "group",
+			name = L["Block Non-Dispellable Auras"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"],
+					desc = L["If the unit is friendly to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterDispellable.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = m;updateFunction(MOD, unitName, count)end
+					},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"],
+					desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
+					get = function(l)return SV.db.SVUnit[unitName][auraType].filterDispellable.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = m;updateFunction(MOD, unitName, count)end
+				}
+			}
+		}
+		if(auraType == "buffs") then
+			configTable.args.filters.args.filterRaid = {
+				order = 14,
+				guiInline = true,
+				type = "group",
+				name = L["Block Raid Buffs"],
+				args = {
+					friendly = {
+						order = 2,
+						type = "toggle",
+						name = L["Friendly"],
+						desc = L["If the unit is friendly to you."].." "..L["Don't display raid (consolidated) buffs."],
+						get = function(l)return SV.db.SVUnit[unitName][auraType].filterRaid.friendly end,
+						set = function(l, m)SV.db.SVUnit[unitName][auraType].filterRaid.friendly = m;updateFunction(MOD, unitName, count)end
+					},
+					enemy = {
+						order = 3,
+						type = "toggle",
+						name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display raid (consolidated) buffs."],
+						get = function(l)return SV.db.SVUnit[unitName][auraType].filterRaid.enemy end,
+						set = function(l, m)SV.db.SVUnit[unitName][auraType].filterRaid.enemy = m;updateFunction(MOD, unitName, count)end
+					}
+				}
+			}
+		end
+		configTable.args.filters.args.useFilter = {
+			order = 15,
+			name = L["Additional Filter"],
+			desc = L["Select an additional filter to use."],
+			type = "select",
+			values = function()
+				filterList = {}
+				filterList[""] = NONE;
+				for n in pairs(SV.db.filter) do
+					filterList[n] = n
+				end
+				return filterList
+			end
+		}
+	end
+	return configTable
+end
+
+function ns:SetMiscConfigGroup(partyRaid, updateFunction, unitName, count)
+	local miscGroup = {
+		order = 99,
+		type = "group",
+		name = L["Misc Text"],
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
+			local tag = ""
+			local pc = SV.db.SVUnit[unitName]["formatting"].threat and "[threat]" or "";
+			tag = tag .. pc;
+			local ap = SV.db.SVUnit[unitName]["formatting"].absorbs and "[absorbs]" or "";
+			tag = tag .. ap;
+			local cp = SV.db.SVUnit[unitName]["formatting"].incoming and "[incoming]" or "";
+			tag = tag .. cp;
+
+			MOD:ChangeDBVar(tag, "tags", unitName, "misc");
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {
+			incoming = {
+				order = 1,
+				name = L["Show Incoming Heals"],
+				type = "toggle",
+				get = function() return SV.db.SVUnit[unitName]["formatting"].incoming end,
+			},
+			absorbs = {
+				order = 2,
+				name = L["Show Absorbs"],
+				type = "toggle",
+				get = function() return SV.db.SVUnit[unitName]["formatting"].absorbs end,
+			},
+			threat = {
+				order = 3,
+				name = L["Show Threat"],
+				type = "toggle",
+				get = function() return SV.db.SVUnit[unitName]["formatting"].threat end,
+			},
+			xOffset = {
+				order = 4,
+				type = "range",
+				width = "full",
+				name = L["Misc Text X Offset"],
+				desc = L["Offset position for text."],
+				min = -300,
+				max = 300,
+				step = 1,
+				get = function() return SV.db.SVUnit[unitName]["formatting"].xOffset end,
+				set = function(key, value) MOD:ChangeDBVar(value, key[#key], unitName, "formatting"); end,
+			},
+			yOffset = {
+				order = 5,
+				type = "range",
+				width = "full",
+				name = L["Misc Text Y Offset"],
+				desc = L["Offset position for text."],
+				min = -300,
+				max = 300,
+				step = 1,
+				get = function() return SV.db.SVUnit[unitName]["formatting"].yOffset end,
+				set = function(key, value) MOD:ChangeDBVar(value, key[#key], unitName, "formatting"); end,
+			},
+		}
+	}
+	return miscGroup
+end
+
+function ns:SetHealthConfigGroup(partyRaid, updateFunction, unitName, count)
+	local healthOptions = {
+		order = 100,
+		type = "group",
+		name = L["Health"],
+		get = function(key)
+			return SV.db.SVUnit[unitName]["health"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "health");
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {
+			commonGroup = {
+				order = 2,
+				type = "group",
+				guiInline = true,
+				name = L["Base Settings"],
+				args = {
+					reversed = {type = "toggle", order = 1, name = L["Reverse Fill"], desc = L["Invert this bars fill direction"]},
+					position = {type = "select", order = 2, name = L["Text Position"], desc = L["Set the anchor for this bars value text"], values = SV.PointIndexes},
+					configureButton = {
+						order = 4,
+						width = "full",
+						name = L["Coloring"],
+						type = "execute",
+						func = function() ACD:SelectGroup(SV.NameID, "SVUnit", "common", "allColorsGroup", "healthGroup") end
+					},
+					xOffset = {order = 5, type = "range", width = "full", name = L["Text xOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
+					yOffset = {order = 6, type = "range", width = "full", name = L["Text yOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
+				}
+			},
+			formatGroup = {
+				order = 100,
+				type = "group",
+				guiInline = true,
+				name = L["Text Settings"],
+				set = function(key, value)
+					MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
+					local tag = ""
+					local pc = SV.db.SVUnit[unitName]["formatting"].health_colored and "[health:color]" or "";
+					tag = tag .. pc;
+
+					local pt = SV.db.SVUnit[unitName]["formatting"].health_type;
+					if(pt and pt ~= "none") then
+						tag = tag .. "[health:" .. pt .. "]"
+					end
+
+					MOD:ChangeDBVar(tag, "tags", unitName, "health");
+					updateFunction(MOD, unitName, count)
+				end,
+				args = {
+					health_colored = {
+						order = 1,
+						name = L["Colored"],
+						type = "toggle",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].health_colored end,
+						desc = L["Use various name coloring methods"]
+					},
+					health_type = {
+						order = 3,
+						name = L["Text Format"],
+						type = "select",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].health_type end,
+						desc = L["TEXT_FORMAT_DESC"],
+						values = textStringFormats,
+					}
+				}
+			}
+		}
+	}
+	if partyRaid then
+		healthOptions.args.frequentUpdates = {
+			type = "toggle",
+			order = 1,
+			name = L["Frequent Updates"],
+			desc = L["Rapidly update the health, uses more memory and cpu. Only recommended for healing."]
+		}
+		healthOptions.args.orientation = {
+			type = "select",
+			order = 2,
+			name = L["Orientation"],
+			desc = L["Direction the health bar moves when gaining/losing health."],
+			values = {["HORIZONTAL"] = L["Horizontal"], ["VERTICAL"] = L["Vertical"]}
+		}
+	end
+	return healthOptions
+end
+
+function ns:SetPowerConfigGroup(playerTarget, updateFunction, unitName, count)
+	local powerOptions = {
+		order = 200,
+		type = "group",
+		name = L["Power"],
+		get = function(key)
+			return SV.db.SVUnit[unitName]["power"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "power");
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {
+			enable = {type = "toggle", order = 1, name = L["Enable"]},
+			commonGroup = {
+				order = 2,
+				type = "group",
+				guiInline = true,
+				name = L["Base Settings"],
+				args = {
+					position = {type = "select", order = 3, name = L["Text Position"], desc = L["Set the anchor for this bars value text"], values = SV.PointIndexes},
+					configureButton = {
+						order = 4,
+						name = L["Coloring"],
+						width = "full",
+						type = "execute",
+						func = function()ACD:SelectGroup(SV.NameID, "SVUnit", "common", "allColorsGroup", "powerGroup")end
+					},
+					height = {
+						type = "range",
+						name = L["Height"],
+						order = 5,
+						width = "full",
+						min = 3,
+						max = 50,
+						step = 1
+					},
+					xOffset = {order = 6, type = "range", width = "full", name = L["Text xOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
+					yOffset = {order = 7, type = "range", width = "full", name = L["Text yOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
+				}
+			},
+			formatGroup = {
+				order = 100,
+				type = "group",
+				guiInline = true,
+				name = L["Text Settings"],
+				set = function(key, value)
+					MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
+					local tag = ""
+					local cp = SV.db.SVUnit[unitName]["formatting"].power_class and "[classpower]" or "";
+					tag = tag .. cp;
+					local ap = SV.db.SVUnit[unitName]["formatting"].power_alt and "[altpower]" or "";
+					tag = tag .. ap;
+					local pc = SV.db.SVUnit[unitName]["formatting"].power_colored and "[power:color]" or "";
+					tag = tag .. pc;
+
+					local pt = SV.db.SVUnit[unitName]["formatting"].power_type;
+					if(pt and pt ~= "none") then
+						tag = tag .. "[power:" .. pt .. "]"
+					end
+
+					MOD:ChangeDBVar(tag, "tags", unitName, "power");
+					updateFunction(MOD, unitName, count)
+				end,
+				args = {
+					power_colored = {
+						order = 1,
+						name = L["Colored"],
+						type = "toggle",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].power_colored end,
+						desc = L["Use various name coloring methods"]
+					},
+					power_class = {
+						order = 1,
+						name = L["Show Class Power"],
+						type = "toggle",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].power_class end,
+					},
+					power_alt = {
+						order = 1,
+						name = L["Show Alt Power"],
+						type = "toggle",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].power_alt end,
+					},
+					power_type = {
+						order = 3,
+						name = L["Text Format"],
+						type = "select",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].power_type end,
+						desc = L["TEXT_FORMAT_DESC"],
+						values = textStringFormats,
+					}
+				}
+			}
+		}
+	}
+
+	if(playerTarget) then
+		powerOptions.args.formatGroup.args.attachTextToPower = {
+			type = "toggle",
+			order = 2,
+			name = L["Attach Text to Power"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["power"].attachTextToPower
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, "attachTextToPower", unitName, "power");
+				updateFunction(MOD, unitName, count)
+			end,
+		}
+	end
+
+	return powerOptions
+end
+
+function ns:SetNameConfigGroup(updateFunction, unitName, count)
+	local k = {
+		order = 400,
+		type = "group",
+		name = L["Name"],
+		get = function(key)
+			return SV.db.SVUnit[unitName]["name"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "name");
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {
+			commonGroup = {
+				order = 2,
+				type = "group",
+				guiInline = true,
+				name = L["Base Settings"],
+				args = {
+					position = {
+						type = "select",
+						order = 3,
+						name = L["Text Position"],
+						desc = L["Set the anchor for this units name text"],
+						values = SV.PointIndexes
+					},
+					xOffset = {
+						order = 6,
+						type = "range",
+						width = "full",
+						name = L["Text xOffset"],
+						desc = L["Offset position for text."],
+						min = -300,
+						max = 300,
+						step = 1
+					},
+					yOffset = {
+						order = 7,
+						type = "range",
+						width = "full",
+						name = L["Text yOffset"],
+						desc = L["Offset position for text."],
+						min = -300,
+						max = 300,
+						step = 1
+					},
+				}
+			},
+			fontGroup = {
+				order = 4,
+				type = "group",
+				guiInline = true,
+				name = L["Fonts"],
+				set = function(key, value)
+					MOD:ChangeDBVar(value, key[#key], unitName, "name");
+					MOD:RefreshAllUnitMedia()
+				end,
+				args = {
+					font = {
+						type = "select",
+						dialogControl = "LSM30_Font",
+						order = 0,
+						name = L["Default Font"],
+						desc = L["The font used to show unit names."],
+						values = AceGUIWidgetLSMlists.font
+					},
+					fontOutline = {
+						order = 1,
+						name = L["Font Outline"],
+						desc = L["Set the font outline."],
+						type = "select",
+						values = {["NONE"] = L["None"], ["OUTLINE"] = "OUTLINE", ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE", ["THICKOUTLINE"] = "THICKOUTLINE"}
+					},
+					fontSize = {
+						order = 2,
+						name = L["Font Size"],
+						desc = L["Set the font size."],
+						type = "range",
+						width = "full",
+						min = 6,
+						max = 22,
+						step = 1
+					}
+				}
+			},
+			formatGroup = {
+				order = 100,
+				type = "group",
+				guiInline = true,
+				name = L["Text Settings"],
+				set = function(key, value)
+					MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
+					local tag = ""
+					tag = SV.db.SVUnit[unitName]["formatting"].name_colored and "[name:color]" or "";
+
+					local length = SV.db.SVUnit[unitName]["formatting"].name_length;
+					tag = tag .. "[name:" .. length .. "]"
+					local lvl = SV.db.SVUnit[unitName]["formatting"].smartlevel and "[smartlevel]" or "";
+					tag = tag .. lvl
+
+					MOD:ChangeDBVar(tag, "tags", unitName, "name");
+					updateFunction(MOD, unitName, count)
+				end,
+				args = {
+					name_colored = {
+						order = 1,
+						name = L["Colored"],
+						type = "toggle",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].name_colored end,
+						desc = L["Use various name coloring methods"]
+					},
+					smartlevel = {
+						order = 2,
+						name = L["Unit Level"],
+						type = "toggle",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].smartlevel end,
+						desc = L["Display the units level"]
+					},
+					name_length = {
+						order = 3,
+						name = L["Name Length"],
+						desc = L["TEXT_FORMAT_DESC"],
+						type = "range",
+						width = "full",
+						get = function() return SV.db.SVUnit[unitName]["formatting"].name_length end,
+						min = 1,
+						max = 30,
+						step = 1
+					}
+				}
+			}
+		}
+	}
+	return k
+end
+
+local function getAvailablePortraitConfig(unit)
+	local db = SV.db.SVUnit[unit].portrait;
+	if db.overlay then
+		return {["3D"] = L["3D"]}
+	else
+		return {["2D"] = L["2D"], ["3D"] = L["3D"]}
+	end
+end
+
+function ns:SetPortraitConfigGroup(updateFunction, unitName, count)
+	local k = {
+		order = 400,
+		type = "group",
+		name = L["Portrait"],
+		get = function(key)
+			return SV.db.SVUnit[unitName]["portrait"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "portrait")
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {
+			enable = {
+				type = "toggle",
+				order = 1,
+				name = L["Enable"]
+			},
+			styleGroup = {
+				order = 2,
+				type = "group",
+				guiInline = true,
+				name = L["Base Settings"],
+				args = {
+					style = {
+						order = 1,
+						type = "select",
+						name = L["Style"],
+						desc = L["Select the display method of the portrait. NOTE: if overlay is set then only 3D will be available"],
+						values = function() return getAvailablePortraitConfig(unitName) end
+					},
+					overlay = {
+						order = 2,
+						type = "toggle",
+						name = L["Overlay"],
+						desc = L["Overlay the healthbar"],
+						disabled = function() return SV.db.SVUnit[unitName]["portrait"].style == "2D" end
+					},
+					width = {
+						order = 3,
+						type = "range",
+						width = "full",
+						name = L["Width"],
+						min = 15,
+						max = 150,
+						step = 1,
+						disabled = function() return SV.db.SVUnit[unitName]["portrait"].overlay == true end
+					}
+				}
+			},
+			modGroup = {
+				order = 3,
+				type = "group",
+				guiInline = true,
+				name = L["3D Settings"],
+				disabled = function() return SV.db.SVUnit[unitName]["portrait"].style == "2D" end,
+				args = {
+					rotation = {
+						order = 1,
+						type = "range",
+						name = L["Model Rotation"],
+						min = 0,
+						max = 360,
+						step = 1
+					},
+					camDistanceScale = {
+						order = 2,
+						type = "range",
+						name = L["Camera Distance Scale"],
+						desc = L["How far away the portrait is from the camera."],
+						min = 0.01,
+						max = 4,
+						step = 0.01
+					},
+				}
+			}
+		}
+	}
+	return k
+end
+
+function ns:SetIconConfigGroup(updateFunction, unitName, count)
+	local iconGroup = SV.db.SVUnit[unitName]["icons"]
+	local grouporder = 1
+	local k = {
+		order = 5000,
+		type = "group",
+		name = L["Icons"],
+		get = function(key)
+			return SV.db.SVUnit[unitName]["icons"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "icons")
+			updateFunction(MOD, unitName, count)
+		end,
+		args = {}
+	};
+
+	if(iconGroup["raidicon"]) then
+		k.args.raidicon = {
+			order = grouporder,
+			type = "group",
+			guiInline = true,
+			name = L["Raid Marker"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["icons"]["raidicon"][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "raidicon")
+				updateFunction(MOD, unitName, count)
+			end,
+			args = {
+				enable = {type = "toggle", order = 1, name = L["Enable"]},
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+			}
+		}
+		grouporder = grouporder + 1
+	end
+
+	if(iconGroup["combatIcon"]) then
+		k.args.combatIcon = {
+			order = grouporder,
+			type = "group",
+			guiInline = true,
+			name = L["Combat"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["icons"]["combatIcon"][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "combatIcon")
+				updateFunction(MOD, unitName, count)
+			end,
+			args = {
+				enable = {type = "toggle", order = 1, name = L["Enable"]},
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+			}
+		}
+		grouporder = grouporder + 1
+	end
+
+	if(iconGroup["restIcon"]) then
+		k.args.restIcon = {
+			order = grouporder,
+			type = "group",
+			guiInline = true,
+			name = L["Resting"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["icons"]["restIcon"][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "restIcon")
+				updateFunction(MOD, unitName, count)
+			end,
+			args = {
+				enable = {type = "toggle", order = 1, name = L["Enable"]},
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+			}
+		}
+		grouporder = grouporder + 1
+	end
+
+	if(iconGroup["classicon"]) then
+		k.args.classicon = {
+			order = grouporder,
+			type = "group",
+			guiInline = true,
+			name = L["Class"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["icons"]["classicon"][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "classicon")
+				updateFunction(MOD, unitName, count)
+			end,
+			args = {
+				enable = {type = "toggle", order = 1, name = L["Enable"]},
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+			}
+		}
+		grouporder = grouporder + 1
+	end
+
+	if(iconGroup["eliteicon"]) then
+		k.args.eliteicon = {
+			order = grouporder,
+			type = "group",
+			guiInline = true,
+			name = L["Elite / Rare"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["icons"]["eliteicon"][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "eliteicon")
+				updateFunction(MOD, unitName, count)
+			end,
+			args = {
+				enable = {type = "toggle", order = 1, name = L["Enable"]},
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+			}
+		}
+		grouporder = grouporder + 1
+	end
+
+	if(iconGroup["roleIcon"]) then
+		k.args.roleIcon = {
+			order = grouporder,
+			type = "group",
+			guiInline = true,
+			name = L["Role"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["icons"]["roleIcon"][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "roleIcon")
+				updateFunction(MOD, unitName, count)
+			end,
+			args = {
+				enable = {type = "toggle", order = 1, name = L["Enable"]},
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+			}
+		}
+		grouporder = grouporder + 1
+	end
+
+	if(iconGroup["raidRoleIcons"]) then
+		k.args.raidRoleIcons = {
+			order = grouporder,
+			type = "group",
+			guiInline = true,
+			name = L["Leader / MasterLooter"],
+			get = function(key)
+				return SV.db.SVUnit[unitName]["icons"]["raidRoleIcons"][key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "raidRoleIcons")
+				updateFunction(MOD, unitName, count)
+			end,
+			args = {
+				enable = {type = "toggle", order = 1, name = L["Enable"]},
+				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
+				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
+				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
+				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
+			}
+		}
+		grouporder = grouporder + 1
+	end
+
+	return k
+end
+
+function ns:SetAurabarConfigGroup(custom, updateFunction, unitName)
+	local k = {
+		order = 1100,
+		type = "group",
+		name = L["Aura Bars"],
+		get = function(key)
+			return SV.db.SVUnit[unitName]["aurabar"][key[#key]]
+		end,
+		set = function(key, value)
+			MOD:ChangeDBVar(value, key[#key], unitName, "aurabar")
+			updateFunction(MOD, unitName, count)
+			MOD:RefreshUnitFrames()
+		end,
+		args = {
+			enable = {
+				type = "toggle",
+				order = 1,
+				name = L["Enable"]
+			},
+			commonGroup = {
+				order = 2,
+				type = "group",
+				guiInline = true,
+				name = L["Base Settings"],
+				args = {
+					configureButton1 = {
+						order = 1,
+						name = L["Coloring"],
+						type = "execute", func = function()ACD:SelectGroup(SV.NameID, "SVUnit", "common", "allColorsGroup", "auraBars")end
+					},
+					configureButton2 = {
+						order = 2,
+						name = L["Coloring (Specific)"],
+						type = "execute", func = function()ns:SetToFilterConfig("AuraBar Colors")end
+					},
+					anchorPoint = {
+						type = "select",
+						order = 3,
+						name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {["ABOVE"] = L["Above"], ["BELOW"] = L["Below"]}
+					},
+					attachTo = {
+						type = "select",
+						order = 4,
+						name = L["Attach To"], desc = L["The object you want to attach to."],
+						values = {["FRAME"] = L["Frame"], ["DEBUFFS"] = L["Debuffs"], ["BUFFS"] = L["Buffs"]}
+					},
+					height = {
+						type = "range",
+						order = 5,
+						name = L["Height"], min = 6, max = 40, step = 1
+					},
+					statusbar = {
+						type = "select",
+						dialogControl = "LSM30_Statusbar",
+						order = 6,
+						name = L["StatusBar Texture"],
+						desc = L["Aurabar texture."],
+						values = AceGUIWidgetLSMlists.statusbar
+					}
+				}
+			},
+			filterGroup = {
+				order = 3,
+				type = "group",
+				guiInline = true,
+				name = L["Filtering and Sorting"],
+				args = {
+					sort = {
+						type = "select",
+						order = 7,
+						name = L["Sort Method"],
+						values = {["TIME_REMAINING"] = L["Time Remaining"], ["TIME_REMAINING_REVERSE"] = L["Time Remaining Reverse"], ["TIME_DURATION"] = L["Duration"], ["TIME_DURATION_REVERSE"] = L["Duration Reverse"], ["NAME"] = NAME, ["NONE"] = NONE}
+					},
+					filters = {
+						name = L["Filters"],
+						guiInline = true,
+						type = "group",
+						order = 500,
+						args = {}
+					},
+					friendlyAuraType = {
+						type = "select",
+						order = 16,
+						name = L["Friendly Aura Type"], desc = L["Set the type of auras to show when a unit is friendly."], values = {["HARMFUL"] = L["Debuffs"], ["HELPFUL"] = L["Buffs"]}
+					},
+					enemyAuraType = {
+						type = "select",
+						order = 17,
+						name = L["Enemy Aura Type"], desc = L["Set the type of auras to show when a unit is a foe."], values = {["HARMFUL"] = L["Debuffs"], ["HELPFUL"] = L["Buffs"]}
+					}
+				}
+			}
+		}
+	};
+	if custom then
+		k.args.filterGroup.args.filters.args.filterPlayer = {
+			order = 10,
+			type = "toggle",
+			name = L["Only Show Your Auras"], desc = L["Don't display auras that are not yours."]
+		}
+		k.args.filterGroup.args.filters.args.filterBlocked = {
+			order = 11,
+			type = "toggle",
+			name = L["Force Blocked List"], desc = L["Don't display any auras found on the Blocked filter."]
+		}
+		k.args.filterGroup.args.filters.args.filterAllowed = {
+			order = 12,
+			type = "toggle",
+			name = L["Force Allowed List"], desc = L["If no other filter options are being used then it will block anything not on the Allowed filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."]
+		}
+		k.args.filterGroup.args.filters.args.filterInfinite = {
+			order = 13,
+			type = "toggle",
+			name = L["Block Auras Without Duration"], desc = L["Don't display auras that have no duration."]
+		}
+		k.args.filterGroup.args.filters.args.filterDispellable = {
+			order = 13,
+			type = "toggle",
+			name = L["Block Non-Dispellable Auras"], desc = L["Don't display auras that cannot be purged or dispelled by your class."]
+		}
+		k.args.filterGroup.args.filters.args.filterRaid = {
+			order = 14,
+			type = "toggle",
+			name = L["Block Raid Buffs"], desc = L["Don't display raid buffs such as Blessing of Kings or Mark of the Wild."]
+		}
+		k.args.filterGroup.args.filters.args.useFilter = {
+			order = 15,
+			name = L["Additional Filter"],
+			desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Only Show Your Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+			type = "select",
+			values = function()
+				filterList = {}
+				filterList[""] = NONE;
+				for n in pairs(SV.db.filter) do
+					filterList[n] = n
+				end
+				return filterList
+			end
+		}
+	else
+		k.args.filterGroup.args.filters.args.filterPlayer = {
+			order = 10, guiInline = true,
+			type = "group",
+			name = L["Only Show Your Auras"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display auras that are not yours."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterPlayer.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterPlayer.friendly = m;updateFunction(MOD, unitName)end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that are not yours."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterPlayer.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterPlayer.enemy = m;updateFunction(MOD, unitName)end
+				}
+			}
+		}
+		k.args.filterGroup.args.filters.args.filterBlocked = {
+			order = 11, guiInline = true,
+			type = "group",
+			name = L["Force Blocked List"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display any auras found on the Blocked filter."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterBlocked.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterBlocked.friendly = m;updateFunction(MOD, unitName)end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display any auras found on the Blocked filter."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterBlocked.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterBlocked.enemy = m;updateFunction(MOD, unitName)end
+				}
+			}
+		}
+		k.args.filterGroup.args.filters.args.filterAllowed = {
+			order = 12, guiInline = true,
+			type = "group",
+			name = L["Force Allowed List"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterAllowed.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterAllowed.friendly = m;updateFunction(MOD, unitName)end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterAllowed.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterAllowed.enemy = m;updateFunction(MOD, unitName)end
+				}
+			}
+		}
+		k.args.filterGroup.args.filters.args.filterInfinite = {
+			order = 13, guiInline = true,
+			type = "group",
+			name = L["Block Auras Without Duration"],
+			args = {
+				friendly = {
+					order = 2,
+					type = "toggle",
+					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display auras that have no duration."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterInfinite.friendly end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterInfinite.friendly = m;updateFunction(MOD, unitName)end
+				},
+				enemy = {
+					order = 3,
+					type = "toggle",
+					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that have no duration."],
+					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterInfinite.enemy end,
+					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterInfinite.enemy = m;updateFunction(MOD, unitName)end
+				}
+			}
+		}
+		k.args.filterGroup.args.filters.args.filterDispellable = {
+			order = 13, guiInline = true,
+			type = "group",
+			name = L["Block Non-Dispellable Auras"],
+			args = {
+				friendly = {
+				order = 2,
+				type = "toggle",
+				name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
+				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterDispellable.friendly end,
+				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterDispellable.friendly = m;updateFunction(MOD, unitName)end}, enemy = {
+				order = 3,
+				type = "toggle",
+				name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
+				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterDispellable.enemy end,
+				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterDispellable.enemy = m;updateFunction(MOD, unitName)end}
+			}
+		}
+		k.args.filterGroup.args.filters.args.filterRaid = {
+			order = 14, guiInline = true,
+			type = "group",
+			name = L["Block Raid Buffs"],
+			args = {
+				friendly = {
+				order = 2,
+				type = "toggle",
+				name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display raid buffs such as Blessing of Kings or Mark of the Wild."],
+				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterRaid.friendly end,
+				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterRaid.friendly = m;updateFunction(MOD, unitName)end}, enemy = {
+				order = 3,
+				type = "toggle",
+				name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display raid buffs such as Blessing of Kings or Mark of the Wild."],
+				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterRaid.enemy end,
+				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterRaid.enemy = m;updateFunction(MOD, unitName)end}
+			}
+		}
+		k.args.filterGroup.args.filters.args.useFilter = {
+			order = 15,
+			name = L["Additional Filter"],
+			desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Only Show Your Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+			type = "select",
+			values = function()
+				filterList = {}
+				filterList[""] = NONE;
+				for n in pairs(SV.db.filter) do
+					filterList[n] = n
+				end
+				return filterList
+			end
+		}
+	end
+	return k
+end
+
+SV.Options.args.SVUnit = {
+	type = "group",
+	name = MOD.TitleID,
+	childGroups = "tree",
+	get = function(key)
+		return SV.db.SVUnit[key[#key]]
+	end,
+	set = function(key, value)
+		MOD:ChangeDBVar(value, key[#key]);
+		MOD:RefreshUnitFrames();
+	end,
+	args = {
+		enable = {
+			order = 1,
+			type = "toggle",
+			name = L["Enable"],
+			get = function(l)
+				return SV.db.SVUnit.enable end,
+			set = function(l, m)
+				SV.db.SVUnit.enable = m;
+				SV:StaticPopup_Show("RL_CLIENT")
+			end
+		},
+		common = {
+			order = 2,
+			type = "group",
+			name = L["General"],
+			guiInline = true,
+			disabled = function()
+				return not SV.db.SVUnit.enable
+			end,
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					guiInline = true,
+					name = L["General"],
+					args = {
+						disableBlizzard = {
+							order = 1,
+							name = L["Disable Blizzard"],
+							desc = L["Disables the blizzard party/raid frames."],
+							type = "toggle",
+							get = function(key)
+								return SV.db.SVUnit.disableBlizzard
+							end,
+							set = function(key, value)
+								MOD:ChangeDBVar(value, "disableBlizzard");
+								SV:StaticPopup_Show("RL_CLIENT")
+							end
+						},
+						fastClickTarget = {
+							order = 2,
+							name = L["Fast Clicks"],
+							desc = L["Immediate mouse-click-targeting"],
+							type = "toggle"
+						},
+						debuffHighlighting = {
+							order = 3,
+							name = L["Debuff Highlight"],
+							desc = L["Color the unit if there is a debuff that can be dispelled by your class."],
+							type = "toggle"
+						},
+						xrayFocus = {
+							order = 4,
+							name = L["X-Ray Specs"],
+							desc = L["Use handy graphics to focus the current target, or clear the current focus"],
+							type = "toggle"
+						},
+						OORAlpha = {
+							order = 5,
+							name = L["Range Fading"],
+							desc = L["The transparency of units that are out of range."],
+							type = "range",
+							min = 0,
+							max = 1,
+							step = 0.01,
+							width = "full",
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key]);
+							end
+						},
+						groupOORAlpha = {
+							order = 6,
+							name = L["Group Range Fading"],
+							desc = L["The transparency of group units that are out of range."],
+							type = "range",
+							min = 0,
+							max = 1,
+							step = 0.01,
+							width = "full",
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key]);
+							end
+						},
+					}
+				},
+				backgroundGroup = {
+					order = 2,
+					type = "group",
+					guiInline = true,
+					name = "Unit Backgrounds (3D Portraits Only)",
+					get = function(key)
+						return SV.db.media.textures[key[#key]]
+					end,
+					set = function(key, value)
+						SV.db.media.textures[key[#key]] = {"background", value}
+						SV:RefreshEverything(true)
+					end,
+					args = {
+						unitlarge = {
+							type = "select",
+							dialogControl = "LSM30_Background",
+							order = 2,
+							name = "Unit Background",
+							values = AceGUIWidgetLSMlists.background,
+						},
+						unitsmall = {
+							type = "select",
+							dialogControl = "LSM30_Background",
+							order = 3,
+							name = "Small Unit Background",
+							values = AceGUIWidgetLSMlists.background,
+						}
+					}
+				},
+				barGroup = {
+					order = 3,
+					type = "group",
+					guiInline = true,
+					name = L["Bars"],
+					get = function(key)
+						return SV.db.SVUnit[key[#key]]
+					end,
+					set = function(key, value)
+						MOD:ChangeDBVar(value, key[#key]);
+						MOD:RefreshAllUnitMedia()
+					end,
+					args = {
+						smoothbars = {
+							type = "toggle",
+							order = 1,
+							name = L["Smooth Bars"],
+							desc = L["Bars will transition smoothly."]
+						},
+						statusbar = {
+							type = "select",
+							dialogControl = "LSM30_Statusbar",
+							order = 2,
+							name = L["StatusBar Texture"],
+							desc = L["Main statusbar texture."],
+							values = AceGUIWidgetLSMlists.statusbar
+						},
+						auraBarStatusbar = {
+							type = "select",
+							dialogControl = "LSM30_Statusbar",
+							order = 3,
+							name = L["AuraBar Texture"],
+							desc = L["Main statusbar texture."],
+							values = AceGUIWidgetLSMlists.statusbar
+						},
+					}
+				},
+				fontGroup = {
+					order = 4,
+					type = "group",
+					guiInline = true,
+					name = L["Fonts"],
+					set = function(key, value)
+						MOD:ChangeDBVar(value, key[#key]);
+						MOD:RefreshAllUnitMedia()
+					end,
+					args = {
+						font = {
+							type = "select",
+							dialogControl = "LSM30_Font",
+							order = 1,
+							name = L["Default Font"],
+							desc = L["The font that the unitframes will use."],
+							values = AceGUIWidgetLSMlists.font,
+						},
+						fontOutline = {
+							order = 2,
+							name = L["Font Outline"],
+							desc = L["Set the font outline."],
+							type = "select",
+							values = {
+								["NONE"] = L["None"], ["OUTLINE"] = "OUTLINE", ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE", ["THICKOUTLINE"] = "THICKOUTLINE"
+							},
+						},
+						fontSize = {
+							order = 3,
+							name = L["Font Size"],
+							desc = L["Set the font size for unitframes."],
+							type = "range",
+							min = 6,
+							max = 22,
+							step = 1,
+						},
+						auraFont = {
+							type = "select",
+							dialogControl = "LSM30_Font",
+							order = 4,
+							name = L["Aura Font"],
+							desc = L["The font that the aura icons and aurabar will use."],
+							values = AceGUIWidgetLSMlists.font,
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key]);
+								MOD:RefreshAllUnitMedia()
+							end,
+						},
+						auraFontOutline = {
+							order = 5,
+							name = L["Aura Font Outline"],
+							desc = L["Set the aura icons and aurabar font outline."],
+							type = "select",
+							values = {
+								["NONE"] = L["None"], ["OUTLINE"] = "OUTLINE", ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE", ["THICKOUTLINE"] = "THICKOUTLINE"
+							},
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key]);
+								MOD:RefreshAllUnitMedia()
+							end,
+						},
+						auraFontSize = {
+							order = 6,
+							name = L["Aura Font Size"],
+							desc = L["Set the font size for aura icons and aurabars."],
+							type = "range",
+							min = 6,
+							max = 22,
+							step = 1,
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key]);
+								MOD:RefreshAllUnitMedia()
+							end,
+						},
+					}
+				},
+				allColorsGroup = {
+					order = 5,
+					type = "group",
+					guiInline = true,
+					name = L["Colors"],
+					args = {
+						healthGroup = {
+							order = 9,
+							type = "group", guiInline = true,
+							name = HEALTH,
+							args = {
+								healthclass = {
+									order = 1,
+									type = "toggle",
+									name = L["Class Health"],
+									desc = L["Color health by classcolor or reaction."],
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								colorhealthbyvalue = {
+									order = 2,
+									type = "toggle",
+									name = L["Health By Value"],
+									desc = L["Color health by amount remaining."],
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								classbackdrop = {
+									order = 3,
+									type = "toggle",
+									name = L["Class Backdrop"],
+									desc = L["Color the health backdrop by class or reaction."],
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								forceHealthColor = {
+									order = 4,
+									type = "toggle",
+									name = L["Overlay Health Color"],
+									desc = L["Force custom health color when using portrait overlays."],
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								overlayAnimation = {
+									order = 5,
+									type = "toggle",
+									name = L["Overlay Animations"],
+									desc = L["Toggle health animations on portrait overlays."],
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								health = {
+									order = 7,
+									type = "color",
+									name = L["Health"],
+									get = function(key)
+										local color = SV.db.media.unitframes.health
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.health = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								tapped = {
+									order = 8,
+									type = "color",
+									name = L["Tapped"],
+									get = function(key)
+										local color = SV.db.media.unitframes.tapped
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.tapped = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								disconnected = {
+									order = 9,
+									type = "color",
+									name = L["Disconnected"],
+									get = function(key)
+										local color = SV.db.media.unitframes.disconnected
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.disconnected = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								}
+							}
+						},
+						powerGroup = {
+							order = 10,
+							type = "group",
+							guiInline = true,
+							name = L["Powers"],
+							args = {
+								powerclass = {
+									order = 0,
+									type = "toggle",
+									name = L["Class Power"],
+									desc = L["Color power by classcolor or reaction."],
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								MANA = {
+									order = 2,
+									name = MANA,
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.power["MANA"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.power["MANA"] = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								RAGE = {
+									order = 3,
+									name = RAGE,
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.power["RAGE"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.power["RAGE"] = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								FOCUS = {
+									order = 4,
+									name = FOCUS,
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.power["FOCUS"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.power["FOCUS"] = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								ENERGY = {
+									order = 5,
+									name = ENERGY,
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.power["ENERGY"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.power["ENERGY"] = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								RUNIC_POWER = {
+									order = 6,
+									name = RUNIC_POWER,
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.power["RUNIC_POWER"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.power["RUNIC_POWER"] = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								}
+							}
+						},
+						castBars = {
+							order = 11,
+							type = "group",
+							guiInline = true,
+							name = L["Castbar"],
+							args = {
+								castClassColor = {
+									order = 0,
+									type = "toggle",
+									name = L["Class Castbars"],
+									desc = L["Color castbars by the class or reaction type of the unit."],
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								casting = {
+									order = 3,
+									name = L["Interruptable"],
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.casting
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.casting = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								spark = {
+									order = 4,
+									name = "Spark Color",
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.spark
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.spark = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								interrupt = {
+									order = 5,
+									name = L["Non-Interruptable"],
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.interrupt
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.interrupt = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								}
+							}
+						},
+						auraBars = {
+							order = 11,
+							type = "group",
+							guiInline = true,
+							name = L["Aura Bars"],
+							args = {
+								auraBarByType = {
+									order = 1,
+									name = L["By Type"],
+									desc = L["Color aurabar debuffs by type."],
+									type = "toggle",
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								auraBarShield = {
+									order = 2,
+									name = L["Color Shield Buffs"],
+									desc = L["Color all buffs that reduce incoming damage."],
+									type = "toggle",
+									get = function(key)
+										return SV.db.SVUnit[key[#key]]
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, key[#key]);
+										MOD:RefreshUnitFrames()
+									end
+								},
+								buff_bars = {
+									order = 10,
+									name = L["Buffs"],
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.buff_bars
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.buff_bars = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								debuff_bars = {
+									order = 11,
+									name = L["Debuffs"],
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.debuff_bars
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.debuff_bars = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								},
+								shield_bars = {
+									order = 12,
+									name = L["Shield Buffs Color"],
+									type = "color",
+									get = function(key)
+										local color = SV.db.media.unitframes.shield_bars
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.shield_bars = {rValue, gValue, bValue}
+										MOD:RefreshAllUnitMedia()
+									end,
+								}
+							}
+						},
+						predict = {
+							order = 12,
+							name = L["Heal Prediction"],
+							type = "group",
+							args = {
+								personal = {
+									order = 1,
+									name = L["Personal"],
+									type = "color",
+									hasAlpha = true,
+									get = function(key)
+										local color = SV.db.media.unitframes.predict["personal"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.predict["personal"] = {rValue, gValue, bValue}
+										MOD:RefreshUnitFrames()
+									end,
+								},
+								others = {
+									order = 2,
+									name = L["Others"],
+									type = "color",
+									hasAlpha = true,
+									get = function(key)
+										local color = SV.db.media.unitframes.predict["others"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.predict["others"] = {rValue, gValue, bValue}
+										MOD:RefreshUnitFrames()
+									end,
+								},
+								absorbs = {
+									order = 2,
+									name = L["Absorbs"],
+									type = "color",
+									hasAlpha = true,
+									get = function(key)
+										local color = SV.db.media.unitframes.predict["absorbs"]
+										return color[1],color[2],color[3]
+									end,
+									set = function(key, rValue, gValue, bValue)
+										SV.db.media.unitframes.predict["absorbs"] = {rValue, gValue, bValue}
+										MOD:RefreshUnitFrames()
+									end,
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/focus.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/focus.lua
new file mode 100644
index 0000000..55531c3
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/focus.lua
@@ -0,0 +1,215 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.focus = {
+	name = L["Focus Frame"],
+	type = "group",
+	order = 9,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["focus"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "focus");MOD:SetUnitFrame("focus")end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("focus");SV.Mentalo:Reset("Focus Frame")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						baseGroup = {
+							order = 1,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								showAuras = {
+									order = 1,
+									type = "execute",
+									name = L["Show Auras"],
+									func = function()local U = SVUI_Focus;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("focus")end
+								},
+								smartAuraDisplay = {
+									type = "select",
+									name = L["Smart Auras"],
+									desc = L["When set the Buffs and Debuffs will toggle being displayed depending on if the unit is friendly or an enemy. This will not effect the aurabars package."],
+									order = 2,
+									values = {["DISABLED"] = L["Disabled"], ["SHOW_DEBUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Debuffs"], ["SHOW_BUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Buffs"]}
+								},
+								rangeCheck = {
+									order = 3,
+									name = L["Range Check"],
+									desc = L["Check if you are in range to cast spells on this specific unit."],
+									type = "toggle"
+								},
+								predict = {
+									order = 4,
+									name = L["Heal Prediction"],
+									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
+									type = "toggle"
+								},
+								hideonnpc = {
+									type = "toggle",
+									order = 5,
+									name = L["Text Toggle On NPC"],
+									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+									get = function(l)return SV.db.SVUnit["focus"]["power"].hideonnpc end,
+									set = function(l, m)SV.db.SVUnit["focus"]["power"].hideonnpc = m;MOD:SetUnitFrame("focus")end
+								},
+								threatEnabled = {
+									type = "toggle",
+									order = 6,
+									name = L["Show Threat"]
+								}
+							}
+						},
+						sizeGroup = {
+							order = 2,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								width = {
+									order = 1,
+									name = L["Width"],
+									type = "range",
+									width = "full",
+									min = 50,
+									max = 500,
+									step = 1,
+								},
+								height = {
+									order = 2,
+									name = L["Height"],
+									type = "range",
+									width = "full",
+									min = 10,
+									max = 250,
+									step = 1
+								},
+							}
+						},
+					}
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "focus"),
+				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "focus"),
+				power = ns:SetPowerConfigGroup(nil, MOD.SetUnitFrame, "focus"),
+				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "focus"),
+				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "focus"),
+				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "focus"),
+				castbar = ns:SetCastbarConfigGroup(MOD.SetUnitFrame, "focus"),
+				aurabar = ns:SetAurabarConfigGroup(false, MOD.SetUnitFrame, "focus"),
+				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "focus")
+			}
+		}
+	}
+}
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.focustarget = {
+	name = L["FocusTarget Frame"],
+	type = "group",
+	order = 10,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["focustarget"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "focustarget");MOD:SetUnitFrame("focustarget")end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("focustarget")SV.Mentalo:Reset("FocusTarget Frame")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						baseGroup = {
+							order = 1,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								showAuras = {order = 1, type = "execute", name = L["Show Auras"], func = function()local U = SVUI_FocusTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("focustarget")end},
+								spacer1 = {
+									order = 2,
+									type = "description",
+									name = "",
+								},
+								rangeCheck = {order = 3, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
+								hideonnpc = {type = "toggle", order = 4, name = L["Text Toggle On NPC"], desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."], get = function(l)return SV.db.SVUnit["focustarget"]["power"].hideonnpc end, set = function(l, m)SV.db.SVUnit["focustarget"]["power"].hideonnpc = m;MOD:SetUnitFrame("focustarget")end},
+								threatEnabled = {type = "toggle", order = 5, name = L["Show Threat"]}
+							}
+						},
+						sizeGroup = {
+							order = 2,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								width = {order = 1, width = "full", name = L["Width"], type = "range", min = 50, max = 500, step = 1},
+								height = {order = 2, width = "full", name = L["Height"], type = "range", min = 10, max = 250, step = 1},
+							}
+						},
+					}
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "focustarget"),
+				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "focustarget"),
+				power = ns:SetPowerConfigGroup(false, MOD.SetUnitFrame, "focustarget"),
+				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "focustarget"),
+				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "focustarget"),
+				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "focustarget"),
+				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "focustarget")
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/grid.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/grid.lua
new file mode 100644
index 0000000..ca47fef
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/grid.lua
@@ -0,0 +1,173 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.grid = {
+	name = L["Grid Frames"],
+	type = "group",
+	order = 1200,
+	childGroups = "tab",
+	args = {
+		configureToggle = {
+			order = 1,
+			type = "execute",
+			name = L["Display Frames"],
+			func = function()MOD:UpdateGroupConfig(_G["SVUI_Raid40"], _G["SVUI_Raid40"].forceShow ~= true or nil)end,
+		},
+		gridCommon = {
+			order = 2,
+			type = "group",
+			guiInline = true,
+			name = L["General Settings"],
+			get = function(key)
+				return SV.db.SVUnit.grid[key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key] , "grid");
+				MOD:RefreshUnitFrames();
+			end,
+			args = {
+				enable = {
+					order = 1,
+					name = L["Enable Grid Mode"],
+					desc = L["Converts party, party pet, raid, raid pet, tank and assist frames into symmetrical squares. Ideal for healers."],
+					type = "toggle"
+				},
+				shownames = {
+					order = 2,
+					name = L["Show Grid Names"],
+					desc = L["Grid frames will show name texts."],
+					type = "toggle",
+					set = function(key, value)
+						if(SV.db.SVUnit.grid.size < 30) then MOD:ChangeDBVar(30, "size", "grid"); end
+						MOD:ChangeDBVar(value, "shownames", "grid");
+						MOD:RefreshUnitFrames();
+					end
+				},
+				size = {
+					order = 3,
+					name = L["Grid Size"],
+					desc = L["The universal size of grid squares."],
+					type = "range",
+					min = 10,
+					max = 70,
+					step = 1,
+					width = "full"
+				},
+			}
+		},
+		gridAllowed = {
+			order = 3,
+			type = "group",
+			guiInline = true,
+			name = L["Allowed Frames"],
+			get = function(key)
+				return SV.db.SVUnit.grid[key[#key]]
+			end,
+			set = function(key, value)
+				MOD:ChangeDBVar(value, key[#key] , "grid");
+				MOD:RefreshUnitFrames();
+			end,
+			args = {
+				party = {
+					type = 'toggle',
+					order = 1,
+					name = L['Party Grid'],
+					desc = L['If grid-mode is enabled, these units will be changed.'],
+					get = function(key) return SV.db.SVUnit.party.gridAllowed end,
+					set = function(key, value) SV.db.SVUnit.party.gridAllowed = value; MOD:SetGroupFrame("party") end,
+				},
+				partypets = {
+					type = 'toggle',
+					order = 2,
+					name = L['Party Pets Grid'],
+					desc = L['If grid-mode is enabled, these units will be changed.'],
+					get = function(key) return SV.db.SVUnit.party.petsGroup.gridAllowed end,
+					set = function(key, value) SV.db.SVUnit.party.petsGroup.gridAllowed = value; MOD:SetGroupFrame("party") end,
+				},
+				partytargets = {
+					type = 'toggle',
+					order = 3,
+					name = L['Party Targets Grid'],
+					desc = L['If grid-mode is enabled, these units will be changed.'],
+					get = function(key) return SV.db.SVUnit.party.targetsGroup.gridAllowed end,
+					set = function(key, value) SV.db.SVUnit.party.targetsGroup.gridAllowed = value; MOD:SetGroupFrame("party") end,
+				},
+				raid10 = {
+					type = 'toggle',
+					order = 4,
+					name = L['Raid 10 Grid'],
+					desc = L['If grid-mode is enabled, these units will be changed.'],
+					get = function(key) return SV.db.SVUnit.raid10.gridAllowed end,
+					set = function(key, value) SV.db.SVUnit.raid10.gridAllowed = value; MOD:SetGroupFrame("raid10") end,
+				},
+				raid25 = {
+					type = 'toggle',
+					order = 5,
+					name = L['Raid 25 Grid'],
+					desc = L['If grid-mode is enabled, these units will be changed.'],
+					get = function(key) return SV.db.SVUnit.raid25.gridAllowed end,
+					set = function(key, value) SV.db.SVUnit.raid25.gridAllowed = value; MOD:SetGroupFrame("raid25") end,
+				},
+				raid40 = {
+					type = 'toggle',
+					order = 6,
+					name = L['Raid 40 Grid'],
+					desc = L['If grid-mode is enabled, these units will be changed.'],
+					get = function(key) return SV.db.SVUnit.raid40.gridAllowed end,
+					set = function(key, value) SV.db.SVUnit.raid40.gridAllowed = value; MOD:SetGroupFrame("raid40") end,
+				},
+				raidpet = {
+					type = 'toggle',
+					order = 4,
+					name = L['Raid Pet Grid'],
+					desc = L['If grid-mode is enabled, these units will be changed.'],
+					get = function(key) return SV.db.SVUnit.raidpet.gridAllowed end,
+					set = function(key, value) SV.db.SVUnit.raidpet.gridAllowed = value; MOD:SetGroupFrame("raidpet") end,
+				},
+			}
+		},
+	}
+}
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/other.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/other.lua
new file mode 100644
index 0000000..b0e76cb
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/other.lua
@@ -0,0 +1,376 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.boss = {
+	name = L["Boss Frames"],
+	type = "group",
+	order = 1000,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["boss"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "boss");MOD:SetEnemyFrames("boss", MAX_BOSS_FRAMES)end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		displayFrames = {type = "execute", order = 2, name = L["Display Frames"], desc = L["Force the frames to show, they will act as if they are the player frame."], func = function()MOD:SwapElement("boss", 4)end},
+		resetSettings = {type = "execute", order = 3, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("boss")SV.Mentalo:Reset("Boss Frames")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						baseGroup = {
+							order = 1,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								showBy = {order = 1, name = L["Growth Direction"], type = "select", values = {["UP"] = L["Up"], ["DOWN"] = L["Down"]}},
+								spacer1 = {
+									order = 2,
+									type = "description",
+									name = "",
+								},
+								rangeCheck = {order = 3, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
+								hideonnpc = {type = "toggle", order = 4, name = L["Text Toggle On NPC"], desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."], get = function(l)return SV.db.SVUnit["boss"]["power"].hideonnpc end, set = function(l, m)SV.db.SVUnit["boss"]["power"].hideonnpc = m;MOD:SetEnemyFrames("boss")end},
+								threatEnabled = {type = "toggle", order = 5, name = L["Show Threat"]}
+							}
+						},
+						sizeGroup = {
+							order = 2,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								width = {order = 1, width = "full", name = L["Width"], type = "range", min = 50, max = 500, step = 1},
+								height = {order = 2, width = "full", name = L["Height"], type = "range", min = 10, max = 250, step = 1},
+							}
+						},
+					}
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				health = ns:SetHealthConfigGroup(false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				power = ns:SetPowerConfigGroup(false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				name = ns:SetNameConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				portrait = ns:SetPortraitConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				buffs = ns:SetAuraConfigGroup(true, "buffs", false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				debuffs = ns:SetAuraConfigGroup(true, "debuffs", false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				castbar = ns:SetCastbarConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
+				icons = ns:SetIconConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES)
+			}
+		}
+	}
+}
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.arena = {
+	name = L["Arena Frames"],
+	type = "group",
+	order = 1100,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["arena"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "arena");MOD:SetEnemyFrames("arena", 5)end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		displayFrames = {type = "execute", order = 2, name = L["Display Frames"], desc = L["Force the frames to show, they will act as if they are the player frame."], func = function()MOD:SwapElement("arena", 5)end},
+		resetSettings = {type = "execute", order = 3, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("arena")SV.Mentalo:Reset("Arena Frames")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						baseGroup = {
+							order = 1,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								showBy = {order = 1, name = L["Growth Direction"], type = "select", values = {["UP"] = L["Up"], ["DOWN"] = L["Down"]}},
+								spacer1 = {
+									order = 2,
+									type = "description",
+									name = "",
+								},
+								predict = {order = 3, name = L["Heal Prediction"], desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."], type = "toggle"},
+								rangeCheck = {order = 4, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
+								hideonnpc = {type = "toggle", order = 5, name = L["Text Toggle On NPC"], desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."], get = function(l)return SV.db.SVUnit["arena"]["power"].hideonnpc end, set = function(l, m)SV.db.SVUnit["arena"]["power"].hideonnpc = m;MOD:SetEnemyFrames("arena")end},
+								threatEnabled = {type = "toggle", order = 6, name = L["Show Threat"]}
+							}
+						},
+						sizeGroup = {
+							order = 2,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								width = {order = 1, width = "full", name = L["Width"], type = "range", min = 50, max = 500, step = 1},
+								height = {order = 2, width = "full", name = L["Height"], type = "range", min = 10, max = 250, step = 1},
+							}
+						},
+						pvp = {
+							order = 3,
+							guiInline = true,
+							type = "group",
+							name = L["PVP Indicators"],
+							args = {
+								enable = {
+									type = "toggle",
+									order = 1,
+									name = L["Enable"],
+									get = function(l)return SV.db.SVUnit.arena.pvp.enable end,
+									set = function(l, m)MOD:ChangeDBVar(m, "enable", "arena", "pvp");MOD:SetEnemyFrames("arena", 5)end,
+								},
+								trinketGroup = {
+									order = 2,
+									guiInline = true,
+									type = "group",
+									name = L["Trinkets"],
+									get = function(l)return SV.db.SVUnit.arena.pvp[l[#l]]end,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "arena", "pvp");MOD:SetEnemyFrames("arena", 5)end,
+									disabled = function() return not SV.db.SVUnit.arena.pvp.enable end,
+									args = {
+										trinketPosition = {
+											type = "select",
+											order = 1,
+											name = L["Position"],
+											values = {
+												["LEFT"] = L["Left"],
+												["RIGHT"] = L["Right"]
+											}
+										},
+										trinketSize = {
+											order = 2,
+											type = "range",
+											name = L["Size"],
+											min = 10,
+											max = 60,
+											step = 1
+										},
+										trinketX = {
+											order = 3,
+											type = "range",
+											name = L["xOffset"],
+											min = -60,
+											max = 60,
+											step = 1
+										},
+										trinketY = {
+											order = 4,
+											type = "range",
+											name = L["yOffset"],
+											min = -60,
+											max = 60,
+											step = 1
+										}
+									}
+								},
+								specGroup = {
+									order = 3,
+									guiInline = true,
+									type = "group",
+									name = L["Enemy Specs"],
+									get = function(l)return SV.db.SVUnit.arena.pvp[l[#l]]end,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "arena", "pvp");MOD:SetEnemyFrames("arena", 5)end,
+									disabled = function() return not SV.db.SVUnit.arena.pvp.enable end,
+									args = {
+										specPosition = {
+											type = "select",
+											order = 1,
+											name = L["Position"],
+											values = {
+												["LEFT"] = L["Left"],
+												["RIGHT"] = L["Right"]
+											}
+										},
+										specSize = {
+											order = 2,
+											type = "range",
+											name = L["Size"],
+											min = 10,
+											max = 60,
+											step = 1
+										},
+										specX = {
+											order = 3,
+											type = "range",
+											name = L["xOffset"],
+											min = -60,
+											max = 60,
+											step = 1
+										},
+										specY = {
+											order = 4,
+											type = "range",
+											name = L["yOffset"],
+											min = -60,
+											max = 60,
+											step = 1
+										}
+									}
+								}
+							}
+						},
+					}
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetEnemyFrames, "arena", 5),
+				health = ns:SetHealthConfigGroup(false, MOD.SetEnemyFrames, "arena", 5),
+				power = ns:SetPowerConfigGroup(false, MOD.SetEnemyFrames, "arena", 5),
+				name = ns:SetNameConfigGroup(MOD.SetEnemyFrames, "arena", 5),
+				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetEnemyFrames, "arena", 5),
+				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetEnemyFrames, "arena", 5),
+				castbar = ns:SetCastbarConfigGroup(MOD.SetEnemyFrames, "arena", 5)
+			}
+		}
+	}
+}
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.tank = {
+	name = L["Tank Frames"],
+	type = "group",
+	order = 1200,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["tank"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "tank");MOD:SetGroupFrame("tank")end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("tank")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						width = {order = 2, name = L["Width"], type = "range", min = 50, max = 500, step = 1},
+						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1}
+					}
+				},
+				targetsGroup = {
+					order = 2,
+					type = "group",
+					name = L["Tank Target"],
+					guiInline = true,
+					get = function(l)return SV.db.SVUnit["tank"]["targetsGroup"][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "tank", "targetsGroup");MOD:SetGroupFrame("tank")end,
+					args = {
+						enable = {type = "toggle", name = L["Enable"], order = 1},
+						width = {order = 2, name = L["Width"], type = "range", min = 10, max = 500, step = 1},
+						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1},
+						anchorPoint = {type = "select", order = 5, name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {TOPLEFT = "TOPLEFT", LEFT = "LEFT", BOTTOMLEFT = "BOTTOMLEFT", RIGHT = "RIGHT", TOPRIGHT = "TOPRIGHT", BOTTOMRIGHT = "BOTTOMRIGHT", CENTER = "CENTER", TOP = "TOP", BOTTOM = "BOTTOM"}},
+						xOffset = {order = 6, type = "range", name = L["xOffset"], desc = L["An X offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1},
+						yOffset = {order = 7, type = "range", name = L["yOffset"], desc = L["An Y offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1}
+					}
+				}
+			}
+		}
+	}
+}
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.assist = {
+	name = L["Assist Frames"],
+	type = "group",
+	order = 1300,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["assist"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "assist");MOD:SetGroupFrame("assist")end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("assist")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						width = {order = 2, name = L["Width"], type = "range", min = 50, max = 500, step = 1},
+						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1}
+					}
+				},
+				targetsGroup = {
+					order = 4,
+					type = "group",
+					name = L["Assist Target"],
+					guiInline = true,
+					get = function(l)return SV.db.SVUnit["assist"]["targetsGroup"][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "assist", "targetsGroup");MOD:SetGroupFrame("assist")end,
+					args = {
+						enable = {type = "toggle", name = L["Enable"], order = 1},
+						width = {order = 2, name = L["Width"], type = "range", min = 10, max = 500, step = 1},
+						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1},
+						anchorPoint = {type = "select", order = 5, name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {TOPLEFT = "TOPLEFT", LEFT = "LEFT", BOTTOMLEFT = "BOTTOMLEFT", RIGHT = "RIGHT", TOPRIGHT = "TOPRIGHT", BOTTOMRIGHT = "BOTTOMRIGHT", CENTER = "CENTER", TOP = "TOP", BOTTOM = "BOTTOM"}},
+						xOffset = {order = 6, type = "range", name = L["xOffset"], desc = L["An X offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1},
+						yOffset = {order = 7, type = "range", name = L["yOffset"], desc = L["An Y offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua
new file mode 100644
index 0000000..66b399f
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/party.lua
@@ -0,0 +1,485 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+
+SV.Options.args.SVUnit.args.party = {
+	name = L['Party Frames'],
+	type = 'group',
+	order = 11,
+	childGroups = "tab",
+	get = function(l)return
+	SV.db.SVUnit['party'][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party')end,
+	args = {
+		enable = {
+			type = 'toggle',
+			order = 1,
+			name = L['Enable'],
+		},
+		configureToggle = {
+			order = 2,
+			type = 'execute',
+			name = L['Display Frames'],
+			func = function()
+				MOD:UpdateGroupConfig(SVUI_Party, SVUI_Party.forceShow ~= true or nil)
+			end,
+		},
+		resetSettings = {
+			type = 'execute',
+			order = 3,
+			name = L['Restore Defaults'],
+			func = function(l, m)MOD:ResetUnitOptions('party')SV.Mentalo:Reset('Party Frames')end,
+		},
+		tabGroups= {
+			order=3,
+			type='group',
+			name=L['Unit Options'],
+			childGroups="tree",
+			args= {
+				common = {
+					order = 4,
+					type = 'group',
+					name = L['General'],
+					args = {
+						hideonnpc = {
+							type = 'toggle',
+							order = 2,
+							name = L['Text Toggle On NPC'],
+							desc = L['Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point.'],
+							get = function(l)return SV.db.SVUnit['party']['power'].hideonnpc end,
+							set = function(l, m)SV.db.SVUnit['party']['power'].hideonnpc = m;MOD:SetGroupFrame('party')end,
+						},
+						rangeCheck = {
+							order = 3,
+							name = L["Range Check"],
+							desc = L["Check if you are in range to cast spells on this specific unit."],
+							type = "toggle",
+						},
+						gps = {
+							order = 4,
+							name = "GPS Tracking",
+							desc = "Show an arrow giving the direction and distance to the frames unit.",
+							type = "toggle",
+						},
+						predict = {
+							order = 5,
+							name = L['Heal Prediction'],
+							desc = L['Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals.'],
+							type = 'toggle',
+						},
+						threatEnabled = {
+							type = 'toggle',
+							order = 6,
+							name = L['Show Threat'],
+						},
+						colorOverride = {
+							order = 7,
+							name = L['Class Color Override'],
+							desc = L['Override the default class color setting.'],
+							type = 'select',
+							values = {
+								['USE_DEFAULT'] = L['Use Default'],
+								['FORCE_ON'] = L['Force On'],
+								['FORCE_OFF'] = L['Force Off'],
+							},
+						},
+						positionsGroup = {
+							order = 100,
+							name = L['Size and Positions'],
+							type = 'group',
+							guiInline = true,
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party', nil, nil, true)end,
+							args = {
+								width = {
+									order = 1,
+									name = L['Width'],
+									type = 'range',
+									min = 10,
+									max = 500,
+									step = 1,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party')end,
+								},
+								height = {
+									order = 2,
+									name = L['Height'],
+									type = 'range',
+									min = 10,
+									max = 500,
+									step = 1,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party')end,
+								},
+								spacer = {
+									order = 3,
+									name = '',
+									type = 'description',
+									width = 'full',
+								},
+								showBy = {
+									order = 4,
+									name = L['Growth Direction'],
+									desc = L['Growth direction from the first unitframe.'],
+									type = 'select',
+									values = {
+										DOWN_RIGHT = format(L['%s and then %s'], L['Down'], L['Right']),
+										DOWN_LEFT = format(L['%s and then %s'], L['Down'], L['Left']),
+										UP_RIGHT = format(L['%s and then %s'], L['Up'], L['Right']),
+										UP_LEFT = format(L['%s and then %s'], L['Up'], L['Left']),
+										RIGHT_DOWN = format(L['%s and then %s'], L['Right'], L['Down']),
+										RIGHT_UP = format(L['%s and then %s'], L['Right'], L['Up']),
+										LEFT_DOWN = format(L['%s and then %s'], L['Left'], L['Down']),
+										LEFT_UP = format(L['%s and then %s'], L['Left'], L['Up']),
+									},
+								},
+								groupCount = {
+									order = 5,
+									type = 'range',
+									name = L['Number of Groups'],
+									min = 1,
+									max = 8,
+									step = 1,
+									set = function(l, m)
+										MOD:ChangeDBVar(m, l[#l], "party");
+										MOD:SetGroupFrame('party')
+										if SVUI_Party.isForced then
+											MOD:UpdateGroupConfig(SVUI_Party)
+											MOD:UpdateGroupConfig(SVUI_Party, true)
+										end
+									end,
+								},
+								gRowCol = {
+									order = 6,
+									type = 'range',
+									name = L['Groups Per Row/Column'],
+									min = 1,
+									max = 8,
+									step = 1,
+									set = function(l, m)
+										MOD:ChangeDBVar(m, l[#l], "party");
+										MOD:SetGroupFrame('party')
+										if SVUI_Party.isForced then
+											MOD:UpdateGroupConfig(SVUI_Party)
+											MOD:UpdateGroupConfig(SVUI_Party, true)
+										end
+									end,
+								},
+								wrapXOffset = {
+									order = 7,
+									type = 'range',
+									name = L['Horizontal Spacing'],
+									min = 0,
+									max = 50,
+									step = 1,
+								},
+								wrapYOffset = {
+									order = 8,
+									type = 'range',
+									name = L['Vertical Spacing'],
+									min = 0,
+									max = 50,
+									step = 1,
+								},
+							},
+						},
+						visibilityGroup = {
+							order = 200,
+							name = L['Visibility'],
+							type = 'group',
+							guiInline = true,
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party', nil, nil, true)end,
+							args = {
+								showPlayer = {
+									order = 1,
+									type = 'toggle',
+									name = L['Display Player'],
+									desc = L['When true, the header includes the player when not in a raid.'],
+								},
+								visibility = {
+									order = 2,
+									type = 'input',
+									name = L['Visibility'],
+									desc = L['The following macro must be true in order for the group to be shown, in addition to any filter that may already be set.'],
+									width = 'full',
+									desc = L['TEXT_FORMAT_DESC'],
+								},
+							},
+						},
+						sortingGroup = {
+							order = 300,
+							type = 'group',
+							guiInline = true,
+							name = L['Grouping & Sorting'],
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party', nil, nil, true)end,
+							args = {
+								sortMethod = {
+									order = 1,
+									name = L['Group By'],
+									desc = L['Set the order that the group will sort.'],
+									type = 'select',
+									values = {
+										["CLASS"] = CLASS,
+										["ROLE"] = ROLE.."(Tanks, Healers, DPS)",
+										["ROLE_TDH"] = ROLE.."(Tanks, DPS, Healers)",
+										["ROLE_HDT"] = ROLE.."(Healers, DPS, Tanks)",
+										["ROLE_HTD"] = ROLE.."(Healers, Tanks, DPS)",
+										["NAME"] = NAME,
+										["GROUP"] = GROUP,
+									},
+								},
+								sortDir = {
+									order = 2,
+									name = L['Sort Direction'],
+									desc = L['Defines the sort order of the selected sort method.'],
+									type = 'select',
+									values = {
+										['ASC'] = L['Ascending'],
+										['DESC'] = L['Descending'],
+									},
+								},
+								spacer = {
+									order = 3,
+									type = 'description',
+									width = 'full',
+									name = ' ',
+								},
+								customSorting = {
+									order = 4,
+									name = L['Custom Sorting'],
+									desc = L['Enabling this allows unique sorting.'],
+									type = 'toggle',
+								},
+								invertGroupingOrder = {
+									order = 5,
+									name = L['Invert Grouping Order'],
+									desc = L['Enabling this inverts the sorting order.'],
+									disabled = function()return not SV.db.SVUnit['party'].customSorting end,
+									type = 'toggle',
+								},
+								startFromCenter = {
+									order = 6,
+									name = L['Start Near Center'],
+									desc = L['The initial group will start near the center and grow out.'],
+									disabled = function()return not SV.db.SVUnit['party'].customSorting end,
+									type = 'toggle',
+								},
+							},
+						},
+
+					},
+				},
+				auraWatch = {
+					order = 600,
+					type = 'group',
+					name = L['Aura Watch'],
+					get = function(l)return
+					SV.db.SVUnit['party']['auraWatch'][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party", "auraWatch");MOD:SetGroupFrame('party')end,
+					args = {
+						enable = {
+							type = 'toggle',
+							name = L['Enable'],
+							order = 1,
+						},
+						size = {
+							type = 'range',
+							name = L['Size'],
+							desc = L['Size of the indicator icon.'],
+							order = 2,
+							min = 4,
+							max = 15,
+							step = 1,
+						},
+						configureButton = {
+							type = 'execute',
+							name = L['Configure Auras'],
+							func = function()ns:SetToFilterConfig('BuffWatch')end,
+							order = 3,
+						},
+
+					},
+				},
+				misc = ns:SetMiscConfigGroup(true, MOD.SetGroupFrame, 'party'),
+				health = ns:SetHealthConfigGroup(true, MOD.SetGroupFrame, 'party'),
+				power = ns:SetPowerConfigGroup(false, MOD.SetGroupFrame, 'party'),
+				name = ns:SetNameConfigGroup(MOD.SetGroupFrame, 'party'),
+				portrait = ns:SetPortraitConfigGroup(MOD.SetGroupFrame, 'party'),
+				buffs = ns:SetAuraConfigGroup(true, 'buffs', true, MOD.SetGroupFrame, 'party'),
+				debuffs = ns:SetAuraConfigGroup(true, 'debuffs', true, MOD.SetGroupFrame, 'party'),
+				petsGroup = {
+					order = 800,
+					type = 'group',
+					name = L['Party Pets'],
+					get = function(l)return SV.db.SVUnit['party']['petsGroup'][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party", "petsGroup");MOD:SetGroupFrame('party')end,
+					args = {
+						enable = {
+							type = 'toggle',
+							name = L['Enable'],
+							order = 1,
+						},
+						width = {
+							order = 3,
+							name = L['Width'],
+							type = 'range',
+							min = 10,
+							max = 500,
+							step = 1,
+						},
+						height = {
+							order = 4,
+							name = L['Height'],
+							type = 'range',
+							min = 10,
+							max = 250,
+							step = 1,
+						},
+						anchorPoint = {
+							type = 'select',
+							order = 5,
+							name = L['Anchor Point'],
+							desc = L['What point to anchor to the frame you set to attach to.'],
+							values = {TOPLEFT='TOPLEFT',LEFT='LEFT',BOTTOMLEFT='BOTTOMLEFT',RIGHT='RIGHT',TOPRIGHT='TOPRIGHT',BOTTOMRIGHT='BOTTOMRIGHT',CENTER='CENTER',TOP='TOP',BOTTOM='BOTTOM'},
+						},
+						xOffset = {
+							order = 6,
+							type = 'range',
+							name = L['xOffset'],
+							desc = L['An X offset (in pixels) to be used when anchoring new frames.'],
+							min =  - 500,
+							max = 500,
+							step = 1,
+						},
+						yOffset = {
+							order = 7,
+							type = 'range',
+							name = L['yOffset'],
+							desc = L['An Y offset (in pixels) to be used when anchoring new frames.'],
+							min =  - 500,
+							max = 500,
+							step = 1,
+						},
+						name_length = {
+							order = 8,
+							name = L["Name Length"],
+							desc = L["TEXT_FORMAT_DESC"],
+							type = "range",
+							width = "full",
+							min = 1,
+							max = 30,
+							step = 1,
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key], "party", "petsGroup");
+								local tag = "[name:" .. value .. "]";
+								MOD:ChangeDBVar(tag, "tags", "party", "petsGroup");
+							end,
+						}
+					},
+				},
+				targetsGroup = {
+					order = 900,
+					type = 'group',
+					name = L['Party Targets'],
+					get = function(l)return
+					SV.db.SVUnit['party']['targetsGroup'][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party", "targetsGroup");MOD:SetGroupFrame('party')end,
+					args = {
+						enable = {
+							type = 'toggle',
+							name = L['Enable'],
+							order = 1,
+						},
+						width = {
+							order = 3,
+							name = L['Width'],
+							type = 'range',
+							min = 10,
+							max = 500,
+							step = 1,
+						},
+						height = {
+							order = 4,
+							name = L['Height'],
+							type = 'range',
+							min = 10,
+							max = 250,
+							step = 1,
+						},
+						anchorPoint = {
+							type = 'select',
+							order = 5,
+							name = L['Anchor Point'],
+							desc = L['What point to anchor to the frame you set to attach to.'],
+							values = {TOPLEFT='TOPLEFT',LEFT='LEFT',BOTTOMLEFT='BOTTOMLEFT',RIGHT='RIGHT',TOPRIGHT='TOPRIGHT',BOTTOMRIGHT='BOTTOMRIGHT',CENTER='CENTER',TOP='TOP',BOTTOM='BOTTOM'},
+						},
+						xOffset = {
+							order = 6,
+							type = 'range',
+							name = L['xOffset'],
+							desc = L['An X offset (in pixels) to be used when anchoring new frames.'],
+							min =  - 500,
+							max = 500,
+							step = 1,
+						},
+						yOffset = {
+							order = 7,
+							type = 'range',
+							name = L['yOffset'],
+							desc = L['An Y offset (in pixels) to be used when anchoring new frames.'],
+							min =  - 500,
+							max = 500,
+							step = 1,
+						},
+						name_length = {
+							order = 8,
+							name = L["Name Length"],
+							desc = L["TEXT_FORMAT_DESC"],
+							type = "range",
+							width = "full",
+							min = 1,
+							max = 30,
+							step = 1,
+							set = function(key, value)
+								MOD:ChangeDBVar(value, key[#key], "party", "targetsGroup");
+								local tag = "[name:" .. value .. "]";
+								MOD:ChangeDBVar(tag, "tags", "party", "targetsGroup");
+							end,
+						}
+					},
+				},
+				icons = ns:SetIconConfigGroup(MOD.SetGroupFrame, 'party')
+			}
+		}
+	},
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/pet.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/pet.lua
new file mode 100644
index 0000000..68a370f
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/pet.lua
@@ -0,0 +1,253 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.pet = {
+	name = L["Pet Frame"],
+	type = "group",
+	order = 4,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["pet"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "pet");MOD:SetUnitFrame("pet")end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("pet")SV.Mentalo:Reset("Pet Frame")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						showAuras = {
+							order = 1,
+							type = "execute",
+							name = L["Show Auras"],
+							func = function()local U = SVUI_Pet;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("pet")end
+						},
+						miscGroup = {
+							order = 2,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								rangeCheck = {
+									order = 2,
+									name = L["Range Check"],
+									desc = L["Check if you are in range to cast spells on this specific unit."],
+									type = "toggle"
+								},
+								predict = {
+									order = 3,
+									name = L["Heal Prediction"],
+									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
+									type = "toggle"
+								},
+								hideonnpc = {
+									type = "toggle",
+									order = 4,
+									name = L["Text Toggle On NPC"],
+									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+									get = function(l)return SV.db.SVUnit["pet"]["power"].hideonnpc end,
+									set = function(l, m)SV.db.SVUnit["pet"]["power"].hideonnpc = m;MOD:SetUnitFrame("pet")end
+								},
+								threatEnabled = {
+									type = "toggle",
+									order = 5,
+									name = L["Show Threat"]
+								},
+							}
+						},
+						scaleGroup = {
+							order = 6,
+							type = "group",
+							guiInline = true,
+							name = L["Frame Size"],
+							args = {
+								width = {order = 1, name = L["Width"], width = "full", type = "range", min = 50, max = 500, step = 1},
+								height = {order = 2, name = L["Height"], width = "full", type = "range", min = 10, max = 250, step = 1},
+							}
+						},
+						watchGroup = {
+							order = 8,
+							type = "group",
+							guiInline = true,
+							name = L["Aura Watch"],
+							get = function(l)return SV.db.SVUnit["pet"]["auraWatch"][l[#l]]end,
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "pet", "auraWatch");MOD:SetUnitFrame("pet")end,
+							args = {
+								enable = {
+									type = "toggle",
+									name = L["Enable"],
+									order = 1
+								},
+								size = {
+									type = "range",
+									name = L["Size"],
+									desc = L["Size of the indicator icon."],
+									order = 2,
+									min = 4,
+									max = 15,
+									step = 1
+								}
+							}
+						},
+					},
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "pet"),
+				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "pet"),
+				power = ns:SetPowerConfigGroup(false, MOD.SetUnitFrame, "pet"),
+				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "pet"),
+				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "pet"),
+				buffs = ns:SetAuraConfigGroup(true, "buffs", false, MOD.SetUnitFrame, "pet"),
+				debuffs = ns:SetAuraConfigGroup(true, "debuffs", false, MOD.SetUnitFrame, "pet")
+			}
+		}
+	}
+}
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.pettarget = {
+	name = L["PetTarget Frame"],
+	type = "group", order = 5,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit["pettarget"][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "pettarget");MOD:SetUnitFrame("pettarget")end,
+	args = {
+		enable = {type = "toggle", order = 1, name = L["Enable"]},
+		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("pettarget")SV.Mentalo:Reset("PetTarget Frame")end},
+		tabGroups = {
+			order = 3,
+			type = "group",
+			name = L["Unit Options"],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						showAuras = {
+							order = 3,
+							type = "execute",
+							name = L["Show Auras"],
+							func = function()local U = SVUI_PetTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("pettarget")end
+						},
+						width = {order = 4, name = L["Width"], type = "range", min = 50, max = 500, step = 1},
+						height = {order = 5, name = L["Height"], type = "range", min = 10, max = 250, step = 1},
+						rangeCheck = {order = 6, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
+						hideonnpc = {
+							type = "toggle",
+							order = 7,
+							name = L["Text Toggle On NPC"],
+							desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+							get = function(l)return SV.db.SVUnit["pettarget"]["power"].hideonnpc end,
+							set = function(l, m)SV.db.SVUnit["pettarget"]["power"].hideonnpc = m;MOD:SetUnitFrame("pettarget")end
+						},
+						threatEnabled = {type = "toggle", order = 13, name = L["Show Threat"]}
+					}
+				},
+				commonGroup = {
+					order = 1,
+					type = "group",
+					name = L["General Settings"],
+					args = {
+						showAuras = {
+							order = 1,
+							type = "execute",
+							name = L["Show Auras"],
+							func = function()local U = SVUI_PetTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("pettarget")end
+						},
+						miscGroup = {
+							order = 2,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								rangeCheck = {
+									order = 2,
+									name = L["Range Check"],
+									desc = L["Check if you are in range to cast spells on this specific unit."],
+									type = "toggle"
+								},
+								hideonnpc = {
+									type = "toggle",
+									order = 4,
+									name = L["Text Toggle On NPC"],
+									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+									get = function(l)return SV.db.SVUnit["pettarget"]["power"].hideonnpc end,
+									set = function(l, m)SV.db.SVUnit["pettarget"]["power"].hideonnpc = m;MOD:SetUnitFrame("pettarget")end
+								},
+								threatEnabled = {
+									type = "toggle",
+									order = 5,
+									name = L["Show Threat"]
+								},
+							}
+						},
+						scaleGroup = {
+							order = 3,
+							type = "group",
+							guiInline = true,
+							name = L["Frame Size"],
+							args = {
+								width = {order = 1, name = L["Width"], width = "full", type = "range", min = 50, max = 500, step = 1},
+								height = {order = 2, name = L["Height"], width = "full", type = "range", min = 10, max = 250, step = 1},
+							}
+						},
+					},
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "pettarget"),
+				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "pettarget"),
+				power = ns:SetPowerConfigGroup(false, MOD.SetUnitFrame, "pettarget"),
+				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "pettarget"),
+				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "pettarget"),
+				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "pettarget")
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua
new file mode 100644
index 0000000..5e78f46
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/player.lua
@@ -0,0 +1,298 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.player={
+	name = L['Player Frame'],
+	type = 'group',
+	order = 3,
+	childGroups = "tab",
+	get = function(l)return SV.db.SVUnit['player'][l[#l]]end,
+	set = function(l,m)MOD:ChangeDBVar(m, l[#l], "player");MOD:SetUnitFrame('player')end,
+	args = {
+		enable = {
+			type = 'toggle',
+			order = 1,
+			name = L['Enable']
+		},
+		resetSettings = {
+			type = 'execute',
+			order = 2,
+			name = L['Restore Defaults'],
+			func = function(l,m)
+				MOD:ResetUnitOptions('player')
+				SV.Mentalo:Reset('Player Frame')
+			end
+		},
+		tabGroups = {
+			order = 3,
+			type = 'group',
+			name = L['Unit Options'],
+			childGroups = "tree",
+			args = {
+				commonGroup = {
+					order = 1,
+					type = 'group',
+					name = L['General Settings'],
+					args = {
+						baseGroup = {
+							order = 1,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								showAuras = {
+									order = 1,
+									type = "execute",
+									name = L["Show Auras"],
+									func = function()local U = SVUI_Player;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("player")end
+								},
+								lowmana = {
+									order = 2,
+									name = L["Low Mana Threshold"],
+									desc = L["When you mana falls below this point, text will flash on the player frame."],
+									type = "range",
+									min = 0,
+									max = 100,
+									step = 1
+								},
+								combatfade = {
+									order = 3,
+									name = L["Combat Fade"],
+									desc = L["Fade the unitframe when out of combat, not casting, no target exists."],
+									type = "toggle",
+									set = function(l, m)
+										MOD:ChangeDBVar(m, l[#l], "player");
+										MOD:SetUnitFrame("player")
+										if m == true then
+											SVUI_Pet:SetParent(SVUI_Player)
+										else
+											SVUI_Pet:SetParent(SVUI_UnitFrameParent)
+										end
+									end
+								},
+								predict = {
+									order = 4,
+									name = L["Heal Prediction"],
+									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
+									type = "toggle"
+								},
+								hideonnpc = {
+									type = "toggle",
+									order = 5,
+									name = L["Text Toggle On NPC"],
+									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+									get = function(l)return SV.db.SVUnit["player"]["power"].hideonnpc end,
+									set = function(l, m)SV.db.SVUnit["player"]["power"].hideonnpc = m;MOD:SetUnitFrame("player")end
+								},
+								threatEnabled = {
+									type = "toggle",
+									order = 6,
+									name = L["Show Threat"]
+								},
+								playerExpBar = {
+									order = 7,
+									name = "Playerframe Experience Bar",
+									desc = "Show player experience on power bar mouseover",
+									type = "toggle",
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player");SV:StaticPopup_Show("RL_CLIENT")end
+								},
+								playerRepBar = {
+									order = 8,
+									name = "Playerframe Reputation Bar",
+									desc = "Show player reputations on power bar mouseover",
+									type = "toggle",
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player");SV:StaticPopup_Show("RL_CLIENT")end
+								}
+							}
+						},
+						sizeGroup = {
+							order = 2,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								width = {
+									order = 1,
+									name = L["Width"],
+									type = "range",
+									width = "full",
+									min = 50,
+									max = 500,
+									step = 1,
+									set = function(l, m)
+										if SV.db.SVUnit["player"].castbar.width == SV.db.SVUnit["player"][l[#l]] then
+											SV.db.SVUnit["player"].castbar.width = m
+										end
+										MOD:ChangeDBVar(m, l[#l], "player");
+										MOD:SetUnitFrame("player")
+									end
+								},
+								height = {
+									order = 2,
+									name = L["Height"],
+									type = "range",
+									width = "full",
+									min = 10,
+									max = 250,
+									step = 1
+								},
+							}
+						},
+						pvpGroup = {
+							order = 3,
+							type = "group",
+							guiInline = true,
+							name = PVP,
+							get = function(l)return SV.db.SVUnit["player"]["pvp"][l[#l]]end,
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player", "pvp");MOD:SetUnitFrame("player")end,
+							args = {
+								position = {
+									type = "select",
+									order = 2,
+									name = L["Position"],
+									values = {
+										TOPLEFT = "TOPLEFT",
+										LEFT = "LEFT",
+										BOTTOMLEFT = "BOTTOMLEFT",
+										RIGHT = "RIGHT",
+										TOPRIGHT = "TOPRIGHT",
+										BOTTOMRIGHT = "BOTTOMRIGHT",
+										CENTER = "CENTER",
+										TOP = "TOP",
+										BOTTOM = "BOTTOM"
+									}
+								},
+								tags = {
+									order = 100,
+									name = L["Text Format"],
+									type = "input",
+									width = "full",
+									desc = L["TEXT_FORMAT_DESC"]
+								}
+							}
+						}
+					}
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "player"),
+				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "player"),
+				power = ns:SetPowerConfigGroup(true, MOD.SetUnitFrame, "player"),
+				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "player"),
+				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "player"),
+				buffs = ns:SetAuraConfigGroup(true, "buffs", false, MOD.SetUnitFrame, "player"),
+				debuffs = ns:SetAuraConfigGroup(true, "debuffs", false, MOD.SetUnitFrame, "player"),
+				castbar = ns:SetCastbarConfigGroup(MOD.SetUnitFrame, "player"),
+				aurabar = ns:SetAurabarConfigGroup(true, MOD.SetUnitFrame, "player"),
+				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "player"),
+				classbar = {
+					order = 1000,
+					type = "group",
+					name = L["Classbar"],
+					get = function(l)return SV.db.SVUnit["player"]["classbar"][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player", "classbar");MOD:SetUnitFrame("player")end,
+					args = {
+						enable = {
+							type = "toggle",
+							order = 1,
+							name = L["Enable"]
+						},
+						commonGroup = {
+							order = 2,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								slideLeft = {
+									type = "toggle",
+									order = 1,
+									name = L["Slide Left"]
+								},
+								detachFromFrame = {
+									type = "toggle",
+									order = 2,
+									name = L["Detach From Frame"]
+								},
+								stagger = {
+									type = "toggle",
+									order = 3,
+									name = L["Stagger Bar"],
+									get = function(l)return SV.db.SVUnit["player"]["stagger"].enable end,
+									set = function(l, m)MOD:ChangeDBVar(m, "enable", "player", "stagger");MOD:SetUnitFrame("player")end,
+									disabled = SV.class ~= "MONK",
+								},
+								druidMana = {
+									type = "toggle",
+									order = 12,
+									name = L["Druid Mana"],
+									desc = L["Display druid mana bar when in cat or bear form and when mana is not 100%."],
+									get = function(key)
+										return SV.db.SVUnit["player"]["power"].druidMana
+									end,
+									set = function(key, value)
+										MOD:ChangeDBVar(value, "druidMana", "player", "power");
+										MOD:SetUnitFrame("player")
+									end,
+									disabled = SV.class ~= "DRUID",
+								}
+							}
+						},
+						sizeGroup = {
+							order = 3,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								height = {
+									type = "range",
+									order = 4,
+									width = "full",
+									name = L["Size"],
+									min = 15,
+									max = 45,
+									step = 1
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua
new file mode 100644
index 0000000..927758e
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/raid.lua
@@ -0,0 +1,736 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+
+local subOrder = 11;
+for w=10,40,15 do
+	subOrder = subOrder + 1
+	SV.Options.args.SVUnit.args["raid" .. w] = {
+		name = L["Raid-" .. w .. " Frames"],
+		type = "group",
+		order = subOrder,
+		childGroups = "tab",
+		get = function(l) return SV.db.SVUnit["raid" .. w][l[#l]] end,
+		set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w)end,
+		args = {
+			enable =
+			{
+				type = "toggle",
+				order = 1,
+				name = L["Enable"],
+			},
+			configureToggle = {
+				order = 2,
+				type = "execute",
+				name = L["Display Frames"],
+				func = function()MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w], _G["SVUI_Raid" .. w].forceShow ~= true or nil)end,
+			},
+			resetSettings = {
+				type = "execute",
+				order = 3,
+				name = L["Restore Defaults"],
+				func = function(l, m)MOD:ResetUnitOptions("raid" .. w)SV.Mentalo:Reset("Raid 1-" .. w .. " Frames")end,
+			},
+			tabGroups = {
+				order = 3,
+				type = "group",
+				name = L["Unit Options"],
+				childGroups = "tree",
+				args = {
+					commonGroup = {
+						order = 1,
+						type = "group",
+						name = L["General Settings"],
+						args = {
+							hideonnpc =
+							{
+								type = "toggle",
+								order = 1,
+								name = L["Text Toggle On NPC"],
+								desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+								get = function(l)return SV.db.SVUnit["raid" .. w]["power"].hideonnpc end,
+								set = function(l, m)SV.db.SVUnit["raid" .. w]["power"].hideonnpc = m;MOD:SetGroupFrame("raid" .. w)end,
+							},
+							rangeCheck = {
+								order = 2,
+								name = L["Range Check"],
+								desc = L["Check if you are in range to cast spells on this specific unit."],
+								type = "toggle",
+							},
+							gps = {
+								order = 3,
+								name = "GPS Tracking",
+								desc = "Show an arrow giving the direction and distance to the frames unit.",
+								type = "toggle",
+							},
+							predict = {
+								order = 4,
+								name = L["Heal Prediction"],
+								desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
+								type = "toggle",
+							},
+							threatEnabled = {
+								type = "toggle",
+								order = 5,
+								name = L["Show Threat"],
+							},
+							colorOverride = {
+								order = 6,
+								name = L["Class Color Override"],
+								desc = L["Override the default class color setting."],
+								type = "select",
+								values =
+								{
+									["USE_DEFAULT"] = L["Use Default"],
+									["FORCE_ON"] = L["Force On"],
+									["FORCE_OFF"] = L["Force Off"],
+								},
+							},
+							positionsGroup = {
+								order = 100,
+								name = L["Size and Positions"],
+								type = "group",
+								guiInline = true,
+								set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w, nil, nil, true)end,
+								args =
+								{
+									width =
+									{
+										order = 1,
+										name = L["Width"],
+										type = "range",
+										min = 10,
+										max = 500,
+										step = 1,
+										set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w)end,
+									},
+									height =
+									{
+										order = 2,
+										name = L["Height"],
+										type = "range",
+										min = 10,
+										max = 500,
+										step = 1,
+										set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w)end,
+									},
+									spacer =
+									{
+										order = 3,
+										name = "",
+										type = "description",
+										width = "full",
+									},
+									showBy =
+									{
+										order = 4,
+										name = L["Growth Direction"],
+										desc = L["Growth direction from the first unitframe."],
+										type = "select",
+										values =
+										{
+											DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
+											DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
+											UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
+											UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
+											RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
+											RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
+											LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
+											LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"]),
+										},
+									},
+									groupCount =
+									{
+										order = 5,
+										type = "range",
+										name = L["Number of Groups"],
+										min = 1,
+										max = 8,
+										step = 1,
+										set = function(l, m)
+											MOD:ChangeDBVar(m, l[#l], "raid" .. w);
+											MOD:SetGroupFrame("raid" .. w)
+											if _G["SVUI_Raid" .. w].isForced then
+												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w])
+												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w], true)
+											end
+										end,
+									},
+									gRowCol =
+									{
+										order = 6,
+										type = "range",
+										name = L["Groups Per Row / Column"],
+										min = 1,
+										max = 8,
+										step = 1,
+										set = function(l, m)
+											MOD:ChangeDBVar(m, l[#l], "raid" .. w);
+											MOD:SetGroupFrame("raid" .. w)
+											if _G["SVUI_Raid" .. w].isForced then
+												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w])
+												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w], true)
+											end
+										end,
+									},
+									wrapXOffset =
+									{
+										order = 7,
+										type = "range",
+										name = L["Horizontal Spacing"],
+										min = 0,
+										max = 50,
+										step = 1,
+									},
+									wrapYOffset =
+									{
+										order = 8,
+										type = "range",
+										name = L["Vertical Spacing"],
+										min = 0,
+										max = 50,
+										step = 1,
+									},
+								},
+							},
+							visibilityGroup = {
+								order = 200,
+								name = L["Visibility"],
+								type = "group",
+								guiInline = true,
+								set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w, nil, nil, true)end,
+								args =
+								{
+									showPlayer =
+									{
+										order = 1,
+										type = "toggle",
+										name = L["Display Player"],
+										desc = L["When true, the header includes the player when not in a raid."],
+									},
+									visibility =
+									{
+										order = 2,
+										type = "input",
+										name = L["Visibility"],
+										desc = L["The following macro must be true in order for the group to be shown, in addition to any filter that may already be set."],
+										width = "full",
+										desc = L["TEXT_FORMAT_DESC"],
+									},
+								},
+							},
+							sortingGroup = {
+								order = 300,
+								type = "group",
+								guiInline = true,
+								name = L["Sorting"],
+								set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w, nil, nil, true)end,
+								args =
+								{
+									sortMethod =
+									{
+										order = 1,
+										name = L["Group By"],
+										desc = L["Set the order that the group will sort."],
+										type = "select",
+										values =
+										{
+											["CLASS"] = CLASS,
+											["ROLE"] = ROLE.."(Tanks, Healers, DPS)",
+											["ROLE_TDH"] = ROLE.."(Tanks, DPS, Healers)",
+											["ROLE_HDT"] = ROLE.."(Healers, DPS, Tanks)",
+											["ROLE_HTD"] = ROLE.."(Healers, Tanks, DPS)",
+											["NAME"] = NAME,
+											["MTMA"] = L["Main Tanks  /  Main Assist"],
+											["GROUP"] = GROUP,
+										},
+									},
+									sortDir =
+									{
+										order = 2,
+										name = L["Sort Direction"],
+										desc = L["Defines the sort order of the selected sort method."],
+										type = "select",
+										values =
+										{
+											["ASC"] = L["Ascending"],
+											["DESC"] = L["Descending"],
+										},
+									},
+									spacer =
+									{
+										order = 3,
+										type = "description",
+										width = "full",
+										name = " ",
+									},
+									customSorting =
+									{
+										order = 4,
+										name = L["Raid-Wide Sorting"],
+										desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."],
+										type = "toggle",
+									},
+									invertGroupingOrder =
+									{
+										order = 5,
+										name = L["Invert Grouping Order"],
+										desc = L["Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from."],
+										disabled = function()return not SV.db.SVUnit["raid" .. w].customSorting end,
+										type = "toggle",
+									},
+									startFromCenter =
+									{
+										order = 6,
+										name = L["Start Near Center"],
+										desc = L["The initial group will start near the center and grow out."],
+										disabled = function()return not SV.db.SVUnit["raid" .. w].customSorting end,
+										type = "toggle",
+									},
+								},
+							}
+						}
+					},
+					misc = ns:SetMiscConfigGroup(true, MOD.SetGroupFrame, "raid" .. w),
+					health = ns:SetHealthConfigGroup(true, MOD.SetGroupFrame, "raid" .. w),
+					power = ns:SetPowerConfigGroup(false, MOD.SetGroupFrame, "raid" .. w),
+					name = ns:SetNameConfigGroup(MOD.SetGroupFrame, "raid" .. w),
+					buffs = ns:SetAuraConfigGroup(true, "buffs", true, MOD.SetGroupFrame, "raid" .. w),
+					debuffs = ns:SetAuraConfigGroup(true, "debuffs", true, MOD.SetGroupFrame, "raid" .. w),
+					auraWatch = {
+						order = 600,
+						type = "group",
+						name = L["Aura Watch"],
+						args = {
+							enable = {
+								type = "toggle",
+								name = L["Enable"],
+								order = 1,
+								get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.enable end,
+								set = function(l, m)MOD:ChangeDBVar(m, "enable", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
+							},
+							size = {
+								type = "range",
+								name = L["Size"],
+								desc = L["Size of the indicator icon."],
+								order = 2,
+								min = 4,
+								max = 15,
+								step = 1,
+								get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.size end,
+								set = function(l, m)MOD:ChangeDBVar(m, "size", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
+							},
+							configureButton = {
+								type = "execute",
+								name = L["Configure Auras"],
+								func = function()ns:SetToFilterConfig("BuffWatch")end,
+								order = 3,
+							},
+
+						},
+					},
+					rdebuffs = {
+						order = 800,
+						type = "group",
+						name = L["RaidDebuff Indicator"],
+						get = function(l)return
+						SV.db.SVUnit["raid" .. w]["rdebuffs"][l[#l]]end,
+						set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w, "rdebuffs");MOD:SetGroupFrame("raid" .. w)end,
+						args = {
+							enable = {
+								type = "toggle",
+								name = L["Enable"],
+								order = 1,
+							},
+							size = {
+								type = "range",
+								name = L["Size"],
+								order = 2,
+								min = 8,
+								max = 35,
+								step = 1,
+							},
+							fontSize = {
+								type = "range",
+								name = L["Font Size"],
+								order = 3,
+								min = 7,
+								max = 22,
+								step = 1,
+							},
+							xOffset = {
+								order = 4,
+								type = "range",
+								name = L["xOffset"],
+								min =  - 300,
+								max = 300,
+								step = 1,
+							},
+							yOffset = {
+								order = 5,
+								type = "range",
+								name = L["yOffset"],
+								min =  - 300,
+								max = 300,
+								step = 1,
+							},
+							configureButton = {
+								type = "execute",
+								name = L["Configure Auras"],
+								func = function()ns:SetToFilterConfig("Raid")end,
+								order = 7,
+							},
+						},
+					},
+					icons = ns:SetIconConfigGroup(MOD.SetGroupFrame, "raid" .. w),
+				},
+			},
+		},
+	}
+end
+
+subOrder = subOrder + 1
+SV.Options.args.SVUnit.args.raidpet ={
+	order = subOrder,
+	type = 'group',
+	name = L['Raid Pet Frames'],
+	childGroups = "tab",
+	get = function(l)return
+	SV.db.SVUnit['raidpet'][l[#l]]end,
+	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')end,
+	args ={
+		enable ={
+			type = 'toggle',
+			order = 1,
+			name = L['Enable'],
+		},
+		configureToggle ={
+			order = 2,
+			type = 'execute',
+			name = L['Display Frames'],
+			func = function()MOD:UpdateGroupConfig(SVUI_Raidpet, SVUI_Raidpet.forceShow ~= true or nil)end,
+		},
+		resetSettings ={
+			type = 'execute',
+			order = 3,
+			name = L['Restore Defaults'],
+			func = function(l, m)MOD:ResetUnitOptions('raidpet')SV.Mentalo:Reset('Raid Pet Frames')MOD:SetGroupFrame('raidpet', nil, nil, true)end,
+		},
+		tabGroups={
+			order=3,
+			type='group',
+			name=L['Unit Options'],
+			childGroups="tree",
+			args={
+				commonGroup={
+					order=1,
+					type='group',
+					name=L['General Settings'],
+					args={
+						rangeCheck ={
+							order = 3,
+							name = L["Range Check"],
+							desc = L["Check if you are in range to cast spells on this specific unit."],
+							type = "toggle",
+						},
+						predict ={
+							order = 4,
+							name = L['Heal Prediction'],
+							desc = L['Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals.'],
+							type = 'toggle',
+						},
+						threatEnabled ={
+							type = 'toggle',
+							order = 5,
+							name = L['Show Threat'],
+						},
+						colorOverride ={
+							order = 6,
+							name = L['Class Color Override'],
+							desc = L['Override the default class color setting.'],
+							type = 'select',
+							values ={
+								['USE_DEFAULT'] = L['Use Default'],
+								['FORCE_ON'] = L['Force On'],
+								['FORCE_OFF'] = L['Force Off'],
+							},
+						},
+						positionsGroup ={
+							order = 100,
+							name = L['Size and Positions'],
+							type = 'group',
+							guiInline = true,
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet', nil, nil, true)end,
+							args ={
+								width ={
+									order = 1,
+									name = L['Width'],
+									type = 'range',
+									min = 10,
+									max = 500,
+									step = 1,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')end,
+								},
+								height ={
+									order = 2,
+									name = L['Height'],
+									type = 'range',
+									min = 10,
+									max = 500,
+									step = 1,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')end,
+								},
+								spacer ={
+									order = 3,
+									name = '',
+									type = 'description',
+									width = 'full',
+								},
+								showBy ={
+									order = 4,
+									name = L['Growth Direction'],
+									desc = L['Growth direction from the first unitframe.'],
+									type = 'select',
+									values ={
+										DOWN_RIGHT = format(L['%s and then %s'], L['Down'], L['Right']),
+										DOWN_LEFT = format(L['%s and then %s'], L['Down'], L['Left']),
+										UP_RIGHT = format(L['%s and then %s'], L['Up'], L['Right']),
+										UP_LEFT = format(L['%s and then %s'], L['Up'], L['Left']),
+										RIGHT_DOWN = format(L['%s and then %s'], L['Right'], L['Down']),
+										RIGHT_UP = format(L['%s and then %s'], L['Right'], L['Up']),
+										LEFT_DOWN = format(L['%s and then %s'], L['Left'], L['Down']),
+										LEFT_UP = format(L['%s and then %s'], L['Left'], L['Up']),
+									},
+								},
+								groupCount ={
+									order = 7,
+									type = 'range',
+									name = L['Number of Groups'],
+									min = 1,
+									max = 8,
+									step = 1,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')if
+									SVUI_Raidpet.isForced then MOD:UpdateGroupConfig(SVUI_Raidpet)MOD:UpdateGroupConfig(SVUI_Raidpet, true)end end,
+								},
+								gRowCol ={
+									order = 8,
+									type = 'range',
+									name = L['Groups Per Row/Column'],
+									min = 1,
+									max = 8,
+									step = 1,
+									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')if
+									SVUI_Raidpet.isForced then MOD:UpdateGroupConfig(SVUI_Raidpet)MOD:UpdateGroupConfig(SVUI_Raidpet, true)end end,
+								},
+								wrapXOffset ={
+									order = 9,
+									type = 'range',
+									name = L['Horizontal Spacing'],
+									min = 0,
+									max = 50,
+									step = 1,
+								},
+								wrapYOffset ={
+									order = 10,
+									type = 'range',
+									name = L['Vertical Spacing'],
+									min = 0,
+									max = 50,
+									step = 1,
+								},
+							},
+						},
+						visibilityGroup ={
+							order = 200,
+							name = L['Visibility'],
+							type = 'group',
+							guiInline = true,
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet', nil, nil, true)end,
+							args ={
+								visibility ={
+									order = 2,
+									type = 'input',
+									name = L['Visibility'],
+									desc = L['The following macro must be true in order for the group to be shown, in addition to any filter that may already be set.'],
+									width = 'full',
+									desc = L['TEXT_FORMAT_DESC'],
+								},
+							},
+						},
+						sortingGroup ={
+							order = 300,
+							type = 'group',
+							guiInline = true,
+							name = L['Grouping & Sorting'],
+							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet', nil, nil, true)end,
+							args ={
+								sortMethod ={
+									order = 1,
+									name = L['Group By'],
+									desc = L['Set the order that the group will sort.'],
+									type = 'select',
+									values ={
+										['NAME'] = L['Owners Name'],
+										['PETNAME'] = L['Pet Name'],
+										['GROUP'] = GROUP,
+									},
+								},
+								sortDir ={
+									order = 2,
+									name = L['Sort Direction'],
+									desc = L['Defines the sort order of the selected sort method.'],
+									type = 'select',
+									values ={
+										['ASC'] = L['Ascending'],
+										['DESC'] = L['Descending'],
+									},
+								},
+								spacer ={
+									order = 3,
+									type = 'description',
+									width = 'full',
+									name = ' ',
+								},
+								customSorting ={
+									order = 4,
+									name = L['Raid-Wide Sorting'],
+									desc = L['Enabling this allows raid-wide sorting however you will not be able to distinguish between groups.'],
+									type = 'toggle',
+								},
+								invertGroupingOrder ={
+									order = 5,
+									name = L['Invert Grouping Order'],
+									desc = L['Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from.'],
+									disabled = function()return not SV.db.SVUnit['raidpet'].customSorting end,
+									type = 'toggle',
+								},
+								startFromCenter ={
+									order = 6,
+									name = L['Start Near Center'],
+									desc = L['The initial group will start near the center and grow out.'],
+									disabled = function()return not SV.db.SVUnit['raidpet'].customSorting end,
+									type = 'toggle',
+								},
+							},
+						}
+					}
+				},
+				misc = ns:SetMiscConfigGroup(true, MOD.SetGroupFrame, 'raidpet'),
+				health = ns:SetHealthConfigGroup(true, MOD.SetGroupFrame, 'raidpet'),
+				name = ns:SetNameConfigGroup(MOD.SetGroupFrame, 'raidpet'),
+				buffs = ns:SetAuraConfigGroup(true, 'buffs', true, MOD.SetGroupFrame, 'raidpet'),
+				debuffs = ns:SetAuraConfigGroup(true, 'debuffs', true, MOD.SetGroupFrame, 'raidpet'),
+				auraWatch ={
+					order = 600,
+					type = 'group',
+					name = L['Aura Watch'],
+					args ={
+						enable = {
+							type = "toggle",
+							name = L["Enable"],
+							order = 1,
+							get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.enable end,
+							set = function(l, m)MOD:ChangeDBVar(m, "enable", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
+						},
+						size = {
+							type = "range",
+							name = L["Size"],
+							desc = L["Size of the indicator icon."],
+							order = 2,
+							min = 4,
+							max = 15,
+							step = 1,
+							get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.size end,
+							set = function(l, m)MOD:ChangeDBVar(m, "size", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
+						},
+						configureButton ={
+							type = 'execute',
+							name = L['Configure Auras'],
+							func = function()ns:SetToFilterConfig('BuffWatch')end,
+							order = 3,
+						},
+					},
+				},
+				rdebuffs ={
+					order = 700,
+					type = 'group',
+					name = L['RaidDebuff Indicator'],
+					get = function(l)return
+					SV.db.SVUnit['raidpet']['rdebuffs'][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet", "rdebuffs");MOD:SetGroupFrame('raidpet')end,
+					args ={
+						enable ={
+							type = 'toggle',
+							name = L['Enable'],
+							order = 1,
+						},
+						size ={
+							type = 'range',
+							name = L['Size'],
+							order = 2,
+							min = 8,
+							max = 35,
+							step = 1,
+						},
+						xOffset ={
+							order = 3,
+							type = 'range',
+							name = L['xOffset'],
+							min =  - 300,
+							max = 300,
+							step = 1,
+						},
+						yOffset ={
+							order = 4,
+							type = 'range',
+							name = L['yOffset'],
+							min =  - 300,
+							max = 300,
+							step = 1,
+						},
+						configureButton ={
+							type = 'execute',
+							name = L['Configure Auras'],
+							func = function()ns:SetToFilterConfig('Raid')end,
+							order = 5,
+						},
+					},
+				},
+				icons = ns:SetIconConfigGroup(MOD.SetGroupFrame, 'raidpet'),
+			},
+		},
+	},
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/units/target.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/units/target.lua
new file mode 100644
index 0000000..aeb7efa
--- /dev/null
+++ b/Interface/AddOns/SVUI_ConfigOMatic/components/units/target.lua
@@ -0,0 +1,305 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+local tinsert 	 =  _G.tinsert;
+local table 	 =  _G.table;
+--[[ TABLE METHODS ]]--
+local tsort = table.sort;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local MOD = SV.SVUnit
+if(not MOD) then return end
+local _, ns = ...
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.target={
+	name = L['Target Frame'],
+	type = 'group',
+	order = 6,
+	childGroups = "tab",
+	get=function(l)return SV.db.SVUnit['target'][l[#l]]end,
+	set=function(l,m)MOD:ChangeDBVar(m, l[#l], "target");MOD:SetUnitFrame('target')end,
+	args={
+		enable={type='toggle',order=1,name=L['Enable']},
+		resetSettings={type='execute',order=2,name=L['Restore Defaults'],func=function(l,m)MOD:ResetUnitOptions('target')SV.Mentalo:Reset('Target Frame')end},
+		tabGroups={
+			order=3,
+			type='group',
+			name=L['Unit Options'],
+			childGroups="tree",
+			args={
+				commonGroup = {
+					order = 1,
+					type = 'group',
+					name = L['General Settings'],
+					args = {
+						baseGroup = {
+							order = 1,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								showAuras = {
+									order = 1,
+									type = "execute",
+									name = L["Show Auras"],
+									func = function()local U = SVUI_Target;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("target")end
+								},
+								smartAuraDisplay = {
+									type = "select",
+									name = L["Smart Auras"],
+									desc = L["When set the Buffs and Debuffs will toggle being displayed depending on if the unit is friendly or an enemy. This will not effect the aurabars package."],
+									order = 2,
+									values = {
+										["DISABLED"] = L["Disabled"],
+										["SHOW_DEBUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Debuffs"],
+										["SHOW_BUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Buffs"]
+									}
+								},
+								gps = {
+									order = 3,
+									name = "GPS Tracking",
+									desc = "Show an arrow giving the direction and distance to the frames unit.",
+									type = "toggle",
+								},
+								predict = {
+									order = 4,
+									name = L["Heal Prediction"],
+									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
+									type = "toggle"
+								},
+								hideonnpc = {
+									type = "toggle",
+									order = 5,
+									name = L["Text Toggle On NPC"],
+									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+									get = function(l)return SV.db.SVUnit["target"]["power"].hideonnpc end,
+									set = function(l, m)SV.db.SVUnit["target"]["power"].hideonnpc = m;MOD:SetUnitFrame("target")end
+								},
+								threatEnabled = {
+									type = "toggle",
+									order = 6,
+									name = L["Show Threat"]
+								},
+								middleClickFocus = {
+									order = 7,
+									name = L["Middle Click - Set Focus"],
+									desc = L["Middle clicking the unit frame will cause your focus to match the unit."],
+									type = "toggle",
+									disabled = function()return IsAddOnLoaded("Clique")end
+								},
+
+							}
+						},
+						sizeGroup = {
+							order = 2,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								width = {
+									order = 1,
+									name = L["Width"],
+									type = "range",
+									width = "full",
+									min = 50,
+									max = 500,
+									step = 1,
+									set = function(l, m)
+										if SV.db.SVUnit["target"].castbar.width == SV.db.SVUnit["target"][l[#l]] then
+											SV.db.SVUnit["target"].castbar.width = m
+										end
+										MOD:ChangeDBVar(m, l[#l], "target");
+										MOD:SetUnitFrame("target")
+									end
+								},
+								height = {
+									order = 2,
+									name = L["Height"],
+									type = "range",
+									width = "full",
+									min = 10,
+									max = 250,
+									step = 1
+								},
+							}
+						}
+					}
+				},
+				combobar = {
+					order = 800,
+					type = "group",
+					name = L["Combobar"],
+					get = function(l)return SV.db.SVUnit["target"]["combobar"][l[#l]]end,
+					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "target", "combobar");MOD:SetUnitFrame("target")end,
+					args = {
+						enable = {
+							type = "toggle",
+							order = 1,
+							name = L["Enable"]
+						},
+						smallIcons = {
+							type = "toggle",
+							name = L["Small Points"],
+							order = 2
+						},
+						height = {
+							type = "range",
+							order = 3,
+							name = L["Height"],
+							min = 15,
+							max = 45,
+							step = 1
+						},
+						autoHide = {
+							type = "toggle",
+							name = L["Auto-Hide"],
+							order = 4
+						}
+					}
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "target"),
+				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "target"),
+				power = ns:SetPowerConfigGroup(true, MOD.SetUnitFrame, "target"),
+				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "target"),
+				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "target"),
+				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "target"),
+				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "target"),
+				castbar = ns:SetCastbarConfigGroup(MOD.SetUnitFrame, "target"),
+				aurabar = ns:SetAurabarConfigGroup(false, MOD.SetUnitFrame, "target"),
+				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "target")
+			}
+		}
+	}
+}
+--[[
+##################################################################################################
+##################################################################################################
+##################################################################################################
+]]
+SV.Options.args.SVUnit.args.targettarget={
+	name=L['TargetTarget Frame'],
+	type='group',
+	order=7,
+	childGroups="tab",
+	get=function(l)return SV.db.SVUnit['targettarget'][l[#l]]end,
+	set=function(l,m)MOD:ChangeDBVar(m, l[#l], "targettarget");MOD:SetUnitFrame('targettarget')end,
+	args={
+		enable={type='toggle',order=1,name=L['Enable']},
+		resetSettings={type='execute',order=2,name=L['Restore Defaults'],func=function(l,m)MOD:ResetUnitOptions('targettarget')SV.Mentalo:Reset('TargetTarget Frame')end},
+		tabGroups={
+			order=3,
+			type='group',
+			name=L['Unit Options'],
+			childGroups="tree",
+			args={
+				commonGroup = {
+					order = 1,
+					type = 'group',
+					name = L['General Settings'],
+					args = {
+						baseGroup = {
+							order = 1,
+							type = "group",
+							guiInline = true,
+							name = L["Base Settings"],
+							args = {
+								showAuras = {
+									order = 1,
+									type = "execute",
+									name = L["Show Auras"],
+									func = function()local U = SVUI_TargetTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("targettarget")end
+								},
+								spacer1 = {
+									order = 2,
+									type = "description",
+									name = "",
+								},
+								rangeCheck = {
+									order = 3,
+									name = L["Range Check"],
+									desc = L["Check if you are in range to cast spells on this specific unit."],
+									type = "toggle"
+								},
+								hideonnpc = {
+									type = "toggle",
+									order = 4,
+									name = L["Text Toggle On NPC"],
+									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+									get = function(l)return SV.db.SVUnit["target"]["power"].hideonnpc end,
+									set = function(l, m)SV.db.SVUnit["target"]["power"].hideonnpc = m;MOD:SetUnitFrame("target")end
+								},
+								threatEnabled = {
+									type = "toggle",
+									order = 5,
+									name = L["Show Threat"]
+								}
+							}
+						},
+						sizeGroup = {
+							order = 2,
+							guiInline = true,
+							type = "group",
+							name = L["Size Settings"],
+							args = {
+								width = {
+									order = 1,
+									name = L["Width"],
+									type = "range",
+									width = "full",
+									min = 50,
+									max = 500,
+									step = 1,
+								},
+								height = {
+									order = 2,
+									name = L["Height"],
+									type = "range",
+									width = "full",
+									min = 10,
+									max = 250,
+									step = 1
+								},
+							}
+						}
+					}
+				},
+				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "targettarget"),
+				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "targettarget"),
+				power = ns:SetPowerConfigGroup(nil, MOD.SetUnitFrame, "targettarget"),
+				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "targettarget"),
+				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "targettarget"),
+				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "targettarget"),
+				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "targettarget"),
+				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "targettarget")
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/language/generic.lua b/Interface/AddOns/SVUI_ConfigOMatic/language/generic.lua
index 927ef13..4f865ca 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/language/generic.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/language/generic.lua
@@ -16,8 +16,8 @@ S U P E R - V I L L A I N - U I   By: Munglunch                              #
 GET ADDON DATA
 ##########################################################
 ]]--
-local SV = SVUI;
-local L = LibLocale();
+local SV = _G["SVUI"];
+local L = SV.L;
 local gameLocale = GetLocale()
 if gameLocale == "enUS" then
 	L["AURAS_DESC"] = "Configure the aura icons that appear near the minimap."
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/_load.xml b/Interface/AddOns/SVUI_ConfigOMatic/modules/_load.xml
deleted file mode 100644
index 8e786b1..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/_load.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-	<Script file='map.lua'/>
-	<Script file='bar.lua'/>
-	<Script file='aura.lua'/>
-	<Script file='bag.lua'/>
-	<Script file='dock.lua'/>
-	<Script file='chat.lua'/>
-	<Script file='henchmen.lua'/>
-	<Script file='stat.lua'/>
-	<Script file='filter.lua'/>
-	<Script file='plate.lua'/>
-	<Script file='art.lua'/>
-	<Script file='tip.lua'/>
-	<Include file='units\_load.xml'/>
-	<!-- <Script file='ct.lua'/> -->
-	<Script file='dynamic.lua'/>
-	<Script file='profiles.lua'/>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/art.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/art.lua
deleted file mode 100644
index 0691044..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/art.lua
+++ /dev/null
@@ -1,340 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-SV.Options.args.SVStyle={
-	type = "group",
-	name = L["UI Styling"],
-	childGroups = "tree",
-	args = {
-		intro = {
-			order = 1,
-			type = "description",
-			name = L["ART_DESC"]
-		},
-		blizzardEnable = {
-			order = 2,
-			type = "toggle",
-			name = "Standard UI Styling",
-			get = function(a)return SV.db.SVStyle.blizzard.enable end,
-			set = function(a,b)SV.db.SVStyle.blizzard.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		addonEnable = {
-			order = 3,
-			type = "toggle",
-			name = "Addon Styling",
-			get = function(a)return SV.db.SVStyle.addons.enable end,
-			set = function(a,b)SV.db.SVStyle.addons.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		blizzard = {
-			order = 300,
-			type = "group",
-			name = "Individual Mods",
-			get = function(a)return SV.db.SVStyle.blizzard[a[#a]]end,
-			set = function(a,b)SV.db.SVStyle.blizzard[a[#a]] = b;SV:StaticPopup_Show("RL_CLIENT")end,
-			disabled = function()return not SV.db.SVStyle.blizzard.enable end,
-			guiInline = true,
-			args = {
-				bmah = {
-					type = "toggle",
-					name = L["Black Market AH"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					transmogrify = {
-					type = "toggle",
-					name = L["Transmogrify Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					encounterjournal = {
-					type = "toggle",
-					name = L["Encounter Journal"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					reforge = {
-					type = "toggle",
-					name = L["Reforge Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					calendar = {
-					type = "toggle",
-					name = L["Calendar Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					achievement = {
-					type = "toggle",
-					name = L["Achievement Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					lfguild = {
-					type = "toggle",
-					name = L["LF Guild Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					inspect = {
-					type = "toggle",
-					name = L["Inspect Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					binding = {
-					type = "toggle",
-					name = L["KeyBinding Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					gbank = {
-					type = "toggle",
-					name = L["Guild Bank"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					archaeology = {
-					type = "toggle",
-					name = L["Archaeology Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					guildcontrol = {
-					type = "toggle",
-					name = L["Guild Control Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					guild = {
-					type = "toggle",
-					name = L["Guild Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					tradeskill = {
-					type = "toggle",
-					name = L["TradeSkill Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					raid = {
-					type = "toggle",
-					name = L["Raid Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					talent = {
-					type = "toggle",
-					name = L["Talent Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					auctionhouse = {
-					type = "toggle",
-					name = L["Auction Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					timemanager = {
-					type = "toggle",
-					name = L["Time Manager"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					barber = {
-					type = "toggle",
-					name = L["Barbershop Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					macro = {
-					type = "toggle",
-					name = L["Macro Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					debug = {
-					type = "toggle",
-					name = L["Debug Tools"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					trainer = {
-					type = "toggle",
-					name = L["Trainer Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					socket = {
-					type = "toggle",
-					name = L["Socket Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					alertframes = {
-					type = "toggle",
-					name = L["Alert Frames"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					loot = {
-					type = "toggle",
-					name = L["Loot Frames"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					bgscore = {
-					type = "toggle",
-					name = L["BG Score"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					merchant = {
-					type = "toggle",
-					name = L["Merchant Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					mail = {
-					type = "toggle",
-					name = L["Mail Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					help = {
-					type = "toggle",
-					name = L["Help Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					trade = {
-					type = "toggle",
-					name = L["Trade Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					gossip = {
-					type = "toggle",
-					name = L["Gossip Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					greeting = {
-					type = "toggle",
-					name = L["Greeting Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					worldmap = {
-					type = "toggle",
-					name = L["World Map"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					taxi = {
-					type = "toggle",
-					name = L["Taxi Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					lfg = {
-					type = "toggle",
-					name = L["LFG Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					mounts = {
-					type = "toggle",
-					name = L["Mounts & Pets"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					quest = {
-					type = "toggle",
-					name = L["Quest Frames"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					petition = {
-					type = "toggle",
-					name = L["Petition Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					dressingroom = {
-					type = "toggle",
-					name = L["Dressing Room"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					pvp = {
-					type = "toggle",
-					name = L["PvP Frames"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					nonraid = {
-					type = "toggle",
-					name = L["Non-Raid Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					friends = {
-					type = "toggle",
-					name = L["Friends"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					spellbook = {
-					type = "toggle",
-					name = L["Spellbook"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					character = {
-					type = "toggle",
-					name = L["Character Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					misc = {
-					type = "toggle",
-					name = L["Misc Frames"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					tabard = {
-					type = "toggle",
-					name = L["Tabard Frame"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					guildregistrar = {
-					type = "toggle",
-					name = L["Guild Registrar"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					bags = {
-					type = "toggle",
-					name = L["Bags"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					stable = {
-					type = "toggle",
-					name = L["Stable"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					bgmap = {
-					type = "toggle",
-					name = L["BG Map"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					petbattleui = {
-					type = "toggle",
-					name = L["Pet Battle"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					losscontrol = {
-					type = "toggle",
-					name = L["Loss Control"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					voidstorage = {
-					type = "toggle",
-					name = L["Void Storage"],
-					desc = L["TOGGLEART_DESC"]
-				},
-					itemUpgrade = {
-					type = "toggle",
-					name = L["Item Upgrade"],
-					desc = L["TOGGLEART_DESC"]
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/aura.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/aura.lua
deleted file mode 100644
index 01d30e3..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/aura.lua
+++ /dev/null
@@ -1,313 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVAura;
-local MAP = SV.SVMap;
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-local auraOptionsTemplate = {
-	scaleGroup = {
-		order = 1,
-		guiInline = true,
-		type = "group",
-		name = L["Scale Options"],
-		args = {
-			size = {
-				type = "range",
-				name = L["Size"],
-				desc = L["Set the size of the individual auras."],
-				min = 16,
-				max = 60,
-				step = 2,
-				order = 1
-			},
-			wrapXOffset = {
-				order = 2,
-				type = "range",
-				name = L["Horizontal Spacing"],
-				min = 0,
-				max = 50,
-				step = 1
-			},
-			wrapYOffset = {
-				order = 3,
-				type = "range",
-				name = L["Vertical Spacing"],
-				min = 0,
-				max = 50,
-				step = 1
-			},
-		}
-	},
-	layoutGroup = {
-		order = 2,
-		guiInline = true,
-		type = "group",
-		name = L["Directional Options"],
-		args = {
-			showBy = {
-				type = "select",
-				order = 1,
-				name = L["Growth Direction"],
-				desc = L["The direction the auras will grow and then the direction they will grow after they reach the wrap after limit."],
-				values = {
-					DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
-					DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
-					UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
-					UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
-					RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
-					RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
-					LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
-					LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"])
-				}
-			},
-			wrapAfter = {
-				type = "range",
-				order = 2,
-				name = L["Wrap After"],
-				desc = L["Begin a new row or column after this many auras."],
-				min = 1,
-				max = 32,
-				step = 1
-			},
-			maxWraps = {
-				name = L["Max Wraps"],
-				order = 3,
-				desc = L["Limit the number of rows or columns."],
-				type = "range",
-				min = 1,
-				max = 32,
-				step = 1
-			},
-		}
-	},
-	sortGroup = {
-		order = 1,
-		guiInline = true,
-		type = "group",
-		name = L["Sorting Options"],
-		args = {
-			sortMethod = {
-				order = 1,
-				name = L["Sort Method"],
-				desc = L["Defines how the group is sorted."],
-				type = "select",
-				values = {
-					["INDEX"] = L["Index"],
-					["TIME"] = L["Time"],
-					["NAME"] = L["Name"]
-				}
-			},
-			sortDir = {
-				order = 2,
-				name = L["Sort Direction"],
-				desc = L["Defines the sort order of the selected sort method."],
-				type = "select",
-				values = {
-					["+"] = L["Ascending"],
-					["-"] = L["Descending"]
-				}
-			},
-			isolate = {
-				order = 3,
-				name = L["Seperate"],
-				desc = L["Indicate whether buffs you cast yourself should be separated before or after."],
-				type = "select",
-				values = {
-					[-1] = L["Other's First"],
-					[0] = L["No Sorting"],
-					[1] = L["Your Auras First"]
-				}
-			}
-		}
-	},
-}
-
-SV.Options.args.SVAura = {
-	type = "group",
-	name = BUFFOPTIONS_LABEL,
-	childGroups = "tab",
-	get = function(a)return SV.db.SVAura[a[#a]]end,
-	set = function(a,b)
-		MOD:ChangeDBVar(b,a[#a]);
-		MOD:UpdateAuraHeader(SVUI_PlayerBuffs, "buffs")
-		MOD:UpdateAuraHeader(SVUI_PlayerDebuffs, "debuffs")
-	end,
-	args = {
-		intro = {
-			order = 1,
-			type = "description",
-			name = L["AURAS_DESC"]
-		},
-		enable = {
-			order = 2,
-			type = "toggle",
-			name = L["Enable"],
-			get = function(a)return SV.db.SVAura.enable end,
-			set = function(a,b)SV.db.SVAura.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		disableBlizzard = {
-			order = 3,
-			type = "toggle",
-			name = L["Disabled Blizzard"],
-			get = function(a)return SV.db.SVAura.disableBlizzard end,
-			set = function(a,b)SV.db.SVAura.disableBlizzard = b;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		auraGroups = {
-			order = 4,
-			type = "group",
-			name = L["Options"],
-			childGroups = "tree",
-			args = {
-				common = {
-					order = 10,
-					type = "group",
-					name = L["General"],
-					args = {
-						fadeBy = {
-							type = "range",
-							name = L["Fade Threshold"],
-							desc = L["Threshold before text changes red, goes into decimal form, and the icon will fade. Set to -1 to disable."],
-							min = -1,
-							max = 30,
-							step = 1,
-							order = 1
-						},
-						font = {
-							type = "select",
-							dialogControl = "LSM30_Font",
-							order = 2,
-							name = L["Font"],
-							values = AceGUIWidgetLSMlists.font
-						},
-						fontSize = {
-							order = 3,
-							name = L["Font Size"],
-							type = "range",
-							min = 6,
-							max = 22,
-							step = 1
-						},
-						fontOutline = {
-							order = 4,
-							name = L["Font Outline"],
-							desc = L["Set the font outline."],
-							type = "select",
-							values = {
-								["NONE"] = L["None"],
-								["OUTLINE"] = "OUTLINE",
-								["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-								["THICKOUTLINE"] = "THICKOUTLINE"
-							}
-						},
-						timeOffsetH = {
-							order = 5,
-							name = L["Time xOffset"],
-							type = "range",
-							min = -60,
-							max = 60,
-							step = 1
-						},
-						timeOffsetV = {
-							order = 6,
-							name = L["Time yOffset"],
-							type = "range",
-							min = -60,
-							max = 60,
-							step = 1
-						},
-						countOffsetH = {
-							order = 7,
-							name = L["Count xOffset"],
-							type = "range",
-							min = -60,
-							max = 60,
-							step = 1
-						},
-						countOffsetV = {
-							order = 8,
-							name = L["Count yOffset"],
-							type = "range",
-							min = -60,
-							max = 60,
-							step = 1
-						}
-					}
-				},
-				hyperBuffs = {
-					order = 20,
-					type = "group",
-					name = L["Hyper Buffs"],
-					get = function(b)return SV.db.SVAura.hyperBuffs[b[#b]]end,
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"hyperBuffs");MOD:ToggleConsolidatedBuffs();MAP:ReLoad();MOD:UpdateAuraHeader(SVUI_PlayerBuffs, "buffs")end,
-					args = {
-						enable = {
-							order = 1,
-							type = "toggle",
-							name = L["Enable"],
-							desc = L["Display the consolidated buffs bar."],
-							disabled = function()return not SV.db.SVMap.enable end,
-						},
-						filter = {
-							order = 2,
-							name = L["Filter Hyper"],
-							desc = L["Only show consolidated icons on the consolidated bar that your class/spec is interested in. This is useful for raid leading."],
-							type = "toggle",
-							disabled = function()return not SV.db.SVAura.hyperBuffs.enable end,
-						}
-					}
-				},
-				buffs = {
-					order = 30,
-					type = "group",
-					name = L["Buffs"],
-					get = function(b)return SV.db.SVAura.buffs[b[#b]]end,
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"buffs");MOD:UpdateAuraHeader(SVUI_PlayerBuffs, "buffs")end,
-					args = auraOptionsTemplate
-				},
-				debuffs = {
-					order = 40,
-					type = "group",
-					name = L["Debuffs"],
-					get = function(b)return SV.db.SVAura.debuffs[b[#b]]end,
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"debuffs");MOD:UpdateAuraHeader(SVUI_PlayerDebuffs, "debuffs")end,
-					args = auraOptionsTemplate
-				}
-			}
-		},
-	}
-}
-
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/bag.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/bag.lua
deleted file mode 100644
index 34fa3db..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/bag.lua
+++ /dev/null
@@ -1,312 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-
-local MOD = SV.SVBag
-
-local pointList = {
-	["TOPLEFT"] = "TOPLEFT",
-	["TOPRIGHT"] = "TOPRIGHT",
-	["BOTTOMLEFT"] = "BOTTOMLEFT",
-	["BOTTOMRIGHT"] = "BOTTOMRIGHT",
-}
-
-SV.Options.args.SVBag = {
-	type = 'group',
-	name = L['Bags'],
-	childGroups = "tab",
-	get = function(a)return SV.db.SVBag[a[#a]]end,
-	set = function(a,b)MOD:ChangeDBVar(b,a[#a]) end,
-	args = {
-		intro = {
-			order = 1,
-			type = "description",
-			name = L["BAGS_DESC"]
-		},
-		enable = {
-			order = 2,
-			type = "toggle",
-			name = L["Enable"],
-			desc = L["Enable/Disable the all-in-one bag."],
-			get = function(a)return SV.db.SVBag.enable end,
-			set = function(a,b)SV.db.SVBag.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		bagGroups={
-			order = 3,
-			type = 'group',
-			name = L['Bag Options'],
-			guiInline = true,
-			args = {
-				common={
-					order = 1,
-						type = "group",
-						guiInline = true,
-						name = L["General"],
-						disabled = function()return not SV.db.SVBag.enable end,
-						args = {
-						bagSize = {
-							order = 1,
-							type = "range",
-							name = L["Button Size (Bag)"],
-							desc = L["The size of the individual buttons on the bag frame."],
-							min = 15,
-							max = 45,
-							step = 1,
-							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout()end
-						},
-						bankSize = {
-							order = 2,
-							type = "range",
-							name = L["Button Size (Bank)"],
-							desc = L["The size of the individual buttons on the bank frame."],
-							min = 15,
-							max = 45,
-							step = 1,
-							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout(true)end
-						},
-						sortInverted = {
-							order = 3,
-							type = "toggle",
-							name = L["Sort Inverted"],
-							desc = L["Direction the bag sorting will use to allocate the items."]
-						},
-						bagWidth = {
-							order = 4,
-							type = "range",
-							name = L["Panel Width (Bags)"],
-							desc = L["Adjust the width of the bag frame."],
-							min = 150,
-							max = 700,
-							step = 1,
-							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout()end,
-							disabled = function()return SV.db.SVBag.alignToChat end
-						},
-						bankWidth = {
-							order = 5,
-							type = "range",
-							name = L["Panel Width (Bank)"],
-							desc = L["Adjust the width of the bank frame."],
-							min = 150,
-							max = 700,
-							step = 1,
-							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout(true)end,
-							disabled = function()return SV.db.SVBag.alignToChat end
-						},
-						currencyFormat = {
-							order = 6,
-							type = "select",
-							name = L["Currency Format"],
-							desc = L["The display format of the currency icons that get displayed below the main bag. (You have to be watching a currency for this to display)"],
-							values = {
-								["ICON"] = L["Icons Only"],
-								["ICON_TEXT"] = L["Icons and Text"]
-							},
-							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:RefreshTokens()end
-						},
-						bagTools = {
-							order = 7,
-							type = "toggle",
-							name = L["Profession Tools"],
-							desc = L["Enable/Disable Prospecting, Disenchanting and Milling buttons on the bag frame."],
-							set = function(a,b)MOD:ChangeDBVar(b,a[#a])SV:StaticPopup_Show("RL_CLIENT")end
-						},
-						ignoreItems = {
-							order = 100,
-							name = L["Ignore Items"],
-							desc = L["List of items to ignore when sorting. If you wish to add multiple items you must seperate the word with a comma."],
-							type = "input",
-							width = "full",
-							multiline = true,
-							set = function(a,b) SV.db.SVBag[a[#a]] = b end
-						}
-					}
-				},
-				position = {
-					order = 2,
-					type = "group",
-					guiInline = true,
-					name = L["Bag/Bank Positioning"],
-					disabled = function()return not SV.db.SVBag.enable end,
-					args = {
-						alignToChat = {
-							order = 1,
-							type = "toggle",
-							name = L["Align To Chat"],
-							desc = L["Align the width of the bag frame to fit inside the chat box."],
-							set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:Layout()MOD:Layout(true)end
-						},
-						bags = {
-							order = 2,
-							type = "group",
-							name = L["Bag Position"],
-							guiInline = true,
-							get = function(key) return SV.db.SVBag.bags[key[#key]] end,
-							set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bags"); MOD:ModifyBags() end,
-							disabled = function() return not SV.db.SVBag.enable end,
-							args = {
-								point = {
-									order = 1,
-									name = L["Anchor Point"],
-									type = "select",
-									values = pointList,
-								},
-								xOffset = {
-									order = 2,
-									type = "range",
-									name = L["X Offset"],
-									width = "full",
-									min = -600,
-									max = 600,
-									step = 1,
-								},
-								yOffset = {
-									order = 3,
-									type = "range",
-									name = L["Y Offset"],
-									width = "full",
-									min = -600,
-									max = 600,
-									step = 1,
-								},
-							}
-						},
-						bank = {
-							order = 3,
-							type = "group",
-							name = L["Bank Position"],
-							guiInline = true,
-							get = function(key) return SV.db.SVBag.bank[key[#key]] end,
-							set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bank"); MOD:ModifyBags() end,
-							disabled = function() return not SV.db.SVBag.enable end,
-							args = {
-								point = {
-									order = 1,
-									name = L["Anchor Point"],
-									type = "select",
-									values = pointList,
-								},
-								xOffset = {
-									order = 2,
-									type = "range",
-									name = L["X Offset"],
-									width = "full",
-									min = -600,
-									max = 600,
-									step = 1,
-								},
-								yOffset = {
-									order = 3,
-									type = "range",
-									name = L["Y Offset"],
-									width = "full",
-									min = -600,
-									max = 600,
-									step = 1,
-								},
-							}
-						},
-					}
-				},
-
-				bagBar = {
-					order = 4,
-					type = "group",
-					name = L["Bag-Bar"],
-					guiInline = true,
-					get = function(key) return SV.db.SVBag.bagBar[key[#key]] end,
-					set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bagBar"); MOD:ModifyBagBar() end,
-					args={
-						enable = {
-							order = 1,
-							type = "toggle",
-							name = L["Enable"],
-							desc = L["Enable/Disable the Bag-Bar."],
-							get = function() return SV.db.SVBag.bagBar.enable end,
-							set = function(key, value) MOD:ChangeDBVar(value, key[#key], "bagBar"); SV:StaticPopup_Show("RL_CLIENT")end
-						},
-						mouseover = {
-							order = 2,
-							name = L["Mouse Over"],
-							desc = L["Hidden unless you mouse over the frame."],
-							type = "toggle"
-						},
-						showBackdrop = {
-							order = 3,
-							name = L["Backdrop"],
-							desc = L["Show/Hide bag bar backdrop"],
-							type = "toggle"
-						},
-						size = {
-							order = 4,
-							type = "range",
-							name = L["Button Size"],
-							desc = L["Set the size of your bag buttons."],
-							min = 24,
-							max = 60,
-							step = 1
-						},
-						spacing = {
-							order = 5,
-							type = "range",
-							name = L["Button Spacing"],
-							desc = L["The spacing between buttons."],
-							min = 1,
-							max = 10,
-							step = 1
-						},
-						sortDirection = {
-							order = 6,
-							type = "select",
-							name = L["Sort Direction"],
-							desc = L["The direction that the bag frames will grow from the anchor."],
-							values = {
-								["ASCENDING"] = L["Ascending"],
-								["DESCENDING"] = L["Descending"]
-							}
-						},
-						showBy = {
-							order = 7,
-							type = "select",
-							name = L["Bar Direction"],
-							desc = L["The direction that the bag frames be (Horizontal or Vertical)."],
-							values = {
-								["VERTICAL"] = L["Vertical"],
-								["HORIZONTAL"] = L["Horizontal"]
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/bar.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/bar.lua
deleted file mode 100644
index dd4799c..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/bar.lua
+++ /dev/null
@@ -1,806 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVBar;
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-local bar_configs;
-local function BarConfigLoader()
-	local b = {["TOPLEFT"] = "TOPLEFT", ["TOPRIGHT"] = "TOPRIGHT", ["BOTTOMLEFT"] = "BOTTOMLEFT", ["BOTTOMRIGHT"] = "BOTTOMRIGHT"}
-	for d = 1, 6 do
-		local name = L["Bar "]..d;
-		bar_configs["Bar"..d] = {
-			order = d,
-			name = name,
-			type = "group",
-			order = (d  +  10),
-			guiInline = false,
-			disabled = function()return not SV.db.SVBar.enable end,
-			get = function(key)
-				return SV.db.SVBar["Bar"..d][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], "Bar"..d);
-				MOD:RefreshBar("Bar"..d)
-			end,
-			args = {
-				enable = {
-					order = 1,
-					type = "toggle",
-					name = L["Enable"],
-				},
-				backdrop = {
-					order = 2,
-					name = L["Background"],
-					type = "toggle",
-					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
-				},
-				mouseover = {
-					order = 3,
-					name = L["Mouse Over"],
-					desc = L["The frame is not shown unless you mouse over the frame."],
-					type = "toggle",
-					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
-				},
-				restorePosition = {
-					order = 4,
-					type = "execute",
-					name = L["Restore Bar"],
-					desc = L["Restore the actionbars default settings"],
-					func = function()
-						SV.db:SetDefault("SVBar", "Bar"..d)
-						SV:ResetMovables("Bar "..d)
-						MOD:RefreshBar("Bar"..d)
-					end,
-					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
-				},
-				adjustGroup = {
-					name = L["Bar Adjustments"],
-					type = "group",
-					order = 5,
-					guiInline = true,
-					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
-					args = {
-						point = {
-							order = 1,
-							type = "select",
-							name = L["Anchor Point"],
-							desc = L["The first button anchors itself to this point on the bar."],
-							values = b
-						},
-						buttons = {
-							order = 2,
-							type = "range",
-							name = L["Buttons"],
-							desc = L["The amount of buttons to display."],
-							min = 1,
-							max = NUM_ACTIONBAR_BUTTONS,
-							step = 1
-						},
-						buttonsPerRow = {
-							order = 3,
-							type = "range",
-							name = L["Buttons Per Row"],
-							desc = L["The amount of buttons to display per row."],
-							min = 1,
-							max = NUM_ACTIONBAR_BUTTONS,
-							step = 1
-						},
-						buttonsize = {
-							type = "range",
-							name = L["Button Size"],
-							desc = L["The size of the action buttons."],
-							min = 15,
-							max = 60,
-							step = 1,
-							order = 4
-						},
-						buttonspacing = {
-							type = "range",
-							name = L["Button Spacing"],
-							desc = L["The spacing between buttons."],
-							min = 1,
-							max = 10,
-							step = 1,
-							order = 5
-						},
-						alpha = {
-							order = 6,
-							type = "range",
-							name = L["Alpha"],
-							isPercent = true,
-							min = 0,
-							max = 1,
-							step = 0.01
-						},
-					}
-				},
-				pagingGroup = {
-					name = L["Bar Paging"],
-					type = "group",
-					order = 6,
-					guiInline = true,
-					disabled = function()return not SV.db.SVBar["Bar"..d].enable end,
-					args = {
-						useCustomPaging = {
-							order = 1,
-							type = "toggle",
-							name = L["Enable"],
-							desc = L["Allow the use of custom paging for this bar"],
-							get = function()return SV.db.SVBar["Bar"..d].useCustomPaging end,
-							set = function(e, f)
-								SV.db.SVBar["Bar"..d].useCustomPaging = f;
-								MOD.db["Bar"..d].useCustomPaging = f;
-								MOD:UpdateBarPagingDefaults();
-								MOD:RefreshBar("Bar"..d)
-							end
-						},
-						resetStates = {
-							order = 2,
-							type = "execute",
-							name = L["Restore Defaults"],
-							desc = L["Restore default paging attributes for this bar"],
-							func = function()
-								SV.db:SetDefault("SVBar", "Bar"..d, "customPaging")
-								MOD:UpdateBarPagingDefaults();
-								MOD:RefreshBar("Bar"..d)
-							end
-						},
-						customPaging = {
-							order = 3,
-							type = "input",
-							width = "full",
-							name = L["Paging"],
-							desc = L["|cffFF0000ADVANCED:|r Set the paging attributes for this bar"],
-							get = function(e)return SV.db.SVBar["Bar"..d].customPaging[SV.class] end,
-							set = function(e, f)
-								SV.db.SVBar["Bar"..d].customPaging[SV.class] = f;
-								MOD.db["Bar"..d].customPaging[SV.class] = f;
-								MOD:UpdateBarPagingDefaults();
-								MOD:RefreshBar("Bar"..d)
-							end,
-							disabled = function()return not SV.db.SVBar["Bar"..d].useCustomPaging end,
-						},
-						useCustomVisibility = {
-							order = 4,
-							type = "toggle",
-							name = L["Enable"],
-							desc = L["Allow the use of custom paging for this bar"],
-							get = function()return SV.db.SVBar["Bar"..d].useCustomVisibility end,
-							set = function(e, f)
-								SV.db.SVBar["Bar"..d].useCustomVisibility = f;
-								MOD.db["Bar"..d].useCustomVisibility = f;
-								MOD:UpdateBarPagingDefaults();
-								MOD:RefreshBar("Bar"..d)
-							end
-						},
-						resetVisibility = {
-							order = 5,
-							type = "execute",
-							name = L["Restore Defaults"],
-							desc = L["Restore default visibility attributes for this bar"],
-							func = function()
-								SV.db:SetDefault("SVBar", "Bar"..d, "customVisibility")
-								MOD:UpdateBarPagingDefaults();
-								MOD:RefreshBar("Bar"..d)
-							end
-						},
-						customVisibility = {
-							order = 6,
-							type = "input",
-							width = "full",
-							name = L["Visibility"],
-							desc = L["|cffFF0000ADVANCED:|r Set the visibility attributes for this bar"],
-							get = function(e)return SV.db.SVBar["Bar"..d].customVisibility end,
-							set = function(e, f)
-								SV.db.SVBar["Bar"..d].customVisibility = f;
-								MOD.db["Bar"..d].customVisibility = f;
-								MOD:UpdateBarPagingDefaults();
-								MOD:RefreshBar("Bar"..d)
-							end,
-							disabled = function()return not SV.db.SVBar["Bar"..d].useCustomVisibility end,
-						},
-
-					}
-				}
-			}
-		}
-	end
-
-	bar_configs["Micro"] = {
-		order = d,
-		name = L["Micro Menu"],
-		type = "group",
-		order = 100,
-		guiInline = false,
-		disabled = function()return not SV.db.SVBar.enable end,
-		get = function(key)
-			return SV.db.SVBar["Micro"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], "Micro");
-			MOD:UpdateMicroButtons()
-		end,
-		args = {
-			enable = {
-				order = 1,
-				type = "toggle",
-				name = L["Enable"]
-			},
-			mouseover = {
-				order = 2,
-				name = L["Mouse Over"],
-				desc = L["The frame is not shown unless you mouse over the frame."],
-				disabled = function()return not SV.db.SVBar["Micro"].enable end,
-				type = "toggle"
-			},
-			buttonsize = {
-				order = 3,
-				type = "range",
-				name = L["Button Size"],
-				desc = L["The size of the action buttons."],
-				min = 15,
-				max = 60,
-				step = 1,
-				disabled = function()return not SV.db.SVBar["Micro"].enable end,
-			},
-			buttonspacing = {
-				order = 4,
-				type = "range",
-				name = L["Button Spacing"],
-				desc = L["The spacing between buttons."],
-				min = 1,
-				max = 10,
-				step = 1,
-				disabled = function()return not SV.db.SVBar["Micro"].enable end,
-			},
-		}
-	};
-
-	bar_configs["Pet"] = {
-		order = d,
-		name = L["Pet Bar"],
-		type = "group",
-		order = 200,
-		guiInline = false,
-		disabled = function()return not SV.db.SVBar.enable end,
-		get = function(e)return SV.db.SVBar["Pet"][e[#e]]end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], "Pet");
-			MOD:RefreshBar("Pet")
-		end,
-		args = {
-			enable = {
-				order = 1,
-				type = "toggle",
-				name = L["Enable"]
-			},
-			backdrop = {
-				order = 2,
-				name = L["Background"],
-				type = "toggle",
-				disabled = function()return not SV.db.SVBar["Pet"].enable end,
-			},
-			mouseover = {
-				order = 3,
-				name = L["Mouse Over"],
-				desc = L["The frame is not shown unless you mouse over the frame."],
-				type = "toggle",
-				disabled = function()return not SV.db.SVBar["Pet"].enable end,
-			},
-			restorePosition = {
-				order = 4,
-				type = "execute",
-				name = L["Restore Bar"],
-				desc = L["Restore the actionbars default settings"],
-				func = function()
-					SV.db:SetDefault("SVBar", "Pet")
-					SV:ResetMovables("Pet Bar")
-					MOD:RefreshBar("Pet")
-				end,
-				disabled = function()return not SV.db.SVBar["Pet"].enable end,
-			},
-			adjustGroup = {
-				name = L["Bar Adjustments"],
-				type = "group",
-				order = 5,
-				guiInline = true,
-				disabled = function()return not SV.db.SVBar["Pet"].enable end,
-				args = {
-					point = {
-						order = 1,
-						type = "select",
-						name = L["Anchor Point"],
-						desc = L["The first button anchors itself to this point on the bar."],
-						values = b
-					},
-					buttons = {
-						order = 2,
-						type = "range",
-						name = L["Buttons"],
-						desc = L["The amount of buttons to display."],
-						min = 1,
-						max = NUM_PET_ACTION_SLOTS,
-						step = 1
-					},
-					buttonsPerRow = {
-						order = 3,
-						type = "range",
-						name = L["Buttons Per Row"],
-						desc = L["The amount of buttons to display per row."],
-						min = 1,
-						max = NUM_PET_ACTION_SLOTS,
-						step = 1
-					},
-					buttonsize = {
-						order = 4,
-						type = "range",
-						name = L["Button Size"],
-						desc = L["The size of the action buttons."],
-						min = 15,
-						max = 60,
-						step = 1,
-						disabled = function()return not SV.db.SVBar.enable end
-					},
-					buttonspacing = {
-						order = 5,
-						type = "range",
-						name = L["Button Spacing"],
-						desc = L["The spacing between buttons."],
-						min = 1,
-						max = 10,
-						step = 1,
-						disabled = function()return not SV.db.SVBar.enable end
-					},
-					alpha = {
-						order = 6,
-						type = "range",
-						name = L["Alpha"],
-						isPercent = true,
-						min = 0,
-						max = 1,
-						step = 0.01
-					},
-				}
-			},
-			customGroup = {
-				name = L["Visibility Options"],
-				type = "group",
-				order = 6,
-				guiInline = true,
-				args = {
-					useCustomVisibility = {
-						order = 1,
-						type = "toggle",
-						name = L["Enable"],
-						desc = L["Allow the use of custom paging for this bar"],
-						get = function()return SV.db.SVBar["Pet"].useCustomVisibility end,
-						set = function(e,f)
-							SV.db.SVBar["Pet"].useCustomVisibility = f;
-							MOD.db["Pet"].useCustomVisibility = f;
-							MOD:RefreshBar("Pet")
-						end
-					},
-					resetVisibility = {
-						order = 2,
-						type = "execute",
-						name = L["Restore Defaults"],
-						desc = L["Restore default visibility attributes for this bar"],
-						func = function()
-							SV.db:SetDefault("SVBar", "Pet", "customVisibility")
-							MOD:RefreshBar("Pet")
-						end
-					},
-					customVisibility = {
-						order = 3,
-						type = "input",
-						width = "full",
-						name = L["Visibility"],
-						desc = L["|cffFF0000ADVANCED:|r Set the visibility attributes for this bar"],
-						get = function(e)return SV.db.SVBar["Pet"].customVisibility end,
-						set = function(e,f)
-							SV.db.SVBar["Pet"].customVisibility = f;
-							MOD.db["Pet"].customVisibility = f;
-							MOD:RefreshBar("Pet")
-						end,
-						disabled = function()return not SV.db.SVBar["Pet"].useCustomVisibility end,
-					},
-				}
-			}
-		}
-	};
-
-	bar_configs["Stance"] = {
-		order = d,
-		name = L["Stance Bar"],
-		type = "group",
-		order = 300,
-		guiInline = false,
-		disabled = function()return not SV.db.SVBar.enable end,
-		get = function(e)return SV.db.SVBar["Stance"][e[#e]]end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], "Stance");
-			MOD:RefreshBar("Stance")
-		end,
-		args = {
-			enable = {
-				order = 1,
-				type = "toggle",
-				name = L["Enable"]
-			},
-			backdrop = {
-				order = 2,
-				name = L["Background"],
-				type = "toggle",
-				disabled = function()return not SV.db.SVBar["Stance"].enable end,
-			},
-			mouseover = {
-				order = 3,
-				name = L["Mouse Over"],
-				desc = L["The frame is not shown unless you mouse over the frame."],
-				type = "toggle",
-				disabled = function()return not SV.db.SVBar["Stance"].enable end,
-			},
-			restorePosition = {
-				order = 4,
-				type = "execute",
-				name = L["Restore Bar"],
-				desc = L["Restore the actionbars default settings"],
-				func = function()
-					SV.db:SetDefault("SVBar","Stance")
-					SV:ResetMovables("Stance Bar")
-					MOD:RefreshBar("Stance")
-				end,
-				disabled = function()return not SV.db.SVBar["Stance"].enable end,
-			},
-			adjustGroup = {
-				name = L["Bar Adjustments"],
-				type = "group",
-				order = 5,
-				guiInline = true,
-				disabled = function()return not SV.db.SVBar["Stance"].enable end,
-				args = {
-					point = {
-						order = 1,
-						type = "select",
-						name = L["Anchor Point"],
-						desc = L["The first button anchors itself to this point on the bar."],
-						values = b
-					},
-					buttons = {
-						order = 2,
-						type = "range",
-						name = L["Buttons"],
-						desc = L["The amount of buttons to display."],
-						min = 1,
-						max = NUM_STANCE_SLOTS,
-						step = 1
-					},
-					buttonsPerRow = {
-						order = 3,
-						type = "range",
-						name = L["Buttons Per Row"],
-						desc = L["The amount of buttons to display per row."],
-						min = 1,
-						max = NUM_STANCE_SLOTS,
-						step = 1
-					},
-					buttonsize = {
-						order = 4,
-						type = "range",
-						name = L["Button Size"],
-						desc = L["The size of the action buttons."],
-						min = 15,
-						max = 60,
-						step = 1
-					},
-					buttonspacing = {
-						order = 5,
-						type = "range",
-						name = L["Button Spacing"],
-						desc = L["The spacing between buttons."],
-						min = 1,
-						max = 10,
-						step = 1
-					},
-					alpha = {
-						order = 6,
-						type = "range",
-						name = L["Alpha"],
-						isPercent = true,
-						min = 0,
-						max = 1,
-						step = 0.01
-					},
-				}
-			},
-			customGroup = {
-				name = L["Visibility Options"],
-				type = "group",
-				order = 6,
-				guiInline = true,
-				disabled = function()return not SV.db.SVBar["Stance"].enable end,
-				args = {
-					style = {
-						order = 1,
-						type = "select",
-						name = L["Style"],
-						desc = L["This setting will be updated upon changing stances."],
-						values = {
-							["darkenInactive"] = L["Darken Inactive"],
-							["classic"] = L["Classic"]
-						}
-					},
-					spacer1 = {
-						order = 2,
-						type = "description",
-						name = "",
-					},
-					spacer2 = {
-						order = 3,
-						type = "description",
-						name = "",
-					},
-					useCustomVisibility = {
-						order = 4,
-						type = "toggle",
-						name = L["Enable"],
-						desc = L["Allow the use of custom paging for this bar"],
-						get = function()return SV.db.SVBar["Stance"].useCustomVisibility end,
-						set = function(e,f)
-							SV.db.SVBar["Stance"].useCustomVisibility = f;
-							MOD.db["Stance"].useCustomVisibility = f;
-							MOD:RefreshBar("Stance")
-						end
-					},
-					resetVisibility = {
-						order = 5,
-						type = "execute",
-						name = L["Restore Defaults"],
-						desc = L["Restore default visibility attributes for this bar"],
-						func = function()
-							SV.db:SetDefault("SVBar", "Stance", "customVisibility")
-							MOD:RefreshBar("Stance")
-						end
-					},
-					customVisibility = {
-						order = 6,
-						type = "input",
-						width = "full",
-						name = L["Visibility"],
-						desc = L["|cffFF0000ADVANCED:|r Set the visibility attributes for this bar"],
-						get = function(e)return SV.db.SVBar["Stance"].customVisibility end,
-						set = function(e,f)
-							SV.db.SVBar["Stance"].customVisibility = f;
-							MOD.db["Stance"].customVisibility = f;
-							MOD:RefreshBar("Stance")
-						end,
-						disabled = function()return not SV.db.SVBar["Stance"].useCustomVisibility end,
-					},
-				}
-			}
-		}
-	}
-end
-
-SV.Options.args.SVBar = {
-	type = "group",
-	name = L["ActionBars"],
-	childGroups = "tab",
-	get = function(key)
-		return SV.db.SVBar[key[#key]]
-	end,
-	set = function(key, value)
-		MOD:ChangeDBVar(value, key[#key]);
-		MOD:RefreshActionBars()
-	end,
-	args = {
-		enable = {
-			order = 1,
-			type = "toggle",
-			name = L["Enable"],
-			get = function(e)return SV.db.SVBar[e[#e]]end,
-			set = function(e, f)SV.db.SVBar[e[#e]] = f;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		barGroup = {
-			order = 2,
-			type = "group",
-			name = L["Bar Options"],
-			childGroups = "tree",
-			disabled = function()return not SV.db.SVBar.enable end,
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						macrotext = {
-							type = "toggle",
-							name = L["Macro Text"],
-							desc = L["Display macro names on action buttons."],
-							order = 2
-						},
-						hotkeytext = {
-							type = "toggle",
-							name = L["Keybind Text"],
-							desc = L["Display bind names on action buttons."],
-							order = 3
-						},
-						keyDown = {
-							type = "toggle",
-							name = L["Key Down"],
-							desc = OPTION_TOOLTIP_ACTION_BUTTON_USE_KEY_DOWN,
-							order = 4
-						},
-						showGrid = {
-							type = "toggle",
-							name = ALWAYS_SHOW_MULTIBARS_TEXT,
-							desc = OPTION_TOOLTIP_ALWAYS_SHOW_MULTIBARS,
-							order = 5
-						},
-						unlock = {
-							type = "select",
-							width = "full",
-							name = PICKUP_ACTION_KEY_TEXT,
-							desc = L["The button you must hold down in order to drag an ability to another action button."],
-							order = 6,
-							values = {
-								["SHIFT"] = SHIFT_KEY,
-								["ALT"] = ALT_KEY,
-								["CTRL"] = CTRL_KEY
-							}
-						},
-						unc = {
-							type = "color",
-							order = 7,
-							name = L["Out of Range"],
-							desc = L["Color of the actionbutton when out of range."],
-							hasAlpha = true,
-							get = function(key)
-								local color = SV.db.SVBar[key[#key]]
-								return color[1], color[2], color[3], color[4]
-							end,
-							set = function(key, rValue, gValue, bValue, aValue)
-								SV.db.SVBar[key[#key]] = {rValue, gValue, bValue, aValue}
-								MOD:RefreshActionBars()
-							end,
-						},
-						unpc = {
-							type = "color",
-							order = 8,
-							name = L["Out of Power"],
-							desc = L["Color of the actionbutton when out of power (Mana, Rage, Focus, Holy Power)."],
-							hasAlpha = true,
-							get = function(key)
-								local color = SV.db.SVBar[key[#key]]
-								return color[1], color[2], color[3], color[4]
-							end,
-							set = function(key, rValue, gValue, bValue, aValue)
-								SV.db.SVBar[key[#key]] = {rValue, gValue, bValue, aValue}
-								MOD:RefreshActionBars()
-							end,
-						},
-						rightClickSelf = {
-							type = "toggle",
-							name = L["Self Cast"],
-							desc = L["Right-click any action button to self cast"],
-							order = 9
-						}
-					}
-				},
-				fontGroup = {
-					order = 2,
-					type = "group",
-					disabled = function()return not SV.db.SVBar.enable end,
-					name = L["Fonts"],
-					args = {
-						font = {
-							type = "select",
-							width = "full",
-							dialogControl = "LSM30_Font",
-							order = 1,
-							name = L["Font"],
-							values = AceGUIWidgetLSMlists.font
-						},
-						fontSize = {
-							order = 2,
-							width = "full",
-							name = L["Font Size"],
-							type = "range",
-							min = 6,
-							max = 22,
-							step = 1
-						},
-						fontOutline = {
-							order = 3,
-							width = "full",
-							name = L["Font Outline"],
-							desc = L["Set the font outline."],
-							type = "select",
-							values = {
-								["NONE"] = L["None"],
-								["OUTLINE"] = "OUTLINE",
-								["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-								["THICKOUTLINE"] = "THICKOUTLINE"
-							}
-						},
-						countFont = {
-							type = "select",
-							width = "full",
-							dialogControl = "LSM30_Font",
-							order = 4,
-							name = L["Count Font"],
-							values = AceGUIWidgetLSMlists.font
-						},
-						countFontSize = {
-							order = 5,
-							width = "full",
-							name = L["Count Font Size"],
-							type = "range",
-							min = 6,
-							max = 22,
-							step = 1
-						},
-						countFontOutline = {
-							order = 6,
-							width = "full",
-							name = L["Count Font Outline"],
-							desc = L["Set the font outline."],
-							type = "select",
-							values = {
-								["NONE"] = L["None"],
-								["OUTLINE"] = "OUTLINE",
-								["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-								["THICKOUTLINE"] = "THICKOUTLINE"
-							}
-						},
-						cooldownSize = {
-							order = 7,
-							width = "full",
-							name = L["Cooldown Font Size"],
-							type = "range",
-							min = 6,
-							max = 22,
-							step = 1
-						},
-					}
-				}
-			}
-		}
-	}
-}
-bar_configs = SV.Options.args.SVBar.args.barGroup.args
-BarConfigLoader();
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua
deleted file mode 100644
index 9213842..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua
+++ /dev/null
@@ -1,200 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVChat;
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-SV.Options.args.SVChat={
-	type = "group",
-	name = L["Chat"],
-	get = function(a)return SV.db.SVChat[a[#a]]end,
-	set = function(a,b)MOD:ChangeDBVar(b,a[#a]); end,
-	args = {
-		intro = {
-			order = 1,
-			type = "description",
-			name = L["CHAT_DESC"]
-		},
-		enable = {
-			order = 2,
-			type = "toggle",
-			name = L["Enable"],
-			get = function(a)return SV.db.SVChat.enable end,
-			set = function(a,b)SV.db.SVChat.enable = b;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		common = {
-			order = 3,
-			type = "group",
-			name = L["General"],
-			guiInline = true,
-			args = {
-				sticky = {
-					order = 1,
-					type = "toggle",
-					name = L["Sticky Chat"],
-					desc = L["When opening the Chat Editbox to type a message having this option set means it will retain the last channel you spoke in. If this option is turned off opening the Chat Editbox should always default to the SAY channel."]
-				},
-				url = {
-					order = 2,
-					type = "toggle",
-					name = L["URL Links"],
-					desc = L["Attempt to create URL links inside the chat."],
-					set = function(a,b) MOD:ChangeDBVar(b,a[#a]) end
-				},
-				hyperlinkHover = {
-					order = 3,
-					type = "toggle",
-					name = L["Hyperlink Hover"],
-					desc = L["Display the hyperlink tooltip while hovering over a hyperlink."],
-					set = function(a,b) MOD:ChangeDBVar(b,a[#a]); MOD:ToggleHyperlinks(b); end
-				},
-				smileys = {
-					order = 4,
-					type = "toggle",
-					name = L["Emotion Icons"],
-					desc = L["Display emotion icons in chat."]
-				},
-				tabStyled = {
-					order = 5,
-					type = "toggle",
-					name = L["Custom Tab Style"],
-					set = function(a,b) MOD:ChangeDBVar(b,a[#a]);SV:StaticPopup_Show("RL_CLIENT") end,
-				},
-				timeStampFormat = {
-					order = 6,
-					type = "select",
-					name = TIMESTAMPS_LABEL,
-					desc = OPTION_TOOLTIP_TIMESTAMPS,
-					values = {
-						["NONE"] = NONE,
-						["%I:%M "] = "03:27",
-						["%I:%M:%S "] = "03:27:32",
-						["%I:%M %p "] = "03:27 PM",
-						["%I:%M:%S %p "] = "03:27:32 PM",
-						["%H:%M "] = "15:27",
-						["%H:%M:%S "] = "15:27:32"
-					}
-				},
-				psst = {
-					order = 7,
-					type = "select",
-					dialogControl = "LSM30_Sound",
-					name = L["Whisper Alert"],
-					disabled = function()return not SV.db.SVChat.psst end,
-					values = AceGUIWidgetLSMlists.sound,
-					set = function(a,b) MOD:ChangeDBVar(b,a[#a]) end
-				},
-				spacer2 = {
-					order = 8,
-					type = "description",
-					name = ""
-				},
-				throttleInterval = {
-					order = 9,
-					type = "range",
-					name = L["Spam Interval"],
-					desc = L["Prevent the same messages from displaying in chat more than once within this set amount of seconds, set to zero to disable."],
-					min = 0,
-					max = 120,
-					step = 1,
-					width = "full",
-					set = function(a,b) MOD:ChangeDBVar(b,a[#a]) end
-				},
-			}
-		},
-		fontGroup = {
-			order = 4,
-			type = "group",
-			guiInline = true,
-			name = L["Fonts"],
-			set = function(a,b)MOD:ChangeDBVar(b,a[#a]);MOD:RefreshChatFrames()end,
-			args = {
-				font = {
-					type = "select",
-					dialogControl = "LSM30_Font",
-					order = 1,
-					name = L["Font"],
-					values = AceGUIWidgetLSMlists.font
-				},
-				fontOutline = {
-					order = 2,
-					name = L["Font Outline"],
-					desc = L["Set the font outline."],
-					type = "select",
-					values = {
-						["NONE"] = L["None"],
-						["OUTLINE"] = "OUTLINE",
-						["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-						["THINOUTLINE"] = "THINOUTLINE",
-						["THICKOUTLINE"] = "THICKOUTLINE"
-					}
-				},
-				fontSpacer = {
-					type = "description",
-					order = 3,
-					name = "",
-				},
-				tabFont = {
-					type = "select",
-					dialogControl = "LSM30_Font",
-					order = 4,
-					name = L["Tab Font"],
-					values = AceGUIWidgetLSMlists.font
-				},
-				tabFontSize = {
-					order = 5,
-					name = L["Tab Font Size"],
-					type = "range",
-					min = 6,
-					max = 22,
-					step = 1
-				},
-				tabFontOutline = {
-					order = 6,
-					name = L["Tab Font Outline"],
-					desc = L["Set the font outline."],
-					type = "select",
-					values = {
-						["NONE"] = L["None"],
-						["OUTLINE"] = "OUTLINE",
-						["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-						["THICKOUTLINE"] = "THICKOUTLINE"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/dock.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/dock.lua
deleted file mode 100644
index 28a7fa8..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/dock.lua
+++ /dev/null
@@ -1,302 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVDock
-local CHAT = SV.SVChat
-local BAG = SV.SVBag
-
-SV.Options.args.SVDock = {
-  type = "group",
-  name = L["Docks"],
-  args = {}
-}
-
-SV.Options.args.SVDock.args["intro"] = {
-	order = 1,
-	type = "description",
-	name = "Configure the various frame docks around the screen"
-};
-
-SV.Options.args.SVDock.args["common"] = {
-	order = 2,
-	type = "group",
-	name = "General",
-	guiInline = true,
-	args = {
-		bottomPanel = {
-			order = 1,
-			type = 'toggle',
-			name = L['Bottom Panel'],
-			desc = L['Display a border across the bottom of the screen.'],
-			get = function(j)return SV.db.SVDock.bottomPanel end,
-			set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:BottomPanelVisibility()end
-		},
-		topPanel = {
-			order = 2,
-			type = 'toggle',
-			name = L['Top Panel'],
-			desc = L['Display a border across the top of the screen.'],
-			get = function(j)return SV.db.SVDock.topPanel end,
-			set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:TopPanelVisibility()end
-		},
-		dockStatWidth = {
-			order = 3,
-			type = "range",
-			name = L["Bottom Stats Width"],
-			desc = L["PANEL_DESC"],
-			min = 150,
-			max = 1200,
-			step = 1,
-			width = "full",
-			get = function()return SV.db.SVDock.dockStatWidth end,
-			set = function(key,value)
-				MOD:ChangeDBVar(value,key[#key]);
-				MOD:UpdateSuperDock(true)
-			end,
-		},
-	}
-};
-
-SV.Options.args.SVDock.args["leftDockGroup"] = {
-		order = 3,
-		type = "group",
-		name = L["Left Dock"],
-		guiInline = true,
-		args = {
-			leftDockBackdrop = {
-				order = 1,
-				type = 'toggle',
-				name = L['Left Dock Backdrop'],
-				desc = L['Display a backdrop behind the left-side dock.'],
-				get = function(j)return SV.db.SVDock.leftDockBackdrop end,
-				set = function(key,value)
-					MOD:ChangeDBVar(value,key[#key]);
-					MOD:UpdateDockBackdrops()
-				end
-			},
-			dockLeftHeight = {
-				order = 2,
-				type = "range",
-				name = L["Left Dock Height"],
-				desc = L["PANEL_DESC"],
-				min = 150,
-				max = 600,
-				step = 1,
-				width = "full",
-				get = function()return SV.db.SVDock.dockLeftHeight;end,
-				set = function(key,value)
-					MOD:ChangeDBVar(value,key[#key]);
-					MOD:UpdateSuperDock(true)
-					CHAT:RefreshChatFrames(true)
-				end,
-			},
-			dockLeftWidth = {
-				order = 3,
-				type = "range",
-				name = L["Left Dock Width"],
-				desc = L["PANEL_DESC"],
-				min = 150,
-				max = 700,
-				step = 1,
-				width = "full",
-				get = function()return SV.db.SVDock.dockLeftWidth;end,
-				set = function(key,value)
-					MOD:ChangeDBVar(value,key[#key]);
-					MOD:UpdateSuperDock(true)
-					CHAT:RefreshChatFrames(true)
-				end,
-			},
-		}
-	};
-
-local acceptableDocklets = {
-	["alDamageMeter"] = L["alDamageMeter"],
-	["Skada"] = L["Skada"],
-	["Recount"] = L["Recount"],
-	["TinyDPS"] = L["TinyDPS"],
-	["Omen"] = L["Omen"]
-};
-
-local function GetLiveDockletsA()
-	local test = SV.db.SVDock.docklets.DockletExtra;
-	local t = {["None"] = L["None"]};
-	for n,l in pairs(acceptableDocklets) do
-		if IsAddOnLoaded(n) or IsAddOnLoaded(l) then
-			if n=="Skada" and Skada then
-				for index,window in pairs(Skada:GetWindows()) do
-				    local key = window.db.name
-				    t["Skada"..key] = (key=="Skada") and "Skada - Main" or "Skada - "..key;
-				end
-			elseif (test ~= n and test ~= l) then
-				t[n] = l;
-			end
-		end
-	end
-	return t;
-end
-
-local function GetLiveDockletsB()
-	local test = SV.db.SVDock.docklets.DockletMain;
-	local t = {["None"] = L["None"]};
-	for n,l in pairs(acceptableDocklets) do
-		if IsAddOnLoaded(n) or IsAddOnLoaded(l) then
-			if n=="Skada" and Skada then
-				for index,window in pairs(Skada:GetWindows()) do
-				    local key = window.db.name
-				    t["Skada"..key] = (key=="Skada") and "Skada - Main" or "Skada - "..key;
-				end
-			elseif (test ~= n and test ~= l) then
-				t[n] = l;
-			end
-		end
-	end
-	return t;
-end
-
-SV.Options.args.SVDock.args["rightDockGroup"] = {
-	order = 4,
-	type = "group",
-	name = L["Right Dock"],
-	guiInline = true,
-	args = {
-		rightDockBackdrop = {
-			order = 1,
-			type = 'toggle',
-			name = L['Right Dock Backdrop'],
-			desc = L['Display a backdrop behind the right-side dock.'],
-			get = function(j)return SV.db.SVDock.rightDockBackdrop end,
-			set = function(key,value)
-				MOD:ChangeDBVar(value,key[#key]);
-				MOD:UpdateDockBackdrops()
-			end
-		},
-		dockRightHeight = {
-			order = 2,
-			type = "range",
-			name = L["Right Dock Height"],
-			desc = L["PANEL_DESC"],
-			min = 150,
-			max = 600,
-			step = 1,
-			width = "full",
-			get = function()return SV.db.SVDock.dockRightHeight;end,
-			set = function(key,value)
-				MOD:ChangeDBVar(value,key[#key]);
-				MOD:UpdateSuperDock(true)
-				CHAT:RefreshChatFrames(true)
-			end,
-		},
-		dockRightWidth = {
-			order = 3,
-			type = "range",
-			name = L["Right Dock Width"],
-			desc = L["PANEL_DESC"],
-			min = 150,
-			max = 700,
-			step = 1,
-			width = "full",
-			get = function()return SV.db.SVDock.dockRightWidth;end,
-			set = function(key,value)
-				MOD:ChangeDBVar(value,key[#key]);
-				MOD:UpdateSuperDock(true)
-				CHAT:RefreshChatFrames(true)
-				BAG:Layout()
-				BAG:Layout(true)
-			end,
-		},
-		quest = {
-			order = 4,
-			type = "group",
-			name = L['Quest Watch Docklet'],
-			args = {
-				enable = {
-					order = 1,
-					type = "toggle",
-					name = L["Enable"],
-					get = function()return SV.db.system.questWatch end,
-				 	set = function(j, value) SV.db.system.questWatch = value; SV:StaticPopup_Show("RL_CLIENT") end
-				}
-			}
-		},
-		docklets = {
-			order = 100,
-			type = 'group',
-			name = 'Addon Docklets',
-			guiInline=true,
-			args = {
-				docked = {
-					order=0,
-					type='group',
-					name='Docklet Settings',
-					guiInline=true,
-					args = {
-						DockletMain = {
-							type = "select",
-							order = 1,
-							name = "Primary Docklet",
-							desc = "Select an addon to occupy the primary docklet window",
-							values = function()return GetLiveDockletsA()end,
-							get = function()return SV.db.SVDock.docklets.DockletMain end,
-							set = function(a,value)SV.db.SVDock.docklets.DockletMain = value;SV:ReloadDocklets()end,
-						},
-						DockletCombatFade = {
-							type = "toggle",
-							order = 2,
-							name = "Out of Combat (Hide)",
-							get = function()return SV.db.SVDock.docklets.DockletCombatFade end,
-							set = function(a,value)SV.db.SVDock.docklets.DockletCombatFade = value;end
-						},
-						enableExtra = {
-							type = "toggle",
-							order = 3,
-							name = "Split Docklet",
-							desc = "Split the primary docklet window for 2 addons.",
-							get = function()return SV.db.SVDock.docklets.enableExtra end,
-							set = function(a,value)SV.db.SVDock.docklets.enableExtra = value;SV:ReloadDocklets()end,
-						},
-						DockletExtra = {
-							type = "select",
-							order = 4,
-							name = "Secondary Docklet",
-							desc = "Select another addon",
-							disabled = function()return (not SV.db.SVDock.docklets.enableExtra or SV.db.SVDock.docklets.DockletMain == "None") end,
-							values = function()return GetLiveDockletsB()end,
-							get = function()return SV.db.SVDock.docklets.DockletExtra end,
-							set = function(a,value)SV.db.SVDock.docklets.DockletExtra = value;SV:ReloadDocklets()end,
-						}
-					}
-				}
-			}
-		}
-	}
-};
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/dynamic.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/dynamic.lua
deleted file mode 100644
index e2212dd..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/dynamic.lua
+++ /dev/null
@@ -1,40 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local queue = SV.DynamicOptions;
-
-do
-	for key,options in pairs(queue) do
-		SV.Options.args[key].args[options.key] = options.data
-	end
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua
deleted file mode 100644
index d66de3b..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua
+++ /dev/null
@@ -1,781 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...;
-local selectedSpell,filterType,filters;
-local nameMapping = {
-	["CC"] = "Control Type Auras",
-	["Shield"] = "Defensive Auras",
-	["Player"] = "Player Only Auras",
-	["Blocked"] = "Blocked Auras",
-	["Allowed"] = "Always Allowed Auras",
-	["Strict"] = "Specific Auras",
-	["Raid"] = "Raid Buffs/Debuffs",
-	["BuffWatch"] = "(AuraWatch) Player Buffs",
-	["PetBuffWatch"] = "(AuraWatch) Pet Buffs",
-}
-
-local function generateFilterOptions()
-	if filterType == 'AuraBar Colors' then
-
-		SV.Options.args.filters.args.filterGroup = {
-			type = "group",
-			name = filterType,
-			guiInline = true,
-			order = 10,
-			args = {
-				addSpell = {
-					order = 1,
-					name = L["Add Spell"],
-					desc = L["Add a spell to the filter."],
-					type = "input",
-					guiInline = true,
-					get = function(e)return""end,
-					set = function(e, arg)
-						if not SV.db.media.unitframes.spellcolor[arg] then
-							SV.db.media.unitframes.spellcolor[arg] = false
-						end
-						generateFilterOptions()
-						MOD:SetUnitFrame("player")
-						MOD:SetUnitFrame("target")
-						MOD:SetUnitFrame("focus")
-					end
-				},
-				removeSpell = {
-					order = 2,
-					name = L["Remove Spell"],
-					desc = L["Remove a spell from the filter."],
-					type = "input",
-					guiInline = true,
-					get = function(e)return""end,
-					set = function(e, arg)
-						if SV.db.media.unitframes.spellcolor[arg]then
-							SV.db.media.unitframes.spellcolor[arg] = false;
-							SV:AddonMessage(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
-						else
-							SV.db.media.unitframes.spellcolor[arg] = nil
-						end
-						selectedSpell = nil;
-						generateFilterOptions()
-						MOD:SetUnitFrame("player")
-						MOD:SetUnitFrame("target")
-						MOD:SetUnitFrame("focus")
-					end
-				},
-				selectSpell = {
-					name = L["Select Spell"],
-					type = "select",
-					order = 3,
-					guiInline = true,
-					get = function(e)return selectedSpell end,
-					set = function(e, arg)
-						selectedSpell = arg;
-						generateFilterOptions()
-					end,
-					values = function()
-						local filters = {}
-						filters[""] = NONE;
-						for g in pairs(SV.db.media.unitframes.spellcolor)do
-							filters[g] = g
-						end
-						return filters
-					end
-				}
-			}
-		}
-
-		if not selectedSpell or SV.db.media.unitframes.spellcolor[selectedSpell] == nil then
-			SV.Options.args.filters.args.spellGroup = nil;
-			return
-		end
-
-		SV.Options.args.filters.args.spellGroup = {
-			type = "group",
-			name = selectedSpell,
-			order = 15,
-			guiInline = true,
-			args = {
-				color = {
-					name = L["Color"],
-					type = "color",
-					order = 1,
-					get = function(e)
-						local abColor = SV.db.media.unitframes.spellcolor[selectedSpell]
-						if type(abColor) == "boolean"then
-							return 0, 0, 0, 1
-						else
-							return abColor[1], abColor[2], abColor[3], abColor[4]
-						end
-					end,
-					set = function(e, r, g, b)
-						if type(SV.db.media.unitframes.spellcolor[selectedSpell]) ~= "table"then
-							SV.db.media.unitframes.spellcolor[selectedSpell] = {}
-						end
-						local abColor = {r, g, b}
-						SV.db.media.unitframes.spellcolor[selectedSpell] = abColor
-						MOD:SetUnitFrame("player")
-						MOD:SetUnitFrame("target")
-						MOD:SetUnitFrame("focus")
-					end
-				},
-				removeColor = {
-					type = "execute",
-					order = 2,
-					name = L["Restore Defaults"],
-					func = function(e, arg)
-						SV.db.media.unitframes.spellcolor[selectedSpell] = false;
-						MOD:SetUnitFrame("player")
-						MOD:SetUnitFrame("target")
-						MOD:SetUnitFrame("focus")
-					end
-				}
-			}
-		}
-
-	elseif filterType == 'PetBuffWatch' then
-
-		local watchedBuffs = {}
-
-		if not SV.db.filter.PetBuffWatch then
-			SV.db.filter.PetBuffWatch = {}
-		end
-		for o,f in pairs(SV.db.filter.PetBuffWatch)do
-			tinsert(watchedBuffs,f)
-		end
-
-		SV.Options.args.filters.args.filterGroup = {
-			type = "group",
-			name = filterType,
-			guiInline = true,
-			order = -10,
-			childGroups = "tab",
-			args = {
-				addSpellID = {
-					order = 1,
-					name = L["Add SpellID"],
-					desc = L["Add a spell to the filter."],
-					type = "input",
-					get = function(e)return""end,
-					set = function(e, arg)
-						if not tonumber(arg) then
-							SV:AddonMessage(L["Value must be a number"])
-						elseif not GetSpellInfo(arg)then
-							SV:AddonMessage(L["Not valid spell id"])
-						else
-							tinsert(SV.db.filter.PetBuffWatch, {["enable"] = true, ["id"] = tonumber(arg), ["point"] = "TOPRIGHT", ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0}, ["anyUnit"] = true})
-							generateFilterOptions()
-							MOD:SetUnitFrame("pet")
-							selectedSpell = nil
-						end
-					end
-				},
-				removeSpellID = {
-					order = 2,
-					name = L["Remove SpellID"],
-					desc = L["Remove a spell from the filter."],
-					type = "input",
-					get = function(e)return""end,
-					set = function(e, arg)
-						if not tonumber(arg)then
-							SV:AddonMessage(L["Value must be a number"])
-						elseif not GetSpellInfo(arg)then
-							SV:AddonMessage(L["Not valid spell id"])
-						else
-							local p;
-							for q, r in pairs(SV.db.filter.PetBuffWatch)do
-								if r["id"] == tonumber(arg)then
-									p = r;
-									if SV.db.filter.PetBuffWatch[q]then
-										SV.db.filter.PetBuffWatch[q].enable = false;
-									else
-										SV.db.filter.PetBuffWatch[q] = nil
-									end
-								end
-							end
-							if p == nil then
-								SV:AddonMessage(L["Spell not found in list."])
-							else
-								generateFilterOptions()
-							end
-						end
-						selectedSpell = nil;
-						generateFilterOptions()
-						MOD:SetUnitFrame("pet")
-					end
-				},
-				selectSpell = {
-					name = L["Select Spell"],
-					type = "select",
-					order = 3,
-					values = function()
-						local v = {}
-						watchedBuffs = {}
-						for o, f in pairs(SV.db.filter.PetBuffWatch)do
-							tinsert(watchedBuffs, f)
-						end
-						for o, l in pairs(watchedBuffs)do
-							if l.id then
-								local name = GetSpellInfo(l.id)
-								v[l.id] = name
-							end
-						end
-						return v
-					end,
-					get = function(e)return selectedSpell end,
-					set = function(e, arg)selectedSpell = arg; generateFilterOptions()end
-				}
-			}
-		}
-
-		local registeredSpell;
-
-		for t,l in pairs(SV.db.filter.PetBuffWatch)do
-			if l.id == selectedSpell then
-				registeredSpell = t
-			end
-		end
-
-		if selectedSpell and registeredSpell then
-			local currentSpell = GetSpellInfo(selectedSpell)
-			SV.Options.args.filters.args.filterGroup.args[currentSpell] = {
-				name = currentSpell.." ("..selectedSpell..")",
-				type = "group",
-				get = function(e)return SV.db.filter.PetBuffWatch[registeredSpell][e[#e]] end,
-				set = function(e, arg)
-					SV.db.filter.PetBuffWatch[registeredSpell][e[#e]] = arg;
-					MOD:SetUnitFrame("pet")
-				end,
-				order = -10,
-				args = {
-					enable = {
-						name = L["Enable"],
-						order = 0,
-						type = "toggle"
-					},
-					point = {
-						name = L["Anchor Point"],
-						order = 1,
-						type = "select",
-						values = {
-							["TOPLEFT"] = "TOPLEFT",
-							["TOPRIGHT"] = "TOPRIGHT",
-							["BOTTOMLEFT"] = "BOTTOMLEFT",
-							["BOTTOMRIGHT"] = "BOTTOMRIGHT",
-							["LEFT"] = "LEFT",
-							["RIGHT"] = "RIGHT",
-							["TOP"] = "TOP",
-							["BOTTOM"] = "BOTTOM"
-						}
-					},
-					xOffset = {order = 2, type = "range", name = L["xOffset"], min = -75, max = 75, step = 1},
-					yOffset = {order = 2, type = "range", name = L["yOffset"], min = -75, max = 75, step = 1},
-					style = {
-						name = L["Style"],
-						order = 3,
-						type = "select",
-						values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], [""] = NONE}
-					},
-					color = {
-						name = L["Color"],
-						type = "color",
-						order = 4,
-						get = function(e)
-							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
-							return abColor.r,  abColor.g,  abColor.b,  abColor.a
-						end,
-						set = function(e, i, j, k)
-							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
-							abColor.r,  abColor.g,  abColor.b = i, j, k;
-							MOD:SetUnitFrame("pet")
-						end
-					},
-					displayText = {
-						name = L["Display Text"],
-						type = "toggle",
-						order = 5
-					},
-					textColor = {
-						name = L["Text Color"],
-						type = "color",
-						order = 6,
-						get = function(e)
-							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
-							if abColor then
-								return abColor.r,abColor.g,abColor.b,abColor.a
-							else
-								return 1,1,1,1
-							end
-						end,
-						set = function(e,i,j,k)
-							local abColor = SV.db.filter.PetBuffWatch[registeredSpell][e[#e]]
-							abColor.r,abColor.g,abColor.b = i,j,k;
-							MOD:SetUnitFrame("pet")
-						end
-					},
-					textThreshold = {
-						name = L["Text Threshold"],
-						desc = L["At what point should the text be displayed. Set to -1 to disable."],
-						type = "range",
-						order = 6,
-						min = -1,
-						max = 60,
-						step = 1
-					},
-					anyUnit = {
-						name = L["Show Aura From Other Players"],
-						order = 7,
-						type = "toggle"
-					},
-					onlyShowMissing = {
-						name = L["Show When Not Active"],
-						order = 8,
-						type = "toggle",
-						disabled = function()return SV.db.filter.PetBuffWatch[registeredSpell].style == "text"end
-					}
-				}
-			}
-		end
-
-		watchedBuffs = nil;
-
-	elseif filterType == 'BuffWatch' then
-
-		local watchedBuffs={}
-
-		if not SV.db.filter.BuffWatch then
-			SV.db.filter.BuffWatch = {}
-		end
-		for o,f in pairs(SV.db.filter.BuffWatch) do
-			tinsert(watchedBuffs,f)
-		end
-
-		SV.Options.args.filters.args.filterGroup = {
-			type = "group",
-			name = filterType,
-			guiInline = true,
-			order = -10,
-			childGroups = "tab",
-			args = {
-				addSpellID = {
-					order = 1,
-					name = L["Add SpellID"],
-					desc = L["Add a spell to the filter."],
-					type = "input",
-					get = function(e)return""end,
-					set = function(e, arg)
-						if not tonumber(arg)then
-							SV:AddonMessage(L["Value must be a number"])
-						elseif not GetSpellInfo(arg)then
-							SV:AddonMessage(L["Not valid spell id"])
-						else
-							tinsert(SV.db.filter.BuffWatch, {["enable"] = true, ["id"] = tonumber(arg), ["point"] = "TOPRIGHT", ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0}, ["anyUnit"] = false})
-							generateFilterOptions()
-							for t = 10, 40, 15 do
-								MOD:UpdateGroupAuraWatch("raid"..t)
-							end
-							MOD:UpdateGroupAuraWatch("party")
-							MOD:UpdateGroupAuraWatch("raidpet", true)
-							selectedSpell = nil
-						end
-					end
-				},
-				removeSpellID = {
-					order = 2,
-					name = L["Remove SpellID"],
-					desc = L["Remove a spell from the filter."],
-					type = "input",
-					get = function(e)return""end,
-					set = function(e, arg)
-						if not tonumber(arg)then
-							SV:AddonMessage(L["Value must be a number"])
-						elseif not GetSpellInfo(arg)then
-							SV:AddonMessage(L["Not valid spell id"])
-						else
-							local p;
-							for q, r in pairs(SV.db.filter.BuffWatch)do
-								if r["id"] == tonumber(arg)then
-									p = r;
-									if SV.db.filter.BuffWatch[q]then
-										SV.db.filter.BuffWatch[q].enable = false;
-									else
-										SV.db.filter.BuffWatch[q] = nil
-									end
-								end
-							end
-							if p == nil then
-								SV:AddonMessage(L["Spell not found in list."])
-							else
-								generateFilterOptions()
-							end
-						end
-						selectedSpell = nil;
-						generateFilterOptions()
-						for t = 10, 40, 15 do
-							MOD:UpdateGroupAuraWatch("raid"..t)
-						end
-						MOD:UpdateGroupAuraWatch("party")
-						MOD:UpdateGroupAuraWatch("raidpet", true)
-					end
-				},
-				selectSpell = {
-					name = L["Select Spell"],
-					type = "select",
-					order = 3,
-					values = function()
-						local v = {}
-						watchedBuffs = {}
-						for o, f in pairs(SV.db.filter.BuffWatch)do
-							tinsert(watchedBuffs, f)
-						end
-						for o, l in pairs(watchedBuffs)do
-							if l.id then
-								local name = GetSpellInfo(l.id)
-								v[l.id] = name
-							end
-						end
-						return v
-					end,
-					get = function(e)return selectedSpell end,
-					set = function(e, arg)selectedSpell = arg;generateFilterOptions()end
-				}
-			}
-		}
-		local registeredSpell;
-		for t,l in pairs(SV.db.filter.BuffWatch)do if l.id==selectedSpell then registeredSpell=t end end
-		if selectedSpell and registeredSpell then
-			local currentSpell=GetSpellInfo(selectedSpell)
-			SV.Options.args.filters.args.filterGroup.args[currentSpell] = {
-				name = currentSpell.." ("..selectedSpell..")",
-				type = "group",
-				get = function(e)return SV.db.filter.BuffWatch[registeredSpell][e[#e]]end,
-				set = function(e, arg)
-					SV.db.filter.BuffWatch[registeredSpell][e[#e]] = arg;
-					for t = 10, 40, 15 do
-						MOD:UpdateGroupAuraWatch("raid"..t)
-					end
-					MOD:UpdateGroupAuraWatch("party")
-					MOD:UpdateGroupAuraWatch("raidpet", true)
-				end,
-				order = -10,
-				args = {
-					enable = {name = L["Enable"], order = 0, type = "toggle"},
-					point = {
-						name = L["Anchor Point"],
-						order = 1,
-						type = "select",
-						values = {
-							["TOPLEFT"] = "TOPLEFT",
-							["TOPRIGHT"] = "TOPRIGHT",
-							["BOTTOMLEFT"] = "BOTTOMLEFT",
-							["BOTTOMRIGHT"] = "BOTTOMRIGHT",
-							["LEFT"] = "LEFT",
-							["RIGHT"] = "RIGHT",
-							["TOP"] = "TOP",
-							["BOTTOM"] = "BOTTOM"
-						}
-					},
-					xOffset = {order = 2, type = "range", name = L["xOffset"], min = -75, max = 75, step = 1},
-					yOffset = {order = 2, type = "range", name = L["yOffset"], min = -75, max = 75, step = 1},
-					style = {name = L["Style"], order = 3, type = "select", values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], [""] = NONE}},
-					color = {
-						name = L["Color"],
-						type = "color",
-						order = 4,
-						get = function(e)
-							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
-							return abColor.r,  abColor.g,  abColor.b,  abColor.a
-						end,
-						set = function(e, i, j, k)
-							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
-							abColor.r,  abColor.g,  abColor.b = i, j, k;
-							for t = 10, 40, 15 do
-								MOD:UpdateGroupAuraWatch("raid"..t)
-							end
-							MOD:UpdateGroupAuraWatch("party")
-							MOD:UpdateGroupAuraWatch("raidpet", true)
-						end
-					},
-					displayText = {
-						name = L["Display Text"],
-						type = "toggle",
-						order = 5
-					},
-					textColor = {
-						name = L["Text Color"],
-						type = "color",
-						order = 6,
-						get = function(e)
-							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
-							if abColor then
-								return abColor.r,  abColor.g,  abColor.b,  abColor.a
-							else
-								return 1, 1, 1, 1
-							end
-						end,
-						set = function(e, i, j, k)
-							SV.db.filter.BuffWatch[registeredSpell][e[#e]] = SV.db.filter.BuffWatch[registeredSpell][e[#e]] or {}
-							local abColor = SV.db.filter.BuffWatch[registeredSpell][e[#e]]
-							abColor.r,  abColor.g,  abColor.b = i, j, k;
-							for t = 10, 40, 15 do
-								MOD:UpdateGroupAuraWatch("raid"..t)
-							end
-							MOD:UpdateGroupAuraWatch("party")
-							MOD:UpdateGroupAuraWatch("raidpet", true)
-						end
-					},
-					textThreshold = {
-						name = L["Text Threshold"],
-						desc = L["At what point should the text be displayed. Set to -1 to disable."],
-						type = "range",
-						order = 6,
-						min = -1,
-						max = 60,
-						step = 1
-					},
-					anyUnit = {
-						name = L["Show Aura From Other Players"],
-						order = 7,
-						type = "toggle"
-					},
-					onlyShowMissing = {
-						name = L["Show When Not Active"],
-						order = 8,
-						type = "toggle",
-						disabled = function()return SV.db.filter.BuffWatch[registeredSpell].style == "text" end
-					}
-				}
-			}
-		end
-		watchedBuffs=nil
-	else
-		if not filterType or not SV.db.filter[filterType]then
-			SV.Options.args.filters.args.filterGroup = nil;
-			SV.Options.args.filters.args.spellGroup = nil;
-			return
-		end
-		SV.Options.args.filters.args.filterGroup = {
-			type = "group",
-			name = filterType,
-			guiInline = true,
-			order = 10,
-			args = {
-				addSpell = {
-					order = 1,
-					name = L["Add Spell"],
-					desc = L["Add a spell to the filter."],
-					type = "input",
-					get = function(e)return""end,
-					set = function(e, arg)
-						if not SV.db.filter[filterType][arg]then
-							SV.db.filter[filterType][arg] = {
-								["enable"] = true,
-								["priority"] = 0
-							}
-						end
-						generateFilterOptions()
-						MOD:RefreshUnitFrames()
-					end
-				},
-				removeSpell = {
-					order = 2,
-					name = L["Remove Spell"],
-					desc = L["Remove a spell from the filter."],
-					type = "input",
-					get = function(e)return""end,
-					set = function(e, arg)
-						if SV.db.filter[filterType] then
-							if SV.db.filter[filterType][arg] then
-								SV.db.filter[filterType][arg].enable = false;
-								SV:AddonMessage(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
-							else
-								SV.db.filter[filterType][arg] = nil
-							end
-						else
-							SV.db.filter[filterType][arg] = nil
-						end
-						generateFilterOptions()
-						MOD:RefreshUnitFrames()
-					end
-				},
-				selectSpell = {
-					name = L["Select Spell"],
-					type = "select",
-					order = 3,
-					guiInline = true,
-					get = function(e)return selectedSpell end,
-					set = function(e, arg)
-						selectedSpell = arg;
-						generateFilterOptions()
-					end,
-					values = function()
-						local filters = {}
-						local list = SV.db.filter[filterType]
-						filters[""] = NONE;
-						for g in pairs(list)do
-							filters[g] = g
-						end
-						return filters
-					end
-				}
-			}
-		}
-
-		if not selectedSpell or not SV.db.filter[filterType][selectedSpell] then
-			SV.Options.args.filters.args.spellGroup = nil;
-			return
-		end
-
-		SV.Options.args.filters.args.spellGroup = {
-			type = "group",
-			name = selectedSpell,
-			order = 15,
-			guiInline = true,
-			args = {
-				enable = {
-					name = L["Enable"],
-					type = "toggle",
-					get = function()
-						if selectedFolder or not selectedSpell then
-							return false
-						else
-							return SV.db.filter[filterType][selectedSpell].enable
-						end
-					end,
-					set = function(e, arg)
-						SV.db.filter[filterType][selectedSpell].enable = arg;
-						generateFilterOptions()
-						MOD:RefreshUnitFrames()
-					end
-				},
-				priority = {
-					name = L["Priority"],
-					type = "range",
-					get = function()
-						if selectedFolder or not selectedSpell then
-							return 0
-						else
-							return SV.db.filter[filterType][selectedSpell].priority
-						end
-					end,
-					set = function(e, arg)
-						SV.db.filter[filterType][selectedSpell].priority = arg;
-						generateFilterOptions()
-						MOD:RefreshUnitFrames()
-					end,
-					min = 0,
-					max = 99,
-					step = 1,
-					desc = L["Set the priority order of the spell, please note that prioritys are only used for the raid debuff package, not the standard buff/debuff package. If you want to disable set to zero."]
-				}
-			}
-		}
-	end
-	MOD:RefreshUnitFrames()
-	collectgarbage("collect")
-end
-SV.Options.args.filters = {
-	type = "group",
-	name = L["Filters"],
-	order = -10,
-	args = {
-		createFilter = {
-			order = 1,
-			name = L["Create Filter"],
-			desc = L["Create a filter, once created a filter can be set inside the buffs/debuffs section of each unit."],
-			type = "input",
-			get = function(e)return""end,
-			set = function(e, arg)
-				SV.db.filter[arg] = {}
-				SV.db.filter[arg]["spells"] = {}
-			end
-		},
-		deleteFilter = {
-			type = "select",
-			order = 2,
-			name = L["Delete Filter"],
-			desc = L["Delete a created filter, you cannot delete pre-existing filters, only custom ones."],
-			get = function(e)return""end,
-			set = function(e, arg)
-				if SV.db.filter[arg] then
-					SV:AddonMessage(L["You can't remove a pre-existing filter."])
-				else
-					SV.db.filter[arg] = nil;
-					filterType = nil;
-					selectedSpell = nil;
-					SV.Options.args.filters.args.filterGroup = nil
-				end
-			end,
-			values = function()
-				filters = {}
-				filters[""] = NONE;
-				for g in pairs(SV.db.filter) do
-					filters[g] = nameMapping[g] or g
-				end
-				return filters
-			end
-		},
-		selectFilter = {
-			order = 3,
-			type = "select",
-			name = L["Select Filter"],
-			get = function(e)return filterType end,
-			set = function(e, arg)
-				if arg == "" then
-					filterType = nil;
-					selectedSpell = nil
-				else
-					filterType = arg
-				end
-				generateFilterOptions()
-			end,
-			values = function()
-				filters = {}
-				filters[""] = NONE;
-				for g in pairs(SV.db.filter) do
-					filters[g] = nameMapping[g] or g
-				end
-				filters["AuraBar Colors"] = "AuraBar Colors"
-				return filters
-			end
-		}
-	}
-}
-
-
-function ns:SetToFilterConfig(newFilter)
-	filterType = newFilter or "BuffWatch"
-	generateFilterOptions()
-	LibStub("AceConfigDialog-3.0"):SelectGroup("SVUI", "filters")
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/henchmen.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/henchmen.lua
deleted file mode 100644
index 97220d5..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/henchmen.lua
+++ /dev/null
@@ -1,186 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVHenchmen;
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-SV.Options.args.SVHenchmen={
-	type = "group",
-	name = L["Henchmen"],
-	get = function(a)return SV.db.SVHenchmen[a[#a]]end,
-	set = function(a,b)MOD:ChangeDBVar(b,a[#a]); end,
-	args = {
-		intro = {
-			order = 1,
-			type = "description",
-			name = L["Adjust the behavior and features that your henchmen will use."]
-		},
-		common = {
-			order = 2,
-			type = "group",
-			name = L["General"],
-			guiInline = true,
-			args = {
-				automationGroup1 = {
-					order = 1,
-					type = "group",
-					guiInline = true,
-					name = L["Task Minions"],
-					desc = L['Minions that can make certain tasks easier by handling them automatically.'],
-					args = {
-						mailOpener = {
-							order = 1,
-							type = 'toggle',
-							name = L["Enable Mail Helper"],
-							get = function(j)return SV.db.SVHenchmen.mailOpener end,
-							set = function(j,value)SV.db.SVHenchmen.mailOpener = value;MOD:ToggleMailMinions()end
-						},
-						autoAcceptInvite = {
-							order = 2,
-							name = L['Accept Invites'],
-							desc = L['Automatically accept invites from guild/friends.'],
-							type = 'toggle',
-							get = function(j)return SV.db.SVHenchmen.autoAcceptInvite end,
-							set = function(j,value)SV.db.SVHenchmen.autoAcceptInvite = value end
-						},
-						vendorGrays = {
-							order = 3,
-							name = L['Vendor Grays'],
-							desc = L['Automatically vendor gray items when visiting a vendor.'],
-							type = 'toggle',
-							get = function(j)return SV.db.SVHenchmen.vendorGrays end,
-							set = function(j,value)SV.db.SVHenchmen.vendorGrays = value end
-						},
-						autoRoll = {
-							order = 4,
-							name = L['Auto Greed/DE'],
-							desc = L['Automatically select greed or disenchant (when available) on green quality items. This will only work if you are the max level.'],
-							type = 'toggle',
-							get = function(j)return SV.db.SVHenchmen.autoRoll end,
-							set = function(j,value)SV.db.SVHenchmen.autoRoll = value end,
-							disabled = function()return not SV.db.SVOverride.lootRoll end
-						},
-						pvpautorelease = {
-							order = 5,
-							type = "toggle",
-							name = L['PvP Autorelease'],
-							desc = L['Automatically release body when killed inside a battleground.'],
-							get = function(j)return SV.db.SVHenchmen.pvpautorelease end,
-							set = function(j,value)SV.db.SVHenchmen.pvpautorelease = value;SV:StaticPopup_Show("RL_CLIENT")end
-						},
-						autorepchange = {
-							order = 6,
-							type = "toggle",
-							name = L['Track Reputation'],
-							desc = L['Automatically change your watched faction on the reputation bar to the faction you got reputation points for.'],
-							get = function(j)return SV.db.SVHenchmen.autorepchange end,
-							set = function(j,value)SV.db.SVHenchmen.autorepchange = value end
-						},
-						skipcinematics = {
-							order = 7,
-							type = "toggle",
-							name = L['Skip Cinematics'],
-							desc = L['Automatically skip any cinematic sequences.'],
-							get = function(j)return SV.db.SVHenchmen.skipcinematics end,
-							set = function(j,value)SV.db.SVHenchmen.skipcinematics = value;SV:StaticPopup_Show("RL_CLIENT") end
-						},
-						autoRepair = {
-							order = 8,
-							name = L['Auto Repair'],
-							desc = L['Automatically repair using the following method when visiting a merchant.'],
-							type = 'select',
-							values = {
-								['NONE'] = NONE,
-								['GUILD'] = GUILD,
-								['PLAYER'] = PLAYER
-							},
-							get = function(j)return SV.db.SVHenchmen.autoRepair end,
-							set = function(j,value)SV.db.SVHenchmen.autoRepair = value end
-						},
-					}
-				},
-				automationGroup2 = {
-					order = 2,
-					type = "group",
-					guiInline = true,
-					name = L["Quest Minions"],
-					desc = L['Minions that can make questing easier by automatically accepting/completing quests.'],
-					args = {
-						autoquestaccept = {
-							order = 1,
-							type = "toggle",
-							name = L['Accept Quests'],
-							desc = L['Automatically accepts quests as they are presented to you.'],
-							get = function(j)return SV.db.SVHenchmen.autoquestaccept end,
-							set = function(j,value) SV.db.SVHenchmen.autoquestaccept = value end
-						},
-						autoquestcomplete = {
-							order = 2,
-							type = "toggle",
-							name = L['Complete Quests'],
-							desc = L['Automatically complete quests when possible.'],
-							get = function(j)return SV.db.SVHenchmen.autoquestcomplete end,
-							set = function(j,value)SV.db.SVHenchmen.autoquestcomplete = value end
-						},
-						autoquestreward = {
-							order = 3,
-							type = "toggle",
-							name = L['Select Quest Reward'],
-							desc = L['Automatically select the quest reward with the highest vendor sell value.'],
-							get = function(j)return SV.db.SVHenchmen.autoquestreward end,
-							set = function(j,value)SV.db.SVHenchmen.autoquestreward = value end
-						},
-						autodailyquests = {
-							order = 4,
-							type = "toggle",
-							name = L['Only Automate Dailies'],
-							desc = L['Force the auto accept functions to only respond to daily quests. NOTE: This does not apply to daily heroics for some reason.'],
-							get = function(j)return SV.db.SVHenchmen.autodailyquests end,
-							set = function(j,value)SV.db.SVHenchmen.autodailyquests = value end
-						},
-						autopvpquests = {
-							order = 5,
-							type = "toggle",
-							name = L['Accept PVP Quests'],
-							get = function(j)return SV.db.SVHenchmen.autopvpquests end,
-							set = function(j,value)SV.db.SVHenchmen.autopvpquests = value end
-						},
-					}
-				},
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/map.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/map.lua
deleted file mode 100644
index 1cd9598..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/map.lua
+++ /dev/null
@@ -1,239 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVMap
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local textSelect = {
-	['HIDE'] = L['Hide This'],
-	['CUSTOM'] = L['Use Custom Style'],
-	['SIMPLE'] = L['Use Simple Style']
-};
-local colorSelect = {
-	['light'] = L['Light'],
-	['dark'] = L['Dark'],
-	['class'] = L['Class']
-};
---[[
-##########################################################
-OPTIONS TABLE
-##########################################################
-]]--
-SV.Options.args.SVMap = {
-	type = 'group',
-	childGroups = "tree",
-	name = L['Minimap'],
-	get = function(a)return SV.db.SVMap[a[#a]]end,
-	set = function(a,b)MOD:ChangeDBVar(b,a[#a]);MOD:ReLoad()end,
-	args={
-		intro={
-			order = 1,
-			type = 'description',
-			name = L["Options for the Minimap"]
-		},
-		enable={
-			type = "toggle",
-			order = 2,
-			name = L['Enable'],
-			desc = L['Enable/Disable the Custom Minimap.'],
-			get = function(a)return SV.db.SVMap.enable end,
-			set = function(a,b)SV.db.SVMap.enable=b; SV:StaticPopup_Show("RL_CLIENT") end
-		},
-		common = {
-			order = 3,
-			type = "group",
-			name = MINIMAP_LABEL,
-			desc = L['General display settings'],
-			guiInline = true,
-			disabled = function()return not SV.db.SVMap.enable end,
-			args = {
-				size = {
-					order = 1,
-					type = "range",
-					name = L["Size"],
-					desc = L['Adjust the size of the minimap.'],
-					min = 120,
-					max = 240,
-					width = "full",
-					step = 1
-				},
-				bordersize = {
-					order = 2,
-					type = "range",
-					name = "Border Size",
-					desc = "Adjust the size of the minimap's outer border",
-					min = 0,
-					max = 20,
-					step = 1,
-					width = "full"
-				},
-				bordercolor = {
-					order = 3,
-					type = 'select',
-					name = "Border Color",
-					desc = "Adjust the color of the minimap's outer border",
-					values = colorSelect,
-				},
-				customshape = {
-					order = 4,
-					type = "toggle",
-					name = "Custom Shape",
-					desc = "Toggle the use of either rectangular or square minimap.",
-				}
-			}
-		},
-		spacer1 = {
-			order = 4,
-			type = "group",
-			name = "",
-			guiInline = true,
-			args = {}
-		},
-		common2 = {
-			order = 5,
-			type = "group",
-			name = "Labels and Info",
-			desc = L['Configure various minimap texts'],
-			guiInline = true,
-			disabled = function()return not SV.db.SVMap.enable end,
-			args = {
-				locationText = {
-					order = 1,
-					type = "select",
-					name = L["Location Text"],
-					values = textSelect,
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
-				},
-				playercoords = {
-					order = 2,
-					type = "select",
-					name = L["Player Coords"],
-					values = textSelect,
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
-				}
-			}
-		},
-		spacer2 = {
-			order = 6,
-			type = "group",
-			name = "",
-			guiInline = true,
-			args = {}
-		},
-		mmButtons = {
-			order = 7,
-			type = "group",
-			name = "Minimap Buttons",
-			get = function(j)return SV.db.SVMap.minimapbar[j[#j]]end,
-			guiInline = true,
-			disabled = function()return not SV.db.SVMap.enable end,
-			args = {
-				enable = {
-					order = 1,
-					type = 'toggle',
-					name = L['Buttons Styled'],
-					desc = L['Style the minimap buttons.'],
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")SV:StaticPopup_Show("RL_CLIENT")end,
-				},
-				mouseover = {
-					order = 2,
-					name = L["Mouse Over"],
-					desc = L["Hidden unless you mouse over the frame."],
-					type = "toggle",
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")MOD:UpdateMinimapButtonSettings()end,
-				},
-				styleType = {
-					order = 3,
-					type = 'select',
-					name = L['Button Bar Layout'],
-					desc = L['Change settings for how the minimap buttons are styled.'],
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")MOD:UpdateMinimapButtonSettings()end,
-					disabled = function()return not SV.db.SVMap.minimapbar.enable end,
-					values = {
-						['NOANCHOR'] = L['No Anchor Bar'],
-						['HORIZONTAL'] = L['Horizontal Anchor Bar'],
-						['VERTICAL'] = L['Vertical Anchor Bar']
-					}
-				},
-				buttonSize = {
-					order = 4,
-					type = 'range',
-					name = L['Buttons Size'],
-					desc = L['The size of the minimap buttons.'],
-					min = 16,
-					max = 40,
-					step = 1,
-					width = "full",
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a],"minimapbar")MOD:UpdateMinimapButtonSettings()end,
-					disabled = function()return not SV.db.SVMap.minimapbar.enable or SV.db.SVMap.minimapbar.styleType == 'NOANCHOR'end
-				},
-			}
-		},
-		spacer3 = {
-			order = 8,
-			type = "group",
-			name = "",
-			guiInline = true,
-			args = {}
-		},
-		worldMap = {
-			order = 9,
-			type = "group",
-			name = "WorldMap",
-			guiInline = true,
-			args = {
-				tinyWorldMap = {
-					order = 1,
-					type = "toggle",
-					name = L["Tiny Map"],
-					desc = L["Don't scale the large world map to block out sides of the screen."],
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
-				},
-				mapAlpha = {
-					order = 2,
-					name = L['Map Alpha While Moving'],
-					desc = L['Controls what the transparency of the worldmap will be set to when you are moving.'],
-					type = 'range',
-					isPercent = true,
-					min = 0,
-					max = 1,
-					step = 0.01,
-					set = function(a,b)MOD:ChangeDBVar(b,a[#a])MOD:ReLoad()end
-				},
-			}
-		},
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/mode.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/mode.lua
deleted file mode 100644
index db5409e..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/mode.lua
+++ /dev/null
@@ -1,159 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVLaborer
-SV.Options.args.SVLaborer = {
-	type = 'group',
-	name = L['Laborer'],
-	get = function(key)return SV.db.SVLaborer[key[#key]]end,
-	set = function(key, value)MOD:ChangeDBVar(value, key[#key]) end,
-	args = {
-		intro = {
-			order = 1,
-			type = 'description',
-			name = L["Options for laborer modes"]
-		},
-		enable = {
-			type = "toggle",
-			order = 2,
-			name = L['Enable'],
-			desc = L['Enable/Disable the Laborer dock.'],
-			get = function(key)return SV.db.SVLaborer[key[#key]]end,
-			set = function(key, value)SV.db.SVLaborer.enable = value;SV:StaticPopup_Show("RL_CLIENT")end
-		},
-		fontSize = {
-			order = 3,
-			name = L["Font Size"],
-			desc = L["Set the font size of the log window."],
-			type = "range",
-			min = 6,
-			max = 22,
-			step = 1,
-			set = function(j,value)MOD:ChangeDBVar(value,j[#j]);MOD:UpdateLogWindow()end
-		},
-		fishing = {
-			order = 4,
-			type = "group",
-			name = L["Fishing Mode Settings"],
-			guiInline = true,
-			args = {
-				autoequip = {
-					type = "toggle",
-					order = 1,
-					name = L['AutoEquip'],
-					desc = L['Enable/Disable automatically equipping fishing gear.'],
-					get = function(key)return SV.db.SVLaborer.fishing[key[#key]]end,
-					set = function(key, value)MOD:ChangeDBVar(value, key[#key], "fishing")end
-				}
-			}
-		},
-		cooking = {
-			order = 5,
-			type = "group",
-			name = L["Cooking Mode Settings"],
-			guiInline = true,
-			args = {
-				autoequip = {
-					type = "toggle",
-					order = 1,
-					name = L['AutoEquip'],
-					desc = L['Enable/Disable automatically equipping cooking gear.'],
-					get = function(key)return SV.db.SVLaborer.cooking[key[#key]]end,
-					set = function(key, value)MOD:ChangeDBVar(value, key[#key], "cooking")end
-				}
-			}
-		},
-		farming = {
-			order = 6,
-			type = "group",
-			name = L["Farming Mode Settings"],
-			guiInline = true,
-			get = function(key)return SV.db.SVLaborer.farming[key[#key]]end,
-			set = function(key, value)SV.db.SVLaborer.farming[key[#key]] = value end,
-			args = {
-				buttonsize = {
-					type = 'range',
-					name = L['Button Size'],
-					desc = L['The size of the action buttons.'],
-					min = 15,
-					max = 60,
-					step = 1,
-					order = 1,
-					set = function(key, value)
-						MOD:ChangeDBVar(value, key[#key],"farming");
-						MOD:RefreshFarmingTools()
-					end,
-				},
-				buttonspacing = {
-					type = 'range',
-					name = L['Button Spacing'],
-					desc = L['The spacing between buttons.'],
-					min = 1,
-					max = 10,
-					step = 1,
-					order = 2,
-					set = function(key, value)
-						MOD:ChangeDBVar(value, key[#key],"farming");
-						MOD:RefreshFarmingTools()
-					end,
-				},
-				onlyactive = {
-					order = 3,
-					type = 'toggle',
-					name = L['Only active buttons'],
-					desc = L['Only show the buttons for the seeds, portals, tools you have in your bags.'],
-					set = function(key, value)
-						MOD:ChangeDBVar(value, key[#key],"farming");
-						MOD:RefreshFarmingTools()
-					end,
-				},
-				droptools = {
-					order = 4,
-					type = 'toggle',
-					name = L['Drop '],
-					desc = L['Automatically drop tools from your bags when leaving the farming area.'],
-				},
-				toolbardirection = {
-					order = 5,
-					type = 'select',
-					name = L['Bar Direction'],
-					desc = L['The direction of the bar buttons (Horizontal or Vertical).'],
-					set = function(key, value)MOD:ChangeDBVar(value, key[#key],"farming");MOD:RefreshFarmingTools()end,
-					values = {
-							['VERTICAL'] = L['Vertical'], ['HORIZONTAL'] = L['Horizontal']
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/plate.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/plate.lua
deleted file mode 100644
index 9254132..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/plate.lua
+++ /dev/null
@@ -1,729 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVPlate;
-local _, ns = ...;
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-local positionTable = {
-	TOPLEFT = "TOPLEFT",
-	LEFT = "LEFT",
-	BOTTOMLEFT = "BOTTOMLEFT",
-	RIGHT = "RIGHT",
-	TOPRIGHT = "TOPRIGHT",
-	BOTTOMRIGHT = "BOTTOMRIGHT",
-	CENTER = "CENTER",
-	TOP = "TOP",
-	BOTTOM = "BOTTOM",
-	RIGHTTOP = "RIGHTTOP",
-    LEFTTOP = "LEFTTOP",
-    RIGHTBOTTOM = "RIGHTBOTTOM",
-    LEFTBOTTOM = "LEFTBOTTOM"
-};
-
-local activeFilter,filters;
-
-local function UpdateFilterGroupOptions()
-	if not activeFilter or not SV.db['SVPlate']['filter'][activeFilter] then
-		SV.Options.args.SVPlate.args.filters.args.filterGroup=nil;
-		return
-	end
-	SV.Options.args.SVPlate.args.filters.args.filterGroup = {
-		type = "group",
-		name = activeFilter,
-		guiInline = true,
-		order = -10,
-		get = function(d)return SV.db["SVPlate"]["filter"][activeFilter][d[#d]] end,
-		set = function(d,e)
-			SV.db["SVPlate"]["filter"][activeFilter][d[#d]] = e;
-			MOD:PlateIteration("AssertFiltering")
-			MOD:UpdateAllPlates()
-			UpdateFilterGroupOptions()
-		end,
-		args = {
-			enable = {
-				type = "toggle",
-				order = 1,
-				name = L["Enable"],
-				desc = L["Use this filter."]
-			},
-			hide = {
-				type = "toggle",
-				order = 2,
-				name = L["Hide"],
-				desc = L["Prevent any nameplate with this unit name from showing."]
-			},
-			customColor = {
-				type = "toggle",
-				order = 3,
-				name = L["Custom Color"],
-				desc = L["Disable threat coloring for this plate and use the custom color."]
-			},
-			color = {
-				type = "color",
-				order = 4,
-				name = L["Color"],
-				get = function(key)
-					local color = SV.db["SVPlate"]["filter"][activeFilter][key[#key]]
-					if color then
-						return color[1],color[2],color[3],color[4]
-					end
-				end,
-				set = function(key,r,g,b)
-					SV.db["SVPlate"]["filter"][activeFilter][key[#key]] = {}
-					local color = SV.db["SVPlate"]["filter"][activeFilter][key[#key]]
-					if color then
-						color = {r,g,b};
-						UpdateFilterGroupOptions()
-						MOD:PlateIteration("CheckFilterAndHealers")
-						MOD:UpdateAllPlates()
-					end
-				end
-			},
-			customScale = {
-				type = "range",
-				name = L["Custom Scale"],
-				desc = L["Set the scale of the nameplate."],
-				min = 0.67,
-				max = 2,
-				step = 0.01
-			}
-		}
-	}
-end
-
-SV.Options.args.SVPlate={
-	type="group",
-	name=L["NamePlates"],
-	childGroups="tab",
-	args={
-		commonGroup={
-			order=1,
-			type='group',
-			name=L['NamePlate Options'],
-			childGroups="tree",
-			args={
-				intro={order=1,type="description",name=L["NAMEPLATE_DESC"]},
-				enable={
-					order=2,type="toggle",name=L["Enable"],
-					get=function(d)return SV.db.SVPlate[d[#d]]end,
-					set=function(d,e)SV.db.SVPlate[d[#d]]=e;SV:StaticPopup_Show("RL_CLIENT")end,
-				},
-				common = {
-					order = 1,
-					type = "group",
-					name = L["General"],
-					get = function(d)return SV.db.SVPlate[d[#d]]end,
-					set = function(d,e)MOD:ChangeDBVar(e,d[#d]);MOD:UpdateAllPlates() end,
-					disabled = function()return not SV.db.SVPlate.enable end,
-					args = {
-						combatHide = {
-							type = "toggle",
-							order = 1,
-							name = L["Combat Toggle"],
-							desc = L["Toggle the nameplates to be visible outside of combat and visible inside combat."],
-							set = function(d,e)MOD:ChangeDBVar(e,d[#d])MOD:CombatToggle()end
-						},
-						comboPoints = {
-							type = "toggle",
-							order = 2,
-							name = L["Combo Points"],
-							desc = L["Display combo points on nameplates."]
-						},
-						colorNameByValue = {
-							type = "toggle",
-							order = 3,
-							name = L["Color Name By Health Value"]
-						},
-						targetcount = {
-							type = "toggle",
-							order = 4,
-							name = L["Target Count"],
-							desc = L["Display the number of party / raid members targetting the nameplate unit."]
-						},
-						showthreat = {
-							type = "toggle",
-							order = 5,
-							name = L["Threat Text"],
-							desc = L["Display threat level as text on targeted,	boss or mouseover nameplate."]
-						},
-						nonTargetAlpha = {
-							type = "range",
-							order = 6,
-							name = L["Non-Target Alpha"],
-							desc = L["Alpha of nameplates that are not your current target."],
-							min = 0,
-							max = 1,
-							step = 0.01,
-							isPercent = true
-						},
-						fontGroup = {
-							order = 100,
-							type = "group",
-							guiInline = true,
-							name = L["Fonts"],
-							args = {
-								font = {
-									type = "select",
-									dialogControl = "LSM30_Font",
-									order = 4,
-									name = L["Font"],
-									values = AceGUIWidgetLSMlists.font
-								},
-								fontSize = {
-									order = 5,
-									name = L["Font Size"],
-									type = "range",
-									min = 6,
-									max = 22,
-									step = 1
-								},
-								fontOutline = {
-									order = 6,
-									name = L["Font Outline"],
-									desc = L["Set the font outline."],
-									type = "select",
-									values = {
-										["NONE"] = L["None"],
-										["OUTLINE"] = "OUTLINE",
-										["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-										["THICKOUTLINE"] = "THICKOUTLINE"
-									}
-								}
-							}
-						},
-						reactions = {
-							order = 200,
-							type = "group",
-							name = L["Reaction Coloring"],
-							guiInline = true,
-							get = function(key)
-								local color = SV.db.SVPlate.reactions[key[#key]]
-								if color then
-									return color[1],color[2],color[3],color[4]
-								end
-							end,
-							set = function(key,r,g,b)
-								local color = {r,g,b}
-								MOD:ChangeDBVar(color, key[#key], "reactions")
-								MOD:UpdateAllPlates()
-							end,
-							args = {
-								friendlyNPC = {
-									type = "color",
-									order = 1,
-									name = L["Friendly NPC"],
-									hasAlpha = false
-								},
-								friendlyPlayer = {
-									name = L["Friendly Player"],
-									order = 2,
-									type = "color",
-									hasAlpha = false
-								},
-								neutral = {
-									name = L["Neutral"],
-									order = 3,
-									type = "color",
-									hasAlpha = false
-								},
-								enemy = {
-									name = L["Enemy"],
-									order = 4,
-									type = "color",
-									hasAlpha = false
-								},
-								tapped = {
-									name = L["Tagged NPC"],
-									order = 5,
-									type = "color",
-									hasAlpha = false
-								}
-							}
-						},
-					}
-				},
-				healthBar = {
-					type = "group",
-					order = 2,
-					name = L["Health Bar"],
-					disabled = function()return not SV.db.SVPlate.enable end,
-					get = function(d)return SV.db.SVPlate.healthBar[d[#d]]end,
-					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"healthBar");MOD:UpdateAllPlates()end,
-					args = {
-						width = {
-							type = "range",
-							order = 1,
-							name = L["Width"],
-							desc = L["Controls the width of the nameplate"],
-							type = "range",
-							min = 50,
-							max = 125,
-							step = 1
-						},
-						height = {
-							type = "range",
-							order = 2,
-							name = L["Height"],
-							desc = L["Controls the height of the nameplate"],
-							type = "range",
-							min = 4,
-							max = 30,
-							step = 1
-						},
-						lowThreshold = {
-							type = "range",
-							order = 3,
-							name = L["Low Health Threshold"],
-							desc = L["Color the border of the nameplate yellow when it reaches this point,it will be colored red when it reaches half this value."],
-							isPercent = true,
-							min = 0,
-							max = 1,
-							step = 0.01
-						},
-						fontGroup = {
-							order = 4,
-							type = "group",
-							name = L["Fonts"],
-							guiInline = true,
-							get = function(d)return SV.db.SVPlate.healthBar.text[d[#d]]end,
-							set = function(d,e)MOD:ChangeDBVar(e,d[#d],"healthBar","text");MOD:UpdateAllPlates()end,
-							args = {
-								enable = {
-									type = "toggle",
-									name = L["Enable"],
-									order = 1
-								},
-								attachTo = {
-									type = "select",
-									order = 2,
-									name = L["Attach To"],
-									values = {
-										TOPLEFT = "TOPLEFT",
-										LEFT = "LEFT",
-										BOTTOMLEFT = "BOTTOMLEFT",
-										RIGHT = "RIGHT",
-										TOPRIGHT = "TOPRIGHT",
-										BOTTOMRIGHT = "BOTTOMRIGHT",
-										CENTER = "CENTER",
-										TOP = "TOP",
-										BOTTOM = "BOTTOM"
-									}
-								},
-								format = {
-									type = "select",
-									order = 3,
-									name = L["Format"],
-									values = {
-										["CURRENT_MAX_PERCENT"] = L["Current - Max | Percent"],
-										["CURRENT_PERCENT"] = L["Current - Percent"],
-										["CURRENT_MAX"] = L["Current - Max"],
-										["CURRENT"] = L["Current"],
-										["PERCENT"] = L["Percent"],
-										["DEFICIT"] = L["Deficit"]
-									}
-								},
-								xOffset = {
-									type = "range",
-									order = 4,
-									name = L["X-Offset"],
-									min = -150,
-									max = 150,
-									step = 1
-								},
-								yOffset = {
-									type = "range",
-									order = 5,
-									name = L["Y-Offset"],
-									min = -150,
-									max = 150,
-									step = 1
-								}
-							}
-						}
-					}
-				},
-				castBar = {
-					type = "group",
-					order = 3,
-					name = L["Cast Bar"],
-					disabled = function()return not SV.db.SVPlate.enable end,
-					get = function(d)return SV.db.SVPlate.castBar[d[#d]]end,
-					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"castBar");MOD:UpdateAllPlates()end,
-					args = {
-						height = {
-							type = "range",
-							order = 1,
-							name = L["Height"],
-							type = "range",
-							min = 4,
-							max = 30,
-							step = 1
-						},
-						colors = {
-							order = 100,
-							type = "group",
-							name = L["Colors"],
-							guiInline = true,
-							get = function(key)
-								local color = SV.db.SVPlate.castBar[key[#key]]
-								if color then
-									return color[1],color[2],color[3],color[4]
-								end
-							end,
-							set = function(key,r,g,b)
-								local color = {r,g,b}
-								MOD:ChangeDBVar(color, key[#key], "castBar")
-								MOD:UpdateAllPlates()
-							end,
-							args = {
-								color = {
-									type = "color",
-									order = 1,
-									name = L["Can Interrupt"],
-									hasAlpha = false
-								},
-								noInterrupt = {
-									name = "No Interrupt",
-									order = 2,
-									type = "color",
-									hasAlpha = false
-								}
-							}
-						}
-					}
-				},
-				pointer = {
-					type = "group",
-					order = 4,
-					name = L["Target Indicator"],
-					get = function(d)return SV.db.SVPlate.pointer[d[#d]]end,
-					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"pointer");WorldFrame.elapsed = 3;MOD:UpdateAllPlates()end,
-					args = {
-						enable = {
-							order = 1,
-							type = "toggle",
-							name = L["Enable"]
-						},
-						colorMatchHealthBar = {
-							order = 2,
-							type = "toggle",
-							name = L["Color By Healthbar"],
-							desc = L["Match the color of the healthbar."],
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key], "pointer");
-								if value then
-									WorldFrame.elapsed = 3
-								end
-							end
-						},
-						color = {
-							type = "color",
-							name = L["Color"],
-							order = 3,
-							disabled = function()return SV.db.SVPlate.pointer.colorMatchHealthBar end,
-							get = function(key)
-								local color = SV.db.SVPlate.pointer[key[#key]]
-								if color then
-									return color[1],color[2],color[3],color[4]
-								end
-							end,
-							set = function(key,r,g,b)
-								local color = {r,g,b}
-								MOD:ChangeDBVar(color, key[#key], "pointer")
-								MOD:UpdateAllPlates()
-							end,
-						}
-					}
-				},
-				raidHealIcon = {
-					type = "group",
-					order = 5,
-					name = L["Raid Icon"],
-					get = function(d)return SV.db.SVPlate.raidHealIcon[d[#d]]end,
-					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"raidHealIcon")MOD:UpdateAllPlates()end,
-					args = {
-						attachTo = {
-							type = "select",
-							order = 1,
-							name = L["Attach To"],
-							values = positionTable
-						},
-						xOffset = {
-							type = "range",
-							order = 2,
-							name = L["X-Offset"],
-							min = -150,
-							max = 150,
-							step = 1
-						},
-						yOffset = {
-							type = "range",
-							order = 3,
-							name = L["Y-Offset"],
-							min = -150,
-							max = 150,
-							step = 1
-						},
-						size = {
-							order = 4,
-							type = "range",
-							name = L["Size"],
-							width = "full",
-							min = 10,
-							max = 200,
-							step = 1
-						},
-					}
-				},
-				auras = {
-					type = "group",
-					order = 4,
-					name = L["Auras"],
-					get = function(d)return SV.db.SVPlate.auras[d[#d]]end,
-					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"auras")MOD:UpdateAllPlates()end,
-					args = {
-						numAuras = {
-							type = "range",
-							order = 1,
-							name = L["Number of Auras"],
-							min = 2,
-							max = 8,
-							step = 1
-						},
-						additionalFilter = {
-							type = "select",
-							order = 2,
-							name = L["Additional Filter"],
-							values = function()filters = {}filters[""] = NONE;for j in pairs(SV.db.filter)do filters[j] = j end return filters end
-						},
-						configureButton = {
-							order = 4,
-							name = L["Configure Selected Filter"],
-							type = "execute",
-							width = "full",
-							func = function()ns:SetToFilterConfig(SV.db.SVPlate.auras.additionalFilter)end
-						},
-						fontGroup = {
-							order = 100,
-							type = "group",
-							guiInline = true,
-							name = L["Fonts"],
-							args = {
-								font = {
-									type = "select",
-									dialogControl = "LSM30_Font",
-									order = 4,
-									name = L["Font"],
-									values = AceGUIWidgetLSMlists.font
-								},
-								fontSize = {
-									order = 5,
-									name = L["Font Size"],
-									type = "range",
-									min = 6,
-									max = 22,
-									step = 1
-								},
-								fontOutline = {
-									order = 6,
-									name = L["Font Outline"],
-									desc = L["Set the font outline."],
-									type = "select",
-									values = {
-										["NONE"] = L["None"],
-										["OUTLINE"] = "OUTLINE",
-										["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-										["THICKOUTLINE"] = "THICKOUTLINE"
-									}
-								}
-							}
-						}
-					}
-				},
-				threat = {
-					type = "group",
-					order = 6,
-					name = L["Threat"],
-					get = function(d)return SV.db.SVPlate.threat[d[#d]]end,
-					set = function(d,e)MOD:ChangeDBVar(e,d[#d],"threat")MOD:UpdateAllPlates()end,
-					args = {
-						enable = {
-							type = "toggle",
-							order = 1,
-							name = L["Enable"]
-						},
-						scaling = {
-							type = "group",
-							name = L["Scaling"],
-							guiInline = true,
-							order = 2,
-							args = {
-								goodScale = {
-									type = "range",
-									name = L["Good"],
-									order = 1,
-									min = 0.5,
-									max = 1.5,
-									step = 0.01,
-									isPercent = true
-								},
-								badScale = {
-									type = "range",
-									name = L["Bad"],
-									order = 1,
-									min = 0.5,
-									max = 1.5,
-									step = 0.01,
-									isPercent = true
-								}
-							}
-						},
-						colors = {
-							order = 3,
-							type = "group",
-							name = L["Colors"],
-							guiInline = true,
-							get = function(key)
-								local color = SV.db.SVPlate.threat[key[#key]]
-								if color then
-									return color[1],color[2],color[3],color[4]
-								end
-							end,
-							set = function(key,r,g,b)
-								local color = {r,g,b}
-								MOD:ChangeDBVar(color, key[#key], "threat")
-								MOD:UpdateAllPlates()
-							end,
-							args = {
-								goodColor = {
-									type = "color",
-									order = 1,
-									name = L["Good"],
-									hasAlpha = false
-								},
-								badColor = {
-									name = L["Bad"],
-									order = 2,
-									type = "color",
-									hasAlpha = false
-								},
-								goodTransitionColor = {
-									name = L["Good Transition"],
-									order = 3,
-									type = "color",
-									hasAlpha = false
-								},
-								badTransitionColor = {
-									name = L["Bad Transition"],
-									order = 4,
-									type = "color",
-									hasAlpha = false
-								}
-							}
-						}
-					}
-				},
-				filters = {
-					type = "group",
-					order = 200,
-					name = L["Filters"],
-					disabled = function()return not SV.db.SVPlate.enable end,
-					args = {
-						addname = {
-							type = "input",
-							order = 1,
-							name = L["Add Name"],
-							get = function(d)return""end,
-							set = function(d,e)
-								if SV.db["SVPlate"]["filter"][e]then
-									SV:AddonMessage(L["Filter already exists!"])
-									return
-								end
-								SV.db["SVPlate"]["filter"][e] = {
-									["enable"] = true,
-									["hide"] = false,
-									["customColor"] = false,
-									["customScale"] = 1,
-									["color"] = {
-										g = 104/255,
-										h = 138/255,
-										i = 217/255
-									}
-								}
-								UpdateFilterGroupOptions()
-								MOD:UpdateAllPlates()
-							end
-						},
-						deletename = {
-							type = "input",
-							order = 2,
-							name = L["Remove Name"],
-							get = function(d)return""end,
-							set = function(d,e)
-								if G["SVPlate"]["filter"][e]then
-									SV.db["SVPlate"]["filter"][e].enable = false;
-									SV:AddonMessage(L["You can't remove a default name from the filter,disabling the name."])
-								else
-									SV.db["SVPlate"]["filter"][e] = nil;
-									SV.Options.args.SVPlate.args.filters.args.filterGroup = nil
-								end
-								UpdateFilterGroupOptions()
-								MOD:UpdateAllPlates()
-							end
-						},
-						selectFilter = {
-							order = 3,
-							type = "select",
-							name = L["Select Filter"],
-							get = function(d)return activeFilter end,
-							set = function(d,e)activeFilter = e;UpdateFilterGroupOptions()end,
-							values = function()
-								filters = {}
-								if(SV.db["SVPlate"]["filter"]) then
-									for j in pairs(SV.db["SVPlate"]["filter"])do
-										filters[j] = j
-									end
-								end
-								return filters
-							end
-						}
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/profiles.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/profiles.lua
deleted file mode 100644
index 140d844..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/profiles.lua
+++ /dev/null
@@ -1,139 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-
-SV.Options.args.profiles = {
-	order = 9999,
-	type = "group",
-	name = L["profiles"],
-	childGroups = "tab",
-	args = {
-		desc = {
-			order = 1,
-			type = "description",
-			name = L["intro"] .. "\n",
-		},
-		spacer1 = {
-			order = 2,
-			type = "description",
-			name = "",
-			width = "full",
-		},
-		importdesc = {
-			order = 3,
-			type = "description",
-			name = "\n" .. L["import_desc"],
-			width = "full"
-		},
-		save = {
-			order = 4,
-			type = "execute",
-			name = SAVE,
-			desc = function() return SAVE .. " " .. L["current"] .. " " .. NORMAL_FONT_COLOR_CODE .. SV.db.profileKey .. FONT_COLOR_CODE_CLOSE end,
-			func = function() SV.db:Export(SV.db.profileKey) end,
-		},
-		export = {
-			name = L["export"],
-			desc = L["export_sub"],
-			type = "input",
-			order = 5,
-			get = false,
-			set = function(key, value) SV.db:Export(value) end,
-		},
-		import = {
-			name = L["import"],
-			desc = L["import_sub"],
-			type = "select",
-			order = 6,
-			get = function() return " SELECT ONE" end,
-			set = function(key, value) SV.db:Import(value) end,
-			disabled = function() local t = SV:CheckProfiles() return (not t) end,
-			values = SV:GetProfiles(),
-		},
-		spacer2 = {
-			order = 7,
-			type = "description",
-			name = "",
-			width = "full",
-		},
-		deldesc = {
-			order = 8,
-			type = "description",
-			name = "\n" .. L["delete_desc"],
-		},
-		delete = {
-			order = 9,
-			type = "select",
-			name = L["delete"],
-			desc = L["delete_sub"],
-			get = function() return " SELECT ONE" end,
-			set = function(key, value) SV.db:Remove(value) end,
-			values = SV:GetProfiles(),
-			disabled = function() local t = SV:CheckProfiles() return (not t) end,
-			confirm = true,
-			confirmText = L["delete_confirm"],
-		},
-		spacer3 = {
-			order = 10,
-			type = "description",
-			name = "",
-			width = "full",
-		},
-		descreset = {
-			order = 11,
-			type = "description",
-			name = L["reset_desc"],
-		},
-		reset = {
-			order = 12,
-			type = "execute",
-			name = function() return L["reset"] .. " " .. NORMAL_FONT_COLOR_CODE .. SV.db.profileKey .. FONT_COLOR_CODE_CLOSE end,
-			desc = L["reset_sub"],
-			func = function() SV:StaticPopup_Show("RESET_PROFILE_PROMPT") end,
-			width = "full",
-		},
-		spacer4 = {
-			order = 13,
-			type = "description",
-			name = "",
-			width = "full",
-		},
-		dualSpecEnabled = {
-			order = 14,
-			type = "toggle",
-			name = "Dual-Spec Switching",
-			get = function() return SV.db.protected.dualSpecEnabled end,
-			set = function(key, value) SV.db.protected.dualSpecEnabled = value; SV:ToggleSpecSwap(value) end,
-		},
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/stat.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/stat.lua
deleted file mode 100644
index 1a5f238..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/stat.lua
+++ /dev/null
@@ -1,158 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G 		 =  _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local string 	 =  _G.string;
-local upper 	 =  string.upper;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVStats;
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-SV.Options.args.SVStats = {
-	type = "group",
-	name = L["Statistics"],
-	childGroups = "tab",
-	get = function(key) return SV.db.SVStats[key[#key]] end,
-	set = function(key, value) MOD:ChangeDBVar(value, key[#key]); MOD:Generate() end,
-	args = {
-		intro = {
-			order = 1,
-			type = "description",
-			name = L["STATS_DESC"]
-		},
-		time24 = {
-			order = 2,
-			type = "toggle",
-			name = L["24-Hour Time"],
-			desc = L["Toggle 24-hour mode for the time datatext."]
-		},
-		localtime = {
-			order = 3,
-			type = "toggle",
-			name = L["Local Time"],
-			desc = L["If not set to true then the server time will be displayed instead."]
-		},
-		battleground = {
-			order = 4,
-			type = "toggle",
-			name = L["Battleground Texts"],
-			desc = L["When inside a battleground display personal scoreboard information on the main datatext bars."]
-		},
-		showBackground = {
-			order = 5,
-			name = "Show Backgrounds",
-			desc = L["Display statistic background textures"],
-			type = "toggle",
-			set = function(key, value) MOD:ChangeDBVar(value, key[#key]); SV:StaticPopup_Show("RL_CLIENT") end,
-		},
-		shortGold = {
-			order = 6,
-			type = "toggle",
-			name = L["Shortened Gold Text"],
-		},
-		fontGroup = {
-			order = 7,
-			type = "group",
-			guiInline = true,
-			name = L["Fonts"],
-			set = function(key, value) MOD:ChangeDBVar(value, key[#key]); MOD:Generate() end,
-			args = {
-				font = {
-					type = "select",
-					dialogControl = "LSM30_Font",
-					order = 4,
-					name = L["Font"],
-					values = AceGUIWidgetLSMlists.font
-				},
-				fontSize = {
-					order = 5,
-					name = L["Font Size"],
-					type = "range",
-					min = 6,
-					max = 22,
-					step = 1
-				},
-				fontOutline = {
-					order = 6,
-					name = L["Font Outline"],
-					desc = L["Set the font outline."],
-					type = "select",
-					values = {
-						["NONE"] = L["None"],
-						["OUTLINE"] = "OUTLINE",
-						["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
-						["THICKOUTLINE"] = "THICKOUTLINE"
-					}
-				}
-			}
-		},
-		panels = {
-			type = "group",
-			name = L["Panels"],
-			order = 100,
-			args = {},
-			guiInline = true
-		},
-	}
-}
-
-do
-	local orderIncrement = 0;
-	local statValues = MOD.StatListing
-	local configTable = SV.db.SVStats.panels;
-	local optionTable = SV.Options.args.SVStats.args.panels.args;
-
-	for panelName, panelPositions in pairs(configTable)do
-		orderIncrement = orderIncrement + 1;
-		if(not _G[panelName]) then
-			optionTable[panelName] = nil;
-			return
-		end
-		if(type(panelPositions) == "table") then
-			optionTable[panelName] = {
-				type = 'group',
-				args = {},
-				name = L[panelName] or panelName,
-				guiInline = true,
-				order = (orderIncrement + 10)
-			}
-			for position,_ in pairs(panelPositions) do
-				optionTable[panelName].args[position] = {
-					type = 'select',
-					name = L[position] or upper(position),
-					values = statValues,
-					get = function(key) return SV.db.SVStats.panels[panelName][key[#key]] end,
-					set = function(key, value) MOD:ChangeDBVar(value, key[#key], "panels", panelName); MOD:Generate() end
-				}
-			end
-		end
-	end
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/tip.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/tip.lua
deleted file mode 100644
index 0c321a9..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/tip.lua
+++ /dev/null
@@ -1,179 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVTip;
-local LSM = LibStub("LibSharedMedia-3.0");
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-SV.Options.args.SVTip = {
-	type = "group",
-	name = L["Tooltip"],
-	childGroups = "tab",
-	get = function(a)return SV.db.SVTip[a[#a]] end,
-	set = function(a, b)SV.db.SVTip[a[#a]] = b end,
-	args = {
-		commonGroup = {
-			order = 1,
-			type = "group",
-			name = L["Tooltip Options"],
-			childGroups = "tree",
-			args = {
-				intro = {
-					order = 1,
-					type = "description",
-					name = L["TOOLTIP_DESC"]
-				},
-				enable = {
-					order = 2,
-					type = "toggle",
-					name = L["Enable"],
-					get = function(a)return SV.db.SVTip[a[#a]]end,
-					set = function(a, b)SV.db.SVTip[a[#a]] = b;SV:StaticPopup_Show("RL_CLIENT") end
-				},
-				common = {
-					order = 3,
-					type = "group",
-					name = L["General"],
-					disabled = function() return not SV.db.SVTip.enable end,
-					args = {
-						cursorAnchor = {
-							order = 1,
-							type = "toggle",
-							name = L["Cursor Anchor"],
-							desc = L["Should tooltip be anchored to mouse cursor"]
-						},
-						targetInfo = {
-							order = 2,
-							type = "toggle",
-							name = L["Target Info"],
-							desc = L["When in a raid group display if anyone in your raid is targeting the current tooltip unit."]
-						},
-						playerTitles = {
-							order = 3,
-							type = "toggle",
-							name = L["Player Titles"],
-							desc = L["Display player titles."]
-						},
-						guildRanks = {
-							order = 4,
-							type = "toggle",
-							name = L["Guild Ranks"],
-							desc = L["Display guild ranks if a unit is guilded."]
-						},
-						inspectInfo = {
-							order = 5,
-							type = "toggle",
-							name = L["Talent Spec"],
-							desc = L["Display the players talent spec in the tooltip, this may not immediately update when mousing over a unit."]
-						},
-						spellID = {
-							order = 6,
-							type = "toggle",
-							name = L["Spell/Item IDs"],
-							desc = L["Display the spell or item ID when mousing over a spell or item tooltip."],
-							get = function(a)return SV.db.SVTip.spellID end,
-							set = function(a, b)SV.db.SVTip.spellID = b;SV:StaticPopup_Show("RL_CLIENT") end,
-						}
-					}
-
-				},
-				visibility={
-					order=100,
-					type="group",
-					name=L["Visibility"],
-					get=function(a)return SV.db.SVTip.visibility[a[#a]]end,
-					set=function(a,b)SV.db.SVTip.visibility[a[#a]]=b end,
-					args={
-						combat={order=1,type='toggle',name=COMBAT,desc=L["Hide tooltip while in combat."]},
-						unitFrames={order=2,type='select',name=L['Unitframes'],desc=L["Don't display the tooltip when mousing over a unitframe."],values={['ALL']=L['Always Hide'],['NONE']=L['Never Hide'],['SHIFT']=SHIFT_KEY,['ALT']=ALT_KEY,['CTRL']=CTRL_KEY}}
-					}
-				},
-				healthBar={
-					order=200,
-					type="group",
-					name=L["Health Bar"],
-					get=function(a)return SV.db.SVTip.healthBar[a[#a]]end,
-					set=function(a,b)SV.db.SVTip.healthBar[a[#a]]=b end,
-					args={
-						height = {
-							order = 1,
-							name = L["Height"],
-							type = "range",
-							min = 1,
-							max = 15,
-							step = 1,
-							width = "full",
-							set = function(a,b)SV.db.SVTip.healthBar.height = b;GameTooltipStatusBar:Height(b)end
-						},
-						fontGroup = {
-							order = 2,
-							name = L["Fonts"],
-							type = "group",
-							guiInline = true,
-							args = {
-								text = {
-									order = 1,
-									type = "toggle",
-									name = L["Text"],
-									set = function(a,b)SV.db.SVTip.healthBar.text = b;if b then GameTooltipStatusBar.text:Show()else GameTooltipStatusBar.text:Hide()end end
-								},
-								font = {
-									type = "select",
-									dialogControl = "LSM30_Font",
-									order = 2,
-									width = "full",
-									name = L["Font"],
-									values = AceGUIWidgetLSMlists.font,
-									set = function(a,b)SV.db.SVTip.healthBar.font = b;GameTooltipStatusBar.text:SetFontTemplate(LSM:Fetch("font",SV.db.SVTip.healthBar.font), SV.db.SVTip.healthBar.fontSize,"OUTLINE")end
-								},
-								fontSize = {
-									order = 3,
-									name = L["Font Size"],
-									type = "range",
-									min = 6,
-									max = 22,
-									step = 1,
-									width = "full",
-									set = function(a,b)SV.db.SVTip.healthBar.fontSize = b;GameTooltipStatusBar.text:SetFontTemplate(LSM:Fetch("font",SV.db.SVTip.healthBar.font),SV.db.SVTip.healthBar.fontSize,"OUTLINE")end
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/_load.xml b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/_load.xml
deleted file mode 100644
index e835fb5..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/_load.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-	<Script file='core.lua'/>
-	<Script file='player.lua'/>
-	<Script file='target.lua'/>
-	<Script file='focus.lua'/>
-	<Script file='pet.lua'/>
-	<Script file='party.lua'/>
-	<Script file='raid.lua'/>
-	<Script file='other.lua'/>
-	<Script file='grid.lua'/>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua
deleted file mode 100644
index 819fe39..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/core.lua
+++ /dev/null
@@ -1,2095 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
-local string     =  _G.string;
-local find,gsub,upper = string.find, string.gsub, string.upper;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...;
-local ACD = LibStub("AceConfigDialog-3.0");
---[[
-##########################################################
-LOCAL VARS/FUNCTIONS
-##########################################################
-]]--
-local filterList = {};
-local textStringFormats = {
-	["none"] = "None",
-	["current"] = "Current",
-	["deficit"] = "Deficit",
-	["percent"] = "Percent",
-	["curpercent"] = "Current - Percent",
-	["curmax"] = "Current - Maximum",
-	["curmax-percent"] = "Current - Maximum | %",
-}
---[[
-##########################################################
-SET PACKAGE OPTIONS
-##########################################################
-]]--
-function ns:SetCastbarConfigGroup(updateFunction, unitName, count)
-	local configTable = {
-		order = 800,
-		type = "group",
-		name = L["Castbar"],
-		get = function(key)
-			return SV.db.SVUnit[unitName]["castbar"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "castbar")
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {
-			enable = {
-				type = "toggle",
-				order = 1,
-				name = L["Enable"]
-			},
-			commonGroup = {
-				order = 2,
-				guiInline = true,
-				type = "group",
-				name = L["Base Settings"],
-				args = {
-					forceshow = {
-						order = 1,
-						name = SHOW.." / "..HIDE,
-						type = "execute",
-						func = function()
-							local v = unitName:gsub("(.)", upper, 1)
-							v = "SVUI_"..v;
-							v = v:gsub("t(arget)", "T%1")
-							if count then
-								for w = 1, count do
-									local castbar = _G[v..w].Castbar;
-									if not castbar.oldHide then
-										castbar.oldHide = castbar.Hide;
-										castbar.Hide = castbar.Show;
-										castbar:Show()
-									else
-										castbar.Hide = castbar.oldHide;
-										castbar.oldHide = nil;
-										castbar:Hide()
-										castbar.lastUpdate = 0
-									end
-								end
-							else
-								local castbar = _G[v].Castbar;
-								if not castbar.oldHide then
-									castbar.oldHide = castbar.Hide;
-									castbar.Hide = castbar.Show;
-									castbar:Show()
-								else
-									castbar.Hide = castbar.oldHide;
-									castbar.oldHide = nil;
-									castbar:Hide()
-									castbar.lastUpdate = 0
-								end
-							end
-						end,
-					},
-					icon = {
-						order = 2,
-						name = L["Icon"],
-						type = "toggle"
-					},
-					latency = {
-						order = 3,
-						name = L["Latency"],
-						type = "toggle"
-					},
-					spark = {
-						order = 4,
-						type = "toggle",
-						name = L["Spark"]
-					},
-				}
-			},
-			sizeGroup = {
-				order = 3,
-				guiInline = true,
-				type = "group",
-				name = L["Size Settings"],
-				args = {
-					matchFrameWidth = {
-						order = 1,
-						name = L["Auto Width"],
-						desc = "Force the castbar to ALWAYS match its unitframes width.",
-						type = "toggle",
-					},
-					matchsize = {
-						order = 2,
-						type = "execute",
-						name = L["Match Frame Width"],
-						desc = "Set the castbar width to match its unitframe.",
-						func = function()
-							SV.db.SVUnit[unitName]["castbar"]["width"] = SV.db.SVUnit[unitName]["width"]
-							updateFunction(MOD, unitName, count)
-						end
-					},
-					width = {
-						order = 3,
-						name = L["Width"],
-						type = "range",
-						width = "full",
-						min = 50,
-						max = 600,
-						step = 1
-					},
-					height = {
-						order = 4,
-						name = L["Height"],
-						type = "range",
-						width = "full",
-						min = 10,
-						max = 85,
-						step = 1
-					},
-				}
-			},
-			colorGroup = {
-				order = 4,
-				type = "group",
-				guiInline = true,
-				name = L["Custom Coloring"],
-				args = {
-					useCustomColor = {
-						type = "toggle",
-						order = 1,
-						name = L["Enable"]
-					},
-					castingColor = {
-						order = 2,
-						name = L["Custom Bar Color"],
-						type = "color",
-						get = function(key)
-							local color = SV.db.SVUnit[unitName]["castbar"]["castingColor"]
-							return color[1], color[2], color[3], color[4]
-						end,
-						set = function(key, rValue, gValue, bValue)
-							SV.db.SVUnit[unitName]["castbar"]["castingColor"] = {rValue, gValue, bValue}
-							MOD:RefreshUnitFrames()
-						end,
-						disabled = function() return not SV.db.SVUnit[unitName]["castbar"].useCustomColor end
-					},
-					sparkColor = {
-						order = 3,
-						name = L["Custom Spark Color"],
-						type = "color",
-						get = function(key)
-							local color = SV.db.SVUnit[unitName]["castbar"]["sparkColor"]
-							return color[1], color[2], color[3], color[4]
-						end,
-						set = function(key, rValue, gValue, bValue)
-							SV.db.SVUnit[unitName]["castbar"]["sparkColor"] = {rValue, gValue, bValue}
-							MOD:RefreshUnitFrames()
-						end,
-						disabled = function() return not SV.db.SVUnit[unitName]["castbar"].useCustomColor end
-					},
-				}
-			},
-			formatGroup = {
-				order = 4,
-				guiInline = true,
-				type = "group",
-				name = L["Text Settings"],
-				args = {
-					format = {
-						order = 1,
-						type = "select",
-						name = L["Format"],
-						values = { ["CURRENTMAX"] = L["Current / Max"], ["CURRENT"] = L["Current"], ["REMAINING"] = L["Remaining"] }
-					},
-				}
-			}
-		}
-	}
-	if(unitName == "player") then
-		configTable.args.commonGroup.args.ticks = {
-			order = 6,
-			type = "toggle",
-			name = L["Ticks"],
-			desc = L["Display tick marks on the castbar."]
-		}
-		configTable.args.commonGroup.args.displayTarget = {
-			order = 7,
-			type = "toggle",
-			name = L["Display Target"],
-			desc = L["Display the target of your current cast."]
-		}
-	end
-	return configTable
-end
-
-function ns:SetAuraConfigGroup(custom, auraType, unused, updateFunction, unitName, count)
-	local configTable = {
-		order = auraType == "buffs" and 600 or 700,
-		type = "group",
-		name = auraType == "buffs" and L["Buffs"] or L["Debuffs"],
-		get = function(key)
-			return SV.db.SVUnit[unitName][auraType][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, auraType)
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {
-			enable = {
-				type = "toggle",
-				order = 1,
-				name = L["Enable"]
-			},
-			commonGroup = {
-				order = 2,
-				guiInline = true,
-				type = "group",
-				name = L["Base Settings"],
-				args = {
-					verticalGrowth = {type = "select", order = 1, name = L["Vertical Growth"], desc = L["The vertical direction that the auras will position themselves"], values = {UP = "UP", DOWN = "DOWN"}},
-					horizontalGrowth = {type = "select", order = 2, name = L["Horizontal Growth"], desc = L["The horizontal direction that the auras will position themselves"], values = {LEFT = "LEFT", RIGHT = "RIGHT"}},
-					perrow = {type = "range", order = 3, width = "full", name = L["Per Row"], min = 1, max = 20, step = 1},
-					numrows = {type = "range", order = 4, width = "full", name = L["Num Rows"], min = 1, max = 4, step = 1},
-					sizeOverride = {type = "range", order = 5, width = "full", name = L["Size Override"], desc = L["If not set to 0 then override the size of the aura icon to this."], min = 0, max = 60, step = 1},
-				}
-			},
-			positionGroup = {
-				order = 3,
-				guiInline = true,
-				type = "group",
-				name = L["Position Settings"],
-				args = {
-					xOffset = {order = 1, type = "range", name = L["xOffset"], width = "full", min = -60, max = 60, step = 1},
-					yOffset = {order = 2, type = "range", name = L["yOffset"], width = "full", min = -60, max = 60, step = 1},
-					anchorPoint = {type = "select", order = 3, name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = SV.PointIndexes},
-				}
-			},
-			filters = {name = L["Filters"], guiInline = true, type = "group", order = 500, args = {}}
-		}
-	}
-	if auraType == "buffs"then
-		configTable.args.positionGroup.args.attachTo = {type = "select", order = 7, name = L["Attach To"], desc = L["What to attach the buff anchor frame to."], values = {["FRAME"] = L["Frame"], ["DEBUFFS"] = L["Debuffs"]}}
-	else
-		configTable.args.positionGroup.args.attachTo = {type = "select", order = 7, name = L["Attach To"], desc = L["What to attach the buff anchor frame to."], values = {["FRAME"] = L["Frame"], ["BUFFS"] = L["Buffs"]}}
-	end
-	if custom then
-		configTable.args.filters.args.filterPlayer = {order = 10, type = "toggle", name = L["Only Show Your Auras"], desc = L["Don't display auras that are not yours."]}
-		configTable.args.filters.args.filterBlocked = {order = 11, type = "toggle", name = L["Force Blocked List"], desc = L["Don't display any auras found on the Blocked filter."]}
-		configTable.args.filters.args.filterAllowed = {order = 12, type = "toggle", name = L["Force Allowed List"], desc = L["If no other filter options are being used then it will block anything not on the Allowed filter."]}
-		configTable.args.filters.args.filterInfinite = {order = 13, type = "toggle", name = L["Block Auras Without Duration"], desc = L["Don't display auras that have no duration."]}
-		configTable.args.filters.args.filterDispellable = {order = 13, type = "toggle", name = L["Block Non-Dispellable Auras"], desc = L["Don't display auras that cannot be purged or dispelled by your class."]}
-		if auraType == "buffs"then
-			configTable.args.filters.args.filterRaid = {order = 14, type = "toggle", name = L["Block Raid Buffs"], desc = L["Don't display raid buffs."]}
-		end
-		configTable.args.filters.args.useFilter = {
-			order = 15,
-			name = L["Additional Filter"],
-			desc = L["Select an additional filter to use."],
-			type = "select",
-			values = function()
-				filterList = {}
-				filterList[""] = NONE;
-				for n in pairs(SV.db.filter)do
-					filterList[n] = n
-				end
-				return filterList
-			end
-		}
-
-	else
-		configTable.args.filters.args.filterPlayer = {
-			order = 10,
-			guiInline = true,
-			type = "group",
-			name = L["Only Show Your Auras"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"],
-					desc = L["If the unit is friendly to you."].." "..L["Don't display auras that are not yours."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterPlayer.friendly end,
-					set = function(l, m)
-					SV.db.SVUnit[unitName][auraType].filterPlayer.friendly = m;
-						updateFunction(MOD, unitName, count)
-					end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"],
-					desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that are not yours."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterPlayer.enemy end,
-					set = function(l, m)
-						SV.db.SVUnit[unitName][auraType].filterPlayer.enemy = m;
-						updateFunction(MOD, unitName, count)
-					end
-				}
-			}
-		}
-		configTable.args.filters.args.filterBlocked = {
-			order = 11,
-			guiInline = true,
-			type = "group",
-			name = L["Force Blocked List"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"],
-					desc = L["If the unit is friendly to you."].." "..L["Don't display any auras found on the Blocked filter."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterBlocked.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterBlocked.friendly = m;updateFunction(MOD, unitName, count)end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"],
-					desc = L["If the unit is an enemy to you."].." "..L["Don't display any auras found on the Blocked filter."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterBlocked.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterBlocked.enemy = m;updateFunction(MOD, unitName, count)end
-				}
-			}
-		}
-		configTable.args.filters.args.filterAllowed = {
-			order = 12,
-			guiInline = true,
-			type = "group",
-			name = L["Force Allowed List"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"],
-					desc = L["If the unit is friendly to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterAllowed.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterAllowed.friendly = m;updateFunction(MOD, unitName, count)end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"],
-					desc = L["If the unit is an enemy to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterAllowed.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterAllowed.enemy = m;updateFunction(MOD, unitName, count)end
-				}
-			}
-		}
-		configTable.args.filters.args.filterInfinite = {
-			order = 13,
-			guiInline = true,
-			type = "group",
-			name = L["Block Auras Without Duration"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"],
-					desc = L["If the unit is friendly to you."].." "..L["Don't display auras that have no duration."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterInfinite.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterInfinite.friendly = m;updateFunction(MOD, unitName, count)end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"],
-					desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that have no duration."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterInfinite.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterInfinite.enemy = m;updateFunction(MOD, unitName, count)end
-				}
-			}
-		}
-		configTable.args.filters.args.filterDispellable = {
-			order = 13,
-			guiInline = true,
-			type = "group",
-			name = L["Block Non-Dispellable Auras"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"],
-					desc = L["If the unit is friendly to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterDispellable.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterDispellable.friendly = m;updateFunction(MOD, unitName, count)end
-					},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"],
-					desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
-					get = function(l)return SV.db.SVUnit[unitName][auraType].filterDispellable.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName][auraType].filterDispellable.enemy = m;updateFunction(MOD, unitName, count)end
-				}
-			}
-		}
-		if(auraType == "buffs") then
-			configTable.args.filters.args.filterRaid = {
-				order = 14,
-				guiInline = true,
-				type = "group",
-				name = L["Block Raid Buffs"],
-				args = {
-					friendly = {
-						order = 2,
-						type = "toggle",
-						name = L["Friendly"],
-						desc = L["If the unit is friendly to you."].." "..L["Don't display raid (consolidated) buffs."],
-						get = function(l)return SV.db.SVUnit[unitName][auraType].filterRaid.friendly end,
-						set = function(l, m)SV.db.SVUnit[unitName][auraType].filterRaid.friendly = m;updateFunction(MOD, unitName, count)end
-					},
-					enemy = {
-						order = 3,
-						type = "toggle",
-						name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display raid (consolidated) buffs."],
-						get = function(l)return SV.db.SVUnit[unitName][auraType].filterRaid.enemy end,
-						set = function(l, m)SV.db.SVUnit[unitName][auraType].filterRaid.enemy = m;updateFunction(MOD, unitName, count)end
-					}
-				}
-			}
-		end
-		configTable.args.filters.args.useFilter = {
-			order = 15,
-			name = L["Additional Filter"],
-			desc = L["Select an additional filter to use."],
-			type = "select",
-			values = function()
-				filterList = {}
-				filterList[""] = NONE;
-				for n in pairs(SV.db.filter)do
-					filterList[n] = n
-				end
-				return filterList
-			end
-		}
-	end
-	return configTable
-end
-
-function ns:SetMiscConfigGroup(partyRaid, updateFunction, unitName, count)
-	local miscGroup = {
-		order = 99,
-		type = "group",
-		name = L["Misc Text"],
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
-			local tag = ""
-			local pc = SV.db.SVUnit[unitName]["formatting"].threat and "[threat]" or "";
-			tag = tag .. pc;
-			local ap = SV.db.SVUnit[unitName]["formatting"].absorbs and "[absorbs]" or "";
-			tag = tag .. ap;
-			local cp = SV.db.SVUnit[unitName]["formatting"].incoming and "[incoming]" or "";
-			tag = tag .. cp;
-
-			MOD:ChangeDBVar(tag, "tags", unitName, "misc");
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {
-			incoming = {
-				order = 1,
-				name = L["Show Incoming Heals"],
-				type = "toggle",
-				get = function() return SV.db.SVUnit[unitName]["formatting"].incoming end,
-			},
-			absorbs = {
-				order = 2,
-				name = L["Show Absorbs"],
-				type = "toggle",
-				get = function() return SV.db.SVUnit[unitName]["formatting"].absorbs end,
-			},
-			threat = {
-				order = 3,
-				name = L["Show Threat"],
-				type = "toggle",
-				get = function() return SV.db.SVUnit[unitName]["formatting"].threat end,
-			},
-			xOffset = {
-				order = 4,
-				type = "range",
-				width = "full",
-				name = L["Misc Text X Offset"],
-				desc = L["Offset position for text."],
-				min = -300,
-				max = 300,
-				step = 1,
-				get = function() return SV.db.SVUnit[unitName]["formatting"].xOffset end,
-				set = function(key, value) MOD:ChangeDBVar(value, key[#key], unitName, "formatting"); end,
-			},
-			yOffset = {
-				order = 5,
-				type = "range",
-				width = "full",
-				name = L["Misc Text Y Offset"],
-				desc = L["Offset position for text."],
-				min = -300,
-				max = 300,
-				step = 1,
-				get = function() return SV.db.SVUnit[unitName]["formatting"].yOffset end,
-				set = function(key, value) MOD:ChangeDBVar(value, key[#key], unitName, "formatting"); end,
-			},
-		}
-	}
-	return miscGroup
-end
-
-function ns:SetHealthConfigGroup(partyRaid, updateFunction, unitName, count)
-	local healthOptions = {
-		order = 100,
-		type = "group",
-		name = L["Health"],
-		get = function(key)
-			return SV.db.SVUnit[unitName]["health"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "health");
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {
-			commonGroup = {
-				order = 2,
-				type = "group",
-				guiInline = true,
-				name = L["Base Settings"],
-				args = {
-					reversed = {type = "toggle", order = 1, name = L["Reverse Fill"], desc = L["Invert this bars fill direction"]},
-					position = {type = "select", order = 2, name = L["Text Position"], desc = L["Set the anchor for this bars value text"], values = SV.PointIndexes},
-					configureButton = {
-						order = 4,
-						width = "full",
-						name = L["Coloring"],
-						type = "execute",
-						func = function()ACD:SelectGroup("SVUI", "SVUnit", "common", "allColorsGroup", "healthGroup")end
-					},
-					xOffset = {order = 5, type = "range", width = "full", name = L["Text xOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
-					yOffset = {order = 6, type = "range", width = "full", name = L["Text yOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
-				}
-			},
-			formatGroup = {
-				order = 100,
-				type = "group",
-				guiInline = true,
-				name = L["Text Settings"],
-				set = function(key, value)
-					MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
-					local tag = ""
-					local pc = SV.db.SVUnit[unitName]["formatting"].health_colored and "[health:color]" or "";
-					tag = tag .. pc;
-
-					local pt = SV.db.SVUnit[unitName]["formatting"].health_type;
-					if(pt and pt ~= "none") then
-						tag = tag .. "[health:" .. pt .. "]"
-					end
-
-					MOD:ChangeDBVar(tag, "tags", unitName, "health");
-					updateFunction(MOD, unitName, count)
-				end,
-				args = {
-					health_colored = {
-						order = 1,
-						name = L["Colored"],
-						type = "toggle",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].health_colored end,
-						desc = L["Use various name coloring methods"]
-					},
-					health_type = {
-						order = 3,
-						name = L["Text Format"],
-						type = "select",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].health_type end,
-						desc = L["TEXT_FORMAT_DESC"],
-						values = textStringFormats,
-					}
-				}
-			}
-		}
-	}
-	if partyRaid then
-		healthOptions.args.frequentUpdates = {
-			type = "toggle",
-			order = 1,
-			name = L["Frequent Updates"],
-			desc = L["Rapidly update the health, uses more memory and cpu. Only recommended for healing."]
-		}
-		healthOptions.args.orientation = {
-			type = "select",
-			order = 2,
-			name = L["Orientation"],
-			desc = L["Direction the health bar moves when gaining/losing health."],
-			values = {["HORIZONTAL"] = L["Horizontal"], ["VERTICAL"] = L["Vertical"]}
-		}
-	end
-	return healthOptions
-end
-
-function ns:SetPowerConfigGroup(playerTarget, updateFunction, unitName, count)
-	local powerOptions = {
-		order = 200,
-		type = "group",
-		name = L["Power"],
-		get = function(key)
-			return SV.db.SVUnit[unitName]["power"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "power");
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {
-			enable = {type = "toggle", order = 1, name = L["Enable"]},
-			commonGroup = {
-				order = 2,
-				type = "group",
-				guiInline = true,
-				name = L["Base Settings"],
-				args = {
-					position = {type = "select", order = 3, name = L["Text Position"], desc = L["Set the anchor for this bars value text"], values = SV.PointIndexes},
-					configureButton = {
-						order = 4,
-						name = L["Coloring"],
-						width = "full",
-						type = "execute",
-						func = function()ACD:SelectGroup("SVUI", "SVUnit", "common", "allColorsGroup", "powerGroup")end
-					},
-					height = {
-						type = "range",
-						name = L["Height"],
-						order = 5,
-						width = "full",
-						min = 3,
-						max = 50,
-						step = 1
-					},
-					xOffset = {order = 6, type = "range", width = "full", name = L["Text xOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
-					yOffset = {order = 7, type = "range", width = "full", name = L["Text yOffset"], desc = L["Offset position for text."], min = -300, max = 300, step = 1},
-				}
-			},
-			formatGroup = {
-				order = 100,
-				type = "group",
-				guiInline = true,
-				name = L["Text Settings"],
-				set = function(key, value)
-					MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
-					local tag = ""
-					local cp = SV.db.SVUnit[unitName]["formatting"].power_class and "[classpower]" or "";
-					tag = tag .. cp;
-					local ap = SV.db.SVUnit[unitName]["formatting"].power_alt and "[altpower]" or "";
-					tag = tag .. ap;
-					local pc = SV.db.SVUnit[unitName]["formatting"].power_colored and "[power:color]" or "";
-					tag = tag .. pc;
-
-					local pt = SV.db.SVUnit[unitName]["formatting"].power_type;
-					if(pt and pt ~= "none") then
-						tag = tag .. "[power:" .. pt .. "]"
-					end
-
-					MOD:ChangeDBVar(tag, "tags", unitName, "power");
-					updateFunction(MOD, unitName, count)
-				end,
-				args = {
-					power_colored = {
-						order = 1,
-						name = L["Colored"],
-						type = "toggle",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].power_colored end,
-						desc = L["Use various name coloring methods"]
-					},
-					power_class = {
-						order = 1,
-						name = L["Show Class Power"],
-						type = "toggle",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].power_class end,
-					},
-					power_alt = {
-						order = 1,
-						name = L["Show Alt Power"],
-						type = "toggle",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].power_alt end,
-					},
-					power_type = {
-						order = 3,
-						name = L["Text Format"],
-						type = "select",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].power_type end,
-						desc = L["TEXT_FORMAT_DESC"],
-						values = textStringFormats,
-					}
-				}
-			}
-		}
-	}
-
-	if(playerTarget) then
-		powerOptions.args.formatGroup.args.attachTextToPower = {
-			type = "toggle",
-			order = 2,
-			name = L["Attach Text to Power"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["power"].attachTextToPower
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, "attachTextToPower", unitName, "power");
-				updateFunction(MOD, unitName, count)
-			end,
-		}
-	end
-
-	return powerOptions
-end
-
-function ns:SetNameConfigGroup(updateFunction, unitName, count)
-	local k = {
-		order = 400,
-		type = "group",
-		name = L["Name"],
-		get = function(key)
-			return SV.db.SVUnit[unitName]["name"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "name");
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {
-			commonGroup = {
-				order = 2,
-				type = "group",
-				guiInline = true,
-				name = L["Base Settings"],
-				args = {
-					position = {
-						type = "select",
-						order = 3,
-						name = L["Text Position"],
-						desc = L["Set the anchor for this units name text"],
-						values = SV.PointIndexes
-					},
-					xOffset = {
-						order = 6,
-						type = "range",
-						width = "full",
-						name = L["Text xOffset"],
-						desc = L["Offset position for text."],
-						min = -300,
-						max = 300,
-						step = 1
-					},
-					yOffset = {
-						order = 7,
-						type = "range",
-						width = "full",
-						name = L["Text yOffset"],
-						desc = L["Offset position for text."],
-						min = -300,
-						max = 300,
-						step = 1
-					},
-				}
-			},
-			fontGroup = {
-				order = 4,
-				type = "group",
-				guiInline = true,
-				name = L["Fonts"],
-				set = function(key, value)
-					MOD:ChangeDBVar(value, key[#key], unitName, "name");
-					MOD:RefreshAllUnitMedia()
-				end,
-				args = {
-					font = {
-						type = "select",
-						dialogControl = "LSM30_Font",
-						order = 0,
-						name = L["Default Font"],
-						desc = L["The font used to show unit names."],
-						values = AceGUIWidgetLSMlists.font
-					},
-					fontOutline = {
-						order = 1,
-						name = L["Font Outline"],
-						desc = L["Set the font outline."],
-						type = "select",
-						values = {["NONE"] = L["None"], ["OUTLINE"] = "OUTLINE", ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE", ["THICKOUTLINE"] = "THICKOUTLINE"}
-					},
-					fontSize = {
-						order = 2,
-						name = L["Font Size"],
-						desc = L["Set the font size."],
-						type = "range",
-						width = "full",
-						min = 6,
-						max = 22,
-						step = 1
-					}
-				}
-			},
-			formatGroup = {
-				order = 100,
-				type = "group",
-				guiInline = true,
-				name = L["Text Settings"],
-				set = function(key, value)
-					MOD:ChangeDBVar(value, key[#key], unitName, "formatting");
-					local tag = ""
-					tag = SV.db.SVUnit[unitName]["formatting"].name_colored and "[name:color]" or "";
-
-					local length = SV.db.SVUnit[unitName]["formatting"].name_length;
-					tag = tag .. "[name:" .. length .. "]"
-					local lvl = SV.db.SVUnit[unitName]["formatting"].smartlevel and "[smartlevel]" or "";
-					tag = tag .. lvl
-
-					MOD:ChangeDBVar(tag, "tags", unitName, "name");
-					updateFunction(MOD, unitName, count)
-				end,
-				args = {
-					name_colored = {
-						order = 1,
-						name = L["Colored"],
-						type = "toggle",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].name_colored end,
-						desc = L["Use various name coloring methods"]
-					},
-					smartlevel = {
-						order = 2,
-						name = L["Unit Level"],
-						type = "toggle",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].smartlevel end,
-						desc = L["Display the units level"]
-					},
-					name_length = {
-						order = 3,
-						name = L["Name Length"],
-						desc = L["TEXT_FORMAT_DESC"],
-						type = "range",
-						width = "full",
-						get = function() return SV.db.SVUnit[unitName]["formatting"].name_length end,
-						min = 1,
-						max = 30,
-						step = 1
-					}
-				}
-			}
-		}
-	}
-	return k
-end
-
-local function getAvailablePortraitConfig(unit)
-	local db = SV.db.SVUnit[unit].portrait;
-	if db.overlay then
-		return {["3D"] = L["3D"]}
-	else
-		return {["2D"] = L["2D"], ["3D"] = L["3D"]}
-	end
-end
-
-function ns:SetPortraitConfigGroup(updateFunction, unitName, count)
-	local k = {
-		order = 400,
-		type = "group",
-		name = L["Portrait"],
-		get = function(key)
-			return SV.db.SVUnit[unitName]["portrait"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "portrait")
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {
-			enable = {
-				type = "toggle",
-				order = 1,
-				name = L["Enable"]
-			},
-			styleGroup = {
-				order = 2,
-				type = "group",
-				guiInline = true,
-				name = L["Base Settings"],
-				args = {
-					style = {
-						order = 1,
-						type = "select",
-						name = L["Style"],
-						desc = L["Select the display method of the portrait. NOTE: if overlay is set then only 3D will be available"],
-						values = function() return getAvailablePortraitConfig(unitName) end
-					},
-					overlay = {
-						order = 2,
-						type = "toggle",
-						name = L["Overlay"],
-						desc = L["Overlay the healthbar"],
-						disabled = function() return SV.db.SVUnit[unitName]["portrait"].style == "2D" end
-					},
-					width = {
-						order = 3,
-						type = "range",
-						width = "full",
-						name = L["Width"],
-						min = 15,
-						max = 150,
-						step = 1,
-						disabled = function() return SV.db.SVUnit[unitName]["portrait"].overlay == true end
-					}
-				}
-			},
-			modGroup = {
-				order = 3,
-				type = "group",
-				guiInline = true,
-				name = L["3D Settings"],
-				disabled = function() return SV.db.SVUnit[unitName]["portrait"].style == "2D" end,
-				args = {
-					rotation = {
-						order = 1,
-						type = "range",
-						name = L["Model Rotation"],
-						min = 0,
-						max = 360,
-						step = 1
-					},
-					camDistanceScale = {
-						order = 2,
-						type = "range",
-						name = L["Camera Distance Scale"],
-						desc = L["How far away the portrait is from the camera."],
-						min = 0.01,
-						max = 4,
-						step = 0.01
-					},
-				}
-			}
-		}
-	}
-	return k
-end
-
-function ns:SetIconConfigGroup(updateFunction, unitName, count)
-	local iconGroup = SV.db.SVUnit[unitName]["icons"]
-	local grouporder = 1
-	local k = {
-		order = 5000,
-		type = "group",
-		name = L["Icons"],
-		get = function(key)
-			return SV.db.SVUnit[unitName]["icons"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "icons")
-			updateFunction(MOD, unitName, count)
-		end,
-		args = {}
-	};
-
-	if(iconGroup["raidicon"]) then
-		k.args.raidicon = {
-			order = grouporder,
-			type = "group",
-			guiInline = true,
-			name = L["Raid Marker"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["icons"]["raidicon"][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "raidicon")
-				updateFunction(MOD, unitName, count)
-			end,
-			args = {
-				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
-			}
-		}
-		grouporder = grouporder + 1
-	end
-
-	if(iconGroup["combatIcon"]) then
-		k.args.combatIcon = {
-			order = grouporder,
-			type = "group",
-			guiInline = true,
-			name = L["Combat"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["icons"]["combatIcon"][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "combatIcon")
-				updateFunction(MOD, unitName, count)
-			end,
-			args = {
-				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
-			}
-		}
-		grouporder = grouporder + 1
-	end
-
-	if(iconGroup["restIcon"]) then
-		k.args.restIcon = {
-			order = grouporder,
-			type = "group",
-			guiInline = true,
-			name = L["Resting"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["icons"]["restIcon"][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "restIcon")
-				updateFunction(MOD, unitName, count)
-			end,
-			args = {
-				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
-			}
-		}
-		grouporder = grouporder + 1
-	end
-
-	if(iconGroup["classicon"]) then
-		k.args.classicon = {
-			order = grouporder,
-			type = "group",
-			guiInline = true,
-			name = L["Class"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["icons"]["classicon"][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "classicon")
-				updateFunction(MOD, unitName, count)
-			end,
-			args = {
-				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
-			}
-		}
-		grouporder = grouporder + 1
-	end
-
-	if(iconGroup["eliteicon"]) then
-		k.args.eliteicon = {
-			order = grouporder,
-			type = "group",
-			guiInline = true,
-			name = L["Elite / Rare"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["icons"]["eliteicon"][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "eliteicon")
-				updateFunction(MOD, unitName, count)
-			end,
-			args = {
-				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
-			}
-		}
-		grouporder = grouporder + 1
-	end
-
-	if(iconGroup["roleIcon"]) then
-		k.args.roleIcon = {
-			order = grouporder,
-			type = "group",
-			guiInline = true,
-			name = L["Role"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["icons"]["roleIcon"][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "roleIcon")
-				updateFunction(MOD, unitName, count)
-			end,
-			args = {
-				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
-			}
-		}
-		grouporder = grouporder + 1
-	end
-
-	if(iconGroup["raidRoleIcons"]) then
-		k.args.raidRoleIcons = {
-			order = grouporder,
-			type = "group",
-			guiInline = true,
-			name = L["Leader / MasterLooter"],
-			get = function(key)
-				return SV.db.SVUnit[unitName]["icons"]["raidRoleIcons"][key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key], unitName, "icons", "raidRoleIcons")
-				updateFunction(MOD, unitName, count)
-			end,
-			args = {
-				enable = {type = "toggle", order = 1, name = L["Enable"]},
-				attachTo = {type = "select", order = 2, name = L["Position"], values = SV.PointIndexes},
-				size = {type = "range", name = L["Size"], width = "full", order = 3, min = 8, max = 60, step = 1},
-				xOffset = {order = 4, type = "range", name = L["xOffset"], width = "full", min = -300, max = 300, step = 1},
-				yOffset = {order = 5, type = "range", name = L["yOffset"], width = "full", min = -300, max = 300, step = 1}
-			}
-		}
-		grouporder = grouporder + 1
-	end
-
-	return k
-end
-
-function ns:SetAurabarConfigGroup(custom, updateFunction, unitName)
-	local k = {
-		order = 1100,
-		type = "group",
-		name = L["Aura Bars"],
-		get = function(key)
-			return SV.db.SVUnit[unitName]["aurabar"][key[#key]]
-		end,
-		set = function(key, value)
-			MOD:ChangeDBVar(value, key[#key], unitName, "aurabar")
-			updateFunction(MOD, unitName, count)
-			MOD:RefreshUnitFrames()
-		end,
-		args = {
-			enable = {
-				type = "toggle",
-				order = 1,
-				name = L["Enable"]
-			},
-			commonGroup = {
-				order = 2,
-				type = "group",
-				guiInline = true,
-				name = L["Base Settings"],
-				args = {
-					configureButton1 = {
-						order = 1,
-						name = L["Coloring"],
-						type = "execute", func = function()ACD:SelectGroup("SVUI", "SVUnit", "common", "allColorsGroup", "auraBars")end
-					},
-					configureButton2 = {
-						order = 2,
-						name = L["Coloring (Specific)"],
-						type = "execute", func = function()ns:SetToFilterConfig("AuraBar Colors")end
-					},
-					anchorPoint = {
-						type = "select",
-						order = 3,
-						name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {["ABOVE"] = L["Above"], ["BELOW"] = L["Below"]}
-					},
-					attachTo = {
-						type = "select",
-						order = 4,
-						name = L["Attach To"], desc = L["The object you want to attach to."],
-						values = {["FRAME"] = L["Frame"], ["DEBUFFS"] = L["Debuffs"], ["BUFFS"] = L["Buffs"]}
-					},
-					height = {
-						type = "range",
-						order = 5,
-						name = L["Height"], min = 6, max = 40, step = 1
-					},
-					statusbar = {
-						type = "select",
-						dialogControl = "LSM30_Statusbar",
-						order = 6,
-						name = L["StatusBar Texture"],
-						desc = L["Aurabar texture."],
-						values = AceGUIWidgetLSMlists.statusbar
-					}
-				}
-			},
-			filterGroup = {
-				order = 3,
-				type = "group",
-				guiInline = true,
-				name = L["Filtering and Sorting"],
-				args = {
-					sort = {
-						type = "select",
-						order = 7,
-						name = L["Sort Method"],
-						values = {["TIME_REMAINING"] = L["Time Remaining"], ["TIME_REMAINING_REVERSE"] = L["Time Remaining Reverse"], ["TIME_DURATION"] = L["Duration"], ["TIME_DURATION_REVERSE"] = L["Duration Reverse"], ["NAME"] = NAME, ["NONE"] = NONE}
-					},
-					filters = {
-						name = L["Filters"],
-						guiInline = true,
-						type = "group",
-						order = 500,
-						args = {}
-					},
-					friendlyAuraType = {
-						type = "select",
-						order = 16,
-						name = L["Friendly Aura Type"], desc = L["Set the type of auras to show when a unit is friendly."], values = {["HARMFUL"] = L["Debuffs"], ["HELPFUL"] = L["Buffs"]}
-					},
-					enemyAuraType = {
-						type = "select",
-						order = 17,
-						name = L["Enemy Aura Type"], desc = L["Set the type of auras to show when a unit is a foe."], values = {["HARMFUL"] = L["Debuffs"], ["HELPFUL"] = L["Buffs"]}
-					}
-				}
-			}
-		}
-	};
-	if custom then
-		k.args.filterGroup.args.filters.args.filterPlayer = {
-			order = 10,
-			type = "toggle",
-			name = L["Only Show Your Auras"], desc = L["Don't display auras that are not yours."]
-		}
-		k.args.filterGroup.args.filters.args.filterBlocked = {
-			order = 11,
-			type = "toggle",
-			name = L["Force Blocked List"], desc = L["Don't display any auras found on the Blocked filter."]
-		}
-		k.args.filterGroup.args.filters.args.filterAllowed = {
-			order = 12,
-			type = "toggle",
-			name = L["Force Allowed List"], desc = L["If no other filter options are being used then it will block anything not on the Allowed filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."]
-		}
-		k.args.filterGroup.args.filters.args.filterInfinite = {
-			order = 13,
-			type = "toggle",
-			name = L["Block Auras Without Duration"], desc = L["Don't display auras that have no duration."]
-		}
-		k.args.filterGroup.args.filters.args.filterDispellable = {
-			order = 13,
-			type = "toggle",
-			name = L["Block Non-Dispellable Auras"], desc = L["Don't display auras that cannot be purged or dispelled by your class."]
-		}
-		k.args.filterGroup.args.filters.args.filterRaid = {
-			order = 14,
-			type = "toggle",
-			name = L["Block Raid Buffs"], desc = L["Don't display raid buffs such as Blessing of Kings or Mark of the Wild."]
-		}
-		k.args.filterGroup.args.filters.args.useFilter = {
-			order = 15,
-			name = L["Additional Filter"],
-			desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Only Show Your Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
-			type = "select",
-			values = function()
-				filterList = {}
-				filterList[""] = NONE;
-				for n in pairs(SV.db.filter)do
-					filterList[n] = n
-				end
-				return filterList
-			end
-		}
-	else
-		k.args.filterGroup.args.filters.args.filterPlayer = {
-			order = 10, guiInline = true,
-			type = "group",
-			name = L["Only Show Your Auras"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display auras that are not yours."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterPlayer.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterPlayer.friendly = m;updateFunction(MOD, unitName)end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that are not yours."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterPlayer.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterPlayer.enemy = m;updateFunction(MOD, unitName)end
-				}
-			}
-		}
-		k.args.filterGroup.args.filters.args.filterBlocked = {
-			order = 11, guiInline = true,
-			type = "group",
-			name = L["Force Blocked List"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display any auras found on the Blocked filter."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterBlocked.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterBlocked.friendly = m;updateFunction(MOD, unitName)end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display any auras found on the Blocked filter."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterBlocked.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterBlocked.enemy = m;updateFunction(MOD, unitName)end
-				}
-			}
-		}
-		k.args.filterGroup.args.filters.args.filterAllowed = {
-			order = 12, guiInline = true,
-			type = "group",
-			name = L["Force Allowed List"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterAllowed.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterAllowed.friendly = m;updateFunction(MOD, unitName)end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["If no other filter options are being used then it will block anything not on the Allowed filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterAllowed.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterAllowed.enemy = m;updateFunction(MOD, unitName)end
-				}
-			}
-		}
-		k.args.filterGroup.args.filters.args.filterInfinite = {
-			order = 13, guiInline = true,
-			type = "group",
-			name = L["Block Auras Without Duration"],
-			args = {
-				friendly = {
-					order = 2,
-					type = "toggle",
-					name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display auras that have no duration."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterInfinite.friendly end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterInfinite.friendly = m;updateFunction(MOD, unitName)end
-				},
-				enemy = {
-					order = 3,
-					type = "toggle",
-					name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that have no duration."],
-					get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterInfinite.enemy end,
-					set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterInfinite.enemy = m;updateFunction(MOD, unitName)end
-				}
-			}
-		}
-		k.args.filterGroup.args.filters.args.filterDispellable = {
-			order = 13, guiInline = true,
-			type = "group",
-			name = L["Block Non-Dispellable Auras"],
-			args = {
-				friendly = {
-				order = 2,
-				type = "toggle",
-				name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
-				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterDispellable.friendly end,
-				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterDispellable.friendly = m;updateFunction(MOD, unitName)end}, enemy = {
-				order = 3,
-				type = "toggle",
-				name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that cannot be purged or dispelled by your class."],
-				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterDispellable.enemy end,
-				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterDispellable.enemy = m;updateFunction(MOD, unitName)end}
-			}
-		}
-		k.args.filterGroup.args.filters.args.filterRaid = {
-			order = 14, guiInline = true,
-			type = "group",
-			name = L["Block Raid Buffs"],
-			args = {
-				friendly = {
-				order = 2,
-				type = "toggle",
-				name = L["Friendly"], desc = L["If the unit is friendly to you."].." "..L["Don't display raid buffs such as Blessing of Kings or Mark of the Wild."],
-				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterRaid.friendly end,
-				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterRaid.friendly = m;updateFunction(MOD, unitName)end}, enemy = {
-				order = 3,
-				type = "toggle",
-				name = L["Enemy"], desc = L["If the unit is an enemy to you."].." "..L["Don't display raid buffs such as Blessing of Kings or Mark of the Wild."],
-				get = function(l)return SV.db.SVUnit[unitName]["aurabar"].filterRaid.enemy end,
-				set = function(l, m)SV.db.SVUnit[unitName]["aurabar"].filterRaid.enemy = m;updateFunction(MOD, unitName)end}
-			}
-		}
-		k.args.filterGroup.args.filters.args.useFilter = {
-			order = 15,
-			name = L["Additional Filter"],
-			desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Only Show Your Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
-			type = "select",
-			values = function()
-				filterList = {}
-				filterList[""] = NONE;
-				for n in pairs(SV.db.filter)do
-					filterList[n] = n
-				end
-				return filterList
-			end
-		}
-	end
-	return k
-end
-
-SV.Options.args.SVUnit = {
-	type = "group",
-	name = L["UnitFrames"],
-	childGroups = "tree",
-	get = function(key)
-		return SV.db.SVUnit[key[#key]]
-	end,
-	set = function(key, value)
-		MOD:ChangeDBVar(value, key[#key]);
-		MOD:RefreshUnitFrames();
-	end,
-	args = {
-		enable = {
-			order = 1,
-			type = "toggle",
-			name = L["Enable"],
-			get = function(l)
-				return SV.db.SVUnit.enable end,
-			set = function(l, m)
-				SV.db.SVUnit.enable = m;
-				SV:StaticPopup_Show("RL_CLIENT")
-			end
-		},
-		common = {
-			order = 2,
-			type = "group",
-			name = L["General"],
-			guiInline = true,
-			disabled = function()
-				return not SV.db.SVUnit.enable
-			end,
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					guiInline = true,
-					name = L["General"],
-					args = {
-						disableBlizzard = {
-							order = 1,
-							name = L["Disable Blizzard"],
-							desc = L["Disables the blizzard party/raid frames."],
-							type = "toggle",
-							get = function(key)
-								return SV.db.SVUnit.disableBlizzard
-							end,
-							set = function(key, value)
-								MOD:ChangeDBVar(value, "disableBlizzard");
-								SV:StaticPopup_Show("RL_CLIENT")
-							end
-						},
-						fastClickTarget = {
-							order = 2,
-							name = L["Fast Clicks"],
-							desc = L["Immediate mouse-click-targeting"],
-							type = "toggle"
-						},
-						debuffHighlighting = {
-							order = 3,
-							name = L["Debuff Highlight"],
-							desc = L["Color the unit if there is a debuff that can be dispelled by your class."],
-							type = "toggle"
-						},
-						xrayFocus = {
-							order = 4,
-							name = L["X-Ray Specs"],
-							desc = L["Use handy graphics to focus the current target, or clear the current focus"],
-							type = "toggle"
-						},
-						gpsLowHealth = {
-							order = 5,
-							name = "GPS Proximity",
-							desc = "When using GPS tracking with raid/party frames, only show the tracker for the closest injured player. Useful for healers!",
-							type = "toggle"
-						},
-						OORAlpha = {
-							order = 6,
-							name = L["Range Fading"],
-							desc = L["The transparency of units that are out of range."],
-							type = "range",
-							min = 0,
-							max = 1,
-							step = 0.01,
-							width = "full",
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key]);
-							end
-						},
-						groupOORAlpha = {
-							order = 7,
-							name = L["Group Range Fading"],
-							desc = L["The transparency of group units that are out of range."],
-							type = "range",
-							min = 0,
-							max = 1,
-							step = 0.01,
-							width = "full",
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key]);
-							end
-						},
-					}
-				},
-				backgroundGroup = {
-					order = 2,
-					type = "group",
-					guiInline = true,
-					name = "Unit Backgrounds (3D Portraits Only)",
-					get = function(key)
-						return SV.db.media.textures[key[#key]]
-					end,
-					set = function(key, value)
-						SV.db.media.textures[key[#key]] = {"background", value}
-						SV:RefreshEverything(true)
-					end,
-					args = {
-						unitlarge = {
-							type = "select",
-							dialogControl = "LSM30_Background",
-							order = 2,
-							name = "Unit Background",
-							values = AceGUIWidgetLSMlists.background,
-						},
-						unitsmall = {
-							type = "select",
-							dialogControl = "LSM30_Background",
-							order = 3,
-							name = "Small Unit Background",
-							values = AceGUIWidgetLSMlists.background,
-						}
-					}
-				},
-				barGroup = {
-					order = 3,
-					type = "group",
-					guiInline = true,
-					name = L["Bars"],
-					get = function(key)
-						return SV.db.SVUnit[key[#key]]
-					end,
-					set = function(key, value)
-						MOD:ChangeDBVar(value, key[#key]);
-						MOD:RefreshAllUnitMedia()
-					end,
-					args = {
-						smoothbars = {
-							type = "toggle",
-							order = 1,
-							name = L["Smooth Bars"],
-							desc = L["Bars will transition smoothly."]
-						},
-						statusbar = {
-							type = "select",
-							dialogControl = "LSM30_Statusbar",
-							order = 2,
-							name = L["StatusBar Texture"],
-							desc = L["Main statusbar texture."],
-							values = AceGUIWidgetLSMlists.statusbar
-						},
-						auraBarStatusbar = {
-							type = "select",
-							dialogControl = "LSM30_Statusbar",
-							order = 3,
-							name = L["AuraBar Texture"],
-							desc = L["Main statusbar texture."],
-							values = AceGUIWidgetLSMlists.statusbar
-						},
-					}
-				},
-				fontGroup = {
-					order = 4,
-					type = "group",
-					guiInline = true,
-					name = L["Fonts"],
-					set = function(key, value)
-						MOD:ChangeDBVar(value, key[#key]);
-						MOD:RefreshAllUnitMedia()
-					end,
-					args = {
-						font = {
-							type = "select",
-							dialogControl = "LSM30_Font",
-							order = 1,
-							name = L["Default Font"],
-							desc = L["The font that the unitframes will use."],
-							values = AceGUIWidgetLSMlists.font,
-						},
-						fontOutline = {
-							order = 2,
-							name = L["Font Outline"],
-							desc = L["Set the font outline."],
-							type = "select",
-							values = {
-								["NONE"] = L["None"], ["OUTLINE"] = "OUTLINE", ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE", ["THICKOUTLINE"] = "THICKOUTLINE"
-							},
-						},
-						fontSize = {
-							order = 3,
-							name = L["Font Size"],
-							desc = L["Set the font size for unitframes."],
-							type = "range",
-							min = 6,
-							max = 22,
-							step = 1,
-						},
-						auraFont = {
-							type = "select",
-							dialogControl = "LSM30_Font",
-							order = 4,
-							name = L["Aura Font"],
-							desc = L["The font that the aura icons and aurabar will use."],
-							values = AceGUIWidgetLSMlists.font,
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key]);
-								MOD:RefreshAllUnitMedia()
-							end,
-						},
-						auraFontOutline = {
-							order = 5,
-							name = L["Aura Font Outline"],
-							desc = L["Set the aura icons and aurabar font outline."],
-							type = "select",
-							values = {
-								["NONE"] = L["None"], ["OUTLINE"] = "OUTLINE", ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE", ["THICKOUTLINE"] = "THICKOUTLINE"
-							},
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key]);
-								MOD:RefreshAllUnitMedia()
-							end,
-						},
-						auraFontSize = {
-							order = 6,
-							name = L["Aura Font Size"],
-							desc = L["Set the font size for aura icons and aurabars."],
-							type = "range",
-							min = 6,
-							max = 22,
-							step = 1,
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key]);
-								MOD:RefreshAllUnitMedia()
-							end,
-						},
-					}
-				},
-				allColorsGroup = {
-					order = 5,
-					type = "group",
-					guiInline = true,
-					name = L["Colors"],
-					args = {
-						healthGroup = {
-							order = 9,
-							type = "group", guiInline = true,
-							name = HEALTH,
-							args = {
-								healthclass = {
-									order = 1,
-									type = "toggle",
-									name = L["Class Health"],
-									desc = L["Color health by classcolor or reaction."],
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								colorhealthbyvalue = {
-									order = 2,
-									type = "toggle",
-									name = L["Health By Value"],
-									desc = L["Color health by amount remaining."],
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								classbackdrop = {
-									order = 3,
-									type = "toggle",
-									name = L["Class Backdrop"],
-									desc = L["Color the health backdrop by class or reaction."],
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								forceHealthColor = {
-									order = 4,
-									type = "toggle",
-									name = L["Overlay Health Color"],
-									desc = L["Force custom health color when using portrait overlays."],
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								overlayAnimation = {
-									order = 5,
-									type = "toggle",
-									name = L["Overlay Animations"],
-									desc = L["Toggle health animations on portrait overlays."],
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								health = {
-									order = 7,
-									type = "color",
-									name = L["Health"],
-									get = function(key)
-										local color = SV.db.media.unitframes.health
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.health = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								tapped = {
-									order = 8,
-									type = "color",
-									name = L["Tapped"],
-									get = function(key)
-										local color = SV.db.media.unitframes.tapped
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.tapped = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								disconnected = {
-									order = 9,
-									type = "color",
-									name = L["Disconnected"],
-									get = function(key)
-										local color = SV.db.media.unitframes.disconnected
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.disconnected = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								}
-							}
-						},
-						powerGroup = {
-							order = 10,
-							type = "group",
-							guiInline = true,
-							name = L["Powers"],
-							args = {
-								powerclass = {
-									order = 0,
-									type = "toggle",
-									name = L["Class Power"],
-									desc = L["Color power by classcolor or reaction."],
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								MANA = {
-									order = 2,
-									name = MANA,
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.power["MANA"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.power["MANA"] = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								RAGE = {
-									order = 3,
-									name = RAGE,
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.power["RAGE"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.power["RAGE"] = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								FOCUS = {
-									order = 4,
-									name = FOCUS,
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.power["FOCUS"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.power["FOCUS"] = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								ENERGY = {
-									order = 5,
-									name = ENERGY,
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.power["ENERGY"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.power["ENERGY"] = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								RUNIC_POWER = {
-									order = 6,
-									name = RUNIC_POWER,
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.power["RUNIC_POWER"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.power["RUNIC_POWER"] = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								}
-							}
-						},
-						castBars = {
-							order = 11,
-							type = "group",
-							guiInline = true,
-							name = L["Castbar"],
-							args = {
-								castClassColor = {
-									order = 0,
-									type = "toggle",
-									name = L["Class Castbars"],
-									desc = L["Color castbars by the class or reaction type of the unit."],
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								casting = {
-									order = 3,
-									name = L["Interruptable"],
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.casting
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.casting = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								spark = {
-									order = 4,
-									name = "Spark Color",
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.spark
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.spark = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								interrupt = {
-									order = 5,
-									name = L["Non-Interruptable"],
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.interrupt
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.interrupt = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								}
-							}
-						},
-						auraBars = {
-							order = 11,
-							type = "group",
-							guiInline = true,
-							name = L["Aura Bars"],
-							args = {
-								auraBarByType = {
-									order = 1,
-									name = L["By Type"],
-									desc = L["Color aurabar debuffs by type."],
-									type = "toggle",
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								auraBarShield = {
-									order = 2,
-									name = L["Color Shield Buffs"],
-									desc = L["Color all buffs that reduce incoming damage."],
-									type = "toggle",
-									get = function(key)
-										return SV.db.SVUnit[key[#key]]
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, key[#key]);
-										MOD:RefreshUnitFrames()
-									end
-								},
-								buff_bars = {
-									order = 10,
-									name = L["Buffs"],
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.buff_bars
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.buff_bars = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								debuff_bars = {
-									order = 11,
-									name = L["Debuffs"],
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.debuff_bars
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.debuff_bars = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								},
-								shield_bars = {
-									order = 12,
-									name = L["Shield Buffs Color"],
-									type = "color",
-									get = function(key)
-										local color = SV.db.media.unitframes.shield_bars
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.shield_bars = {rValue, gValue, bValue}
-										MOD:RefreshAllUnitMedia()
-									end,
-								}
-							}
-						},
-						predict = {
-							order = 12,
-							name = L["Heal Prediction"],
-							type = "group",
-							args = {
-								personal = {
-									order = 1,
-									name = L["Personal"],
-									type = "color",
-									hasAlpha = true,
-									get = function(key)
-										local color = SV.db.media.unitframes.predict["personal"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.predict["personal"] = {rValue, gValue, bValue}
-										MOD:RefreshUnitFrames()
-									end,
-								},
-								others = {
-									order = 2,
-									name = L["Others"],
-									type = "color",
-									hasAlpha = true,
-									get = function(key)
-										local color = SV.db.media.unitframes.predict["others"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.predict["others"] = {rValue, gValue, bValue}
-										MOD:RefreshUnitFrames()
-									end,
-								},
-								absorbs = {
-									order = 2,
-									name = L["Absorbs"],
-									type = "color",
-									hasAlpha = true,
-									get = function(key)
-										local color = SV.db.media.unitframes.predict["absorbs"]
-										return color[1],color[2],color[3]
-									end,
-									set = function(key, rValue, gValue, bValue)
-										SV.db.media.unitframes.predict["absorbs"] = {rValue, gValue, bValue}
-										MOD:RefreshUnitFrames()
-									end,
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/focus.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/focus.lua
deleted file mode 100644
index e1f1b38..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/focus.lua
+++ /dev/null
@@ -1,215 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.focus = {
-	name = L["Focus Frame"],
-	type = "group",
-	order = 9,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["focus"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "focus");MOD:SetUnitFrame("focus")end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("focus");SV:ResetMovables("Focus Frame")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						baseGroup = {
-							order = 1,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								showAuras = {
-									order = 1,
-									type = "execute",
-									name = L["Show Auras"],
-									func = function()local U = SVUI_Focus;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("focus")end
-								},
-								smartAuraDisplay = {
-									type = "select",
-									name = L["Smart Auras"],
-									desc = L["When set the Buffs and Debuffs will toggle being displayed depending on if the unit is friendly or an enemy. This will not effect the aurabars package."],
-									order = 2,
-									values = {["DISABLED"] = L["Disabled"], ["SHOW_DEBUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Debuffs"], ["SHOW_BUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Buffs"]}
-								},
-								rangeCheck = {
-									order = 3,
-									name = L["Range Check"],
-									desc = L["Check if you are in range to cast spells on this specific unit."],
-									type = "toggle"
-								},
-								predict = {
-									order = 4,
-									name = L["Heal Prediction"],
-									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
-									type = "toggle"
-								},
-								hideonnpc = {
-									type = "toggle",
-									order = 5,
-									name = L["Text Toggle On NPC"],
-									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-									get = function(l)return SV.db.SVUnit["focus"]["power"].hideonnpc end,
-									set = function(l, m)SV.db.SVUnit["focus"]["power"].hideonnpc = m;MOD:SetUnitFrame("focus")end
-								},
-								threatEnabled = {
-									type = "toggle",
-									order = 6,
-									name = L["Show Threat"]
-								}
-							}
-						},
-						sizeGroup = {
-							order = 2,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								width = {
-									order = 1,
-									name = L["Width"],
-									type = "range",
-									width = "full",
-									min = 50,
-									max = 500,
-									step = 1,
-								},
-								height = {
-									order = 2,
-									name = L["Height"],
-									type = "range",
-									width = "full",
-									min = 10,
-									max = 250,
-									step = 1
-								},
-							}
-						},
-					}
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "focus"),
-				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "focus"),
-				power = ns:SetPowerConfigGroup(nil, MOD.SetUnitFrame, "focus"),
-				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "focus"),
-				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "focus"),
-				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "focus"),
-				castbar = ns:SetCastbarConfigGroup(MOD.SetUnitFrame, "focus"),
-				aurabar = ns:SetAurabarConfigGroup(false, MOD.SetUnitFrame, "focus"),
-				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "focus")
-			}
-		}
-	}
-}
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.focustarget = {
-	name = L["FocusTarget Frame"],
-	type = "group",
-	order = 10,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["focustarget"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "focustarget");MOD:SetUnitFrame("focustarget")end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("focustarget")SV:ResetMovables("FocusTarget Frame")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						baseGroup = {
-							order = 1,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								showAuras = {order = 1, type = "execute", name = L["Show Auras"], func = function()local U = SVUI_FocusTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("focustarget")end},
-								spacer1 = {
-									order = 2,
-									type = "description",
-									name = "",
-								},
-								rangeCheck = {order = 3, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
-								hideonnpc = {type = "toggle", order = 4, name = L["Text Toggle On NPC"], desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."], get = function(l)return SV.db.SVUnit["focustarget"]["power"].hideonnpc end, set = function(l, m)SV.db.SVUnit["focustarget"]["power"].hideonnpc = m;MOD:SetUnitFrame("focustarget")end},
-								threatEnabled = {type = "toggle", order = 5, name = L["Show Threat"]}
-							}
-						},
-						sizeGroup = {
-							order = 2,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								width = {order = 1, width = "full", name = L["Width"], type = "range", min = 50, max = 500, step = 1},
-								height = {order = 2, width = "full", name = L["Height"], type = "range", min = 10, max = 250, step = 1},
-							}
-						},
-					}
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "focustarget"),
-				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "focustarget"),
-				power = ns:SetPowerConfigGroup(false, MOD.SetUnitFrame, "focustarget"),
-				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "focustarget"),
-				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "focustarget"),
-				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "focustarget"),
-				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "focustarget")
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/grid.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/grid.lua
deleted file mode 100644
index 8f0c089..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/grid.lua
+++ /dev/null
@@ -1,173 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.grid = {
-	name = L["Grid Frames"],
-	type = "group",
-	order = 1200,
-	childGroups = "tab",
-	args = {
-		configureToggle = {
-			order = 1,
-			type = "execute",
-			name = L["Display Frames"],
-			func = function()MOD:UpdateGroupConfig(_G["SVUI_Raid40"], _G["SVUI_Raid40"].forceShow ~= true or nil)end,
-		},
-		gridCommon = {
-			order = 2,
-			type = "group",
-			guiInline = true,
-			name = L["General Settings"],
-			get = function(key)
-				return SV.db.SVUnit.grid[key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key] , "grid");
-				MOD:RefreshUnitFrames();
-			end,
-			args = {
-				enable = {
-					order = 1,
-					name = L["Enable Grid Mode"],
-					desc = L["Converts party, party pet, raid, raid pet, tank and assist frames into symmetrical squares. Ideal for healers."],
-					type = "toggle"
-				},
-				shownames = {
-					order = 2,
-					name = L["Show Grid Names"],
-					desc = L["Grid frames will show name texts."],
-					type = "toggle",
-					set = function(key, value)
-						if(SV.db.SVUnit.grid.size < 30) then MOD:ChangeDBVar(30, "size", "grid"); end
-						MOD:ChangeDBVar(value, "shownames", "grid");
-						MOD:RefreshUnitFrames();
-					end
-				},
-				size = {
-					order = 3,
-					name = L["Grid Size"],
-					desc = L["The universal size of grid squares."],
-					type = "range",
-					min = 10,
-					max = 70,
-					step = 1,
-					width = "full"
-				},
-			}
-		},
-		gridAllowed = {
-			order = 3,
-			type = "group",
-			guiInline = true,
-			name = L["Allowed Frames"],
-			get = function(key)
-				return SV.db.SVUnit.grid[key[#key]]
-			end,
-			set = function(key, value)
-				MOD:ChangeDBVar(value, key[#key] , "grid");
-				MOD:RefreshUnitFrames();
-			end,
-			args = {
-				party = {
-					type = 'toggle',
-					order = 1,
-					name = L['Party Grid'],
-					desc = L['If grid-mode is enabled, these units will be changed.'],
-					get = function(key) return SV.db.SVUnit.party.gridAllowed end,
-					set = function(key, value) SV.db.SVUnit.party.gridAllowed = value; MOD:SetGroupFrame("party") end,
-				},
-				partypets = {
-					type = 'toggle',
-					order = 2,
-					name = L['Party Pets Grid'],
-					desc = L['If grid-mode is enabled, these units will be changed.'],
-					get = function(key) return SV.db.SVUnit.party.petsGroup.gridAllowed end,
-					set = function(key, value) SV.db.SVUnit.party.petsGroup.gridAllowed = value; MOD:SetGroupFrame("party") end,
-				},
-				partytargets = {
-					type = 'toggle',
-					order = 3,
-					name = L['Party Targets Grid'],
-					desc = L['If grid-mode is enabled, these units will be changed.'],
-					get = function(key) return SV.db.SVUnit.party.targetsGroup.gridAllowed end,
-					set = function(key, value) SV.db.SVUnit.party.targetsGroup.gridAllowed = value; MOD:SetGroupFrame("party") end,
-				},
-				raid10 = {
-					type = 'toggle',
-					order = 4,
-					name = L['Raid 10 Grid'],
-					desc = L['If grid-mode is enabled, these units will be changed.'],
-					get = function(key) return SV.db.SVUnit.raid10.gridAllowed end,
-					set = function(key, value) SV.db.SVUnit.raid10.gridAllowed = value; MOD:SetGroupFrame("raid10") end,
-				},
-				raid25 = {
-					type = 'toggle',
-					order = 5,
-					name = L['Raid 25 Grid'],
-					desc = L['If grid-mode is enabled, these units will be changed.'],
-					get = function(key) return SV.db.SVUnit.raid25.gridAllowed end,
-					set = function(key, value) SV.db.SVUnit.raid25.gridAllowed = value; MOD:SetGroupFrame("raid25") end,
-				},
-				raid40 = {
-					type = 'toggle',
-					order = 6,
-					name = L['Raid 40 Grid'],
-					desc = L['If grid-mode is enabled, these units will be changed.'],
-					get = function(key) return SV.db.SVUnit.raid40.gridAllowed end,
-					set = function(key, value) SV.db.SVUnit.raid40.gridAllowed = value; MOD:SetGroupFrame("raid40") end,
-				},
-				raidpet = {
-					type = 'toggle',
-					order = 4,
-					name = L['Raid Pet Grid'],
-					desc = L['If grid-mode is enabled, these units will be changed.'],
-					get = function(key) return SV.db.SVUnit.raidpet.gridAllowed end,
-					set = function(key, value) SV.db.SVUnit.raidpet.gridAllowed = value; MOD:SetGroupFrame("raidpet") end,
-				},
-			}
-		},
-	}
-}
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/other.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/other.lua
deleted file mode 100644
index e594739..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/other.lua
+++ /dev/null
@@ -1,376 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.boss = {
-	name = L["Boss Frames"],
-	type = "group",
-	order = 1000,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["boss"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "boss");MOD:SetEnemyFrames("boss", MAX_BOSS_FRAMES)end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		displayFrames = {type = "execute", order = 2, name = L["Display Frames"], desc = L["Force the frames to show, they will act as if they are the player frame."], func = function()MOD:SwapElement("boss", 4)end},
-		resetSettings = {type = "execute", order = 3, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("boss")SV:ResetMovables("Boss Frames")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						baseGroup = {
-							order = 1,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								showBy = {order = 1, name = L["Growth Direction"], type = "select", values = {["UP"] = L["Up"], ["DOWN"] = L["Down"]}},
-								spacer1 = {
-									order = 2,
-									type = "description",
-									name = "",
-								},
-								rangeCheck = {order = 3, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
-								hideonnpc = {type = "toggle", order = 4, name = L["Text Toggle On NPC"], desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."], get = function(l)return SV.db.SVUnit["boss"]["power"].hideonnpc end, set = function(l, m)SV.db.SVUnit["boss"]["power"].hideonnpc = m;MOD:SetEnemyFrames("boss")end},
-								threatEnabled = {type = "toggle", order = 5, name = L["Show Threat"]}
-							}
-						},
-						sizeGroup = {
-							order = 2,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								width = {order = 1, width = "full", name = L["Width"], type = "range", min = 50, max = 500, step = 1},
-								height = {order = 2, width = "full", name = L["Height"], type = "range", min = 10, max = 250, step = 1},
-							}
-						},
-					}
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				health = ns:SetHealthConfigGroup(false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				power = ns:SetPowerConfigGroup(false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				name = ns:SetNameConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				portrait = ns:SetPortraitConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				buffs = ns:SetAuraConfigGroup(true, "buffs", false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				debuffs = ns:SetAuraConfigGroup(true, "debuffs", false, MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				castbar = ns:SetCastbarConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES),
-				icons = ns:SetIconConfigGroup(MOD.SetEnemyFrames, "boss", MAX_BOSS_FRAMES)
-			}
-		}
-	}
-}
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.arena = {
-	name = L["Arena Frames"],
-	type = "group",
-	order = 1100,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["arena"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "arena");MOD:SetEnemyFrames("arena", 5)end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		displayFrames = {type = "execute", order = 2, name = L["Display Frames"], desc = L["Force the frames to show, they will act as if they are the player frame."], func = function()MOD:SwapElement("arena", 5)end},
-		resetSettings = {type = "execute", order = 3, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("arena")SV:ResetMovables("Arena Frames")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						baseGroup = {
-							order = 1,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								showBy = {order = 1, name = L["Growth Direction"], type = "select", values = {["UP"] = L["Up"], ["DOWN"] = L["Down"]}},
-								spacer1 = {
-									order = 2,
-									type = "description",
-									name = "",
-								},
-								predict = {order = 3, name = L["Heal Prediction"], desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."], type = "toggle"},
-								rangeCheck = {order = 4, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
-								hideonnpc = {type = "toggle", order = 5, name = L["Text Toggle On NPC"], desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."], get = function(l)return SV.db.SVUnit["arena"]["power"].hideonnpc end, set = function(l, m)SV.db.SVUnit["arena"]["power"].hideonnpc = m;MOD:SetEnemyFrames("arena")end},
-								threatEnabled = {type = "toggle", order = 6, name = L["Show Threat"]}
-							}
-						},
-						sizeGroup = {
-							order = 2,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								width = {order = 1, width = "full", name = L["Width"], type = "range", min = 50, max = 500, step = 1},
-								height = {order = 2, width = "full", name = L["Height"], type = "range", min = 10, max = 250, step = 1},
-							}
-						},
-						pvp = {
-							order = 3,
-							guiInline = true,
-							type = "group",
-							name = L["PVP Indicators"],
-							args = {
-								enable = {
-									type = "toggle",
-									order = 1,
-									name = L["Enable"],
-									get = function(l)return SV.db.SVUnit.arena.pvp.enable end,
-									set = function(l, m)MOD:ChangeDBVar(m, "enable", "arena", "pvp");MOD:SetEnemyFrames("arena", 5)end,
-								},
-								trinketGroup = {
-									order = 2,
-									guiInline = true,
-									type = "group",
-									name = L["Trinkets"],
-									get = function(l)return SV.db.SVUnit.arena.pvp[l[#l]]end,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "arena", "pvp");MOD:SetEnemyFrames("arena", 5)end,
-									disabled = function() return not SV.db.SVUnit.arena.pvp.enable end,
-									args = {
-										trinketPosition = {
-											type = "select",
-											order = 1,
-											name = L["Position"],
-											values = {
-												["LEFT"] = L["Left"],
-												["RIGHT"] = L["Right"]
-											}
-										},
-										trinketSize = {
-											order = 2,
-											type = "range",
-											name = L["Size"],
-											min = 10,
-											max = 60,
-											step = 1
-										},
-										trinketX = {
-											order = 3,
-											type = "range",
-											name = L["xOffset"],
-											min = -60,
-											max = 60,
-											step = 1
-										},
-										trinketY = {
-											order = 4,
-											type = "range",
-											name = L["yOffset"],
-											min = -60,
-											max = 60,
-											step = 1
-										}
-									}
-								},
-								specGroup = {
-									order = 3,
-									guiInline = true,
-									type = "group",
-									name = L["Enemy Specs"],
-									get = function(l)return SV.db.SVUnit.arena.pvp[l[#l]]end,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "arena", "pvp");MOD:SetEnemyFrames("arena", 5)end,
-									disabled = function() return not SV.db.SVUnit.arena.pvp.enable end,
-									args = {
-										specPosition = {
-											type = "select",
-											order = 1,
-											name = L["Position"],
-											values = {
-												["LEFT"] = L["Left"],
-												["RIGHT"] = L["Right"]
-											}
-										},
-										specSize = {
-											order = 2,
-											type = "range",
-											name = L["Size"],
-											min = 10,
-											max = 60,
-											step = 1
-										},
-										specX = {
-											order = 3,
-											type = "range",
-											name = L["xOffset"],
-											min = -60,
-											max = 60,
-											step = 1
-										},
-										specY = {
-											order = 4,
-											type = "range",
-											name = L["yOffset"],
-											min = -60,
-											max = 60,
-											step = 1
-										}
-									}
-								}
-							}
-						},
-					}
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetEnemyFrames, "arena", 5),
-				health = ns:SetHealthConfigGroup(false, MOD.SetEnemyFrames, "arena", 5),
-				power = ns:SetPowerConfigGroup(false, MOD.SetEnemyFrames, "arena", 5),
-				name = ns:SetNameConfigGroup(MOD.SetEnemyFrames, "arena", 5),
-				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetEnemyFrames, "arena", 5),
-				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetEnemyFrames, "arena", 5),
-				castbar = ns:SetCastbarConfigGroup(MOD.SetEnemyFrames, "arena", 5)
-			}
-		}
-	}
-}
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.tank = {
-	name = L["Tank Frames"],
-	type = "group",
-	order = 1200,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["tank"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "tank");MOD:SetGroupFrame("tank")end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("tank")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						width = {order = 2, name = L["Width"], type = "range", min = 50, max = 500, step = 1},
-						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1}
-					}
-				},
-				targetsGroup = {
-					order = 2,
-					type = "group",
-					name = L["Tank Target"],
-					guiInline = true,
-					get = function(l)return SV.db.SVUnit["tank"]["targetsGroup"][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "tank", "targetsGroup");MOD:SetGroupFrame("tank")end,
-					args = {
-						enable = {type = "toggle", name = L["Enable"], order = 1},
-						width = {order = 2, name = L["Width"], type = "range", min = 10, max = 500, step = 1},
-						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1},
-						anchorPoint = {type = "select", order = 5, name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {TOPLEFT = "TOPLEFT", LEFT = "LEFT", BOTTOMLEFT = "BOTTOMLEFT", RIGHT = "RIGHT", TOPRIGHT = "TOPRIGHT", BOTTOMRIGHT = "BOTTOMRIGHT", CENTER = "CENTER", TOP = "TOP", BOTTOM = "BOTTOM"}},
-						xOffset = {order = 6, type = "range", name = L["xOffset"], desc = L["An X offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1},
-						yOffset = {order = 7, type = "range", name = L["yOffset"], desc = L["An Y offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1}
-					}
-				}
-			}
-		}
-	}
-}
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.assist = {
-	name = L["Assist Frames"],
-	type = "group",
-	order = 1300,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["assist"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "assist");MOD:SetGroupFrame("assist")end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("assist")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						width = {order = 2, name = L["Width"], type = "range", min = 50, max = 500, step = 1},
-						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1}
-					}
-				},
-				targetsGroup = {
-					order = 4,
-					type = "group",
-					name = L["Assist Target"],
-					guiInline = true,
-					get = function(l)return SV.db.SVUnit["assist"]["targetsGroup"][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "assist", "targetsGroup");MOD:SetGroupFrame("assist")end,
-					args = {
-						enable = {type = "toggle", name = L["Enable"], order = 1},
-						width = {order = 2, name = L["Width"], type = "range", min = 10, max = 500, step = 1},
-						height = {order = 3, name = L["Height"], type = "range", min = 10, max = 250, step = 1},
-						anchorPoint = {type = "select", order = 5, name = L["Anchor Point"], desc = L["What point to anchor to the frame you set to attach to."], values = {TOPLEFT = "TOPLEFT", LEFT = "LEFT", BOTTOMLEFT = "BOTTOMLEFT", RIGHT = "RIGHT", TOPRIGHT = "TOPRIGHT", BOTTOMRIGHT = "BOTTOMRIGHT", CENTER = "CENTER", TOP = "TOP", BOTTOM = "BOTTOM"}},
-						xOffset = {order = 6, type = "range", name = L["xOffset"], desc = L["An X offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1},
-						yOffset = {order = 7, type = "range", name = L["yOffset"], desc = L["An Y offset (in pixels) to be used when anchoring new frames."], min = -500, max = 500, step = 1}
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/party.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/party.lua
deleted file mode 100644
index 6f2449d..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/party.lua
+++ /dev/null
@@ -1,485 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
-
-SV.Options.args.SVUnit.args.party = {
-	name = L['Party Frames'],
-	type = 'group',
-	order = 11,
-	childGroups = "tab",
-	get = function(l)return
-	SV.db.SVUnit['party'][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party')end,
-	args = {
-		enable = {
-			type = 'toggle',
-			order = 1,
-			name = L['Enable'],
-		},
-		configureToggle = {
-			order = 2,
-			type = 'execute',
-			name = L['Display Frames'],
-			func = function()
-				MOD:UpdateGroupConfig(SVUI_Party, SVUI_Party.forceShow ~= true or nil)
-			end,
-		},
-		resetSettings = {
-			type = 'execute',
-			order = 3,
-			name = L['Restore Defaults'],
-			func = function(l, m)MOD:ResetUnitOptions('party')SV:ResetMovables('Party Frames')end,
-		},
-		tabGroups= {
-			order=3,
-			type='group',
-			name=L['Unit Options'],
-			childGroups="tree",
-			args= {
-				common = {
-					order = 4,
-					type = 'group',
-					name = L['General'],
-					args = {
-						hideonnpc = {
-							type = 'toggle',
-							order = 2,
-							name = L['Text Toggle On NPC'],
-							desc = L['Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point.'],
-							get = function(l)return SV.db.SVUnit['party']['power'].hideonnpc end,
-							set = function(l, m)SV.db.SVUnit['party']['power'].hideonnpc = m;MOD:SetGroupFrame('party')end,
-						},
-						rangeCheck = {
-							order = 3,
-							name = L["Range Check"],
-							desc = L["Check if you are in range to cast spells on this specific unit."],
-							type = "toggle",
-						},
-						gps = {
-							order = 4,
-							name = "GPS Tracking",
-							desc = "Show an arrow giving the direction and distance to the frames unit.",
-							type = "toggle",
-						},
-						predict = {
-							order = 5,
-							name = L['Heal Prediction'],
-							desc = L['Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals.'],
-							type = 'toggle',
-						},
-						threatEnabled = {
-							type = 'toggle',
-							order = 6,
-							name = L['Show Threat'],
-						},
-						colorOverride = {
-							order = 7,
-							name = L['Class Color Override'],
-							desc = L['Override the default class color setting.'],
-							type = 'select',
-							values = {
-								['USE_DEFAULT'] = L['Use Default'],
-								['FORCE_ON'] = L['Force On'],
-								['FORCE_OFF'] = L['Force Off'],
-							},
-						},
-						positionsGroup = {
-							order = 100,
-							name = L['Size and Positions'],
-							type = 'group',
-							guiInline = true,
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party', nil, nil, true)end,
-							args = {
-								width = {
-									order = 1,
-									name = L['Width'],
-									type = 'range',
-									min = 10,
-									max = 500,
-									step = 1,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party')end,
-								},
-								height = {
-									order = 2,
-									name = L['Height'],
-									type = 'range',
-									min = 10,
-									max = 500,
-									step = 1,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party')end,
-								},
-								spacer = {
-									order = 3,
-									name = '',
-									type = 'description',
-									width = 'full',
-								},
-								showBy = {
-									order = 4,
-									name = L['Growth Direction'],
-									desc = L['Growth direction from the first unitframe.'],
-									type = 'select',
-									values = {
-										DOWN_RIGHT = format(L['%s and then %s'], L['Down'], L['Right']),
-										DOWN_LEFT = format(L['%s and then %s'], L['Down'], L['Left']),
-										UP_RIGHT = format(L['%s and then %s'], L['Up'], L['Right']),
-										UP_LEFT = format(L['%s and then %s'], L['Up'], L['Left']),
-										RIGHT_DOWN = format(L['%s and then %s'], L['Right'], L['Down']),
-										RIGHT_UP = format(L['%s and then %s'], L['Right'], L['Up']),
-										LEFT_DOWN = format(L['%s and then %s'], L['Left'], L['Down']),
-										LEFT_UP = format(L['%s and then %s'], L['Left'], L['Up']),
-									},
-								},
-								groupCount = {
-									order = 5,
-									type = 'range',
-									name = L['Number of Groups'],
-									min = 1,
-									max = 8,
-									step = 1,
-									set = function(l, m)
-										MOD:ChangeDBVar(m, l[#l], "party");
-										MOD:SetGroupFrame('party')
-										if SVUI_Party.isForced then
-											MOD:UpdateGroupConfig(SVUI_Party)
-											MOD:UpdateGroupConfig(SVUI_Party, true)
-										end
-									end,
-								},
-								gRowCol = {
-									order = 6,
-									type = 'range',
-									name = L['Groups Per Row/Column'],
-									min = 1,
-									max = 8,
-									step = 1,
-									set = function(l, m)
-										MOD:ChangeDBVar(m, l[#l], "party");
-										MOD:SetGroupFrame('party')
-										if SVUI_Party.isForced then
-											MOD:UpdateGroupConfig(SVUI_Party)
-											MOD:UpdateGroupConfig(SVUI_Party, true)
-										end
-									end,
-								},
-								wrapXOffset = {
-									order = 7,
-									type = 'range',
-									name = L['Horizontal Spacing'],
-									min = 0,
-									max = 50,
-									step = 1,
-								},
-								wrapYOffset = {
-									order = 8,
-									type = 'range',
-									name = L['Vertical Spacing'],
-									min = 0,
-									max = 50,
-									step = 1,
-								},
-							},
-						},
-						visibilityGroup = {
-							order = 200,
-							name = L['Visibility'],
-							type = 'group',
-							guiInline = true,
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party', nil, nil, true)end,
-							args = {
-								showPlayer = {
-									order = 1,
-									type = 'toggle',
-									name = L['Display Player'],
-									desc = L['When true, the header includes the player when not in a raid.'],
-								},
-								visibility = {
-									order = 2,
-									type = 'input',
-									name = L['Visibility'],
-									desc = L['The following macro must be true in order for the group to be shown, in addition to any filter that may already be set.'],
-									width = 'full',
-									desc = L['TEXT_FORMAT_DESC'],
-								},
-							},
-						},
-						sortingGroup = {
-							order = 300,
-							type = 'group',
-							guiInline = true,
-							name = L['Grouping & Sorting'],
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party");MOD:SetGroupFrame('party', nil, nil, true)end,
-							args = {
-								sortMethod = {
-									order = 1,
-									name = L['Group By'],
-									desc = L['Set the order that the group will sort.'],
-									type = 'select',
-									values = {
-										["CLASS"] = CLASS,
-										["ROLE"] = ROLE.."(Tanks, Healers, DPS)",
-										["ROLE_TDH"] = ROLE.."(Tanks, DPS, Healers)",
-										["ROLE_HDT"] = ROLE.."(Healers, DPS, Tanks)",
-										["ROLE_HTD"] = ROLE.."(Healers, Tanks, DPS)",
-										["NAME"] = NAME,
-										["GROUP"] = GROUP,
-									},
-								},
-								sortDir = {
-									order = 2,
-									name = L['Sort Direction'],
-									desc = L['Defines the sort order of the selected sort method.'],
-									type = 'select',
-									values = {
-										['ASC'] = L['Ascending'],
-										['DESC'] = L['Descending'],
-									},
-								},
-								spacer = {
-									order = 3,
-									type = 'description',
-									width = 'full',
-									name = ' ',
-								},
-								customSorting = {
-									order = 4,
-									name = L['Custom Sorting'],
-									desc = L['Enabling this allows unique sorting.'],
-									type = 'toggle',
-								},
-								invertGroupingOrder = {
-									order = 5,
-									name = L['Invert Grouping Order'],
-									desc = L['Enabling this inverts the sorting order.'],
-									disabled = function()return not SV.db.SVUnit['party'].customSorting end,
-									type = 'toggle',
-								},
-								startFromCenter = {
-									order = 6,
-									name = L['Start Near Center'],
-									desc = L['The initial group will start near the center and grow out.'],
-									disabled = function()return not SV.db.SVUnit['party'].customSorting end,
-									type = 'toggle',
-								},
-							},
-						},
-
-					},
-				},
-				auraWatch = {
-					order = 600,
-					type = 'group',
-					name = L['Aura Watch'],
-					get = function(l)return
-					SV.db.SVUnit['party']['auraWatch'][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party", "auraWatch");MOD:SetGroupFrame('party')end,
-					args = {
-						enable = {
-							type = 'toggle',
-							name = L['Enable'],
-							order = 1,
-						},
-						size = {
-							type = 'range',
-							name = L['Size'],
-							desc = L['Size of the indicator icon.'],
-							order = 2,
-							min = 4,
-							max = 15,
-							step = 1,
-						},
-						configureButton = {
-							type = 'execute',
-							name = L['Configure Auras'],
-							func = function()ns:SetToFilterConfig('BuffWatch')end,
-							order = 3,
-						},
-
-					},
-				},
-				misc = ns:SetMiscConfigGroup(true, MOD.SetGroupFrame, 'party'),
-				health = ns:SetHealthConfigGroup(true, MOD.SetGroupFrame, 'party'),
-				power = ns:SetPowerConfigGroup(false, MOD.SetGroupFrame, 'party'),
-				name = ns:SetNameConfigGroup(MOD.SetGroupFrame, 'party'),
-				portrait = ns:SetPortraitConfigGroup(MOD.SetGroupFrame, 'party'),
-				buffs = ns:SetAuraConfigGroup(true, 'buffs', true, MOD.SetGroupFrame, 'party'),
-				debuffs = ns:SetAuraConfigGroup(true, 'debuffs', true, MOD.SetGroupFrame, 'party'),
-				petsGroup = {
-					order = 800,
-					type = 'group',
-					name = L['Party Pets'],
-					get = function(l)return SV.db.SVUnit['party']['petsGroup'][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party", "petsGroup");MOD:SetGroupFrame('party')end,
-					args = {
-						enable = {
-							type = 'toggle',
-							name = L['Enable'],
-							order = 1,
-						},
-						width = {
-							order = 3,
-							name = L['Width'],
-							type = 'range',
-							min = 10,
-							max = 500,
-							step = 1,
-						},
-						height = {
-							order = 4,
-							name = L['Height'],
-							type = 'range',
-							min = 10,
-							max = 250,
-							step = 1,
-						},
-						anchorPoint = {
-							type = 'select',
-							order = 5,
-							name = L['Anchor Point'],
-							desc = L['What point to anchor to the frame you set to attach to.'],
-							values = {TOPLEFT='TOPLEFT',LEFT='LEFT',BOTTOMLEFT='BOTTOMLEFT',RIGHT='RIGHT',TOPRIGHT='TOPRIGHT',BOTTOMRIGHT='BOTTOMRIGHT',CENTER='CENTER',TOP='TOP',BOTTOM='BOTTOM'},
-						},
-						xOffset = {
-							order = 6,
-							type = 'range',
-							name = L['xOffset'],
-							desc = L['An X offset (in pixels) to be used when anchoring new frames.'],
-							min =  - 500,
-							max = 500,
-							step = 1,
-						},
-						yOffset = {
-							order = 7,
-							type = 'range',
-							name = L['yOffset'],
-							desc = L['An Y offset (in pixels) to be used when anchoring new frames.'],
-							min =  - 500,
-							max = 500,
-							step = 1,
-						},
-						name_length = {
-							order = 8,
-							name = L["Name Length"],
-							desc = L["TEXT_FORMAT_DESC"],
-							type = "range",
-							width = "full",
-							min = 1,
-							max = 30,
-							step = 1,
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key], "party", "petsGroup");
-								local tag = "[name:" .. value .. "]";
-								MOD:ChangeDBVar(tag, "tags", "party", "petsGroup");
-							end,
-						}
-					},
-				},
-				targetsGroup = {
-					order = 900,
-					type = 'group',
-					name = L['Party Targets'],
-					get = function(l)return
-					SV.db.SVUnit['party']['targetsGroup'][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "party", "targetsGroup");MOD:SetGroupFrame('party')end,
-					args = {
-						enable = {
-							type = 'toggle',
-							name = L['Enable'],
-							order = 1,
-						},
-						width = {
-							order = 3,
-							name = L['Width'],
-							type = 'range',
-							min = 10,
-							max = 500,
-							step = 1,
-						},
-						height = {
-							order = 4,
-							name = L['Height'],
-							type = 'range',
-							min = 10,
-							max = 250,
-							step = 1,
-						},
-						anchorPoint = {
-							type = 'select',
-							order = 5,
-							name = L['Anchor Point'],
-							desc = L['What point to anchor to the frame you set to attach to.'],
-							values = {TOPLEFT='TOPLEFT',LEFT='LEFT',BOTTOMLEFT='BOTTOMLEFT',RIGHT='RIGHT',TOPRIGHT='TOPRIGHT',BOTTOMRIGHT='BOTTOMRIGHT',CENTER='CENTER',TOP='TOP',BOTTOM='BOTTOM'},
-						},
-						xOffset = {
-							order = 6,
-							type = 'range',
-							name = L['xOffset'],
-							desc = L['An X offset (in pixels) to be used when anchoring new frames.'],
-							min =  - 500,
-							max = 500,
-							step = 1,
-						},
-						yOffset = {
-							order = 7,
-							type = 'range',
-							name = L['yOffset'],
-							desc = L['An Y offset (in pixels) to be used when anchoring new frames.'],
-							min =  - 500,
-							max = 500,
-							step = 1,
-						},
-						name_length = {
-							order = 8,
-							name = L["Name Length"],
-							desc = L["TEXT_FORMAT_DESC"],
-							type = "range",
-							width = "full",
-							min = 1,
-							max = 30,
-							step = 1,
-							set = function(key, value)
-								MOD:ChangeDBVar(value, key[#key], "party", "targetsGroup");
-								local tag = "[name:" .. value .. "]";
-								MOD:ChangeDBVar(tag, "tags", "party", "targetsGroup");
-							end,
-						}
-					},
-				},
-				icons = ns:SetIconConfigGroup(MOD.SetGroupFrame, 'party')
-			}
-		}
-	},
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/pet.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/pet.lua
deleted file mode 100644
index e87bd4e..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/pet.lua
+++ /dev/null
@@ -1,253 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.pet = {
-	name = L["Pet Frame"],
-	type = "group",
-	order = 4,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["pet"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "pet");MOD:SetUnitFrame("pet")end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("pet")SV:ResetMovables("Pet Frame")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						showAuras = {
-							order = 1,
-							type = "execute",
-							name = L["Show Auras"],
-							func = function()local U = SVUI_Pet;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("pet")end
-						},
-						miscGroup = {
-							order = 2,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								rangeCheck = {
-									order = 2,
-									name = L["Range Check"],
-									desc = L["Check if you are in range to cast spells on this specific unit."],
-									type = "toggle"
-								},
-								predict = {
-									order = 3,
-									name = L["Heal Prediction"],
-									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
-									type = "toggle"
-								},
-								hideonnpc = {
-									type = "toggle",
-									order = 4,
-									name = L["Text Toggle On NPC"],
-									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-									get = function(l)return SV.db.SVUnit["pet"]["power"].hideonnpc end,
-									set = function(l, m)SV.db.SVUnit["pet"]["power"].hideonnpc = m;MOD:SetUnitFrame("pet")end
-								},
-								threatEnabled = {
-									type = "toggle",
-									order = 5,
-									name = L["Show Threat"]
-								},
-							}
-						},
-						scaleGroup = {
-							order = 6,
-							type = "group",
-							guiInline = true,
-							name = L["Frame Size"],
-							args = {
-								width = {order = 1, name = L["Width"], width = "full", type = "range", min = 50, max = 500, step = 1},
-								height = {order = 2, name = L["Height"], width = "full", type = "range", min = 10, max = 250, step = 1},
-							}
-						},
-						watchGroup = {
-							order = 8,
-							type = "group",
-							guiInline = true,
-							name = L["Aura Watch"],
-							get = function(l)return SV.db.SVUnit["pet"]["auraWatch"][l[#l]]end,
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "pet", "auraWatch");MOD:SetUnitFrame("pet")end,
-							args = {
-								enable = {
-									type = "toggle",
-									name = L["Enable"],
-									order = 1
-								},
-								size = {
-									type = "range",
-									name = L["Size"],
-									desc = L["Size of the indicator icon."],
-									order = 2,
-									min = 4,
-									max = 15,
-									step = 1
-								}
-							}
-						},
-					},
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "pet"),
-				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "pet"),
-				power = ns:SetPowerConfigGroup(false, MOD.SetUnitFrame, "pet"),
-				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "pet"),
-				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "pet"),
-				buffs = ns:SetAuraConfigGroup(true, "buffs", false, MOD.SetUnitFrame, "pet"),
-				debuffs = ns:SetAuraConfigGroup(true, "debuffs", false, MOD.SetUnitFrame, "pet")
-			}
-		}
-	}
-}
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.pettarget = {
-	name = L["PetTarget Frame"],
-	type = "group", order = 5,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit["pettarget"][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "pettarget");MOD:SetUnitFrame("pettarget")end,
-	args = {
-		enable = {type = "toggle", order = 1, name = L["Enable"]},
-		resetSettings = {type = "execute", order = 2, name = L["Restore Defaults"], func = function(l, m)MOD:ResetUnitOptions("pettarget")SV:ResetMovables("PetTarget Frame")end},
-		tabGroups = {
-			order = 3,
-			type = "group",
-			name = L["Unit Options"],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						showAuras = {
-							order = 3,
-							type = "execute",
-							name = L["Show Auras"],
-							func = function()local U = SVUI_PetTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("pettarget")end
-						},
-						width = {order = 4, name = L["Width"], type = "range", min = 50, max = 500, step = 1},
-						height = {order = 5, name = L["Height"], type = "range", min = 10, max = 250, step = 1},
-						rangeCheck = {order = 6, name = L["Range Check"], desc = L["Check if you are in range to cast spells on this specific unit."], type = "toggle"},
-						hideonnpc = {
-							type = "toggle",
-							order = 7,
-							name = L["Text Toggle On NPC"],
-							desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-							get = function(l)return SV.db.SVUnit["pettarget"]["power"].hideonnpc end,
-							set = function(l, m)SV.db.SVUnit["pettarget"]["power"].hideonnpc = m;MOD:SetUnitFrame("pettarget")end
-						},
-						threatEnabled = {type = "toggle", order = 13, name = L["Show Threat"]}
-					}
-				},
-				commonGroup = {
-					order = 1,
-					type = "group",
-					name = L["General Settings"],
-					args = {
-						showAuras = {
-							order = 1,
-							type = "execute",
-							name = L["Show Auras"],
-							func = function()local U = SVUI_PetTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("pettarget")end
-						},
-						miscGroup = {
-							order = 2,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								rangeCheck = {
-									order = 2,
-									name = L["Range Check"],
-									desc = L["Check if you are in range to cast spells on this specific unit."],
-									type = "toggle"
-								},
-								hideonnpc = {
-									type = "toggle",
-									order = 4,
-									name = L["Text Toggle On NPC"],
-									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-									get = function(l)return SV.db.SVUnit["pettarget"]["power"].hideonnpc end,
-									set = function(l, m)SV.db.SVUnit["pettarget"]["power"].hideonnpc = m;MOD:SetUnitFrame("pettarget")end
-								},
-								threatEnabled = {
-									type = "toggle",
-									order = 5,
-									name = L["Show Threat"]
-								},
-							}
-						},
-						scaleGroup = {
-							order = 3,
-							type = "group",
-							guiInline = true,
-							name = L["Frame Size"],
-							args = {
-								width = {order = 1, name = L["Width"], width = "full", type = "range", min = 50, max = 500, step = 1},
-								height = {order = 2, name = L["Height"], width = "full", type = "range", min = 10, max = 250, step = 1},
-							}
-						},
-					},
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "pettarget"),
-				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "pettarget"),
-				power = ns:SetPowerConfigGroup(false, MOD.SetUnitFrame, "pettarget"),
-				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "pettarget"),
-				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "pettarget"),
-				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "pettarget")
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/player.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/player.lua
deleted file mode 100644
index 0148ce6..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/player.lua
+++ /dev/null
@@ -1,298 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.player={
-	name = L['Player Frame'],
-	type = 'group',
-	order = 3,
-	childGroups = "tab",
-	get = function(l)return SV.db.SVUnit['player'][l[#l]]end,
-	set = function(l,m)MOD:ChangeDBVar(m, l[#l], "player");MOD:SetUnitFrame('player')end,
-	args = {
-		enable = {
-			type = 'toggle',
-			order = 1,
-			name = L['Enable']
-		},
-		resetSettings = {
-			type = 'execute',
-			order = 2,
-			name = L['Restore Defaults'],
-			func = function(l,m)
-				MOD:ResetUnitOptions('player')
-				SV:ResetMovables('Player Frame')
-			end
-		},
-		tabGroups = {
-			order = 3,
-			type = 'group',
-			name = L['Unit Options'],
-			childGroups = "tree",
-			args = {
-				commonGroup = {
-					order = 1,
-					type = 'group',
-					name = L['General Settings'],
-					args = {
-						baseGroup = {
-							order = 1,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								showAuras = {
-									order = 1,
-									type = "execute",
-									name = L["Show Auras"],
-									func = function()local U = SVUI_Player;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("player")end
-								},
-								lowmana = {
-									order = 2,
-									name = L["Low Mana Threshold"],
-									desc = L["When you mana falls below this point, text will flash on the player frame."],
-									type = "range",
-									min = 0,
-									max = 100,
-									step = 1
-								},
-								combatfade = {
-									order = 3,
-									name = L["Combat Fade"],
-									desc = L["Fade the unitframe when out of combat, not casting, no target exists."],
-									type = "toggle",
-									set = function(l, m)
-										MOD:ChangeDBVar(m, l[#l], "player");
-										MOD:SetUnitFrame("player")
-										if m == true then
-											SVUI_Pet:SetParent(SVUI_Player)
-										else
-											SVUI_Pet:SetParent(SVUI_UnitFrameParent)
-										end
-									end
-								},
-								predict = {
-									order = 4,
-									name = L["Heal Prediction"],
-									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
-									type = "toggle"
-								},
-								hideonnpc = {
-									type = "toggle",
-									order = 5,
-									name = L["Text Toggle On NPC"],
-									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-									get = function(l)return SV.db.SVUnit["player"]["power"].hideonnpc end,
-									set = function(l, m)SV.db.SVUnit["player"]["power"].hideonnpc = m;MOD:SetUnitFrame("player")end
-								},
-								threatEnabled = {
-									type = "toggle",
-									order = 6,
-									name = L["Show Threat"]
-								},
-								playerExpBar = {
-									order = 7,
-									name = "Playerframe Experience Bar",
-									desc = "Show player experience on power bar mouseover",
-									type = "toggle",
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player");SV:StaticPopup_Show("RL_CLIENT")end
-								},
-								playerRepBar = {
-									order = 8,
-									name = "Playerframe Reputation Bar",
-									desc = "Show player reputations on power bar mouseover",
-									type = "toggle",
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player");SV:StaticPopup_Show("RL_CLIENT")end
-								}
-							}
-						},
-						sizeGroup = {
-							order = 2,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								width = {
-									order = 1,
-									name = L["Width"],
-									type = "range",
-									width = "full",
-									min = 50,
-									max = 500,
-									step = 1,
-									set = function(l, m)
-										if SV.db.SVUnit["player"].castbar.width == SV.db.SVUnit["player"][l[#l]] then
-											SV.db.SVUnit["player"].castbar.width = m
-										end
-										MOD:ChangeDBVar(m, l[#l], "player");
-										MOD:SetUnitFrame("player")
-									end
-								},
-								height = {
-									order = 2,
-									name = L["Height"],
-									type = "range",
-									width = "full",
-									min = 10,
-									max = 250,
-									step = 1
-								},
-							}
-						},
-						pvpGroup = {
-							order = 3,
-							type = "group",
-							guiInline = true,
-							name = PVP,
-							get = function(l)return SV.db.SVUnit["player"]["pvp"][l[#l]]end,
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player", "pvp");MOD:SetUnitFrame("player")end,
-							args = {
-								position = {
-									type = "select",
-									order = 2,
-									name = L["Position"],
-									values = {
-										TOPLEFT = "TOPLEFT",
-										LEFT = "LEFT",
-										BOTTOMLEFT = "BOTTOMLEFT",
-										RIGHT = "RIGHT",
-										TOPRIGHT = "TOPRIGHT",
-										BOTTOMRIGHT = "BOTTOMRIGHT",
-										CENTER = "CENTER",
-										TOP = "TOP",
-										BOTTOM = "BOTTOM"
-									}
-								},
-								tags = {
-									order = 100,
-									name = L["Text Format"],
-									type = "input",
-									width = "full",
-									desc = L["TEXT_FORMAT_DESC"]
-								}
-							}
-						}
-					}
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "player"),
-				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "player"),
-				power = ns:SetPowerConfigGroup(true, MOD.SetUnitFrame, "player"),
-				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "player"),
-				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "player"),
-				buffs = ns:SetAuraConfigGroup(true, "buffs", false, MOD.SetUnitFrame, "player"),
-				debuffs = ns:SetAuraConfigGroup(true, "debuffs", false, MOD.SetUnitFrame, "player"),
-				castbar = ns:SetCastbarConfigGroup(MOD.SetUnitFrame, "player"),
-				aurabar = ns:SetAurabarConfigGroup(true, MOD.SetUnitFrame, "player"),
-				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "player"),
-				classbar = {
-					order = 1000,
-					type = "group",
-					name = L["Classbar"],
-					get = function(l)return SV.db.SVUnit["player"]["classbar"][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "player", "classbar");MOD:SetUnitFrame("player")end,
-					args = {
-						enable = {
-							type = "toggle",
-							order = 1,
-							name = L["Enable"]
-						},
-						commonGroup = {
-							order = 2,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								slideLeft = {
-									type = "toggle",
-									order = 1,
-									name = L["Slide Left"]
-								},
-								detachFromFrame = {
-									type = "toggle",
-									order = 2,
-									name = L["Detach From Frame"]
-								},
-								stagger = {
-									type = "toggle",
-									order = 3,
-									name = L["Stagger Bar"],
-									get = function(l)return SV.db.SVUnit["player"]["stagger"].enable end,
-									set = function(l, m)MOD:ChangeDBVar(m, "enable", "player", "stagger");MOD:SetUnitFrame("player")end,
-									disabled = SV.class ~= "MONK",
-								},
-								druidMana = {
-									type = "toggle",
-									order = 12,
-									name = L["Druid Mana"],
-									desc = L["Display druid mana bar when in cat or bear form and when mana is not 100%."],
-									get = function(key)
-										return SV.db.SVUnit["player"]["power"].druidMana
-									end,
-									set = function(key, value)
-										MOD:ChangeDBVar(value, "druidMana", "player", "power");
-										MOD:SetUnitFrame("player")
-									end,
-									disabled = SV.class ~= "DRUID",
-								}
-							}
-						},
-						sizeGroup = {
-							order = 3,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								height = {
-									type = "range",
-									order = 4,
-									width = "full",
-									name = L["Size"],
-									min = 15,
-									max = 45,
-									step = 1
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/raid.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/raid.lua
deleted file mode 100644
index 78b1b9f..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/raid.lua
+++ /dev/null
@@ -1,736 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
-
-local subOrder = 11;
-for w=10,40,15 do
-	subOrder = subOrder + 1
-	SV.Options.args.SVUnit.args["raid" .. w] = {
-		name = L["Raid-" .. w .. " Frames"],
-		type = "group",
-		order = subOrder,
-		childGroups = "tab",
-		get = function(l) return SV.db.SVUnit["raid" .. w][l[#l]] end,
-		set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w)end,
-		args = {
-			enable =
-			{
-				type = "toggle",
-				order = 1,
-				name = L["Enable"],
-			},
-			configureToggle = {
-				order = 2,
-				type = "execute",
-				name = L["Display Frames"],
-				func = function()MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w], _G["SVUI_Raid" .. w].forceShow ~= true or nil)end,
-			},
-			resetSettings = {
-				type = "execute",
-				order = 3,
-				name = L["Restore Defaults"],
-				func = function(l, m)MOD:ResetUnitOptions("raid" .. w)SV:ResetMovables("Raid 1-" .. w .. " Frames")end,
-			},
-			tabGroups = {
-				order = 3,
-				type = "group",
-				name = L["Unit Options"],
-				childGroups = "tree",
-				args = {
-					commonGroup = {
-						order = 1,
-						type = "group",
-						name = L["General Settings"],
-						args = {
-							hideonnpc =
-							{
-								type = "toggle",
-								order = 1,
-								name = L["Text Toggle On NPC"],
-								desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-								get = function(l)return SV.db.SVUnit["raid" .. w]["power"].hideonnpc end,
-								set = function(l, m)SV.db.SVUnit["raid" .. w]["power"].hideonnpc = m;MOD:SetGroupFrame("raid" .. w)end,
-							},
-							rangeCheck = {
-								order = 2,
-								name = L["Range Check"],
-								desc = L["Check if you are in range to cast spells on this specific unit."],
-								type = "toggle",
-							},
-							gps = {
-								order = 3,
-								name = "GPS Tracking",
-								desc = "Show an arrow giving the direction and distance to the frames unit.",
-								type = "toggle",
-							},
-							predict = {
-								order = 4,
-								name = L["Heal Prediction"],
-								desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
-								type = "toggle",
-							},
-							threatEnabled = {
-								type = "toggle",
-								order = 5,
-								name = L["Show Threat"],
-							},
-							colorOverride = {
-								order = 6,
-								name = L["Class Color Override"],
-								desc = L["Override the default class color setting."],
-								type = "select",
-								values =
-								{
-									["USE_DEFAULT"] = L["Use Default"],
-									["FORCE_ON"] = L["Force On"],
-									["FORCE_OFF"] = L["Force Off"],
-								},
-							},
-							positionsGroup = {
-								order = 100,
-								name = L["Size and Positions"],
-								type = "group",
-								guiInline = true,
-								set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w, nil, nil, true)end,
-								args =
-								{
-									width =
-									{
-										order = 1,
-										name = L["Width"],
-										type = "range",
-										min = 10,
-										max = 500,
-										step = 1,
-										set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w)end,
-									},
-									height =
-									{
-										order = 2,
-										name = L["Height"],
-										type = "range",
-										min = 10,
-										max = 500,
-										step = 1,
-										set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w)end,
-									},
-									spacer =
-									{
-										order = 3,
-										name = "",
-										type = "description",
-										width = "full",
-									},
-									showBy =
-									{
-										order = 4,
-										name = L["Growth Direction"],
-										desc = L["Growth direction from the first unitframe."],
-										type = "select",
-										values =
-										{
-											DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
-											DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
-											UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
-											UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
-											RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
-											RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
-											LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
-											LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"]),
-										},
-									},
-									groupCount =
-									{
-										order = 5,
-										type = "range",
-										name = L["Number of Groups"],
-										min = 1,
-										max = 8,
-										step = 1,
-										set = function(l, m)
-											MOD:ChangeDBVar(m, l[#l], "raid" .. w);
-											MOD:SetGroupFrame("raid" .. w)
-											if _G["SVUI_Raid" .. w].isForced then
-												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w])
-												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w], true)
-											end
-										end,
-									},
-									gRowCol =
-									{
-										order = 6,
-										type = "range",
-										name = L["Groups Per Row / Column"],
-										min = 1,
-										max = 8,
-										step = 1,
-										set = function(l, m)
-											MOD:ChangeDBVar(m, l[#l], "raid" .. w);
-											MOD:SetGroupFrame("raid" .. w)
-											if _G["SVUI_Raid" .. w].isForced then
-												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w])
-												MOD:UpdateGroupConfig(_G["SVUI_Raid" .. w], true)
-											end
-										end,
-									},
-									wrapXOffset =
-									{
-										order = 7,
-										type = "range",
-										name = L["Horizontal Spacing"],
-										min = 0,
-										max = 50,
-										step = 1,
-									},
-									wrapYOffset =
-									{
-										order = 8,
-										type = "range",
-										name = L["Vertical Spacing"],
-										min = 0,
-										max = 50,
-										step = 1,
-									},
-								},
-							},
-							visibilityGroup = {
-								order = 200,
-								name = L["Visibility"],
-								type = "group",
-								guiInline = true,
-								set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w, nil, nil, true)end,
-								args =
-								{
-									showPlayer =
-									{
-										order = 1,
-										type = "toggle",
-										name = L["Display Player"],
-										desc = L["When true, the header includes the player when not in a raid."],
-									},
-									visibility =
-									{
-										order = 2,
-										type = "input",
-										name = L["Visibility"],
-										desc = L["The following macro must be true in order for the group to be shown, in addition to any filter that may already be set."],
-										width = "full",
-										desc = L["TEXT_FORMAT_DESC"],
-									},
-								},
-							},
-							sortingGroup = {
-								order = 300,
-								type = "group",
-								guiInline = true,
-								name = L["Sorting"],
-								set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w);MOD:SetGroupFrame("raid" .. w, nil, nil, true)end,
-								args =
-								{
-									sortMethod =
-									{
-										order = 1,
-										name = L["Group By"],
-										desc = L["Set the order that the group will sort."],
-										type = "select",
-										values =
-										{
-											["CLASS"] = CLASS,
-											["ROLE"] = ROLE.."(Tanks, Healers, DPS)",
-											["ROLE_TDH"] = ROLE.."(Tanks, DPS, Healers)",
-											["ROLE_HDT"] = ROLE.."(Healers, DPS, Tanks)",
-											["ROLE_HTD"] = ROLE.."(Healers, Tanks, DPS)",
-											["NAME"] = NAME,
-											["MTMA"] = L["Main Tanks  /  Main Assist"],
-											["GROUP"] = GROUP,
-										},
-									},
-									sortDir =
-									{
-										order = 2,
-										name = L["Sort Direction"],
-										desc = L["Defines the sort order of the selected sort method."],
-										type = "select",
-										values =
-										{
-											["ASC"] = L["Ascending"],
-											["DESC"] = L["Descending"],
-										},
-									},
-									spacer =
-									{
-										order = 3,
-										type = "description",
-										width = "full",
-										name = " ",
-									},
-									customSorting =
-									{
-										order = 4,
-										name = L["Raid-Wide Sorting"],
-										desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."],
-										type = "toggle",
-									},
-									invertGroupingOrder =
-									{
-										order = 5,
-										name = L["Invert Grouping Order"],
-										desc = L["Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from."],
-										disabled = function()return not SV.db.SVUnit["raid" .. w].customSorting end,
-										type = "toggle",
-									},
-									startFromCenter =
-									{
-										order = 6,
-										name = L["Start Near Center"],
-										desc = L["The initial group will start near the center and grow out."],
-										disabled = function()return not SV.db.SVUnit["raid" .. w].customSorting end,
-										type = "toggle",
-									},
-								},
-							}
-						}
-					},
-					misc = ns:SetMiscConfigGroup(true, MOD.SetGroupFrame, "raid" .. w),
-					health = ns:SetHealthConfigGroup(true, MOD.SetGroupFrame, "raid" .. w),
-					power = ns:SetPowerConfigGroup(false, MOD.SetGroupFrame, "raid" .. w),
-					name = ns:SetNameConfigGroup(MOD.SetGroupFrame, "raid" .. w),
-					buffs = ns:SetAuraConfigGroup(true, "buffs", true, MOD.SetGroupFrame, "raid" .. w),
-					debuffs = ns:SetAuraConfigGroup(true, "debuffs", true, MOD.SetGroupFrame, "raid" .. w),
-					auraWatch = {
-						order = 600,
-						type = "group",
-						name = L["Aura Watch"],
-						args = {
-							enable = {
-								type = "toggle",
-								name = L["Enable"],
-								order = 1,
-								get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.enable end,
-								set = function(l, m)MOD:ChangeDBVar(m, "enable", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
-							},
-							size = {
-								type = "range",
-								name = L["Size"],
-								desc = L["Size of the indicator icon."],
-								order = 2,
-								min = 4,
-								max = 15,
-								step = 1,
-								get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.size end,
-								set = function(l, m)MOD:ChangeDBVar(m, "size", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
-							},
-							configureButton = {
-								type = "execute",
-								name = L["Configure Auras"],
-								func = function()ns:SetToFilterConfig("BuffWatch")end,
-								order = 3,
-							},
-
-						},
-					},
-					rdebuffs = {
-						order = 800,
-						type = "group",
-						name = L["RaidDebuff Indicator"],
-						get = function(l)return
-						SV.db.SVUnit["raid" .. w]["rdebuffs"][l[#l]]end,
-						set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raid" .. w, "rdebuffs");MOD:SetGroupFrame("raid" .. w)end,
-						args = {
-							enable = {
-								type = "toggle",
-								name = L["Enable"],
-								order = 1,
-							},
-							size = {
-								type = "range",
-								name = L["Size"],
-								order = 2,
-								min = 8,
-								max = 35,
-								step = 1,
-							},
-							fontSize = {
-								type = "range",
-								name = L["Font Size"],
-								order = 3,
-								min = 7,
-								max = 22,
-								step = 1,
-							},
-							xOffset = {
-								order = 4,
-								type = "range",
-								name = L["xOffset"],
-								min =  - 300,
-								max = 300,
-								step = 1,
-							},
-							yOffset = {
-								order = 5,
-								type = "range",
-								name = L["yOffset"],
-								min =  - 300,
-								max = 300,
-								step = 1,
-							},
-							configureButton = {
-								type = "execute",
-								name = L["Configure Auras"],
-								func = function()ns:SetToFilterConfig("Raid")end,
-								order = 7,
-							},
-						},
-					},
-					icons = ns:SetIconConfigGroup(MOD.SetGroupFrame, "raid" .. w),
-				},
-			},
-		},
-	}
-end
-
-subOrder = subOrder + 1
-SV.Options.args.SVUnit.args.raidpet ={
-	order = subOrder,
-	type = 'group',
-	name = L['Raid Pet Frames'],
-	childGroups = "tab",
-	get = function(l)return
-	SV.db.SVUnit['raidpet'][l[#l]]end,
-	set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')end,
-	args ={
-		enable ={
-			type = 'toggle',
-			order = 1,
-			name = L['Enable'],
-		},
-		configureToggle ={
-			order = 2,
-			type = 'execute',
-			name = L['Display Frames'],
-			func = function()MOD:UpdateGroupConfig(SVUI_Raidpet, SVUI_Raidpet.forceShow ~= true or nil)end,
-		},
-		resetSettings ={
-			type = 'execute',
-			order = 3,
-			name = L['Restore Defaults'],
-			func = function(l, m)MOD:ResetUnitOptions('raidpet')SV:ResetMovables('Raid Pet Frames')MOD:SetGroupFrame('raidpet', nil, nil, true)end,
-		},
-		tabGroups={
-			order=3,
-			type='group',
-			name=L['Unit Options'],
-			childGroups="tree",
-			args={
-				commonGroup={
-					order=1,
-					type='group',
-					name=L['General Settings'],
-					args={
-						rangeCheck ={
-							order = 3,
-							name = L["Range Check"],
-							desc = L["Check if you are in range to cast spells on this specific unit."],
-							type = "toggle",
-						},
-						predict ={
-							order = 4,
-							name = L['Heal Prediction'],
-							desc = L['Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals.'],
-							type = 'toggle',
-						},
-						threatEnabled ={
-							type = 'toggle',
-							order = 5,
-							name = L['Show Threat'],
-						},
-						colorOverride ={
-							order = 6,
-							name = L['Class Color Override'],
-							desc = L['Override the default class color setting.'],
-							type = 'select',
-							values ={
-								['USE_DEFAULT'] = L['Use Default'],
-								['FORCE_ON'] = L['Force On'],
-								['FORCE_OFF'] = L['Force Off'],
-							},
-						},
-						positionsGroup ={
-							order = 100,
-							name = L['Size and Positions'],
-							type = 'group',
-							guiInline = true,
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet', nil, nil, true)end,
-							args ={
-								width ={
-									order = 1,
-									name = L['Width'],
-									type = 'range',
-									min = 10,
-									max = 500,
-									step = 1,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')end,
-								},
-								height ={
-									order = 2,
-									name = L['Height'],
-									type = 'range',
-									min = 10,
-									max = 500,
-									step = 1,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')end,
-								},
-								spacer ={
-									order = 3,
-									name = '',
-									type = 'description',
-									width = 'full',
-								},
-								showBy ={
-									order = 4,
-									name = L['Growth Direction'],
-									desc = L['Growth direction from the first unitframe.'],
-									type = 'select',
-									values ={
-										DOWN_RIGHT = format(L['%s and then %s'], L['Down'], L['Right']),
-										DOWN_LEFT = format(L['%s and then %s'], L['Down'], L['Left']),
-										UP_RIGHT = format(L['%s and then %s'], L['Up'], L['Right']),
-										UP_LEFT = format(L['%s and then %s'], L['Up'], L['Left']),
-										RIGHT_DOWN = format(L['%s and then %s'], L['Right'], L['Down']),
-										RIGHT_UP = format(L['%s and then %s'], L['Right'], L['Up']),
-										LEFT_DOWN = format(L['%s and then %s'], L['Left'], L['Down']),
-										LEFT_UP = format(L['%s and then %s'], L['Left'], L['Up']),
-									},
-								},
-								groupCount ={
-									order = 7,
-									type = 'range',
-									name = L['Number of Groups'],
-									min = 1,
-									max = 8,
-									step = 1,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')if
-									SVUI_Raidpet.isForced then MOD:UpdateGroupConfig(SVUI_Raidpet)MOD:UpdateGroupConfig(SVUI_Raidpet, true)end end,
-								},
-								gRowCol ={
-									order = 8,
-									type = 'range',
-									name = L['Groups Per Row/Column'],
-									min = 1,
-									max = 8,
-									step = 1,
-									set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet')if
-									SVUI_Raidpet.isForced then MOD:UpdateGroupConfig(SVUI_Raidpet)MOD:UpdateGroupConfig(SVUI_Raidpet, true)end end,
-								},
-								wrapXOffset ={
-									order = 9,
-									type = 'range',
-									name = L['Horizontal Spacing'],
-									min = 0,
-									max = 50,
-									step = 1,
-								},
-								wrapYOffset ={
-									order = 10,
-									type = 'range',
-									name = L['Vertical Spacing'],
-									min = 0,
-									max = 50,
-									step = 1,
-								},
-							},
-						},
-						visibilityGroup ={
-							order = 200,
-							name = L['Visibility'],
-							type = 'group',
-							guiInline = true,
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet', nil, nil, true)end,
-							args ={
-								visibility ={
-									order = 2,
-									type = 'input',
-									name = L['Visibility'],
-									desc = L['The following macro must be true in order for the group to be shown, in addition to any filter that may already be set.'],
-									width = 'full',
-									desc = L['TEXT_FORMAT_DESC'],
-								},
-							},
-						},
-						sortingGroup ={
-							order = 300,
-							type = 'group',
-							guiInline = true,
-							name = L['Grouping & Sorting'],
-							set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet");MOD:SetGroupFrame('raidpet', nil, nil, true)end,
-							args ={
-								sortMethod ={
-									order = 1,
-									name = L['Group By'],
-									desc = L['Set the order that the group will sort.'],
-									type = 'select',
-									values ={
-										['NAME'] = L['Owners Name'],
-										['PETNAME'] = L['Pet Name'],
-										['GROUP'] = GROUP,
-									},
-								},
-								sortDir ={
-									order = 2,
-									name = L['Sort Direction'],
-									desc = L['Defines the sort order of the selected sort method.'],
-									type = 'select',
-									values ={
-										['ASC'] = L['Ascending'],
-										['DESC'] = L['Descending'],
-									},
-								},
-								spacer ={
-									order = 3,
-									type = 'description',
-									width = 'full',
-									name = ' ',
-								},
-								customSorting ={
-									order = 4,
-									name = L['Raid-Wide Sorting'],
-									desc = L['Enabling this allows raid-wide sorting however you will not be able to distinguish between groups.'],
-									type = 'toggle',
-								},
-								invertGroupingOrder ={
-									order = 5,
-									name = L['Invert Grouping Order'],
-									desc = L['Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from.'],
-									disabled = function()return not SV.db.SVUnit['raidpet'].customSorting end,
-									type = 'toggle',
-								},
-								startFromCenter ={
-									order = 6,
-									name = L['Start Near Center'],
-									desc = L['The initial group will start near the center and grow out.'],
-									disabled = function()return not SV.db.SVUnit['raidpet'].customSorting end,
-									type = 'toggle',
-								},
-							},
-						}
-					}
-				},
-				misc = ns:SetMiscConfigGroup(true, MOD.SetGroupFrame, 'raidpet'),
-				health = ns:SetHealthConfigGroup(true, MOD.SetGroupFrame, 'raidpet'),
-				name = ns:SetNameConfigGroup(MOD.SetGroupFrame, 'raidpet'),
-				buffs = ns:SetAuraConfigGroup(true, 'buffs', true, MOD.SetGroupFrame, 'raidpet'),
-				debuffs = ns:SetAuraConfigGroup(true, 'debuffs', true, MOD.SetGroupFrame, 'raidpet'),
-				auraWatch ={
-					order = 600,
-					type = 'group',
-					name = L['Aura Watch'],
-					args ={
-						enable = {
-							type = "toggle",
-							name = L["Enable"],
-							order = 1,
-							get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.enable end,
-							set = function(l, m)MOD:ChangeDBVar(m, "enable", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
-						},
-						size = {
-							type = "range",
-							name = L["Size"],
-							desc = L["Size of the indicator icon."],
-							order = 2,
-							min = 4,
-							max = 15,
-							step = 1,
-							get = function(l)return SV.db.SVUnit["raid" .. w].auraWatch.size end,
-							set = function(l, m)MOD:ChangeDBVar(m, "size", "raid" .. w, "auraWatch");MOD:SetGroupFrame("raid" .. w)end,
-						},
-						configureButton ={
-							type = 'execute',
-							name = L['Configure Auras'],
-							func = function()ns:SetToFilterConfig('BuffWatch')end,
-							order = 3,
-						},
-					},
-				},
-				rdebuffs ={
-					order = 700,
-					type = 'group',
-					name = L['RaidDebuff Indicator'],
-					get = function(l)return
-					SV.db.SVUnit['raidpet']['rdebuffs'][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "raidpet", "rdebuffs");MOD:SetGroupFrame('raidpet')end,
-					args ={
-						enable ={
-							type = 'toggle',
-							name = L['Enable'],
-							order = 1,
-						},
-						size ={
-							type = 'range',
-							name = L['Size'],
-							order = 2,
-							min = 8,
-							max = 35,
-							step = 1,
-						},
-						xOffset ={
-							order = 3,
-							type = 'range',
-							name = L['xOffset'],
-							min =  - 300,
-							max = 300,
-							step = 1,
-						},
-						yOffset ={
-							order = 4,
-							type = 'range',
-							name = L['yOffset'],
-							min =  - 300,
-							max = 300,
-							step = 1,
-						},
-						configureButton ={
-							type = 'execute',
-							name = L['Configure Auras'],
-							func = function()ns:SetToFilterConfig('Raid')end,
-							order = 5,
-						},
-					},
-				},
-				icons = ns:SetIconConfigGroup(MOD.SetGroupFrame, 'raidpet'),
-			},
-		},
-	},
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/target.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/units/target.lua
deleted file mode 100644
index 69604fe..0000000
--- a/Interface/AddOns/SVUI_ConfigOMatic/modules/units/target.lua
+++ /dev/null
@@ -1,305 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	 =  _G.unpack;
-local pairs 	 =  _G.pairs;
-local tinsert 	 =  _G.tinsert;
-local table 	 =  _G.table;
---[[ TABLE METHODS ]]--
-local tsort = table.sort;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local MOD = SV.SVUnit
-if(not MOD) then return end
-local _, ns = ...
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.target={
-	name = L['Target Frame'],
-	type = 'group',
-	order = 6,
-	childGroups = "tab",
-	get=function(l)return SV.db.SVUnit['target'][l[#l]]end,
-	set=function(l,m)MOD:ChangeDBVar(m, l[#l], "target");MOD:SetUnitFrame('target')end,
-	args={
-		enable={type='toggle',order=1,name=L['Enable']},
-		resetSettings={type='execute',order=2,name=L['Restore Defaults'],func=function(l,m)MOD:ResetUnitOptions('target')SV:ResetMovables('Target Frame')end},
-		tabGroups={
-			order=3,
-			type='group',
-			name=L['Unit Options'],
-			childGroups="tree",
-			args={
-				commonGroup = {
-					order = 1,
-					type = 'group',
-					name = L['General Settings'],
-					args = {
-						baseGroup = {
-							order = 1,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								showAuras = {
-									order = 1,
-									type = "execute",
-									name = L["Show Auras"],
-									func = function()local U = SVUI_Target;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("target")end
-								},
-								smartAuraDisplay = {
-									type = "select",
-									name = L["Smart Auras"],
-									desc = L["When set the Buffs and Debuffs will toggle being displayed depending on if the unit is friendly or an enemy. This will not effect the aurabars package."],
-									order = 2,
-									values = {
-										["DISABLED"] = L["Disabled"],
-										["SHOW_DEBUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Debuffs"],
-										["SHOW_BUFFS_ON_FRIENDLIES"] = L["Friendlies: Show Buffs"]
-									}
-								},
-								gps = {
-									order = 3,
-									name = "GPS Tracking",
-									desc = "Show an arrow giving the direction and distance to the frames unit.",
-									type = "toggle",
-								},
-								predict = {
-									order = 4,
-									name = L["Heal Prediction"],
-									desc = L["Show a incomming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
-									type = "toggle"
-								},
-								hideonnpc = {
-									type = "toggle",
-									order = 5,
-									name = L["Text Toggle On NPC"],
-									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-									get = function(l)return SV.db.SVUnit["target"]["power"].hideonnpc end,
-									set = function(l, m)SV.db.SVUnit["target"]["power"].hideonnpc = m;MOD:SetUnitFrame("target")end
-								},
-								threatEnabled = {
-									type = "toggle",
-									order = 6,
-									name = L["Show Threat"]
-								},
-								middleClickFocus = {
-									order = 7,
-									name = L["Middle Click - Set Focus"],
-									desc = L["Middle clicking the unit frame will cause your focus to match the unit."],
-									type = "toggle",
-									disabled = function()return IsAddOnLoaded("Clique")end
-								},
-
-							}
-						},
-						sizeGroup = {
-							order = 2,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								width = {
-									order = 1,
-									name = L["Width"],
-									type = "range",
-									width = "full",
-									min = 50,
-									max = 500,
-									step = 1,
-									set = function(l, m)
-										if SV.db.SVUnit["target"].castbar.width == SV.db.SVUnit["target"][l[#l]] then
-											SV.db.SVUnit["target"].castbar.width = m
-										end
-										MOD:ChangeDBVar(m, l[#l], "target");
-										MOD:SetUnitFrame("target")
-									end
-								},
-								height = {
-									order = 2,
-									name = L["Height"],
-									type = "range",
-									width = "full",
-									min = 10,
-									max = 250,
-									step = 1
-								},
-							}
-						}
-					}
-				},
-				combobar = {
-					order = 800,
-					type = "group",
-					name = L["Combobar"],
-					get = function(l)return SV.db.SVUnit["target"]["combobar"][l[#l]]end,
-					set = function(l, m)MOD:ChangeDBVar(m, l[#l], "target", "combobar");MOD:SetUnitFrame("target")end,
-					args = {
-						enable = {
-							type = "toggle",
-							order = 1,
-							name = L["Enable"]
-						},
-						smallIcons = {
-							type = "toggle",
-							name = L["Small Points"],
-							order = 2
-						},
-						height = {
-							type = "range",
-							order = 3,
-							name = L["Height"],
-							min = 15,
-							max = 45,
-							step = 1
-						},
-						autoHide = {
-							type = "toggle",
-							name = L["Auto-Hide"],
-							order = 4
-						}
-					}
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "target"),
-				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "target"),
-				power = ns:SetPowerConfigGroup(true, MOD.SetUnitFrame, "target"),
-				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "target"),
-				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "target"),
-				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "target"),
-				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "target"),
-				castbar = ns:SetCastbarConfigGroup(MOD.SetUnitFrame, "target"),
-				aurabar = ns:SetAurabarConfigGroup(false, MOD.SetUnitFrame, "target"),
-				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "target")
-			}
-		}
-	}
-}
---[[
-##################################################################################################
-##################################################################################################
-##################################################################################################
-]]
-SV.Options.args.SVUnit.args.targettarget={
-	name=L['TargetTarget Frame'],
-	type='group',
-	order=7,
-	childGroups="tab",
-	get=function(l)return SV.db.SVUnit['targettarget'][l[#l]]end,
-	set=function(l,m)MOD:ChangeDBVar(m, l[#l], "targettarget");MOD:SetUnitFrame('targettarget')end,
-	args={
-		enable={type='toggle',order=1,name=L['Enable']},
-		resetSettings={type='execute',order=2,name=L['Restore Defaults'],func=function(l,m)MOD:ResetUnitOptions('targettarget')SV:ResetMovables('TargetTarget Frame')end},
-		tabGroups={
-			order=3,
-			type='group',
-			name=L['Unit Options'],
-			childGroups="tree",
-			args={
-				commonGroup = {
-					order = 1,
-					type = 'group',
-					name = L['General Settings'],
-					args = {
-						baseGroup = {
-							order = 1,
-							type = "group",
-							guiInline = true,
-							name = L["Base Settings"],
-							args = {
-								showAuras = {
-									order = 1,
-									type = "execute",
-									name = L["Show Auras"],
-									func = function()local U = SVUI_TargetTarget;if U.forceShowAuras then U.forceShowAuras = nil else U.forceShowAuras = true end MOD:SetUnitFrame("targettarget")end
-								},
-								spacer1 = {
-									order = 2,
-									type = "description",
-									name = "",
-								},
-								rangeCheck = {
-									order = 3,
-									name = L["Range Check"],
-									desc = L["Check if you are in range to cast spells on this specific unit."],
-									type = "toggle"
-								},
-								hideonnpc = {
-									type = "toggle",
-									order = 4,
-									name = L["Text Toggle On NPC"],
-									desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
-									get = function(l)return SV.db.SVUnit["target"]["power"].hideonnpc end,
-									set = function(l, m)SV.db.SVUnit["target"]["power"].hideonnpc = m;MOD:SetUnitFrame("target")end
-								},
-								threatEnabled = {
-									type = "toggle",
-									order = 5,
-									name = L["Show Threat"]
-								}
-							}
-						},
-						sizeGroup = {
-							order = 2,
-							guiInline = true,
-							type = "group",
-							name = L["Size Settings"],
-							args = {
-								width = {
-									order = 1,
-									name = L["Width"],
-									type = "range",
-									width = "full",
-									min = 50,
-									max = 500,
-									step = 1,
-								},
-								height = {
-									order = 2,
-									name = L["Height"],
-									type = "range",
-									width = "full",
-									min = 10,
-									max = 250,
-									step = 1
-								},
-							}
-						}
-					}
-				},
-				misc = ns:SetMiscConfigGroup(false, MOD.SetUnitFrame, "targettarget"),
-				health = ns:SetHealthConfigGroup(false, MOD.SetUnitFrame, "targettarget"),
-				power = ns:SetPowerConfigGroup(nil, MOD.SetUnitFrame, "targettarget"),
-				name = ns:SetNameConfigGroup(MOD.SetUnitFrame, "targettarget"),
-				portrait = ns:SetPortraitConfigGroup(MOD.SetUnitFrame, "targettarget"),
-				buffs = ns:SetAuraConfigGroup(false, "buffs", false, MOD.SetUnitFrame, "targettarget"),
-				debuffs = ns:SetAuraConfigGroup(false, "debuffs", false, MOD.SetUnitFrame, "targettarget"),
-				icons = ns:SetIconConfigGroup(MOD.SetUnitFrame, "targettarget")
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/Bindings.xml b/Interface/AddOns/SVUI_CraftOMatic/Bindings.xml
new file mode 100644
index 0000000..85b7a1e
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/Bindings.xml
@@ -0,0 +1,14 @@
+<Bindings>
+  <Binding name="SVUICRAFT_FISH" category="ADDONS" header="SVUICRAFT" runOnUp="false">
+    SVUIFishingMode()
+  </Binding>
+   <Binding name="SVUICRAFT_FARM" category="ADDONS" runOnUp="false">
+    SVUIFarmingMode()
+  </Binding>
+  <Binding name="SVUICRAFT_ARCH" category="ADDONS" runOnUp="false">
+    SVUIArchaeologyMode()
+  </Binding>
+  <Binding name="SVUICRAFT_COOK" category="ADDONS" runOnUp="false">
+    SVUICookingMode()
+  </Binding>
+</Bindings>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/License.txt b/Interface/AddOns/SVUI_CraftOMatic/License.txt
new file mode 100644
index 0000000..a90771f
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/License.txt
@@ -0,0 +1,34 @@
+###############################################################################
+#_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+# ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+#  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+#   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+#    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+#     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+#      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+#       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+#        ___\///////////___________\///___________\/////////_____\///////////_#
+###############################################################################
+# S U P E R - V I L L A I N - U I   By: Munglunch                             #
+###############################################################################
+
+SVUI_CraftOMatic License Copyright 2014 http://wowinterface.com
+
+The contents of this addon, excluding third-party resources, are
+copyrighted to their authors with all rights reserved.
+
+Authors of this addon hereby grant you the following rights:
+
+1. 	You may NOT make any modification inside this addon. If you want
+	to create your own edited version, please create it from outside.
+
+2. 	Do not modify the name of this addon, including the addon folders.
+
+3. 	This copyright notice shall be included in all copies or substantial
+	portions of the Software.
+
+All rights not explicitly addressed in this license are reserved by
+the copyright holders.
+
+You can write Munglunch at Wowinterface.com for reporting abuse / bugs,
+or regarding grants allowed for this license.
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/Loader.lua b/Interface/AddOns/SVUI_CraftOMatic/Loader.lua
new file mode 100644
index 0000000..177cd79
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/Loader.lua
@@ -0,0 +1,162 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+local AddonName, AddonObject = ...
+
+assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")
+
+local PLUGIN = LibSuperVillain:NewPlugin(AddonName, AddonObject)
+
+local Schema = PLUGIN.Schema;
+local SV = _G["SVUI"];
+local L = SV.L
+--[[
+##########################################################
+CONFIG DATA
+##########################################################
+]]--
+SV.configs[Schema] = {
+	["enable"] = true,
+	["fontSize"] = 12,
+	["farming"] = {
+		["buttonsize"] = 35,
+		["buttonspacing"] = 3,
+		["onlyactive"] = false,
+		["droptools"] = true,
+		["toolbardirection"] = "HORIZONTAL",
+	},
+	["fishing"] = {
+		["autoequip"] = true,
+	},
+	["cooking"] = {
+		["autoequip"] = true,
+	},
+}
+--[[
+##########################################################
+CONFIG OPTIONS
+##########################################################
+]]--
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["fontSize"] = {
+    order = 2,
+	name = L["Font Size"],
+	desc = L["Set the font size of the log window."],
+	type = "range",
+	min = 6,
+	max = 22,
+	step = 1,
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["fishing"] = {
+    order = 3,
+	type = "group",
+	name = L["Fishing Mode Settings"],
+	guiInline = true,
+	args = {
+		autoequip = {
+			type = "toggle",
+			order = 1,
+			name = L['AutoEquip'],
+			desc = L['Enable/Disable automatically equipping fishing gear.'],
+			get = function(key)return SV.db[Schema].fishing[key[#key]]end,
+			set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key], "fishing")end
+		}
+	}
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["cooking"] = {
+    order = 4,
+	type = "group",
+	name = L["Cooking Mode Settings"],
+	guiInline = true,
+	args = {
+		autoequip = {
+			type = "toggle",
+			order = 1,
+			name = L['AutoEquip'],
+			desc = L['Enable/Disable automatically equipping cooking gear.'],
+			get = function(key)return SV.db[Schema].cooking[key[#key]]end,
+			set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key], "cooking")end
+		}
+	}
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["farming"] = {
+    order = 5,
+	type = "group",
+	name = L["Farming Mode Settings"],
+	guiInline = true,
+	get = function(key)return SV.db[Schema].farming[key[#key]]end,
+	set = function(key, value)SV.db[Schema].farming[key[#key]] = value end,
+	args = {
+		buttonsize = {
+			type = 'range',
+			name = L['Button Size'],
+			desc = L['The size of the action buttons.'],
+			min = 15,
+			max = 60,
+			step = 1,
+			order = 1,
+			set = function(key, value)
+				PLUGIN:ChangeDBVar(value, key[#key], "farming");
+				PLUGIN:RefreshFarmingTools()
+			end,
+		},
+		buttonspacing = {
+			type = 'range',
+			name = L['Button Spacing'],
+			desc = L['The spacing between buttons.'],
+			min = 1,
+			max = 10,
+			step = 1,
+			order = 2,
+			set = function(key, value)
+				PLUGIN:ChangeDBVar(value, key[#key], "farming");
+				PLUGIN:RefreshFarmingTools()
+			end,
+		},
+		onlyactive = {
+			order = 3,
+			type = 'toggle',
+			name = L['Only active buttons'],
+			desc = L['Only show the buttons for the seeds, portals, tools you have in your bags.'],
+			set = function(key, value)
+				PLUGIN:ChangeDBVar(value, key[#key], "farming");
+				PLUGIN:RefreshFarmingTools()
+			end,
+		},
+		droptools = {
+			order = 4,
+			type = 'toggle',
+			name = L['Drop '],
+			desc = L['Automatically drop tools from your bags when leaving the farming area.'],
+		},
+		toolbardirection = {
+			order = 5,
+			type = 'select',
+			name = L['Bar Direction'],
+			desc = L['The direction of the bar buttons (Horizontal or Vertical).'],
+			set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key],"farming"); PLUGIN:RefreshFarmingTools() end,
+			values = {
+					['VERTICAL'] = L['Vertical'], ['HORIZONTAL'] = L['Horizontal']
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
new file mode 100644
index 0000000..c095b36
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua
@@ -0,0 +1,536 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+
+--[[  CONSTANTS ]]--
+
+BINDING_HEADER_SVUICRAFT = "Supervillain UI: Craft-O-Matic";
+BINDING_NAME_SVUICRAFT_FISH = "Toggle Fishing Mode";
+BINDING_NAME_SVUICRAFT_FARM = "Toggle Farming Mode";
+BINDING_NAME_SVUICRAFT_COOK = "Toggle Cooking Mode";
+BINDING_NAME_SVUICRAFT_ARCH = "Toggle Archaeology Mode";
+
+--[[ GLOBALS ]]--
+
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string    = _G.string;
+local math 		= _G.math;
+local table 	= _G.table;
+local rept      = string.rep;
+local tsort,twipe = table.sort,table.wipe;
+local floor,ceil  = math.floor, math.ceil;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local PLUGIN = select(2, ...)
+local Schema = PLUGIN.Schema;
+
+local SV = _G["SVUI"];
+local L = SV.L
+local NewHook = hooksecurefunc;
+
+local playerGUID = UnitGUID('player')
+local classColor = RAID_CLASS_COLORS
+--[[
+##########################################################
+GLOBAL BINDINGS
+##########################################################
+]]--
+function SVUIFishingMode()
+	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
+	if PLUGIN.CurrentMode and PLUGIN.CurrentMode == "Fishing" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Fishing") end
+end
+
+function SVUIFarmingMode()
+	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
+	if PLUGIN.CurrentMode and SV.CurrentMode == "Farming" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Farming") end
+end
+
+function SVUIArchaeologyMode()
+	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
+	if PLUGIN.CurrentMode and PLUGIN.CurrentMode == "Archaeology" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Archaeology") end
+end
+
+function SVUICookingMode()
+	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
+	if PLUGIN.CurrentMode and PLUGIN.CurrentMode == "Cooking" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Cooking") end
+end
+--[[
+##########################################################
+LOCALIZED GLOBALS
+##########################################################
+]]--
+local LOOT_ITEM_SELF = _G.LOOT_ITEM_SELF;
+local LOOT_ITEM_CREATED_SELF = _G.LOOT_ITEM_CREATED_SELF;
+local LOOT_ITEM_SELF_MULTIPLE = _G.LOOT_ITEM_SELF_MULTIPLE
+local LOOT_ITEM_PUSHED_SELF_MULTIPLE = _G.LOOT_ITEM_PUSHED_SELF_MULTIPLE
+local LOOT_ITEM_PUSHED_SELF = _G.LOOT_ITEM_PUSHED_SELF
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local currentModeKey = false;
+local ModeLogsFrame = CreateFrame("Frame", "SVUI_ModeLogsFrame", UIParent)
+local classColors = SVUI_CLASS_COLORS[SV.class]
+local classR, classG, classB = classColors.r, classColors.g, classColors.b
+local classA = 0.35
+local lastClickTime;
+local ICON_FILE = [[Interface\AddOns\SVUI_CraftOMatic\artwork\DOCK-LABORER]]
+local COOK_ICON = [[Interface\AddOns\SVUI_CraftOMatic\artwork\LABORER-COOKING]]
+local FISH_ICON = [[Interface\AddOns\SVUI_CraftOMatic\artwork\LABORER-FISHING]]
+local ARCH_ICON = [[Interface\AddOns\SVUI_CraftOMatic\artwork\LABORER-SURVEY]]
+local FARM_ICON = [[Interface\AddOns\SVUI_CraftOMatic\artwork\LABORER-FARMING]]
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function SendModeMessage(...)
+	if not CombatText_AddMessage then return end
+	CombatText_AddMessage(...)
+end
+
+local function onMouseWheel(self, delta)
+	if (delta > 0) then
+		self:ScrollUp()
+	elseif (delta < 0) then
+		self:ScrollDown()
+	end
+end
+
+local function CheckForDoubleClick()
+	if lastClickTime then
+		local pressTime = GetTime()
+		local doubleTime = pressTime - lastClickTime
+		if ( (doubleTime < 0.4) and (doubleTime > 0.05) ) then
+			lastClickTime = nil
+			return true
+		end
+	end
+	lastClickTime = GetTime()
+	return false
+end
+--[[
+##########################################################
+CORE FUNCTIONS
+##########################################################
+]]--
+function PLUGIN:WorldFrameHook(button)
+	if InCombatLockdown() then return end
+	if(currentModeKey and button == "RightButton" and CheckForDoubleClick()) then
+		local handle = PLUGIN[currentModeKey];
+		if(handle and handle.Bind) then
+			handle.Bind()
+		end
+	end
+end
+
+function SVUI_ModeCaptureWindow:PostClickHandler()
+	if InCombatLockdown() then
+		self:RegisterEvent("PLAYER_REGEN_ENABLED")
+		return
+	end
+	ClearOverrideBindings(self)
+	self.Grip:Hide()
+end
+
+function PLUGIN:CraftingReset()
+	self.TitleWindow:Clear();
+	self.LogWindow:Clear();
+	self.TitleWindow:AddMessage("Crafting Modes", 1, 1, 0);
+	self.LogWindow:AddMessage("Select a Tool to Begin", 1, 1, 1);
+	self.LogWindow:AddMessage(" ", 0, 1, 1);
+	collectgarbage("collect")
+end
+
+function PLUGIN:ModeLootLoader(mode, msg, info)
+	self.TitleWindow:Clear();
+	self.LogWindow:Clear();
+	self.ModeAlert.HelpText = info
+	if(mode and self[mode]) then
+		if(self[mode].Log) then
+			local stored = self[mode].Log;
+			self.TitleWindow:AddMessage(msg, 1, 1, 1);
+			local previous = false
+			for name,data in pairs(stored) do
+				if type(data) == "table" and data.amount and data.texture then
+					self.LogWindow:AddMessage("|cff55FF55"..data.amount.." x|r |T".. data.texture ..":16:16:0:0:64:64:4:60:4:60|t".." "..name, 0.8, 0.8, 0.8);
+					previous = true
+				end
+			end
+			if(previous) then
+				self.LogWindow:AddMessage("----------------", 0, 0, 0);
+				self.LogWindow:AddMessage(" ", 0, 0, 0);
+			end
+			self.LogWindow:AddMessage(info, 1, 1, 1);
+			self.LogWindow:AddMessage(" ", 1, 1, 1);
+		end
+	else
+		self:CraftingReset()
+	end
+end
+
+function PLUGIN:CheckForModeLoot(msg)
+  	local item, amt = SV:DeFormat(msg, LOOT_ITEM_CREATED_SELF)
+	if not item then
+	  item = SV:DeFormat(msg, LOOT_ITEM_SELF_MULTIPLE)
+	  	if not item then
+		  item = SV:DeFormat(msg, LOOT_ITEM_SELF)
+		  	if not item then
+		      	item = SV:DeFormat(msg, LOOT_ITEM_PUSHED_SELF_MULTIPLE)
+		      	if not item then
+		        	item, amt = SV:DeFormat(msg, LOOT_ITEM_PUSHED_SELF)
+		        	--print(item)
+		      	end
+		    end
+		end
+	end
+	--print(msg)
+	if item then
+		if not amt then
+		  	amt = 1
+		end
+		return item, amt
+	end
+end
+
+function PLUGIN:SetJobMode(category)
+	if InCombatLockdown() then return end
+	if(not category) then
+		self:EndJobModes()
+		return;
+	end
+	self:ChangeModeGear()
+	if(currentModeKey and self[currentModeKey] and self[currentModeKey].Disable) then
+		self[currentModeKey].Disable()
+	end
+	currentModeKey = category;
+	if(self[category] and self[category].Enable) then
+		self[category].Enable()
+	else
+		self:EndJobModes()
+		return;
+	end
+end
+
+function PLUGIN:EndJobModes()
+	if(currentModeKey and self[currentModeKey] and self[currentModeKey].Disable) then
+		self[currentModeKey].Disable()
+	end
+	currentModeKey = false;
+	if SVUI_ModesDockFrame:IsShown() then SVUI_ModesDockFrame_ToolBarButton:Click() end
+	self:ChangeModeGear()
+	self.ModeAlert:Hide();
+	SendModeMessage("Mode Disabled", CombatText_StandardScroll, 1, 0.35, 0);
+	PlaySound("UndeadExploration");
+	self:CraftingReset()
+end
+
+function PLUGIN:ChangeModeGear()
+	if(not self.InModeGear) then return end
+	if InCombatLockdown() then
+		_G["SVUI_ModeCaptureWindow"]:RegisterEvent("PLAYER_REGEN_ENABLED");
+		return
+	else
+		if(self.WornItems["HEAD"]) then
+			EquipItemByName(self.WornItems["HEAD"])
+			self.WornItems["HEAD"] = false
+		end
+		if(self.WornItems["TAB"]) then
+			EquipItemByName(self.WornItems["TAB"])
+			self.WornItems["TAB"] = false
+		end
+		if(self.WornItems["MAIN"]) then
+			EquipItemByName(self.WornItems["MAIN"])
+			self.WornItems["MAIN"] = false
+		end
+		if(self.WornItems["OFF"]) then
+			EquipItemByName(self.WornItems["OFF"])
+			self.WornItems["OFF"] = false
+		end
+
+		self.InModeGear = false
+	end
+end
+
+function PLUGIN:UpdateLogWindow()
+ 	self.LogWindow:SetFont(SV.Media.font.system, SV.db[Schema].fontSize, "OUTLINE")
+end
+
+function PLUGIN:MakeLogWindow()
+	local DOCK_WIDTH = SVUI_ModesDockFrame:GetWidth();
+	local DOCK_HEIGHT = SVUI_ModesDockFrame:GetHeight();
+
+	ModeLogsFrame:SetFrameStrata("MEDIUM")
+	ModeLogsFrame:SetPoint("TOPLEFT",SVUI_ModeButton1,"TOPRIGHT",5,-5)
+	ModeLogsFrame:SetPoint("BOTTOMRIGHT",SVUI_ModesDockFrame,"BOTTOMRIGHT",-5,5)
+	ModeLogsFrame:SetParent(SVUI_ModesDockFrame)
+
+	local title = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
+	title:SetSpacing(4)
+	title:SetClampedToScreen(false)
+	title:SetFrameStrata("MEDIUM")
+	title:SetPoint("TOPLEFT",ModeLogsFrame,"TOPLEFT",0,0)
+	title:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"TOPRIGHT",0,-20)
+	title:SetFontTemplate(UNIT_NAME_FONT, 16, "OUTLINE", "CENTER", "MIDDLE")
+	title:SetMaxLines(1)
+	title:EnableMouseWheel(false)
+	title:SetFading(false)
+	title:SetInsertMode('TOP')
+
+	title.divider = title:CreateTexture(nil,"OVERLAY")
+    title.divider:SetTexture(0,0,0,0.5)
+    title.divider:SetPoint("BOTTOMLEFT")
+    title.divider:SetPoint("BOTTOMRIGHT")
+    title.divider:SetHeight(1)
+
+    local topleftline = title:CreateTexture(nil,"OVERLAY")
+    topleftline:SetTexture(0,0,0,0.5)
+    topleftline:SetPoint("TOPLEFT")
+    topleftline:SetPoint("BOTTOMLEFT")
+    topleftline:SetWidth(1)
+
+	local log = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
+	log:SetSpacing(4)
+	log:SetClampedToScreen(false)
+	log:SetFrameStrata("MEDIUM")
+	log:SetPoint("TOPLEFT",title,"BOTTOMLEFT",0,0)
+	log:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"BOTTOMRIGHT",0,0)
+	log:SetFontTemplate(nil, SV.db[Schema].fontSize, "OUTLINE")
+	log:SetJustifyH("CENTER")
+	log:SetJustifyV("MIDDLE")
+	log:SetShadowColor(0, 0, 0, 0)
+	log:SetMaxLines(120)
+	log:EnableMouseWheel(true)
+	log:SetScript("OnMouseWheel", onMouseWheel)
+	log:SetFading(false)
+	log:SetInsertMode('TOP')
+
+	local bottomleftline = log:CreateTexture(nil,"OVERLAY")
+    bottomleftline:SetTexture(0,0,0,0.5)
+    bottomleftline:SetPoint("TOPLEFT")
+    bottomleftline:SetPoint("BOTTOMLEFT")
+    bottomleftline:SetWidth(1)
+
+	self.TitleWindow = title
+	self.LogWindow = log
+
+	self.ListenerEnabled = false;
+	SV:RegisterDocklet("SVUI_ModesDockFrame", self.TitleID, ICON_FILE, false)
+	self:CraftingReset()
+end
+
+function PLUGIN:SKILL_LINES_CHANGED()
+	if(currentModeKey and self[currentModeKey] and self[currentModeKey].Update) then
+		self[currentModeKey].Update()
+	end
+end
+--[[
+##########################################################
+BUILD FUNCTION / UPDATE
+##########################################################
+]]--
+local ModeAlert_OnEnter = function(self)
+	if InCombatLockdown() then return; end
+	self:SetBackdropColor(0.9, 0.15, 0.1)
+	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+	GameTooltip:ClearLines()
+	GameTooltip:AddLine(self.ModeText, 1, 1, 0)
+	GameTooltip:AddLine("")
+	GameTooltip:AddLine("Click here end this mode.", 0.79, 0.23, 0.23)
+	GameTooltip:AddLine("")
+	GameTooltip:AddLine(self.HelpText, 0.74, 1, 0.57)
+	GameTooltip:Show()
+end
+
+local ModeAlert_OnLeave = function(self)
+	GameTooltip:Hide()
+	if InCombatLockdown() then return end
+	self:SetBackdropColor(0.25, 0.52, 0.1)
+end
+
+local ModeAlert_OnHide = function()
+	if InCombatLockdown() then
+		SV:AddonMessage(ERR_NOT_IN_COMBAT);
+		return;
+	end
+	SuperDockAlertRight:Deactivate()
+end
+
+local ModeAlert_OnShow = function(self)
+	if InCombatLockdown() then
+		SV:AddonMessage(ERR_NOT_IN_COMBAT);
+		self:Hide()
+		return;
+	end
+	SV:SecureFadeIn(self, 0.3, 0, 1)
+	SuperDockAlertRight:Activate(self)
+end
+
+local ModeAlert_OnMouseDown = function(self)
+	PLUGIN:EndJobModes()
+	SV:SecureFadeOut(self, 0.5, 1, 0, true)
+end
+
+local ModeButton_OnEnter = function(self)
+	if InCombatLockdown() then return; end
+	local name = self.modeName
+	self.icon:SetGradient(unpack(SV.Media.gradient.yellow))
+	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+	GameTooltip:ClearLines()
+	GameTooltip:AddLine(L[name .. " Mode"], 1, 1, 1)
+	GameTooltip:Show()
+end
+
+local ModeButton_OnLeave = function(self)
+	if InCombatLockdown() then return; end
+	self.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	GameTooltip:Hide()
+end
+
+local ModeButton_OnMouseDown = function(self)
+	local name = self.modeName
+	PLUGIN:SetJobMode(name)
+end
+--[[
+##########################################################
+BUILD FUNCTION
+##########################################################
+]]--
+function PLUGIN:Load()
+	if(not SV.db[Schema].enable) then return end
+
+	lastClickTime = nil;
+	self.WornItems = {};
+	self.InModeGear = false;
+
+	local ALERT_HEIGHT = 60;
+	local DOCK_WIDTH = SuperDockWindowRight:GetWidth();
+	local DOCK_HEIGHT = SuperDockWindowRight:GetHeight();
+	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;
+
+	local modesDocklet = CreateFrame("Frame", "SVUI_ModesDockFrame", SuperDockWindowRight)
+	modesDocklet:SetWidth(DOCK_WIDTH - 4);
+	modesDocklet:SetHeight(DOCK_HEIGHT - 4);
+	modesDocklet:SetPoint("CENTER",SuperDockWindowRight,"CENTER",0,0);
+
+	local modesToolBar = CreateFrame("Frame", "SVUI_ModesDockToolBar", modesDocklet)
+	modesToolBar:SetWidth(BUTTON_SIZE + 4);
+	modesToolBar:SetHeight((BUTTON_SIZE + 4) * 4);
+	modesToolBar:SetPoint("BOTTOMLEFT",modesDocklet,"BOTTOMLEFT",0,0);
+
+	local mode4Button = CreateFrame("Frame", "SVUI_ModeButton4", modesToolBar)
+	mode4Button:SetPoint("BOTTOM",modesToolBar,"BOTTOM",0,0)
+	mode4Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	mode4Button.icon = mode4Button:CreateTexture(nil, 'OVERLAY')
+	mode4Button.icon:SetTexture(FARM_ICON)
+	mode4Button.icon:FillInner(mode4Button)
+	mode4Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	mode4Button.modeName = "Farming"
+	mode4Button:SetScript('OnEnter', ModeButton_OnEnter)
+	mode4Button:SetScript('OnLeave', ModeButton_OnLeave)
+	mode4Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
+
+	local mode3Button = CreateFrame("Frame", "SVUI_ModeButton3", modesToolBar)
+	mode3Button:SetPoint("BOTTOM",mode4Button,"TOP",0,2)
+	mode3Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	mode3Button.icon = mode3Button:CreateTexture(nil, 'OVERLAY')
+	mode3Button.icon:SetTexture(ARCH_ICON)
+	mode3Button.icon:FillInner(mode3Button)
+	mode3Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	mode3Button.modeName = "Archaeology"
+	mode3Button:SetScript('OnEnter', ModeButton_OnEnter)
+	mode3Button:SetScript('OnLeave', ModeButton_OnLeave)
+	mode3Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
+
+	local mode2Button = CreateFrame("Frame", "SVUI_ModeButton2", modesToolBar)
+	mode2Button:SetPoint("BOTTOM",mode3Button,"TOP",0,2)
+	mode2Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	mode2Button.icon = mode2Button:CreateTexture(nil, 'OVERLAY')
+	mode2Button.icon:SetTexture(FISH_ICON)
+	mode2Button.icon:FillInner(mode2Button)
+	mode2Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	mode2Button.modeName = "Fishing"
+	mode2Button:SetScript('OnEnter', ModeButton_OnEnter)
+	mode2Button:SetScript('OnLeave', ModeButton_OnLeave)
+	mode2Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
+
+	local mode1Button = CreateFrame("Frame", "SVUI_ModeButton1", modesToolBar)
+	mode1Button:SetPoint("BOTTOM",mode2Button,"TOP",0,2)
+	mode1Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	mode1Button.icon = mode1Button:CreateTexture(nil, 'OVERLAY')
+	mode1Button.icon:SetTexture(COOK_ICON)
+	mode1Button.icon:FillInner(mode1Button)
+	mode1Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	mode1Button.modeName = "Cooking"
+	mode1Button:SetScript('OnEnter', ModeButton_OnEnter)
+	mode1Button:SetScript('OnLeave', ModeButton_OnLeave)
+	mode1Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
+
+	local ModeAlert = CreateFrame("Frame", nil, SuperDockAlertRight)
+	ModeAlert:SetAllPoints(SuperDockAlertRight)
+	ModeAlert:SetBackdrop({
+        bgFile = [[Interface\AddOns\SVUI\assets\artwork\Bars\HALFTONE]],
+        edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+        tile = true,
+        tileSize = 64,
+        edgeSize = 1,
+        insets = {
+            left = 1,
+            right = 1,
+            top = 1,
+            bottom = 1
+        }
+    })
+
+	ModeAlert:SetBackdropBorderColor(0,0,0,1)
+	ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
+	ModeAlert.text = ModeAlert:CreateFontString(nil, 'ARTWORK', 'GameFontWhite')
+	ModeAlert.text:SetAllPoints(ModeAlert)
+	ModeAlert.text:SetTextColor(1, 1, 1)
+	ModeAlert.text:SetJustifyH("CENTER")
+	ModeAlert.text:SetJustifyV("MIDDLE")
+	ModeAlert.text:SetText("Click to Exit")
+	ModeAlert.ModeText = "Click to Exit";
+	ModeAlert.HelpText = "";
+	ModeAlert:SetScript('OnEnter', ModeAlert_OnEnter)
+	ModeAlert:SetScript('OnLeave', ModeAlert_OnLeave)
+	ModeAlert:SetScript('OnHide', ModeAlert_OnHide)
+	ModeAlert:SetScript('OnShow', ModeAlert_OnShow)
+	ModeAlert:SetScript('OnMouseDown', ModeAlert_OnMouseDown)
+	ModeAlert:Hide()
+
+	self.ModeAlert = ModeAlert
+
+	self:MakeLogWindow()
+
+	modesDocklet:Hide()
+
+	self:LoadCookingMode()
+	self:LoadFishingMode()
+	self:LoadArchaeologyMode()
+	self:PrepareFarmingTools()
+
+	self:RegisterEvent("SKILL_LINES_CHANGED")
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc
new file mode 100644
index 0000000..c32772a
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.toc
@@ -0,0 +1,13 @@
+## Interface: 60000
+## Author: Munglunch
+## Version: 4.8
+## Title: |cffFF9900SVUI |r|cffFFEF00Craft-O-Matic|r
+## Notes: Supervillain UI [|cff9911FFProfession Tools|r].
+## Interface: 60000
+## RequiredDeps: SVUI
+## LoadOnDemand: 1
+## X-Email: munglunch@gmail.com
+## X-SVUI-Header: Craft-O-Matic
+## X-SVUI-Schema: CraftOMatic
+
+SVUI_CraftOMatic.xml
diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.xml b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.xml
new file mode 100644
index 0000000..25b65c4
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.xml
@@ -0,0 +1,40 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Frame name="SVUI_ModesHandler" hidden="true" frameStrata="LOW" parent="UIParent">
+		<Anchors>
+            <Anchor point="LEFT" relativeTo="UIParent" relativePoint="RIGHT">
+                <Offset x="10000" y="0"/>
+            </Anchor>
+        </Anchors>
+        <Frames>
+            <Button name="SVUI_ModeCaptureWindow" inherits="SecureActionButtonTemplate" enableMouse="true">
+            	<Scripts>
+		            <PostClick>
+						if(self.PostClickHandler) then self:PostClickHandler() end
+		            </PostClick>
+		            <OnLoad>
+						self.Grip = _G["SVUI_ModesHandler"];
+						self:RegisterForClicks("RightButtonUp");
+					    self:Hide();
+						self:RegisterEvent("PLAYER_ENTERING_WORLD")
+						self:SetScript("OnEvent", function(self, event, ...)
+							if event == "PLAYER_REGEN_ENABLED" then
+								self:UnregisterEvent("PLAYER_REGEN_ENABLED")
+								CraftOMatic:ChangeModeGear()
+								self:PostClickHandler()
+							end
+							if event == "PLAYER_ENTERING_WORLD" then
+								if (IsSpellKnown(131474) or IsSpellKnown(80451) or IsSpellKnown(818)) then
+									WorldFrame:HookScript("OnMouseDown", CraftOMatic.WorldFrameHook)
+								end
+								self:UnregisterEvent("PLAYER_ENTERING_WORLD")
+							end
+						end)
+		            </OnLoad>
+		        </Scripts>
+            </Button>
+        </Frames>
+    </Frame>
+	<Script file='Loader.lua'/>
+    <Script file='SVUI_CraftOMatic.lua'/>
+    <Include file="components\_load.xml"/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/artwork/DOCK-LABORER.blp b/Interface/AddOns/SVUI_CraftOMatic/artwork/DOCK-LABORER.blp
new file mode 100644
index 0000000..9397f22
Binary files /dev/null and b/Interface/AddOns/SVUI_CraftOMatic/artwork/DOCK-LABORER.blp differ
diff --git a/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-COOKING.blp b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-COOKING.blp
new file mode 100644
index 0000000..fe824f0
Binary files /dev/null and b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-COOKING.blp differ
diff --git a/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FARMING.blp b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FARMING.blp
new file mode 100644
index 0000000..7127055
Binary files /dev/null and b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FARMING.blp differ
diff --git a/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FISHING.blp b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FISHING.blp
new file mode 100644
index 0000000..76474d1
Binary files /dev/null and b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-FISHING.blp differ
diff --git a/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-SURVEY.blp b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-SURVEY.blp
new file mode 100644
index 0000000..40f68ae
Binary files /dev/null and b/Interface/AddOns/SVUI_CraftOMatic/artwork/LABORER-SURVEY.blp differ
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/_load.xml b/Interface/AddOns/SVUI_CraftOMatic/components/_load.xml
new file mode 100644
index 0000000..214eb80
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/_load.xml
@@ -0,0 +1,6 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file="archaeology.lua"/>
+	<Script file="cooking.lua"/>
+	<Script file="fishing.lua"/>
+	<Script file="farming.lua"/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
new file mode 100644
index 0000000..4f5e5b9
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua
@@ -0,0 +1,515 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string    = _G.string;
+local math 		= _G.math;
+local table 	= _G.table;
+local rept,format   = string.rep, string.format;
+local tsort,twipe 	= table.sort, table.wipe;
+local floor,ceil  	= math.floor, math.ceil;
+local min 			= math.min
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local PLUGIN = select(2, ...);
+local Schema = PLUGIN.Schema;
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local playerRace = select(2,UnitRace("player"))
+local archSpell, survey, surveyIsKnown, skillRank, skillModifier;
+local EnableListener, DisableListener;
+local CanScanResearchSite = CanScanResearchSite
+local GetNumArtifactsByRace = GetNumArtifactsByRace
+local GetArchaeologyRaceInfo = GetArchaeologyRaceInfo
+local GetSelectedArtifactInfo = GetSelectedArtifactInfo
+local GetArtifactProgress = GetArtifactProgress
+local CanSolveArtifact = CanSolveArtifact
+local GetContainerNumSlots = GetContainerNumSlots
+local GetContainerItemInfo = GetContainerItemInfo
+local GetContainerItemID = GetContainerItemID
+local DockButton, ModeLogsFrame;
+local refArtifacts = {};
+for i = 1, 12 do
+	refArtifacts[i] = {}
+end
+local NEEDS_UPDATE = true;
+local ArchCrafting = CreateFrame("Frame", "SVUI_ArchCrafting", UIParent)
+--[[
+##########################################################
+DATA
+##########################################################
+]]--
+PLUGIN.Archaeology = {};
+PLUGIN.Archaeology.Bars = {};
+PLUGIN.Archaeology.Loaded = false;
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function EnableSolve(index, button)
+	button:SetAlpha(1)
+	button.text:SetTextColor(1, 1, 1)
+	button:SetScript("OnEnter", function(self)
+		self.text:SetTextColor(1, 1, 0)
+	end)
+	button:SetScript("OnLeave", function(self)
+		self.text:SetTextColor(1, 1, 1)
+	end)
+	button:SetScript("OnClick", function(self)
+		SetSelectedArtifact(index)
+		local _, _, _, _, _, numSockets = GetActiveArtifactByRace(index)
+		local _, _, itemID = GetArchaeologyRaceInfo(index)
+		local ready = true
+		if numSockets and numSockets > 0 then
+			for socketNum = 1, numSockets do
+				if not ItemAddedToArtifact(itemID) then
+					SocketItemToArtifact()
+				end
+			end
+		end
+
+		if GetNumArtifactsByRace(index) > 0 then
+			print("Solving...")
+			SolveArtifact()
+		end
+	end)
+end
+
+local function DisableSolve(button)
+	button:SetAlpha(0)
+	button.text:SetTextColor(0.5, 0.5, 0.5)
+	button.text:SetText("")
+	button:SetScript("OnEnter", SV.fubar)
+	button:SetScript("OnLeave", SV.fubar)
+	button:SetScript("OnMouseUp", SV.fubar)
+end
+
+local function UpdateArtifactBars(index)
+	local cache = refArtifacts[index]
+	local bar = PLUGIN.Archaeology.Bars[index]
+
+	bar["race"]:SetText(cache["race"])
+
+	if GetNumArtifactsByRace(index) ~= 0 then
+		local keystoneBonus = 0
+		bar["race"]:SetTextColor(1, 1, 1)
+		bar["progress"]:SetTextColor(1, 1, 1)
+		if cache["numKeysockets"] then
+			keystoneBonus = min(cache["numKeystones"], cache["numKeysockets"]) * 12
+		end
+		local actual = min(cache["progress"], cache["total"])
+		local potential = cache["total"]
+		local green = 0.75 * (actual / potential);
+		bar["bar"]:SetMinMaxValues(0, potential)
+		bar["bar"]:SetValue(actual)
+
+		if cache["numKeysockets"] and cache["numKeysockets"] > 0 then
+			bar["solve"].text:SetText(SOLVE.." ["..cache["numKeystones"].."/"..cache["numKeysockets"].."]")
+		else
+			bar["solve"].text:SetText(SOLVE)
+		end
+
+		if keystoneBonus > 0 then
+			bar["progress"]:SetText(format("|cff00c1ea%d|r/%d", cache["progress"] + keystoneBonus, cache["total"]))
+		else
+			if cache["total"] > 65 then
+				bar["progress"]:SetText(format("%d/|cff00c1ea%d|r", cache["progress"], cache["total"]))
+			else
+				bar["progress"]:SetText(format("%d/%d", cache["progress"], cache["total"]))
+			end
+		end
+		if cache["canSolve"] then
+			EnableSolve(index, bar["solve"])
+		else
+			DisableSolve(bar["solve"])
+		end
+		bar["bar"]:SetStatusBarColor(0.1, green, 1, 0.5)
+	else
+		DisableSolve(bar["solve"])
+		bar["progress"]:SetText("")
+		bar["bar"]:SetStatusBarColor(0, 0, 0, 0)
+		bar["race"]:SetTextColor(0.25, 0.25, 0.25)
+		bar["progress"]:SetTextColor(0.25, 0.25, 0.25)
+	end
+end
+
+local function UpdateArtifactCache()
+	local found, raceName, raceItemID, cache, _;
+	for index = 1, 12 do
+		found = GetNumArtifactsByRace(index)
+		raceName, _, raceItemID = GetArchaeologyRaceInfo(index)
+		cache = refArtifacts[index]
+		cache["race"] = raceName
+		cache["keyID"] = raceItemID
+		cache["numKeystones"] = 0
+		local oldNum = cache["progress"]
+		if found == 0 then
+			cache["numKeysockets"] = 0
+			cache["progress"] = 0
+			cache["modifier"] = 0
+			cache["total"] = 0
+			cache["canSolve"] = false
+		else
+			SetSelectedArtifact(index)
+			local _, _, _, _, _, keystoneCount = GetSelectedArtifactInfo()
+			local numFragmentsCollected, numFragmentsAdded, numFragmentsRequired = GetArtifactProgress()
+
+			cache["numKeysockets"] = keystoneCount
+			cache["progress"] = numFragmentsCollected
+			cache["modifier"] = numFragmentsAdded
+			cache["total"] = numFragmentsRequired
+			cache["canSolve"] = CanSolveArtifact()
+
+			for i = 0, 4 do
+				for j = 1, GetContainerNumSlots(i) do
+					local slotID = GetContainerItemID(i, j)
+					if slotID == cache["keyID"] then
+						local _, count = GetContainerItemInfo(i, j)
+						if cache["numKeystones"] < cache["numKeysockets"] then
+							cache["numKeystones"] = cache["numKeystones"] + count
+						end
+						if min(cache["numKeystones"], cache["numKeysockets"]) * 12 + cache["progress"] >= cache["total"] then
+							cache["canSolve"] = true
+						end
+					end
+				end
+			end
+		end
+		UpdateArtifactBars(index)
+	end
+	NEEDS_UPDATE = false
+end
+
+local function GetTitleAndSkill()
+	local msg = "|cff22ff11Archaeology Mode|r"
+	if(skillRank) then
+		if(skillModifier) then
+			skillRank = skillRank + skillModifier;
+		end
+		msg = msg .. " (|cff00ddff" .. skillRank .. "|r)";
+	end
+	return msg
+end
+
+local function SendModeMessage(...)
+	if not CombatText_AddMessage then return end
+	CombatText_AddMessage(...)
+end
+--[[
+##########################################################
+EVENT HANDLER
+##########################################################
+]]--
+do
+	local SURVEYCDFONT = SV.Media.font.numbers
+	local SURVEYRED = {0,0.5,1}
+	local last = 0
+	local time = 3
+
+	local ArchEventHandler = CreateFrame("Frame");
+	local SurveyCooldown = CreateFrame("Frame", nil, UIParent);
+	local ArchSiteFound;
+	local ArchCanSurvey, ArchWillSurvey = false, false;
+
+	SurveyCooldown:SetPoint("CENTER", 0, -80)
+	SurveyCooldown:SetSize(150, 150)
+	SurveyCooldown.text = SurveyCooldown:CreateFontString(nil, "OVERLAY")
+	SurveyCooldown.text:SetAllPoints(SurveyCooldown)
+	SurveyCooldown.text:SetFont(SURVEYCDFONT, 150, "OUTLINE")
+	SurveyCooldown.text:SetTextColor(0,1,0.12,0.5)
+	SurveyCooldown.text:SetPoint("CENTER")
+	SurveyCooldown:SetScale(1.5)
+
+	local Arch_OnEvent = function(self, event, ...)
+		if(InCombatLockdown() or not archSpell) then return end
+		if(event == "CURRENCY_DISPLAY_UPDATE" or event == "CHAT_MSG_SKILL" or event == "ARTIFACT_COMPLETE") then
+			local msg = GetTitleAndSkill()
+			PLUGIN.TitleWindow:Clear()
+			PLUGIN.TitleWindow:AddMessage(msg)
+		end
+		if(CanScanResearchSite() and (event == "CURRENCY_DISPLAY_UPDATE")) then
+			UpdateArtifactCache()
+		elseif(event == "ARCHAEOLOGY_SURVEY_CAST" or event == "ARTIFACT_COMPLETE" or event == "ARTIFACT_DIG_SITE_UPDATED") then
+			UpdateArtifactCache()
+		elseif(event == "ARTIFACT_HISTORY_READY" or event == "ARTIFACT_DIGSITE_COMPLETE") then
+			NEEDS_UPDATE = true
+		else
+			ArchCanSurvey = CanScanResearchSite()
+			if(ArchCanSurvey and not ArchWillSurvey) then
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', survey)
+				PLUGIN.ModeAlert.HelpText = "Double-Right-Click anywhere on the screen to survey.";
+				ArchWillSurvey = true
+			elseif(not ArchCanSurvey and ArchWillSurvey) then
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', archSpell)
+				PLUGIN.ModeAlert.HelpText = "Double-Right-Click anywhere on the screen to open the artifacts window.";
+				ArchWillSurvey = false
+			end
+			if(event == "ZONE_CHANGED_NEW_AREA") then ArchSiteFound = nil end
+			if(not ArchSiteFound) then
+				local sites = ArchaeologyMapUpdateAll();
+				if(sites and sites > 0) then
+					ArchSiteFound = true
+					SendModeMessage("Digsite Located", CombatText_StandardScroll, 0.91, 0.78, 0.12);
+				else
+					ArchSiteFound = nil
+				end
+			end
+			if(NEEDS_UPDATE) then
+				UpdateArtifactCache()
+			end
+		end
+	end
+
+	local Survey_OnUpdate = function(self, elapsed)
+		last = last + elapsed
+		if last > 1 then
+			time = time - 1
+			self.text:SetText(time)
+			if time <= 0 then
+				self:SetScript("OnUpdate", nil)
+				self.text:SetText("")
+				time = 3
+			end
+			self.text:SetTextColor(SURVEYRED[time],1,0.12,0.8)
+			last = 0
+		end
+	end
+
+	local Survey_OnEvent = function(self, event, unit, _, _, _, spellid)
+		if not unit == "player" then return end
+		if spellid == 80451 then
+			self.text:SetText("3")
+			self:SetScript("OnUpdate", Survey_OnUpdate)
+		end
+	end
+
+	function EnableListener()
+		UpdateArtifactCache()
+
+		ArchEventHandler:RegisterEvent("ZONE_CHANGED")
+		ArchEventHandler:RegisterEvent("ZONE_CHANGED_NEW_AREA")
+		ArchEventHandler:RegisterEvent("ZONE_CHANGED_INDOORS")
+
+		ArchEventHandler:RegisterEvent("ARTIFACT_DIG_SITE_UPDATED")
+		ArchEventHandler:RegisterEvent("ARTIFACT_DIGSITE_COMPLETE")
+		ArchEventHandler:RegisterEvent("ARTIFACT_HISTORY_READY")
+		ArchEventHandler:RegisterEvent("ARTIFACT_COMPLETE")
+
+		ArchEventHandler:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
+		ArchEventHandler:RegisterEvent("ARCHAEOLOGY_SURVEY_CAST")
+
+		ArchEventHandler:RegisterEvent("CHAT_MSG_SKILL")
+
+		ArchEventHandler:SetScript("OnEvent", Arch_OnEvent)
+		if(playerRace ~= "Dwarf") then
+			SurveyCooldown:RegisterEvent("UNIT_SPELLCAST_STOP")
+			SurveyCooldown:SetScript("OnEvent", Survey_OnEvent)
+		end
+	end
+
+	function DisableListener()
+		ArchEventHandler:UnregisterAllEvents()
+		ArchEventHandler:SetScript("OnEvent", nil)
+		if(playerRace ~= "Dwarf") then
+			SurveyCooldown:UnregisterAllEvents()
+			SurveyCooldown:SetScript("OnEvent", nil)
+		end
+	end
+end
+--[[
+##########################################################
+CORE FUNCTIONS
+##########################################################
+]]--
+function PLUGIN.Archaeology:Enable()
+	PLUGIN.Archaeology:Update()
+	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+
+	PlaySoundFile("Sound\\Item\\UseSounds\\UseCrinklingPaper.wav")
+	PLUGIN.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
+	if(not IsSpellKnown(80451)) then
+		PLUGIN:ModeLootLoader("Archaeology", "WTF is Archaeology?", "You don't know archaeology! \nPicking up a rock and telling everyone that \nyou found a fossil is cute, BUT WRONG!! \nGo find someone who can train you to do this job.");
+		PLUGIN.TitleWindow:Clear();
+		PLUGIN.TitleWindow:AddMessage("WTF is Archaeology?");
+		PLUGIN.LogWindow:Clear();
+		PLUGIN.LogWindow:AddMessage("You don't know archaeology! \nPicking up a rock and telling everyone that \nyou found a fossil is cute, BUT WRONG!! \nGo find someone who can train you to do this job.", 1, 1, 1);
+		PLUGIN.LogWindow:AddMessage(" ", 1, 1, 1);
+	else
+		ArchCrafting:Show()
+		local msg = GetTitleAndSkill()
+		if surveyIsKnown and CanScanResearchSite() then
+			PLUGIN:ModeLootLoader("Archaeology", msg, "Double-Right-Click anywhere on the screen to survey.");
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', survey)
+		else
+			PLUGIN:ModeLootLoader("Archaeology", msg, "Double-Right-Click anywhere on the screen to open the artifacts window.");
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', archSpell)
+		end
+		PLUGIN.TitleWindow:Clear();
+		PLUGIN.TitleWindow:AddMessage(msg);
+	end
+	EnableListener()
+	PLUGIN.ModeAlert:Show()
+	SendModeMessage("Archaeology Mode Enabled", CombatText_StandardScroll, 0.28, 0.9, 0.1);
+end
+
+function PLUGIN.Archaeology:Disable()
+	DisableListener()
+	ArchCrafting:Hide()
+end
+
+function PLUGIN.Archaeology:Bind()
+	if InCombatLockdown() then return end
+	if(archSpell) then
+		if surveyIsKnown and CanScanResearchSite() then
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', survey)
+			PLUGIN.ModeAlert.HelpText = 'Double-Right-Click anywhere on the screen to survey.'
+		else
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', archSpell)
+			PLUGIN.ModeAlert.HelpText = 'Double-Right-Click anywhere on the screen to open the artifacts window.'
+		end
+		SetOverrideBindingClick(_G["SVUI_ModeCaptureWindow"], true, "BUTTON2", "SVUI_ModeCaptureWindow");
+		_G["SVUI_ModeCaptureWindow"].Grip:Show();
+	end
+end
+
+function PLUGIN.Archaeology:Update()
+	surveyIsKnown = IsSpellKnown(80451);
+	survey = GetSpellInfo(80451);
+	local _,_,arch,_,_,_ = GetProfessions();
+	if(arch) then
+		archSpell, _, skillRank, _, _, _, _, skillModifier = GetProfessionInfo(arch)
+	end
+end
+--[[
+##########################################################
+LOADER
+##########################################################
+]]--
+function PLUGIN:LoadArchaeologyMode()
+	ModeLogsFrame = PLUGIN.LogWindow;
+	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"];
+
+	local progressBars = PLUGIN.Archaeology.Bars
+
+	ArchCrafting:SetParent(ModeLogsFrame)
+	ArchCrafting:SetFrameStrata("MEDIUM")
+	ArchCrafting:FillInner(ModeLogsFrame)
+
+	local BAR_WIDTH = (ArchCrafting:GetWidth() * 0.5) - 4
+	local BAR_HEIGHT = (ArchCrafting:GetHeight() / 6) - 4
+
+	for i = 1, 12 do
+		local bar = CreateFrame("StatusBar", nil, ArchCrafting)
+		local race = bar:CreateFontString()
+		local progress = bar:CreateFontString()
+		local solve = CreateFrame("Button", nil, bar, "SecureHandlerClickTemplate")
+		local yOffset;
+
+		bar:SetPanelTemplate("Inset")
+		bar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+		bar:SetSize(BAR_WIDTH,BAR_HEIGHT)
+		if(i > 6) then
+			yOffset = ((i - 7) * (BAR_HEIGHT + 4)) + 4
+			bar:SetPoint("TOPRIGHT", ArchCrafting, "TOPRIGHT", -2, -yOffset)
+		else
+			yOffset = ((i - 1) * (BAR_HEIGHT + 4)) + 4;
+			bar:SetPoint("TOPLEFT", ArchCrafting, "TOPLEFT", 2, -yOffset)
+		end
+		bar:SetStatusBarColor(0.2, 0.2, 0.8, 0.5)
+		bar:SetScript("OnEnter", function(self)
+			GameTooltip:SetOwner(self, "ANCHOR_BOTTOMRIGHT", 2, 250)
+			GameTooltip:ClearLines()
+			if GetNumArtifactsByRace(i) > 0 then
+				SetSelectedArtifact(i)
+				local artifactName, artifactDescription, artifactRarity, _, _, keystoneCount = GetSelectedArtifactInfo()
+				local numFragmentsCollected, numFragmentsAdded, numFragmentsRequired = GetArtifactProgress()
+				local r, g, b
+				if artifactRarity == 1 then
+					artifactRarity = ITEM_QUALITY3_DESC
+					r, g, b = GetItemQualityColor(3)
+				else
+					artifactRarity = ITEM_QUALITY1_DESC
+					r, g, b = GetItemQualityColor(1)
+				end
+				GameTooltip:AddLine(artifactName, r, g, b, 1)
+				GameTooltip:AddLine(artifactRarity, r, g, b, r, g, b)
+				GameTooltip:AddDoubleLine(ARCHAEOLOGY_RUNE_STONES..": "..numFragmentsCollected.."/"..numFragmentsRequired, "Keystones: "..keystoneCount, 1, 1, 1, 1, 1, 1)
+				GameTooltip:AddLine(" ")
+				GameTooltip:AddLine(artifactDescription, 1, 1, 1, 1)
+				GameTooltip:Show()
+			end
+		end)
+		bar:SetScript("OnLeave", function()
+			GameTooltip:Hide()
+		end)
+
+		-- Race Text
+		race:SetFont(SV.Media.font.roboto, 12, "OUTLINE")
+		race:SetText(RACE)
+		race:SetPoint("LEFT", bar, "LEFT", 2, 0)
+
+		-- Progress Text
+		progress:SetFont(SV.Media.font.roboto, 12, "OUTLINE")
+		progress:SetText("")
+		progress:SetPoint("RIGHT", bar, "RIGHT", 1, 0)
+
+		-- Solve
+		solve:SetAllPoints(bar)
+
+		solve.bg = solve:CreateTexture(nil,"BORDER")
+		solve.bg:SetAllPoints(solve)
+		solve.bg:SetTexture(SV.Media.bar.default)
+		solve.bg:SetVertexColor(0.1,0.5,0)
+
+		solve.text = solve:CreateFontString(nil,"OVERLAY")
+		solve.text:SetFont(SV.Media.font.roboto, 14, "NONE")
+		solve.text:SetShadowOffset(-1,-1)
+		solve.text:SetShadowColor(0,0,0,0.5)
+		solve.text:SetText(SOLVE)
+		solve.text:SetPoint("CENTER", solve, "CENTER", 2, 0)
+
+		progressBars[i] = {
+			["bar"] = bar,
+			["race"] = race,
+			["progress"] = progress,
+			["solve"] = solve
+		}
+	end
+	ArchCrafting:Hide()
+	PLUGIN.Archaeology:Update()
+	UpdateArtifactCache()
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua b/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
new file mode 100644
index 0000000..749480d
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/cooking.lua
@@ -0,0 +1,230 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string    = _G.string;
+local math 		= _G.math;
+local table 	= _G.table;
+local rept      = string.rep;
+local tsort,twipe = table.sort,table.wipe;
+local floor,ceil  = math.floor, math.ceil;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local PLUGIN = select(2, ...);
+local Schema = PLUGIN.Schema;
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local cookingSpell, campFire, skillRank, skillModifier;
+local DockButton;
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function UpdateChefWear()
+	if(GetItemCount(46349) > 0) then
+		PLUGIN.WornItems["HEAD"] = GetInventoryItemID("player", INVSLOT_HEAD);
+		EquipItemByName(46349)
+		PLUGIN.InModeGear = true
+	end
+	if(GetItemCount(86468) > 0) then
+		PLUGIN.WornItems["TAB"] = GetInventoryItemID("player", INVSLOT_TABARD);
+		EquipItemByName(86468)
+		PLUGIN.InModeGear = true
+	end
+	if(GetItemCount(86559) > 0) then
+		PLUGIN.WornItems["MAIN"] = GetInventoryItemID("player", INVSLOT_MAINHAND);
+		EquipItemByName(86559)
+		PLUGIN.InModeGear = true
+	end
+	if(GetItemCount(86558) > 0) then
+		PLUGIN.WornItems["OFF"] = GetInventoryItemID("player", INVSLOT_OFFHAND);
+		EquipItemByName(86558)
+		PLUGIN.InModeGear = true
+	end
+end
+
+local function GetTitleAndSkill()
+	local msg = "|cff22ff11Cooking Mode|r"
+	if(skillRank) then
+		if(skillModifier) then
+			skillRank = skillRank + skillModifier;
+		end
+		msg = msg .. " (|cff00ddff" .. skillRank .. "|r)";
+	end
+	return msg
+end
+
+local function SendModeMessage(...)
+	if not CombatText_AddMessage then return end
+	CombatText_AddMessage(...)
+end
+--[[
+##########################################################
+CORE NAMESPACE
+##########################################################
+]]--
+PLUGIN.Cooking = {};
+PLUGIN.Cooking.Log = {};
+PLUGIN.Cooking.Loaded = false;
+--[[
+##########################################################
+EVENT HANDLER
+##########################################################
+]]--
+local EnableListener, DisableListener
+do
+	local CookEventHandler = CreateFrame("Frame")
+	local LootProxy = function(item, name)
+		if(item) then
+			local mask = [[0x10000]];
+			local itemType = GetItemFamily(item);
+			local pass = bit.band(itemType, mask);
+			if pass > 0 then
+				proxyTest = true;
+			end
+		end
+	end
+
+	local Cook_OnEvent = function(self, event, ...)
+		if(InCombatLockdown()) then return end
+		if(event == "BAG_UPDATE" or event == "CHAT_MSG_SKILL") then
+			local msg = GetTitleAndSkill()
+			PLUGIN.TitleWindow:Clear()
+			PLUGIN.TitleWindow:AddMessage(msg)
+		elseif(event == "CHAT_MSG_LOOT") then
+			local item, amt = PLUGIN:CheckForModeLoot(...);
+			if item then
+				local name, lnk, rarity, lvl, mlvl, itype, stype, cnt, ieq, tex, price = GetItemInfo(item);
+				if proxyTest == false then
+					LootProxy(lnk, name)
+				end
+				if proxyTest == false then return end
+				if not PLUGIN.Cooking.Log[name] then
+					PLUGIN.Cooking.Log[name] = {amount = 0, texture = ""};
+				end
+				local r, g, b, hex = GetItemQualityColor(rarity);
+				local stored = PLUGIN.Cooking.Log
+				local mod = stored[name];
+				local newAmt = mod.amount + 1;
+				if amt >= 2 then newAmt = mod.amount + amt end
+				PLUGIN.Cooking.Log[name].amount = newAmt;
+				PLUGIN.Cooking.Log[name].texture = tex;
+				PLUGIN.LogWindow:Clear();
+				for name,data in pairs(stored) do
+					if type(data) == "table" and data.amount and data.texture then
+						PLUGIN.LogWindow:AddMessage("|cff55FF55"..data.amount.." x|r |T".. data.texture ..":16:16:0:0:64:64:4:60:4:60|t".." "..name, r, g, b);
+					end
+				end
+				PLUGIN.LogWindow:AddMessage("----------------", 0, 0, 0);
+				PLUGIN.LogWindow:AddMessage("Cooked So Far...", 0, 1, 1);
+				PLUGIN.LogWindow:AddMessage(" ", 0, 0, 0);
+				proxyTest = false;
+			end
+		end
+	end
+
+	function EnableListener()
+		CookEventHandler:RegisterEvent("ZONE_CHANGED")
+		CookEventHandler:RegisterEvent("BAG_UPDATE")
+		CookEventHandler:RegisterEvent("CHAT_MSG_SKILL")
+		CookEventHandler:SetScript("OnEvent", Cook_OnEvent)
+	end
+
+	function DisableListener()
+		CookEventHandler:UnregisterAllEvents()
+		CookEventHandler:SetScript("OnEvent", nil)
+	end
+end
+--[[
+##########################################################
+CORE METHODS
+##########################################################
+]]--
+function PLUGIN.Cooking:Enable()
+	PLUGIN.Cooking:Update()
+	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+	if(SV.db[Schema].cooking.autoequip) then
+		UpdateChefWear();
+	end
+	PlaySoundFile("Sound\\Spells\\Tradeskills\\CookingPrepareA.wav")
+	PLUGIN.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
+
+	if(not IsSpellKnown(818)) then
+		PLUGIN:ModeLootLoader("Cooking", "WTF is Cooking?", "You have no clue how to cook! \nEven toast is a mystery to you. \nGo find a trainer and learn \nhow to do this simple job.");
+	else
+		local msg = GetTitleAndSkill();
+		if cookingSpell and GetSpellCooldown(campFire) > 0 then
+			PLUGIN:ModeLootLoader("Cooking", msg, "Double-Right-Click anywhere on the screen \nto open your cookbook.");
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', cookingSpell)
+		else
+			PLUGIN:ModeLootLoader("Cooking", msg, "Double-Right-Click anywhere on the screen \nto start a cooking fire.");
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', campFire)
+		end
+	end
+	EnableListener()
+	PLUGIN.ModeAlert:Show()
+	SendModeMessage("Cooking Mode Enabled", CombatText_StandardScroll, 0.28, 0.9, 0.1);
+end
+
+function PLUGIN.Cooking:Disable()
+	DisableListener()
+end
+
+function PLUGIN.Cooking:Bind()
+	if InCombatLockdown() then return end
+	if cookingSpell then
+		if cookingSpell and GetSpellCooldown(campFire) > 0 then
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', cookingSpell)
+			PLUGIN.ModeAlert.HelpText = 'Double-Right-Click to open the cooking window.'
+		end
+		SetOverrideBindingClick(_G["SVUI_ModeCaptureWindow"], true, "BUTTON2", "SVUI_ModeCaptureWindow");
+		_G["SVUI_ModeCaptureWindow"].Grip:Show();
+	end
+end
+
+function PLUGIN.Cooking:Update()
+	campFire = GetSpellInfo(818);
+	local _,_,_,_,cook,_ = GetProfessions();
+	if cook ~= nil then
+		cookingSpell, _, skillRank, _, _, _, _, skillModifier = GetProfessionInfo(cook)
+	end
+end
+--[[
+##########################################################
+LOADER
+##########################################################
+]]--
+function PLUGIN:LoadCookingMode()
+	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"];
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua b/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
new file mode 100644
index 0000000..f52d192
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/farming.lua
@@ -0,0 +1,622 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string    = _G.string;
+local math 		= _G.math;
+local table 	= _G.table;
+local rept      = string.rep;
+local tsort,twipe = table.sort,table.wipe;
+local floor,ceil  = math.floor, math.ceil;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local PLUGIN = select(2, ...);
+local Schema = PLUGIN.Schema;
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local NUM_SEED_BARS = 7
+local EnableListener, DisableListener, InventoryUpdate, LoadFarmingModeTools;
+local seedButtons,farmToolButtons,portalButtons = {},{},{};
+local DockButton, ModeLogsFrame;
+local refSeeds = {[79102]={1},[89328]={1},[80590]={1},[80592]={1},[80594]={1},[80593]={1},[80591]={1},[89329]={1},[80595]={1},[89326]={1},[80809]={3},[95434]={4},[89848]={3},[95437]={4},[84782]={3},[95436]={4},[85153]={3},[95438]={4},[85162]={3},[95439]={4},[85158]={3},[95440]={4},[84783]={3},[95441]={4},[89849]={3},[95442]={4},[85163]={3},[95443]={4},[89847]={3},[95444]={4},[85216]={2},[85217]={2},[89202]={2},[85215]={2},[89233]={2},[89197]={2},[85219]={2},[91806]={2},[95449]={5},[95450]={6},[95451]={5},[95452]={6},[95457]={5},[95458]={6},[95447]={5},[95448]={6},[95445]={5},[95446]={6},[95454]={5},[95456]={6},[85267]={7},[85268]={7},[85269]={7}};
+local refTools = {[79104]={30254},[80513]={30254},[89880]={30535},[89815]={31938}};
+local refPortals = {[91850]={"Horde"},[91861]={"Horde"},[91862]={"Horde"},[91863]={"Horde"},[91860]={"Alliance"},[91864]={"Alliance"},[91865]={"Alliance"},[91866]={"Alliance"}};
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local Scroll_OnValueChanged = function(self,argValue)
+	FarmModeFrame:SetVerticalScroll(argValue)
+end
+
+local Scroll_OnMouseWheel = function(self, delta)
+	local scroll = self:GetVerticalScroll();
+	local value = (scroll - (20 * delta));
+	if value < -1 then
+		value = 0
+	end
+	if value > 420 then
+		value = 420
+	end
+	self:SetVerticalScroll(value)
+	self.slider:SetValue(value)
+end
+
+local function FindItemInBags(itemId)
+	for container = 0, NUM_BAG_SLOTS do
+		for slot = 1, GetContainerNumSlots(container) do
+			if itemId == GetContainerItemID(container, slot) then
+				return container, slot
+			end
+		end
+	end
+end
+--[[
+##########################################################
+EVENT HANDLER
+##########################################################
+]]--
+do
+	local FarmEventHandler = CreateFrame("Frame")
+
+	local ButtonUpdate = function(button)
+		button.items = GetItemCount(button.itemId)
+		if button.text then
+			button.text:SetText(button.items)
+		end
+		button.icon:SetDesaturated(button.items == 0)
+		button.icon:SetAlpha(button.items == 0 and .25 or 1)
+	end
+
+	local InFarmZone = function()
+		local zone = GetSubZoneText()
+		if (zone == L["Sunsong Ranch"] or zone == L["The Halfhill Market"]) then
+			if PLUGIN.Farming.ToolsLoaded and PLUGIN.ModeAlert:IsShown() then
+				PLUGIN.TitleWindow:Clear()
+	 			PLUGIN.TitleWindow:AddMessage("|cff22ff11Farming Mode|r")
+			end
+			return true
+		else
+			if PLUGIN.Farming.ToolsLoaded and PLUGIN.ModeAlert:IsShown() then
+				PLUGIN.TitleWindow:Clear()
+	 			PLUGIN.TitleWindow:AddMessage("|cffff2211Must be in Sunsong Ranch|r")
+			end
+			return false
+		end
+	end
+
+	local UpdateFarmtoolCooldown = function()
+		for i = 1, NUM_SEED_BARS do
+			for _, button in ipairs(seedButtons[i]) do
+				if button.cooldown then
+					button.cooldown:SetCooldown(GetItemCooldown(button.itemId))
+				end
+			end
+		end
+		for _, button in ipairs(farmToolButtons) do
+			if button.cooldown then
+				button.cooldown:SetCooldown(GetItemCooldown(button.itemId))
+			end
+		end
+		for _, button in ipairs(portalButtons) do
+			if button.cooldown then
+				button.cooldown:SetCooldown(GetItemCooldown(button.itemId))
+			end
+		end
+	end
+
+	local Farm_OnEvent = function(self, event, ...)
+		if(InCombatLockdown()) then return end
+		if(event == "ZONE_CHANGED") then
+			local inZone = InFarmZone()
+			if not inZone and SV.db[Schema].farming.droptools then
+				for k, v in pairs(refTools) do
+					local container, slot = FindItemInBags(k)
+					if container and slot then
+						PickupContainerItem(container, slot)
+						DeleteCursorItem()
+					end
+				end
+			end
+			if inZone then
+				self:RegisterEvent("BAG_UPDATE")
+				self:RegisterEvent("BAG_UPDATE_COOLDOWN")
+			else
+				self:UnregisterEvent("BAG_UPDATE")
+				self:UnregisterEvent("BAG_UPDATE_COOLDOWN")
+			end
+			InventoryUpdate()
+		elseif(event == "BAG_UPDATE") then
+			InventoryUpdate()
+		elseif(event == "BAG_UPDATE_COOLDOWN") then
+			UpdateFarmtoolCooldown()
+		end
+	end
+
+	InventoryUpdate = function()
+		if InCombatLockdown() then
+			FarmEventHandler:RegisterEvent("PLAYER_REGEN_ENABLED", InventoryUpdate)
+			return
+		else
+			FarmEventHandler:UnregisterEvent("PLAYER_REGEN_ENABLED")
+	 	end
+		for i = 1, NUM_SEED_BARS do
+			for _, button in ipairs(seedButtons[i]) do
+				ButtonUpdate(button)
+			end
+		end
+		for _, button in ipairs(farmToolButtons) do
+			ButtonUpdate(button)
+		end
+		for _, button in ipairs(portalButtons) do
+			ButtonUpdate(button)
+		end
+
+		PLUGIN:RefreshFarmingTools()
+	end
+
+	EnableListener = function()
+		FarmEventHandler:RegisterEvent("ZONE_CHANGED")
+		FarmEventHandler:SetScript("OnEvent", Farm_OnEvent)
+	end
+
+	DisableListener = function()
+		FarmEventHandler:UnregisterAllEvents()
+		FarmEventHandler:SetScript("OnEvent", nil)
+	end
+end
+--[[
+##########################################################
+LOADING HANDLER
+##########################################################
+]]--
+do
+	local seedsort = function(a, b) return a.sortname < b.sortname end
+
+	local SeedToSoil = function(group, itemId)
+		if(UnitName("target") ~= L["Tilled Soil"]) then return false; end
+		for i, v in pairs(group) do
+			if i == itemId then return true end
+		end
+		return false
+	end
+
+	local Button_OnEnter = function(self)
+		GameTooltip:SetOwner(self, 'ANCHOR_TOPLEFT', 2, 4)
+		GameTooltip:ClearLines()
+		GameTooltip:AddDoubleLine(self.sortname)
+		if self.allowDrop then
+			GameTooltip:AddLine(L['Right-click to drop the item.'])
+		end
+		GameTooltip:Show()
+	end
+
+	local Button_OnLeave = function()
+		GameTooltip:Hide()
+	end
+
+	local Button_OnMouseDown = function(self, mousebutton)
+		if InCombatLockdown() then return end
+		if mousebutton == "LeftButton" then
+			self:SetAttribute("type", self.buttonType)
+			self:SetAttribute(self.buttonType, self.sortname)
+			if(SeedToSoil(refSeeds, self.itemId)) then
+				local container, slot = FindItemInBags(self.itemId)
+				if container and slot then
+					self:SetAttribute("type", "macro")
+					self:SetAttribute("macrotext", format("/targetexact %s \n/use %s %s", L["Tilled Soil"], container, slot))
+				end
+			end
+			if self.cooldown then
+				self.cooldown:SetCooldown(GetItemCooldown(self.itemId))
+			end
+		elseif mousebutton == "RightButton" and self.allowDrop then
+			self:SetAttribute("type", "click")
+			local container, slot = FindItemInBags(self.itemId)
+			if container and slot then
+				PickupContainerItem(container, slot)
+				DeleteCursorItem()
+			end
+		end
+	end
+
+	local function CreateFarmingButton(index, owner, buttonName, buttonType, name, texture, allowDrop, showCount)
+		local BUTTONSIZE = owner.ButtonSize;
+		local button = CreateFrame("Button", ("FarmingButton"..buttonName.."%d"):format(index), owner, "SecureActionButtonTemplate")
+		button:SetFixedPanelTemplate("Transparent")
+		button.Panel:SetFrameLevel(0)
+		button:SetNormalTexture(nil)
+		button:Size(BUTTONSIZE, BUTTONSIZE)
+		button.sortname = name
+		button.itemId = index
+		button.allowDrop = allowDrop
+		button.buttonType = buttonType
+		button.items = GetItemCount(index)
+		button.icon = button:CreateTexture(nil, "OVERLAY", nil, 2)
+		button.icon:SetTexture(texture)
+		button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		button.icon:FillInner(button,2,2)
+		if showCount then
+			button.text = button:CreateFontString(nil, "OVERLAY")
+			button.text:SetFont(SV.Media.font.action, 12, "OUTLINE")
+			button.text:SetPoint("BOTTOMRIGHT", button, 1, 2)
+		end
+		button.cooldown = CreateFrame("Cooldown", ("FarmingButton"..buttonName.."%dCooldown"):format(index), button)
+		button.cooldown:SetAllPoints(button)
+		button:SetScript("OnEnter", Button_OnEnter)
+		button:SetScript("OnLeave", Button_OnLeave)
+		button:SetScript("OnMouseDown", Button_OnMouseDown)
+		return button
+	end
+
+	function LoadFarmingModeTools()
+		local itemError = false
+		for k, v in pairs(refSeeds) do
+			if select(2, GetItemInfo(k)) == nil then print(GetItemInfo(k)) itemError = true end
+		end
+		for k, v in pairs(refTools) do
+			if select(2, GetItemInfo(k)) == nil then print(GetItemInfo(k)) itemError = true end
+		end
+		for k, v in pairs(refPortals) do
+			if select(2, GetItemInfo(k)) == nil then print(GetItemInfo(k)) itemError = true end
+		end
+		if InCombatLockdown() or itemError then
+			if PLUGIN.FarmLoadTimer then
+				PLUGIN.FarmLoadTimer = nil
+				PLUGIN.Farming:Disable()
+				PLUGIN.TitleWindow:AddMessage("|cffffff11The Loader is Being Dumb...|r|cffff1111PLEASE TRY AGAIN|r")
+				return
+			end
+			PLUGIN.TitleWindow:AddMessage("|cffffff11Loading Farm Tools...|r|cffff1111PLEASE WAIT|r")
+			PLUGIN.FarmLoadTimer = SV.Timers:ExecuteTimer(LoadFarmingModeTools, 5)
+		else
+			local horizontal = SV.db[Schema].farming.toolbardirection == 'HORIZONTAL'
+
+			local seeds, farmtools, portals = {},{},{}
+
+			for k, v in pairs(refSeeds) do
+				seeds[k] = { v[1], GetItemInfo(k) }
+			end
+
+			for k, v in pairs(refTools) do
+				farmtools[k] = { v[1], GetItemInfo(k) }
+			end
+
+			for k, v in pairs(refPortals) do
+				portals[k] = { v[1], GetItemInfo(k) }
+			end
+
+			for i = 1, NUM_SEED_BARS do
+				local seedBar = _G["FarmSeedBar"..i]
+				seedButtons[i] = seedButtons[i] or {}
+				local sbc = 1;
+				for k, v in pairs(seeds) do
+					if v[1] == i then
+						seedButtons[i][sbc] = CreateFarmingButton(k, seedBar, "SeedBar"..i.."Seed", "item", v[2], v[11], false, true);
+						sbc = sbc + 1;
+					end
+					tsort(seedButtons[i], seedsort)
+				end
+			end
+
+			local ftc = 1;
+			for k, v in pairs(farmtools) do
+				farmToolButtons[ftc] = CreateFarmingButton(k, _G["FarmToolBar"], "Tools", "item", v[2], v[11], true, false);
+				ftc = ftc + 1;
+			end
+
+			local playerFaction = UnitFactionGroup('player')
+			local pbc = 1;
+			for k, v in pairs(portals) do
+				if v[1] == playerFaction then
+					portalButtons[pbc] = CreateFarmingButton(k, _G["FarmPortalBar"], "Portals", "item", v[2], v[11], false, true);
+					pbc = pbc + 1;
+				end
+			end
+
+			PLUGIN.Farming.Loaded = true
+			PLUGIN.FarmLoadTimer = nil
+			PLUGIN.FarmEnableTimer = SV.Timers:ExecuteTimer(PLUGIN.Farming.Enable, 1.5)
+		end
+	end
+end
+--[[
+##########################################################
+CORE FUNCTIONS
+##########################################################
+]]--
+PLUGIN.Farming = {};
+PLUGIN.Farming.Loaded = false;
+PLUGIN.Farming.ToolsLoaded = false;
+
+function PLUGIN.Farming:Enable()
+	if InCombatLockdown() then return end
+
+ 	PLUGIN:ModeLootLoader("Farming", "Farming Mode", "This mode will provide you \nwith fast-access buttons for each \nof your seeds and farming tools.");
+
+ 	PLUGIN.TitleWindow:Clear()
+	if(not PLUGIN.Farming.Loaded) then
+		PLUGIN.TitleWindow:AddMessage("|cffffff11Loading Farm Tools...|r")
+		LoadFarmingModeTools()
+		return
+	else
+		if not PLUGIN.Farming.ToolsLoaded then
+			PlaySoundFile("Sound\\Effects\\DeathImpacts\\mDeathImpactColossalDirtA.wav")
+			PLUGIN.TitleWindow:AddMessage("|cff22ff11Farming Mode|r")
+			PLUGIN.ModeAlert:Show()
+			InventoryUpdate()
+			PLUGIN.Farming.ToolsLoaded = true
+			EnableListener()
+			if not FarmModeFrame:IsShown() then FarmModeFrame:Show() end
+			if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+		end
+	end
+end
+
+function PLUGIN.Farming:Disable()
+	if(InCombatLockdown() or (not PLUGIN.Farming.Loaded) or (not PLUGIN.Farming.ToolsLoaded)) then
+		DisableListener()
+		return
+	end
+	if SV.db[Schema].farming.droptools then
+		for k, v in pairs(refTools) do
+			local container, slot = FindItemInBags(k)
+			if container and slot then
+				PickupContainerItem(container, slot)
+				DeleteCursorItem()
+			end
+		end
+	end
+	if FarmModeFrame:IsShown() then FarmModeFrame:Hide() end
+	PLUGIN.Farming.ToolsLoaded = false
+	DisableListener()
+end
+--[[
+##########################################################
+CORE FUNCTIONS
+##########################################################
+]]--
+function PLUGIN:RefreshFarmingTools()
+	local count, horizontal = 0, SV.db[Schema].farming.toolbardirection == 'HORIZONTAL'
+	local BUTTONSPACE = SV.db[Schema].farming.buttonspacing or 2;
+	local lastBar;
+	if not FarmToolBar:IsShown() then
+		_G["FarmSeedBarAnchor"]:SetPoint("TOPLEFT", _G["FarmModeFrameSlots"], "TOPLEFT", 0, 0)
+	else
+		_G["FarmSeedBarAnchor"]:SetPoint("TOPLEFT", _G["FarmToolBar"], horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
+	end
+
+	for i = 1, NUM_SEED_BARS do
+		local seedBar = _G["FarmSeedBar"..i]
+		count = 0
+		for i, button in ipairs(seedButtons[i]) do
+			local BUTTONSIZE = seedBar.ButtonSize;
+			button:Point("TOPLEFT", seedBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
+			button:Size(BUTTONSIZE,BUTTONSIZE)
+			if (not SV.db[Schema].farming.onlyactive or (SV.db[Schema].farming.onlyactive and button.items > 0)) then
+				button.icon:SetVertexColor(1,1,1)
+				count = count + 1
+			elseif (not SV.db[Schema].farming.onlyactive and button.items <= 0) then
+				button:Show()
+				button.icon:SetVertexColor(0.25,0.25,0.25)
+				count = count + 1
+			else
+				button:Hide()
+			end
+		end
+		if(SV.db[Schema].farming.onlyactive and not SV.db[Schema].farming.undocked) then
+			if count==0 then
+				seedBar:Hide()
+			else
+				seedBar:Show()
+				if(not lastBar) then
+					seedBar:SetPoint("TOPLEFT", _G["FarmSeedBarAnchor"], "TOPLEFT", 0, 0)
+				else
+					seedBar:SetPoint("TOPLEFT", lastBar, horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
+				end
+				lastBar = seedBar
+			end
+		end
+	end
+	count = 0;
+	lastBar = nil;
+	FarmToolBar:ClearAllPoints()
+	FarmToolBar:SetAllPoints(FarmToolBarAnchor)
+	for i, button in ipairs(farmToolButtons) do
+		local BUTTONSIZE = FarmToolBar.ButtonSize;
+		button:Point("TOPLEFT", FarmToolBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
+		button:Size(BUTTONSIZE,BUTTONSIZE)
+		if (not SV.db[Schema].farming.onlyactive or (SV.db[Schema].farming.onlyactive and button.items > 0)) then
+			button:Show()
+			button.icon:SetVertexColor(1,1,1)
+			count = count + 1
+		elseif (not SV.db[Schema].farming.onlyactive and button.items == 0) then
+			button:Show()
+			button.icon:SetVertexColor(0.25,0.25,0.25)
+			count = count + 1
+		else
+			button:Hide()
+		end
+	end
+	if(SV.db[Schema].farming.onlyactive and not SV.db[Schema].farming.undocked) then
+		if count==0 then
+			FarmToolBarAnchor:Hide()
+			FarmPortalBar:SetPoint("TOPLEFT", FarmModeFrameSlots, "TOPLEFT", 0, 0)
+		else
+			FarmToolBarAnchor:Show()
+			FarmPortalBar:SetPoint("TOPLEFT", FarmToolBarAnchor, "TOPRIGHT", 0, 0)
+		end
+	end
+	count = 0;
+	FarmPortalBar:ClearAllPoints()
+	FarmPortalBar:SetAllPoints(FarmPortalBarAnchor)
+	for i, button in ipairs(portalButtons) do
+		local BUTTONSIZE = FarmPortalBar.ButtonSize;
+		button:Point("TOPLEFT", FarmPortalBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
+		button:Size(BUTTONSIZE,BUTTONSIZE)
+		if (not SV.db[Schema].farming.onlyactive or (SV.db[Schema].farming.onlyactive and button.items > 0)) then
+			button:Show()
+			button.icon:SetVertexColor(1,1,1)
+			count = count + 1
+		elseif (not SV.db[Schema].farming.onlyactive and button.items == 0) then
+			button:Show()
+			button.icon:SetVertexColor(0.25,0.25,0.25)
+			count = count + 1
+		else
+			button:Hide()
+		end
+	end
+	if(SV.db[Schema].farming.onlyactive) then
+		if count==0 then
+			FarmPortalBar:Hide()
+		else
+			FarmPortalBar:Show()
+		end
+	end
+end
+
+function PLUGIN:PrepareFarmingTools()
+	local horizontal = SV.db[Schema].farming.toolbardirection == "HORIZONTAL"
+	local BUTTONSPACE = SV.db[Schema].farming.buttonspacing or 2;
+
+	ModeLogsFrame = PLUGIN.LogWindow;
+	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"]
+
+	if not SV.db[Schema].farming.undocked then
+		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
+		local bdTex = SV.Media.bar.glow
+		local farmingDocklet = CreateFrame("ScrollFrame", "FarmModeFrame", ModeLogsFrame);
+		farmingDocklet:SetPoint("TOPLEFT", ModeLogsFrame, 31, -3);
+		farmingDocklet:SetPoint("BOTTOMRIGHT", ModeLogsFrame, -3, 3);
+		farmingDocklet:EnableMouseWheel(true);
+
+		local farmingDockletSlots = CreateFrame("Frame", "FarmModeFrameSlots", farmingDocklet);
+		farmingDockletSlots:SetPoint("TOPLEFT", farmingDocklet, 0, 0);
+		farmingDockletSlots:SetWidth(farmingDocklet:GetWidth())
+		farmingDockletSlots:SetHeight(500);
+		farmingDockletSlots:SetFrameLevel(farmingDocklet:GetFrameLevel() + 1)
+		farmingDocklet:SetScrollChild(farmingDockletSlots)
+
+		local slotSlider = CreateFrame("Slider", "FarmModeSlotSlider", farmingDocklet);
+		slotSlider:SetHeight(farmingDocklet:GetHeight() - 3);
+		slotSlider:SetWidth(18);
+		slotSlider:SetPoint("TOPLEFT", farmingDocklet, -28, 0);
+		slotSlider:SetPoint("BOTTOMLEFT", farmingDocklet, -28, 0);
+		slotSlider:SetBackdrop({bgFile = bgTex, edgeFile = bdTex, edgeSize = 4, insets = {left = 3, right = 3, top = 3, bottom = 3}});
+		slotSlider:SetFrameLevel(6)
+		slotSlider:SetFixedPanelTemplate("Transparent", true);
+		slotSlider:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob");
+		slotSlider:SetOrientation("VERTICAL");
+		slotSlider:SetValueStep(5);
+		slotSlider:SetMinMaxValues(1, 420);
+		slotSlider:SetValue(1);
+
+		farmingDocklet.slider = slotSlider;
+		slotSlider:SetScript("OnValueChanged", Scroll_OnValueChanged)
+		farmingDocklet:SetScript("OnMouseWheel", Scroll_OnMouseWheel);
+
+		local parentWidth = FarmModeFrameSlots:GetWidth() - 31
+		local BUTTONSIZE = (parentWidth / (horizontal and 10 or 8));
+		local TOOLSIZE = (parentWidth / 8);
+
+		-- FARM TOOLS
+		local farmToolBarAnchor = CreateFrame("Frame", "FarmToolBarAnchor", farmingDockletSlots)
+		farmToolBarAnchor:Point("TOPLEFT", farmingDockletSlots, "TOPLEFT", 0, 0)
+		farmToolBarAnchor:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
+
+		local farmToolBar = CreateFrame("Frame", "FarmToolBar", farmToolBarAnchor)
+		farmToolBar:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
+		farmToolBar:SetPoint("TOPLEFT", farmToolBarAnchor, "TOPLEFT", (horizontal and BUTTONSPACE or (TOOLSIZE + BUTTONSPACE)), (horizontal and -(TOOLSIZE + BUTTONSPACE) or -BUTTONSPACE))
+		farmToolBar.ButtonSize = TOOLSIZE;
+
+		-- PORTALS
+		local farmPortalBarAnchor = CreateFrame("Frame", "FarmPortalBarAnchor", farmingDockletSlots)
+		farmPortalBarAnchor:Point("TOPLEFT", farmToolBarAnchor, "TOPRIGHT", 0, 0)
+		farmPortalBarAnchor:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
+
+		local farmPortalBar = CreateFrame("Frame", "FarmPortalBar", farmPortalBarAnchor)
+		farmPortalBar:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
+		farmPortalBar:SetPoint("TOPLEFT", farmPortalBarAnchor, "TOPLEFT", (horizontal and BUTTONSPACE or (TOOLSIZE + BUTTONSPACE)), (horizontal and -(TOOLSIZE + BUTTONSPACE) or -BUTTONSPACE))
+		farmPortalBar.ButtonSize = TOOLSIZE;
+
+		-- SEEDS
+		local farmSeedBarAnchor = CreateFrame("Frame", "FarmSeedBarAnchor", farmingDockletSlots)
+		farmSeedBarAnchor:Point("TOPLEFT", farmPortalBarAnchor, horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
+		farmSeedBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or ((BUTTONSIZE + BUTTONSPACE) * 8), horizontal and ((BUTTONSIZE + BUTTONSPACE) * 8) or ((BUTTONSIZE + BUTTONSPACE) * 10))
+
+		for i = 1, NUM_SEED_BARS do
+			local seedBar = CreateFrame("Frame", "FarmSeedBar"..i, farmSeedBarAnchor)
+			seedBar.ButtonSize = BUTTONSIZE;
+			seedBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 10))
+			if i == 1 then
+				seedBar:SetPoint("TOPLEFT", farmSeedBarAnchor, "TOPLEFT", 0, 0)
+			else
+				seedBar:SetPoint("TOPLEFT", "FarmSeedBar"..i-1, horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
+			end
+		end
+
+		farmingDocklet:Hide()
+	else
+		local BUTTONSIZE = SV.db[Schema].farming.buttonsize or 35;
+
+		-- SEEDS
+		local farmSeedBarAnchor = CreateFrame("Frame", "FarmSeedBarAnchor", SV.UIParent)
+		farmSeedBarAnchor:Point("TOPRIGHT", SV.UIParent, "TOPRIGHT", -40, -300)
+		farmSeedBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or ((BUTTONSIZE + BUTTONSPACE) * 8), horizontal and ((BUTTONSIZE + BUTTONSPACE) * 8) or ((BUTTONSIZE + BUTTONSPACE) * 10))
+		for i = 1, NUM_SEED_BARS do
+			local seedBar = CreateFrame("Frame", "FarmSeedBar"..i, farmSeedBarAnchor)
+			seedBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 10))
+			seedBar:SetPoint("TOPRIGHT", _G["FarmSeedBarAnchor"], "TOPRIGHT", (horizontal and 0 or -((BUTTONSIZE + BUTTONSPACE) * i)), (horizontal and -((BUTTONSIZE + BUTTONSPACE) * i) or 0))
+			seedBar.ButtonSize = BUTTONSIZE;
+		end
+		SV.Mentalo:Add(farmSeedBarAnchor, "Farming Seeds")
+
+		-- FARM TOOLS
+		local farmToolBarAnchor = CreateFrame("Frame", "FarmToolBarAnchor", SV.UIParent)
+		farmToolBarAnchor:Point("TOPRIGHT", farmSeedBarAnchor, horizontal and "BOTTOMRIGHT" or "TOPLEFT", horizontal and 0 or -(BUTTONSPACE * 2), horizontal and -(BUTTONSPACE * 2) or 0)
+		farmToolBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
+		local farmToolBar = CreateFrame("Frame", "FarmToolBar", farmToolBarAnchor)
+		farmToolBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
+		farmToolBar:SetPoint("TOPRIGHT", farmToolBarAnchor, "TOPRIGHT", (horizontal and -BUTTONSPACE or -(BUTTONSIZE + BUTTONSPACE)), (horizontal and -(BUTTONSIZE + BUTTONSPACE) or -BUTTONSPACE))
+		farmToolBar.ButtonSize = BUTTONSIZE;
+		SV.Mentalo:Add(farmToolBarAnchor, "Farming Tools")
+
+		-- PORTALS
+		local farmPortalBarAnchor = CreateFrame("Frame", "FarmPortalBarAnchor", SV.UIParent)
+		farmPortalBarAnchor:Point("TOPRIGHT", farmToolBarAnchor, horizontal and "BOTTOMRIGHT" or "TOPLEFT", horizontal and 0 or -(BUTTONSPACE * 2), horizontal and -(BUTTONSPACE * 2) or 0)
+		farmPortalBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
+		local farmPortalBar = CreateFrame("Frame", "FarmPortalBar", farmPortalBarAnchor)
+		farmPortalBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
+		farmPortalBar:SetPoint("TOPRIGHT", farmPortalBarAnchor, "TOPRIGHT", (horizontal and -BUTTONSPACE or -(BUTTONSIZE + BUTTONSPACE)), (horizontal and -(BUTTONSIZE + BUTTONSPACE) or -BUTTONSPACE))
+		farmPortalBar.ButtonSize = BUTTONSIZE;
+		SV.Mentalo:Add(farmPortalBarAnchor, "Farming Portals")
+	end
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua b/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
new file mode 100644
index 0000000..995b328
--- /dev/null
+++ b/Interface/AddOns/SVUI_CraftOMatic/components/fishing.lua
@@ -0,0 +1,382 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local type 		= _G.type;
+local string    = _G.string;
+local math 		= _G.math;
+local table 	= _G.table;
+local rept      = string.rep;
+local tsort,twipe = table.sort,table.wipe;
+local floor,ceil  = math.floor, math.ceil;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local PLUGIN = select(2, ...);
+local Schema = PLUGIN.Schema;
+--[[
+##########################################################
+LOCAL VARS
+##########################################################
+]]--
+local fishingIsKnown, fishingSpell, fishingLure;
+local proxyTest = false;
+local refLures = {
+	{ ["id"] = 6529,  ["bonus"] = 25,  ["skillReq"] = 1,   ["order"] = 10, },  --Shiny Bauble
+	{ ["id"] = 6811,  ["bonus"] = 50,  ["skillReq"] = 50,  ["order"] = 10, },  --Aquadynamic Fish Lens
+	{ ["id"] = 6530,  ["bonus"] = 50,  ["skillReq"] = 50,  ["order"] = 10, },  --Nightcrawlers
+	{ ["id"] = 7307,  ["bonus"] = 75,  ["skillReq"] = 100, ["order"] = 10, },  --Flesh Eating Worm
+	{ ["id"] = 6532,  ["bonus"] = 75,  ["skillReq"] = 100, ["order"] = 10, },  --Bright Baubles
+	{ ["id"] = 34861, ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 10, },  --Sharpened Fish Hook
+	{ ["id"] = 6533,  ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 10, },  --Aquadynamic Fish Attractor
+	{ ["id"] = 62673, ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 10, },  --Feathered Lure
+	{ ["id"] = 46006, ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 60, },  --Glow Worm
+	{ ["id"] = 68049, ["bonus"] = 150, ["skillReq"] = 250, ["order"] = 5,  },  --Heat-Treated Spinning Lure
+	{ ["id"] = 67404, ["bonus"] = 15,  ["skillReq"] = 1,   ["order"] = 10, },  --Glass Fishing Bobber
+}
+tsort(refLures, function(a,b)
+	if ( a.bonus == b.bonus ) then
+		return a.order < b.order;
+	else
+		return a.bonus < b.bonus;
+	end
+end);
+local refHats = {
+	{ ["id"] = 93732, ["weight"] = 10, ["nocast"] = true },  --Darkmoon Fishing Hat
+	{ ["id"] = 33820, ["weight"] = 50  },  --Weather Beaten Fishing Hat
+	{ ["id"] = 19972, ["weight"] = 75  },  --Lucky Fishing Hat
+	{ ["id"] = 88710, ["weight"] = 100 },  --Nats Hat
+}
+local refPoles = {
+	{ ["id"] = 44050, ["weight"] = 33 },  --Kaluak
+	{ ["id"] = 25978, ["weight"] = 22 },  --Seths Graphite
+	{ ["id"] = 19022, ["weight"] = 21 },  --Nat Pagles Extreme Angler
+	{ ["id"] = 6367,  ["weight"] = 20 },  --Big Iron
+	{ ["id"] = 6366,  ["weight"] = 15 },  --Darkwood
+	{ ["id"] = 84661, ["weight"] = 32 },  --Dragon
+	{ ["id"] = 19970, ["weight"] = 40 },  --Arcanite
+	{ ["id"] = 45858, ["weight"] = 25 },  --Nats Lucky
+	{ ["id"] = 45992, ["weight"] = 31 },  --Jeweled
+	{ ["id"] = 45991, ["weight"] = 30 },  --Bone
+	{ ["id"] = 6365,  ["weight"] = 5 },   --Strong
+	{ ["id"] = 12225, ["weight"] = 4 },   --Blump Family
+	{ ["id"] = 46337, ["weight"] = 3 },   --Staats
+	{ ["id"] = 84660, ["weight"] = 10 },  --Pandaren
+	{ ["id"] = 6256,  ["weight"] = 1 }    --Standard
+}
+local DockButton;
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function SendModeMessage(...)
+	if not CombatText_AddMessage then return end
+	CombatText_AddMessage(...)
+end
+
+local function GetFishingSkill()
+	local fishing = select(4, GetProfessions())
+	if (fishing) then
+		local rank = select(3, GetProfessionInfo(fishing))
+		return rank
+	end
+	return 0, 0, 0
+end
+
+local function FishingPoleIsEquipped()
+	local itemId = GetInventoryItemID("player", 16)
+	if itemId then
+		local subclass = select(7, GetItemInfo(itemId))
+		local weaponSubTypesList = select(17, GetAuctionItemSubClasses(1))
+		if subclass == weaponSubTypesList then
+			return true
+		else
+			return false
+		end
+	else
+		return false
+	end
+end
+
+local function UpdateFishingGear(autoequip)
+	local lastBonus, lastWeight = 0,0;
+	local rawskill = GetFishingSkill();
+	local item,id,bonus,count;
+
+	-- Check for and equip a fishing hat, if autoequip is enabled
+	if(autoequip) then
+		local fishingHat = false;
+		for i=1, #refHats do
+			item = refHats[i]
+			id = item.id
+			bonus = item.weight
+			count = GetItemCount(id)
+			if ( count > 0 and bonus > lastWeight ) then
+				fishingHat = id
+				lastWeight = bonus
+				if(item.weight > 10) then
+					fishingLure = id
+					lastBonus = bonus
+				end
+			end
+		end
+		if(fishingHat) then
+			local HelmetID = GetInventoryItemID("player", INVSLOT_HEAD);
+			if(HelmetID) then
+				PLUGIN.WornItems["HEAD"] = HelmetID
+			end
+			EquipItemByName(fishingHat)
+			PLUGIN.InModeGear = true
+		end
+	end
+
+	-- Check for and save best fishing lure
+	for i=1, #refLures do
+		item = refLures[i]
+		id = item.id
+		bonus = item.bonus
+		count = GetItemCount(id)
+		if ( count > 0 and bonus > (lastBonus or 0) ) then
+			if ( item.skillReq <= rawskill ) then
+				fishingLure = id
+				lastBonus = bonus
+			end
+		end
+	end
+
+	-- Check for and equip a fishing pole, if autoequip is enabled
+	if(autoequip) then
+		lastBonus = 0;
+		local fishingPole = false;
+		for i=1, #refPoles do
+			item = refPoles[i]
+			id = item.id
+			bonus = item.weight
+			count = GetItemCount(id)
+			if ( count > 0 and bonus > (lastBonus or 0) ) then
+				fishingPole = id
+				lastBonus = bonus
+			end
+		end
+		if(fishingPole) then
+			local MainHandID = GetInventoryItemID("player", INVSLOT_MAINHAND);
+			if(MainHandID) then
+				PLUGIN.WornItems["MAIN"] = MainHandID
+			end
+
+			local OffHandID = GetInventoryItemID("player", INVSLOT_OFFHAND);
+			if(OffHandID) then
+				PLUGIN.WornItems["OFF"] = OffHandID;
+			end
+
+			EquipItemByName(fishingPole)
+			PLUGIN.InModeGear = true
+		end
+	end
+end
+
+local function LootProxy(item, name)
+	if(item) then
+		local mask = [[0x100000]];
+		local itemType = GetItemFamily(item);
+		local pass = bit.band(itemType, mask);
+		if pass > 0 then
+			proxyTest = true;
+		end
+	end
+end
+
+local function GetTitleAndSkill()
+	local skillRank, skillModifier;
+	local msg = "|cff22ff11Fishing Mode|r"
+	local _,_,_,fishing,_,_ = GetProfessions();
+	if fishing ~= nil then
+		_, _, skillRank, _, _, _, _, skillModifier = GetProfessionInfo(fishing)
+		if(skillModifier) then
+			skillRank = skillRank + skillModifier;
+		end
+		msg = msg .. " (|cff00ddff" .. skillRank .. "|r)";
+	end
+	return msg
+end
+--[[
+##########################################################
+CORE NAMESPACE
+##########################################################
+]]--
+PLUGIN.Fishing = {};
+PLUGIN.Fishing.Log = {};
+PLUGIN.Fishing.Loaded = false;
+--[[
+##########################################################
+EVENT HANDLER
+##########################################################
+]]--
+local EnableListener, DisableListener
+do
+	local FishEventHandler = CreateFrame("Frame")
+	local LootProxy = function(item, name)
+		if(item) then
+			local mask = [[0x10000]];
+			local itemType = GetItemFamily(item);
+			local pass = bit.band(itemType, mask);
+			if pass > 0 then
+				proxyTest = true;
+			end
+		end
+	end
+
+	local Fish_OnEvent = function(self, event, ...)
+		if(InCombatLockdown()) then return end
+		if(event == "BAG_UPDATE" or event == "CHAT_MSG_SKILL") then
+			local msg = GetTitleAndSkill()
+			PLUGIN.TitleWindow:Clear()
+			PLUGIN.TitleWindow:AddMessage(msg)
+		elseif(event == "LOOT_OPENED") then
+			if IsFishingLoot() then
+				proxyTest = true;
+			else
+				proxyTest = false;
+			end
+		elseif(event == "CHAT_MSG_LOOT") then
+			local item, amt = PLUGIN:CheckForModeLoot(...);
+			if item then
+				local name, lnk, rarity, lvl, mlvl, itype, stype, cnt, ieq, tex, price = GetItemInfo(item);
+				if proxyTest == false then
+					LootProxy(lnk, name)
+				end
+				if proxyTest == false then return end
+				if not PLUGIN.Fishing.Log[name] then
+					PLUGIN.Fishing.Log[name] = {amount = 0, texture = ""};
+				end
+				local r, g, b, hex = GetItemQualityColor(rarity);
+				local stored = PLUGIN.Fishing.Log
+				local mod = stored[name];
+				local newAmt = mod.amount + 1;
+				if amt >= 2 then newAmt = mod.amount + amt end
+				PLUGIN.Fishing.Log[name].amount = newAmt;
+				PLUGIN.Fishing.Log[name].texture = tex;
+				PLUGIN.LogWindow:Clear();
+
+				for name,data in pairs(stored) do
+					if type(data) == "table" and data.amount and data.texture then
+						PLUGIN.LogWindow:AddMessage("|cff55FF55"..data.amount.." x|r |T".. data.texture ..":16:16:0:0:64:64:4:60:4:60|t".." "..name, r, g, b);
+					end
+				end
+				PLUGIN.LogWindow:AddMessage("----------------", 0, 0, 0);
+				PLUGIN.LogWindow:AddMessage("Caught So Far...", 0, 1, 1);
+				PLUGIN.LogWindow:AddMessage(" ", 0, 0, 0);
+				proxyTest = false;
+			end
+		end
+	end
+
+	function EnableListener()
+		FishEventHandler:RegisterEvent("LOOT_OPENED")
+		FishEventHandler:RegisterEvent("CHAT_MSG_LOOT")
+		FishEventHandler:RegisterEvent("BAG_UPDATE")
+		FishEventHandler:RegisterEvent("CHAT_MSG_SKILL")
+		FishEventHandler:SetScript("OnEvent", Fish_OnEvent)
+	end
+
+	function DisableListener()
+		FishEventHandler:UnregisterAllEvents()
+		FishEventHandler:SetScript("OnEvent", nil)
+	end
+end
+--[[
+##########################################################
+CORE METHODS
+##########################################################
+]]--
+function PLUGIN.Fishing:Enable()
+	PLUGIN:UpdateFishingMode()
+	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
+	UpdateFishingGear(SV.db[Schema].fishing.autoequip);
+	PlaySoundFile("Sound\\Spells\\Tradeskills\\FishCast.wav")
+	PLUGIN.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
+	if(not IsSpellKnown(131474)) then
+		PLUGIN:ModeLootLoader("Fishing", "WTF is Fishing?", "You have no clue how to fish! \nThe last time you tried \nyou hooked yourself through the eyelid. \nGo find a trainer and learn \nhow to do this properly!");
+	else
+		local msg = GetTitleAndSkill();
+		PLUGIN:ModeLootLoader("Fishing", msg, "Double-Right-Click anywhere on the screen \nto cast your fishing line.");
+	end
+	EnableListener()
+	PLUGIN.ModeAlert:Show()
+	SendModeMessage("Fishing Mode Enabled", CombatText_StandardScroll, 0.28, 0.9, 0.1);
+end
+
+function PLUGIN.Fishing:Disable()
+	DisableListener()
+end
+
+function PLUGIN.Fishing:Bind()
+	if InCombatLockdown() then return end
+	if fishingIsKnown then
+		if FishingPoleIsEquipped() then
+			local hasMainHandEnchant = GetWeaponEnchantInfo()
+			if hasMainHandEnchant then
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
+				PLUGIN.ModeAlert.HelpText = 'Double-Right-Click to fish.'
+			elseif(fishingLure) then
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "item")
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute("item", "item:" .. fishingLure)
+				if(GetItemCooldown(fishingLure) > 0) then
+					_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+					_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
+					PLUGIN.ModeAlert.HelpText = 'Double-Right-Click to fish.'
+				else
+					PLUGIN.ModeAlert.HelpText = 'Double-Right-Click to apply fishing enchants.'
+				end
+			else
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
+				PLUGIN.ModeAlert.HelpText = 'Double-Right-Click to fish.'
+			end
+		else
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
+			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
+			PLUGIN.ModeAlert.HelpText = 'Double-Right-Click to fish.'
+		end
+		SetOverrideBindingClick(_G["SVUI_ModeCaptureWindow"], true, "BUTTON2", "SVUI_ModeCaptureWindow");
+		_G["SVUI_ModeCaptureWindow"].Grip:Show();
+	end
+end
+--[[
+##########################################################
+LOADER
+##########################################################
+]]--
+function PLUGIN:UpdateFishingMode()
+	fishingIsKnown = IsSpellKnown(131474);
+	fishingSpell = GetSpellInfo(131474);
+end
+
+function PLUGIN:LoadFishingMode()
+	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"]
+	PLUGIN:UpdateFishingMode()
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_FightOMatic/Bindings.xml b/Interface/AddOns/SVUI_FightOMatic/Bindings.xml
new file mode 100644
index 0000000..8f5a94e
--- /dev/null
+++ b/Interface/AddOns/SVUI_FightOMatic/Bindings.xml
@@ -0,0 +1,5 @@
+<Bindings>
+  <Binding name="SVUIFIGHT_RADIO" category="ADDONS" header="SVUIFIGHT" runOnUp="false">
+    SVUISayIncoming()
+  </Binding>
+</Bindings>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_FightOMatic/License.txt b/Interface/AddOns/SVUI_FightOMatic/License.txt
new file mode 100644
index 0000000..cc92e9b
--- /dev/null
+++ b/Interface/AddOns/SVUI_FightOMatic/License.txt
@@ -0,0 +1,34 @@
+###############################################################################
+#_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+# ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+#  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+#   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+#    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+#     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+#      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+#       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+#        ___\///////////___________\///___________\/////////_____\///////////_#
+###############################################################################
+# S U P E R - V I L L A I N - U I   By: Munglunch                             #
+###############################################################################
+
+SVUI_FightOMatic License Copyright 2014 http://wowinterface.com
+
+The contents of this addon, excluding third-party resources, are
+copyrighted to their authors with all rights reserved.
+
+Authors of this addon hereby grant you the following rights:
+
+1. 	You may NOT make any modification inside this addon. If you want
+	to create your own edited version, please create it from outside.
+
+2. 	Do not modify the name of this addon, including the addon folders.
+
+3. 	This copyright notice shall be included in all copies or substantial
+	portions of the Software.
+
+All rights not explicitly addressed in this license are reserved by
+the copyright holders.
+
+You can write Munglunch at Wowinterface.com for reporting abuse / bugs,
+or regarding grants allowed for this license.
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_FightOMatic/Loader.lua b/Interface/AddOns/SVUI_FightOMatic/Loader.lua
new file mode 100644
index 0000000..a6b4ee3
--- /dev/null
+++ b/Interface/AddOns/SVUI_FightOMatic/Loader.lua
@@ -0,0 +1,48 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+local AddonName, AddonObject = ...
+
+assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")
+
+local PLUGIN = LibSuperVillain:NewPlugin(AddonName, AddonObject)
+
+local Schema = PLUGIN.Schema;
+local SV = _G["SVUI"];
+local L = SV.L
+--[[
+##########################################################
+CONFIG DATA
+##########################################################
+]]--
+SV.configs[Schema] = {
+	["enable"] = true,
+}
+--[[
+##########################################################
+CONFIG OPTIONS
+##########################################################
+]]--
+-- SV.Options.args.plugins.args.pluginOptions.args[Schema].args[""] = {
+--     order = 2,
+-- 	name = L[""],
+-- 	desc = L[""],
+--     type = "toggle",
+--     get = function(key) return SV.db[Schema][key[#key]] end,
+--     set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]) end
+-- }
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua
new file mode 100644
index 0000000..684631e
--- /dev/null
+++ b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua
@@ -0,0 +1,1164 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[  CONSTANTS ]]--
+
+BINDING_HEADER_SVUIFIGHT = "Supervillain UI: Fight-O-Matic";
+BINDING_NAME_SVUIFIGHT_RADIO = "Call Out Incoming";
+
+--[[ GLOBALS ]]--
+
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+local pairs     = _G.pairs;
+local ipairs    = _G.ipairs;
+local type      = _G.type;
+local error     = _G.error;
+local pcall     = _G.pcall;
+local assert    = _G.assert;
+local tostring  = _G.tostring;
+local tonumber  = _G.tonumber;
+local tinsert 	= _G.tinsert;
+local string 	= _G.string;
+local math 		= _G.math;
+local table 	= _G.table;
+local bit       = _G.bit;
+--[[ STRING METHODS ]]--
+local format, sub = string.format, string.sub;
+--[[ MATH METHODS ]]--
+local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;
+--[[ TABLE METHODS ]]--
+local tremove, twipe = table.remove, table.wipe;
+--[[ BINARY METHODS ]]--
+local band, bor = bit.band, bit.bor;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local PLUGIN = select(2, ...)
+local Schema = PLUGIN.Schema;
+
+local SV = _G["SVUI"];
+local L = SV.L;
+
+local NewHook = hooksecurefunc;
+--[[
+##########################################################
+GLOBAL SLASH FUNCTIONS
+##########################################################
+]]--
+function SVUISayIncoming()
+	local subzoneText = GetSubZoneText()
+	local msg = ("{rt8} Incoming %s {rt8}"):format(subzoneText)
+	SendChatMessage(msg, "INSTANCE_CHAT")
+	return
+end
+--[[
+##########################################################
+LOCAL FUNCTIONS
+##########################################################
+]]--
+local function HeadsUpAlarm(...)
+	if not CombatText_AddMessage then return end
+	CombatText_AddMessage(...)
+end
+--[[
+##########################################################
+MUNGLUNCH's FAVORITE EMOTE GENERATOR
+##########################################################
+]]--
+local SpecialEmotes = {
+	"ROFL",
+	"CACKLE",
+	"GIGGLE",
+	"GRIN",
+	"SMIRK",
+	"MOON",
+	"LICK",
+	"YAWN",
+	"FLEX",
+	"TICKLE",
+	"TAUNT",
+	"SHOO",
+	"PRAY",
+	"SPIT",
+	"MOCK",
+	"GLOAT",
+	"PITY",
+	"VIOLIN",
+	"BYE",
+}
+
+local LowHealthPlayerEmotes = {
+	"ROFL",
+	"CACKLE",
+	"GIGGLE",
+	"GRIN",
+	"SMIRK",
+	"MOON",
+	"LICK",
+	"YAWN",
+	"BITE",
+	"NOSEPICK"
+}
+
+local LowHealthTargetEmotes = {
+	"ROFL",
+	"CACKLE",
+	"FLEX",
+	"TICKLE",
+	"TAUNT",
+	"SHOO",
+	"PRAY",
+	"SPIT",
+	"MOCK",
+	"GLOAT",
+	"PITY",
+	"VIOLIN",
+	"BYE",
+}
+
+local KOSEmotes = {
+	"THREATEN",
+	"CRACK",
+	"POINT",
+	"GRIN",
+	"SMIRK",
+	"TAUNT",
+	"CHICKEN"
+}
+
+local StealthEmotes = {
+	"CURIOUS",
+	"EYE",
+	"GASP",
+	"GAZE",
+	"MOCK",
+	"NOSEPICK",
+	"PEER",
+	"POINT",
+	"READY",
+	"STARE",
+	"TAP",
+}
+
+
+function SVUIEmote()
+	local index = random(1,#SpecialEmotes)
+	DoEmote(SpecialEmotes[index])
+end
+
+local function LowHealth_PlayerEmote()
+	local index = random(1,#LowHealthPlayerEmotes)
+	DoEmote(LowHealthPlayerEmotes[index])
+end
+
+local function LowHealth_TargetEmote()
+	local index = random(1,#LowHealthTargetEmotes)
+	DoEmote(LowHealthTargetEmotes[index])
+end
+
+local function KOS_Emote()
+	local index = random(1,#KOSEmotes)
+	DoEmote(KOSEmotes[index])
+end
+
+local function Stealth_Emote(name)
+	local index = random(1,#StealthEmotes)
+	DoEmote(StealthEmotes[index], name)
+end
+--[[
+##########################################################
+CORE FUNCTIONS
+##########################################################
+]]--
+local EnemyCache, AlertedCache = {},{}
+
+local playerGUID = UnitGUID('player')
+local playerFaction = UnitFactionGroup("player")
+local classColor = RAID_CLASS_COLORS
+local classColors = SVUI_CLASS_COLORS[SV.class]
+local classR, classG, classB = classColors.r, classColors.g, classColors.b
+local classA = 0.35
+local fallbackColor = {r=1,g=1,b=1}
+local ACTIVE_ZONE = ""
+--[[ ICONS ]]--
+local INFO_ICON = [[Interface\AddOns\SVUI_FightOMatic\artwork\PVP-INFO]]
+local UTILITY_ICON = [[Interface\AddOns\SVUI_FightOMatic\artwork\PVP-UTILITIES]]
+local RADIO_ICON = [[Interface\AddOns\SVUI_FightOMatic\artwork\PVP-RADIO]]
+local SCANNER_ICON = [[Interface\AddOns\SVUI_FightOMatic\artwork\PVP-SCANNER]]
+local ICON_FILE = [[Interface\AddOns\SVUI_FightOMatic\artwork\DOCK-PVP]]
+local PVP_SAFE = [[Interface\AddOns\SVUI_FightOMatic\artwork\PVP-SAFE]]
+local PVP_HELP = [[Interface\AddOns\SVUI_FightOMatic\artwork\PVP-INCOMING]]
+local PVP_LOST = [[Interface\WorldMap\Skull_64Red]]
+local linkString = "|Hplayer:%s:1|h%s|h"
+--[[ BG MAP DATA ]]--
+local PVP_NODES = {
+	[461] = { --Arathi Basin (5)
+		"Stables", "Lumber", "Blacksmith", "Mine", "Farm"
+	},
+	[935] = { --Deepwind Gorge (3)
+		"Center Mine", "North Mine", "South Mine"
+	},
+	[482] = { --Eye of the Storm (4)
+		"Fel Reaver", "Blood Elf", "Draenei", "Mage"
+	},
+	[736] = { --The Battle for Gilneas (3)
+		"LightHouse", "WaterWorks", "Mines"
+	},
+}
+
+-- local PVP_POI = {
+-- 	[401] = { --Alterac Valley (15)
+-- 		"Stormpike Aid Station", "Dun Baldar North Bunker", "Dun Baldar South Bunker",
+-- 		"Stormpike Graveyard", "Icewing Bunker", "Stonehearth Graveyard",
+-- 		"Stonehearth Bunker", "Snowfall Graveyard", "Iceblood Tower",
+-- 		"Iceblood Graveyard", "Tower Point", "Frostwolf Graveyard",
+-- 		"West Frostwolf Tower", "East Frostwolf Tower", "Frostwolf Relief Hut"
+-- 	},
+-- 	[935] = { --Deepwind Gorge (2)
+-- 		"Horde Cart", "Alliance Cart"
+-- 	},
+-- 	[482] = { --Eye of the Storm (1)
+-- 		"Flag"
+-- 	},
+-- 	[860] = { --Silvershard Mines (1)
+-- 		"Cart"
+-- 	},
+-- 	[512] = { --Strand of the Ancients (5)
+-- 		"Green Emerald", "Blue Sapphire", "Purple Amethyst", "Red Sun", "Yellow Moon"
+-- 	},
+-- 	[540] = { --Isle of Conquest (5)
+-- 		"Quarry", "Hangar", "Workshop", "Docks", "Refinery"
+-- 	},
+-- 	[856] = { --Temple of Kotmogu (4)
+-- 		"Red Orb", "Blue Orb", "Orange Orb", "Purple Orb"
+-- 	},
+-- 	[626] = { --Twin Peaks (2)
+-- 		"Horde Flag", "Alliance Flag"
+-- 	},
+-- 	[443] = { --Warsong Gulch (2)
+-- 		"Horde Flag", "Alliance Flag"
+-- 	},
+-- }
+
+local Safe_OnEnter = function(self)
+	if InCombatLockdown() then return end
+	local zone = self.name
+	if(zone and zone ~= "") then
+		self:SetBackdropBorderColor(1,0.45,0)
+		GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+		GameTooltip:ClearLines()
+		GameTooltip:AddLine(("%s Is Safe!"):format(zone), 1, 1, 1)
+		GameTooltip:Show()
+	end
+end
+
+local Safe_OnLeave = function(self)
+	if InCombatLockdown() then return end
+	self:SetBackdropBorderColor(0,0,0)
+	if(GameTooltip:IsShown()) then GameTooltip:Hide() end
+end
+
+local Safe_OnClick = function(self)
+	local zone = self.name
+	if(zone and zone ~= "") then
+		SendChatMessage(("{rt4} %s Is Safe {rt4}"):format(zone), "INSTANCE_CHAT")
+	end
+end
+
+local Help_OnEnter = function(self)
+	if InCombatLockdown() then return end
+	local zone = self.name
+	if(zone and zone ~= "") then
+		self:SetBackdropBorderColor(1,0.45,0)
+		GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+		GameTooltip:ClearLines()
+		GameTooltip:AddLine(("%s Needs Help!"):format(zone), 1, 1, 1)
+		GameTooltip:Show()
+	end
+end
+
+local Help_OnLeave = function(self)
+	if InCombatLockdown() then return end
+	self:SetBackdropBorderColor(0,0,0)
+	if(GameTooltip:IsShown()) then GameTooltip:Hide() end
+end
+
+local Help_OnClick = function(self)
+	if(self.name and self.name ~= "") then
+		local msg = ("{rt8} Incoming %s {rt8}"):format(self.name)
+		SendChatMessage(msg, "INSTANCE_CHAT")
+	end
+end
+
+local function AddEnemyScan(guid, timestamp)
+	if(EnemyCache[guid]) then
+		return EnemyCache[guid]
+	end
+	local class, classToken, race, raceToken, sex, name, realm = GetPlayerInfoByGUID(guid)
+	local colors = classColor[classToken] or fallbackColor
+	EnemyCache[guid] = {
+        ["name"] = name,
+        ["realm"] = realm,
+        ["class"] = class,
+        ["race"] = race,
+        ["sex"] = sex,
+        ["colors"] = colors,
+        ["time"] = timestamp
+    }
+    PLUGIN:ScannerLog(EnemyCache[guid])
+    return EnemyCache[guid];
+end
+
+local function SaveEnemyScan(guid, timestamp)
+	local enemy = EnemyCache[guid]
+	if(not enemy) then enemy = AddEnemyScan(guid, timestamp) end
+	FightOMatic_Cache[guid] = {
+        ["name"] = enemy.name,
+        ["realm"] = enemy.realm,
+        ["class"] = enemy.class,
+        ["race"] = enemy.race,
+        ["sex"] = enemy.sex,
+        ["colors"] = enemy.colors,
+        ["time"] = enemy.timestamp
+    }
+    local msg = ("Killed By: %s"):format(enemy.name);
+    HeadsUpAlarm(msg, CombatText_StandardScroll, enemy.colors.r, enemy.colors.g, enemy.colors.b, "sticky");
+    PLUGIN:UpdateSummary()
+end
+
+local function KilledEnemyHandler(guid)
+	local enemy = FightOMatic_Cache[guid]
+	if(enemy) then
+		HeadsUpAlarm(("Killed Mortal Enemy: %s"):format(enemy.name), CombatText_StandardScroll, 0.2, 1, 0.1, "sticky");
+	end
+	enemy = EnemyCache[guid]
+	if(enemy) then
+		HeadsUpAlarm(("Killed Enemy: %s"):format(enemy.name), CombatText_StandardScroll, 0.1, 0.8, 0);
+	end
+end
+
+local function ClearCacheScans()
+	wipe(EnemyCache)
+	wipe(AlertedCache)
+	if(PLUGIN.LOG and PLUGIN.LOG.Output) then PLUGIN.LOG.Output:Clear() end
+end
+
+local function ClearSavedScans()
+	FightOMatic_Cache = {}
+end
+
+local function EnemyAlarm(name, class, colors, kos)
+	if not name then return end
+	local inInstance, instanceType = IsInInstance()
+	if(instanceType ~= "pvp" and not AlertedCache[name]) then
+		local msg
+		if(kos) then
+			msg = ("Mortal Enemy Detected!: %s"):format(name);
+			HeadsUpAlarm(msg, CombatText_StandardScroll, 1, 0, 0)
+		elseif(class and colors) then
+			msg = ("%s Detected"):format(class);
+			HeadsUpAlarm(msg, CombatText_StandardScroll, colors.r, colors.g, colors.b)
+	    end
+	    AlertedCache[name] = true
+	end
+end
+
+local function StealthAlarm(spell, name)
+	local msg = ("%s Detected!"):format(spell);
+    HeadsUpAlarm(msg, CombatText_StandardScroll, 1, 0.5, 0);
+    print(("%s has %sed nearby!"):format(name, spell))
+    --Stealth_Emote(name)
+end
+
+function PLUGIN:UpdateSummary()
+	self.Summary:Clear();
+	local stored = FightOMatic_Cache;
+	local amount = 0
+	for _,data in pairs(stored) do
+		if type(data) == "table" and data.name and data.class then
+			amount = amount + 1;
+		end
+	end
+	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8);
+end
+
+function PLUGIN:ResetLogs()
+	wipe(EnemyCache)
+	self.Title:Clear();
+	self.Summary:Clear();
+	self.LOG.Output:Clear();
+	self.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
+	self.Switch:Show()
+	local stored = FightOMatic_Cache;
+	local amount = 0
+	for _,data in pairs(stored) do
+		if type(data) == "table" and data.name and data.class then
+			amount = amount + 1;
+		end
+	end
+	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8)
+	collectgarbage("collect")
+end
+
+function PLUGIN:PopulateKOS()
+	self.Title:Clear();
+	self.Summary:Clear();
+	self.LOG.Output:Clear();
+	self.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
+	self.Switch:Show()
+	local stored = FightOMatic_Cache;
+	local amount = 0
+	for _,data in pairs(stored) do
+		if type(data) == "table" and data.name and data.class and data.race then
+			amount = amount + 1;
+			local nameLink = linkString:format(data.name, data.name)
+			local hex = ("%s - %s %s"):format(nameLink, data.race, data.class)
+			self.LOG.Output:AddMessage(hex, data.colors.r, data.colors.g, data.colors.b);
+		end
+	end
+	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8)
+end
+
+function PLUGIN:PopulateScans()
+	self.COMM.Unavailable:Hide()
+	self.Title:Clear();
+	self.Summary:Clear();
+	self.LOG.Output:Clear();
+	self.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
+	self.Switch:Show()
+	local stored = FightOMatic_Cache;
+	local amount = 0
+	for _,data in pairs(stored) do
+		if type(data) == "table" and data.name and data.class then
+			amount = amount + 1;
+		end
+	end
+	self.Summary:AddMessage(("You Have |cffff5500%s|r Mortal Enemies"):format(amount), 0.8, 0.8, 0.8);
+	for _,data in pairs(EnemyCache) do
+		if type(data) == "table" and data.name and data.class and data.race then
+			local nameLink = linkString:format(data.name, data.name)
+			local hex = ("%s - %s %s"):format(nameLink, data.race, data.class)
+			self.LOG.Output:AddMessage(hex, data.colors.r, data.colors.g, data.colors.b);
+		end
+	end
+end
+
+function PLUGIN:PauseScanner()
+	if(not self.InPVP) then
+		self.Title:Clear();
+		self.Summary:Clear();
+		self.LOG.Output:Clear();
+		self.Title:AddMessage("Scanning Paused", 1, 0.1, 0);
+		self.Summary:AddMessage(ACTIVE_ZONE, 1, 0.75, 0);
+		self.Switch:Hide()
+		self.LOG.Output:AddMessage(" ", 1, 1, 1);
+		self.LOG.Output:AddMessage(" ", 1, 1, 1);
+		self.LOG.Output:AddMessage("The Enenmy Scanner Will Resume", 0.8, 0.8, 0.8);
+		self.LOG.Output:AddMessage("When You Leave This BattleGround", 0.8, 0.8, 0.8);
+	else
+		self:PopulateScans()
+	end
+end
+
+function PLUGIN:ScannerLog(enemy)
+	if(not enemy.name or not enemy.race or not enemy.class) then return end
+    local nameLink = linkString:format(enemy.name, enemy.name)
+	local hex = ("%s - %s %s"):format(nameLink, enemy.race, enemy.class)
+	self.LOG.Output:AddMessage(hex, enemy.colors.r, enemy.colors.g, enemy.colors.b);
+	EnemyAlarm(enemy.name, enemy.class, enemy.colors)
+end
+
+function PLUGIN:UpdateCommunicator()
+	if(not self.InPVP) then
+		local mapID = GetCurrentMapAreaID()
+		if(mapID) then
+			local points = PVP_NODES[mapID]
+			if(points) then
+				self.COMM.Unavailable:Hide()
+				for i = 1, 5 do
+					local nodeName = ("SVUI_PVPNode%d"):format(i)
+					local node = _G[nodeName]
+					local safe = node.Safe
+					local help = node.Help
+					if(i <= #points) then
+						local name = points[i]
+						safe.name = name
+						help.name = name
+						node.Text:SetText(name)
+						node:Show()
+					else
+						safe.name = ""
+						help.name = ""
+						node.Text:SetText("")
+						node:Hide()
+					end
+				end
+				self.InPVP = true
+				self:UnregisterEvent("UPDATE_BATTLEFIELD_SCORE")
+				self.Scanning = false
+				self:PauseScanner()
+			end
+		end
+	elseif(self.InPVP) then
+		self.COMM.Unavailable:Show()
+		for i = 1, 5 do
+			local nodeName = ("SVUI_PVPNode%d"):format(i)
+			local node = _G[nodeName]
+			local safe = node.Safe
+			local help = node.Help
+			safe.name = ""
+			help.name = ""
+			node.Text:SetText("")
+			node:Hide()
+		end
+		self.InPVP = nil
+		self:RegisterEvent("UPDATE_BATTLEFIELD_SCORE")
+		self.Scanning = true
+
+		self:PopulateScans()
+	end
+end
+
+function PLUGIN:UpdateZoneStatus()
+	if PLUGIN.ZoneTimer then return end
+	local zoneText = GetRealZoneText() or GetZoneText()
+	if(not zoneText or zoneText == "") then
+		PLUGIN.ZoneTimer = SV.Timers:ExecuteTimer(PLUGIN.UpdateZoneStatus, 5)
+		return
+	end
+	if(zoneText ~= ACTIVE_ZONE) then
+		ClearCacheScans()
+		ACTIVE_ZONE = zoneText
+		PLUGIN.Title:Clear();
+		PLUGIN.Title:AddMessage(("Scanning %s"):format(ACTIVE_ZONE), 1, 1, 0);
+	end
+	local zonePvP = GetZonePVPInfo()
+	if(zonePvP == "sanctuary" or zoneText == "") then
+		PLUGIN.Scanning = false
+	else
+		PLUGIN.Scanning = true
+		local inInstance, instanceType = IsInInstance()
+		if(inInstance and ((instanceType == "party") or (instanceType == "raid"))) then
+			PLUGIN.Scanning = false
+		elseif (not zonePvP or (zonePvP == "friendly") or (not UnitIsPVP("player"))) then
+			PLUGIN.Scanning = false
+		elseif(instanceType == "pvp") then
+			PLUGIN:PauseScanner()
+			PLUGIN.Scanning = false
+			if(not PLUGIN.InPVP) then
+				PLUGIN:UpdateCommunicator()
+			end
+		end
+	end
+	PLUGIN.ZoneTimer = nil
+end
+
+local function ParseIncomingLog(timestamp, event, eGuid, eName, pGuid)
+	local cached = FightOMatic_Cache[eGuid]
+	local kos, needsUpdate = false, false
+
+	if(cached) then
+		kos = true
+	else
+		cached = EnemyCache[eGuid]
+	end
+
+	if(cached and cached.time) then
+		needsUpdate = (cached.time + 60) < timestamp;
+	else
+		cached = AddEnemyScan(eGuid, timestamp)
+		needsUpdate = true
+	end
+
+	if(cached) then
+		if(needsUpdate) then
+			EnemyAlarm(eName, cached.class, cached.colors, kos)
+			cached.time = timeStamp
+		end
+
+		if(pGuid == playerGUID and not AlertedCache[eName]) then
+			AlertedCache[eName] = true
+			local incoming = ("%s Attacking You!"):format(eName);
+			HeadsUpAlarm(incoming, CombatText_StandardScroll, 1, 0.05, 0, "crit")
+		end
+	end
+end
+
+local function GetSourceType(guid)
+	if not guid then return end
+	local subStr, binStr, bitVal, srcType
+	subStr  = guid:sub(3, 5)
+	binStr  = ("0x%s"):format(subStr)
+	bitVal  = tonumber(binStr)
+	if(not bitVal) then return end
+	srcType = band(bitVal, 0x00F)
+	return srcType
+end
+
+function PLUGIN:COMBAT_LOG_EVENT_UNFILTERED(event, timestamp, event, _, srcGUID, srcName, srcFlags, sourceRaidFlags, dstGUID, dstName, dstFlags, destRaidFlags, _, spellName)
+	if not srcFlags then return end
+	local flagParse = band(srcFlags, COMBATLOG_OBJECT_REACTION_HOSTILE)
+	local flagged = flagParse == COMBATLOG_OBJECT_REACTION_HOSTILE
+
+	if(flagged) then
+		if(srcGUID and srcName) then
+			local isHostile = CombatLog_Object_IsA(srcFlags, COMBATLOG_FILTER_HOSTILE_PLAYERS)
+			local srcType = GetSourceType(srcGUID)
+			if(srcType and (srcType == 0 or srcType == 8) and isHostile) then
+				if(event == "SPELL_AURA_APPLIED" and (spellName == L["Stealth"] or spellName == L["Prowl"])) then
+					StealthAlarm(spellName, srcName)
+				end
+				if(dstGUID == playerGUID) then
+					PLUGIN.HitBy = srcGUID
+				end
+				if(not PLUGIN.Scanning) then return end
+				ParseIncomingLog(timestamp, event, srcGUID, srcName, dstGUID)
+			end
+		end
+
+		if(PLUGIN.Scanning and dstGUID and dstName) then
+			local isHostile = CombatLog_Object_IsA(dstFlags, COMBATLOG_FILTER_HOSTILE_PLAYERS)
+			local srcType = GetSourceType(dstGUID)
+			if(srcType and (srcType == 0 or srcType == 8) and isHostile) then
+				ParseIncomingLog(timestamp, event, dstGUID, dstName, srcGUID)
+			end
+		end
+	end
+
+	if(PLUGIN.Scanning and event == "PARTY_KILL") then
+		if(srcGUID == playerGUID and dstName) then
+			KilledEnemyHandler(dstGUID)
+		end
+	end
+end
+
+function PLUGIN:EventDistributor(event, ...)
+	local inInstance, instanceType = IsInInstance()
+
+	if(event == "PLAYER_REGEN_ENABLED") then
+		self.HitBy = false;
+		if(instanceType == "pvp") then self.Scanning = false end
+	else
+		if(instanceType ~= "pvp") then
+			if(event == "PLAYER_TARGET_CHANGED") then
+				if(UnitIsPlayer("target") and UnitIsEnemy("target", "player")) then
+					local guid = UnitGUID("target")
+					if(not EnemyCache[guid]) then
+						local timestamp = time()
+						AddEnemyScan(guid, timestamp)
+					end
+					if(FightOMatic_Cache[guid]) then
+						HeadsUpAlarm("Kill On Sight!", CombatText_StandardScroll, 1, 0, 0, "crit")
+						--KOS_Emote()
+					end
+				end
+			elseif(event == "PLAYER_DEAD") then
+				local guid = self.HitBy
+				if(guid and guid ~= "") then
+					local stamp = time()
+					SaveEnemyScan(guid, stamp)
+				end
+			end
+		else
+			self.Scanning = false
+		end
+	end
+end
+
+local onMouseWheel = function(self, delta)
+	if (delta > 0) then
+		self:ScrollUp()
+	elseif (delta < 0) then
+		self:ScrollDown()
+	end
+end
+
+local function MakeLogWindow()
+	local frame = CreateFrame("Frame", nil, UIParent)
+
+	frame:SetFrameStrata("MEDIUM")
+	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
+	frame:SetPoint("BOTTOMRIGHT", SVUI_FightOMaticDock, "BOTTOMRIGHT",0,0)
+	frame:SetParent(SVUI_FightOMaticDock)
+
+	local output = CreateFrame("ScrollingMessageFrame", nil, frame)
+	output:SetSpacing(4)
+	output:SetClampedToScreen(false)
+	output:SetFrameStrata("MEDIUM")
+	output:SetAllPoints(frame)
+	output:SetFont(SV.Media.font.system, 11, "OUTLINE")
+	output:SetJustifyH("CENTER")
+	output:SetJustifyV("MIDDLE")
+	output:SetShadowColor(0, 0, 0, 0)
+	output:SetMaxLines(120)
+	output:EnableMouseWheel(true)
+	output:SetHyperlinksEnabled(true)
+	output:SetScript("OnMouseWheel", onMouseWheel)
+	output:SetFading(false)
+	output:SetInsertMode('TOP')
+
+	output:SetScript("OnHyperlinkEnter", function(self, linkData, link, button)
+		local t = link:explode(":")
+		local name = t[2] or ""
+	    SVUI_TargetScanButton:SetAttribute("macrotext", ("/tar %s"):format(name))
+	    SVUI_TargetScanButton:EnableMouse(true)
+	end)
+
+	frame.Output = output
+
+	PLUGIN.LOG = frame
+
+	_G["SVUI_FightOMaticTool1"].Window = PLUGIN.LOG
+end
+
+local function MakeCommWindow()
+
+	local frame = CreateFrame("Frame", nil, UIParent)
+
+	frame:SetFrameStrata("MEDIUM")
+	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
+	frame:SetPoint("BOTTOMRIGHT", SVUI_FightOMaticDock, "BOTTOMRIGHT",0,0)
+	frame:SetParent(SVUI_FightOMaticDock)
+
+	local fallback = CreateFrame("Frame", nil, frame)
+	fallback:SetAllPoints(frame)
+
+	local fbText = fallback:CreateFontString(nil, "OVERLAY")
+	fbText:SetAllPoints(fallback)
+	fbText:SetFont(SV.Media.font.roboto, 12, "NONE")
+	fbText:SetText("Nothing To Broadcast Right Now")
+
+	frame.Unavailable = fallback
+
+	local DOCK_WIDTH = frame:GetWidth();
+	local DOCK_HEIGHT = frame:GetHeight();
+	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;
+	local sectionWidth = (DOCK_WIDTH / 6) - 2
+	local sectionHeight = (DOCK_HEIGHT / 5) - 2
+	local iconSize = sectionHeight * 0.5
+
+	for i = 1, 5 do
+		local yOffset = (sectionHeight * (i - 1)) + 2
+
+		local poiName = ("SVUI_PVPNode%d"):format(i)
+		local poi = CreateFrame("Frame", poiName, frame)
+		poi:SetSize((DOCK_WIDTH - 2), sectionHeight)
+		poi:SetPoint("TOP", frame, "TOP", 0, -yOffset)
+		poi:SetPanelTemplate("Transparent")
+
+		local safe = CreateFrame("Button", nil, poi)
+		safe:SetSize(sectionWidth, sectionHeight)
+		safe:SetPoint("RIGHT", poi, "RIGHT", -2, 0)
+		safe:SetButtonTemplate()
+		safe:SetPanelColor("green")
+		local sicon = safe:CreateTexture(nil, "OVERLAY")
+		sicon:SetPoint("CENTER", safe, "CENTER", 0, 0)
+		sicon:SetSize(iconSize,iconSize)
+		sicon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		sicon:SetTexture(PVP_SAFE)
+		safe:SetScript("OnEnter", Safe_OnEnter)
+		safe:SetScript("OnLeave", Safe_OnLeave)
+		safe:SetScript("OnClick", Safe_OnClick)
+
+		poi.Safe = safe
+
+		local help = CreateFrame("Button", nil, poi)
+		help:SetSize(sectionWidth, sectionHeight)
+		help:SetPoint("RIGHT", safe, "LEFT", -2, 0)
+		help:SetButtonTemplate()
+		help:SetPanelColor("red")
+		local hicon = help:CreateTexture(nil, "OVERLAY")
+		hicon:SetPoint("CENTER", help, "CENTER", 0, 0)
+		hicon:SetSize(iconSize,iconSize)
+		hicon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		hicon:SetTexture(PVP_HELP)
+		help:SetScript("OnEnter", Help_OnEnter)
+		help:SetScript("OnLeave", Help_OnLeave)
+		help:SetScript("OnClick", Help_OnClick)
+
+		poi.Help = help
+
+		poi.Text = poi:CreateFontString(nil,"OVERLAY")
+		poi.Text:SetFont(SV.Media.font.roboto, 12, "NONE")
+		poi.Text:SetPoint("TOPLEFT", poi, "TOPLEFT", 2, 0)
+		poi.Text:SetPoint("BOTTOMRIGHT", help, "BOTTOMLEFT", -2, 0)
+		poi.Text:SetJustifyH("CENTER")
+		poi.Text:SetText("")
+		poi:Hide()
+	end
+
+	PLUGIN.COMM = frame
+
+	_G["SVUI_FightOMaticTool2"].Window = PLUGIN.COMM
+
+	PLUGIN.COMM:Hide()
+end
+
+local function MakeUtilityWindow()
+	local frame = CreateFrame("Frame", nil, UIParent)
+
+	frame:SetFrameStrata("MEDIUM")
+	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
+	frame:SetPoint("BOTTOMRIGHT", SVUI_FightOMaticDock, "BOTTOMRIGHT",0,0)
+	frame:SetParent(SVUI_FightOMaticDock)
+
+	local fbText = frame:CreateFontString(nil, "OVERLAY")
+	fbText:SetAllPoints(frame)
+	fbText:SetFont(SV.Media.font.roboto, 12, "NONE")
+	fbText:SetText("Utilities Coming Soon....")
+
+	PLUGIN.TOOL = frame
+
+	_G["SVUI_FightOMaticTool3"].Window = PLUGIN.TOOL
+
+	PLUGIN.TOOL:Hide()
+end
+
+local function MakeInfoWindow()
+	local frame = CreateFrame("Frame", nil, UIParent)
+
+	frame:SetFrameStrata("MEDIUM")
+	frame:SetPoint("TOPLEFT", PLUGIN.Summary, "BOTTOMLEFT",0,0)
+	frame:SetPoint("BOTTOMRIGHT", SVUI_FightOMaticDock, "BOTTOMRIGHT",0,0)
+	frame:SetParent(SVUI_FightOMaticDock)
+
+	local DATA_WIDTH = (frame:GetWidth() * 0.5) - 2;
+	local DATA_HEIGHT = frame:GetHeight() - 2;
+
+	local leftColumn = CreateFrame("Frame", "SVUI_FightOMaticInfoLeft", frame)
+	leftColumn:Size(DATA_WIDTH, DATA_HEIGHT)
+	leftColumn:Point("LEFT", frame, "LEFT", 0, 0)
+	leftColumn.lockedOpen = true
+	SV.SVStats:NewAnchor(leftColumn, 3, "ANCHOR_CURSOR", nil, "Transparent", true)
+	leftColumn:SetFrameLevel(0)
+
+	local rightColumn = CreateFrame("Frame", "SVUI_FightOMaticInfoRight", frame)
+	rightColumn:Size(DATA_WIDTH, DATA_HEIGHT)
+	rightColumn:Point("LEFT", leftColumn, "RIGHT", 2, 0)
+	rightColumn.lockedOpen = true
+	SV.SVStats:NewAnchor(rightColumn, 3, "ANCHOR_CURSOR", nil, "Transparent", true)
+	rightColumn:SetFrameLevel(0)
+
+	PLUGIN.INFO = frame
+
+	_G["SVUI_FightOMaticTool4"].Window = PLUGIN.INFO
+
+	SV.SVStats.BGPanels = {
+		["SVUI_FightOMaticInfoLeft"] = {top = "Honor", middle = "Kills", bottom = "Assists"},
+		["SVUI_FightOMaticInfoRight"] = {top = "Damage", middle = "Healing", bottom = "Deaths"}
+	}
+
+	SV.SVStats:Generate()
+
+	PLUGIN.INFO:Hide()
+end
+--[[
+##########################################################
+DOCK ELEMENT HANDLERS
+##########################################################
+]]--
+local FightOMaticAlert_OnEnter = function(self)
+	if InCombatLockdown() then return; end
+	self:SetBackdropColor(0.9, 0.15, 0.1)
+	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+	GameTooltip:ClearLines()
+	GameTooltip:AddLine(self.TText, 1, 1, 0)
+	GameTooltip:Show()
+end
+
+local FightOMaticAlert_OnLeave = function(self)
+	GameTooltip:Hide()
+	if InCombatLockdown() then return end
+	self:SetBackdropColor(0.25, 0.52, 0.1)
+end
+
+local FightOMaticAlert_OnHide = function()
+	if InCombatLockdown() then
+		SV:AddonMessage(ERR_NOT_IN_COMBAT);
+		return;
+	end
+	SuperDockAlertRight:Deactivate()
+end
+
+local FightOMaticAlert_OnShow = function(self)
+	if InCombatLockdown() then
+		SV:AddonMessage(ERR_NOT_IN_COMBAT);
+		self:Hide()
+		return;
+	end
+	SV:SecureFadeIn(self, 0.3, 0, 1)
+	SuperDockAlertRight:Activate(self)
+end
+
+local FightOMaticAlert_OnMouseDown = function(self)
+	-- DO STUFF
+	SV:SecureFadeOut(self, 0.5, 1, 0, true)
+end
+
+local FightOMaticTool_OnEnter = function(self)
+	if InCombatLockdown() then return; end
+	self.icon:SetGradient(unpack(SV.Media.gradient.yellow))
+	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+	GameTooltip:ClearLines()
+	GameTooltip:AddLine(self.TText, 1, 1, 1)
+	GameTooltip:Show()
+end
+
+local FightOMaticTool_OnLeave = function(self)
+	if InCombatLockdown() then return; end
+	self.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	GameTooltip:Hide()
+end
+
+local FightOMaticTool_OnMouseDown = function(self)
+	SV:SecureFadeOut(PLUGIN.LOG, 0.5, 1, 0, true)
+	SV:SecureFadeOut(PLUGIN.COMM, 0.5, 1, 0, true)
+	SV:SecureFadeOut(PLUGIN.TOOL, 0.5, 1, 0, true)
+	SV:SecureFadeOut(PLUGIN.INFO, 0.5, 1, 0, true)
+	SV:SecureFadeIn(self.Window, 0.3, 0, 1)
+	PLUGIN.Title:Clear();
+	PLUGIN.Title:AddMessage(self.TTitle, 1, 1, 0);
+end
+
+local Scanner_OnMouseDown = function(self)
+	SV:SecureFadeOut(PLUGIN.LOG, 0.5, 1, 0, true)
+	SV:SecureFadeOut(PLUGIN.COMM, 0.5, 1, 0, true)
+	SV:SecureFadeOut(PLUGIN.TOOL, 0.5, 1, 0, true)
+	SV:SecureFadeOut(PLUGIN.INFO, 0.5, 1, 0, true)
+	SV:SecureFadeIn(self.Window, 0.3, 0, 1)
+	PLUGIN:PopulateScans()
+end
+
+local Switch_OnEnter = function(self)
+	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
+	GameTooltip:ClearLines()
+	if(self.ShowingKOS) then
+		GameTooltip:AddDoubleLine("Click", "Show Scan List", 0.1, 1, 0.2, 1, 1, 1)
+	else
+		GameTooltip:AddDoubleLine("Click", 'Show "Kill On Sight" List', 0.1, 1, 0.2, 1, 1, 1)
+	end
+	GameTooltip:AddDoubleLine("[SHIFT] Click", "Clear All Scans", 0.1, 1, 0.2, 1, 1, 1)
+	GameTooltip:AddDoubleLine("[CTRL] Click", 'Clear All "Kill On Sight"', 0.1, 1, 0.2, 1, 1, 1)
+	GameTooltip:Show()
+end
+
+local Switch_OnLeave = function(self)
+	GameTooltip:Hide()
+end
+
+local Switch_OnClick = function(self, button)
+	Switch_OnLeave(self)
+	if(IsControlKeyDown()) then
+		ClearSavedScans()
+		PLUGIN:ResetLogs()
+	elseif(IsShiftKeyDown()) then
+		ClearCacheScans()
+	else
+		if(self.ShowingKOS) then
+			PLUGIN:PopulateScans()
+			self.ShowingKOS = false
+		else
+			PLUGIN:PopulateKOS()
+			self.ShowingKOS = true
+		end
+	end
+	Switch_OnEnter(self)
+end
+--[[
+##########################################################
+BUILD FUNCTION
+##########################################################
+]]--
+function PLUGIN:Load()
+	if SVAOW_Data then SVAOW_Data = nil end
+	if SVAOW_Cache then SVAOW_Cache = nil end
+
+	if(not SV.db[Schema].enable) then return end
+
+	local ALERT_HEIGHT = 60;
+	local DOCK_WIDTH = SuperDockWindowRight:GetWidth();
+	local DOCK_HEIGHT = SuperDockWindowRight:GetHeight();
+	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;
+
+	if(not FightOMatic_Data) then FightOMatic_Data = {} end
+	if(not FightOMatic_Cache) then FightOMatic_Cache = {} end
+
+	self.HitBy = false;
+	self.Scanning = false;
+	self.InPVP = false
+
+	local holder = CreateFrame("Frame", "SVUI_FightOMaticDock", SuperDockWindowRight)
+	holder:SetFrameStrata("BACKGROUND")
+	holder:SetWidth(DOCK_WIDTH - 4);
+	holder:SetHeight(DOCK_HEIGHT - 4);
+	holder:SetPoint("CENTER",SuperDockWindowRight,"CENTER",0,0);
+
+	local toolBar = CreateFrame("Frame", "SVUI_FightOMaticToolBar", holder)
+	toolBar:SetWidth(BUTTON_SIZE + 4);
+	toolBar:SetHeight((BUTTON_SIZE + 4) * 4);
+	toolBar:SetPoint("BOTTOMLEFT",holder,"BOTTOMLEFT",0,0);
+
+	local tbDivider = toolBar:CreateTexture(nil,"OVERLAY")
+    tbDivider:SetTexture(0,0,0,0.5)
+    tbDivider:SetPoint("TOPRIGHT")
+    tbDivider:SetPoint("BOTTOMRIGHT")
+    tbDivider:SetWidth(1)
+
+	local tool4 = CreateFrame("Frame", "SVUI_FightOMaticTool4", toolBar)
+	tool4:SetPoint("BOTTOM",toolBar,"BOTTOM",0,0)
+	tool4:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	tool4.icon = tool4:CreateTexture(nil, 'OVERLAY')
+	tool4.icon:SetTexture(INFO_ICON)
+	tool4.icon:FillInner(tool4)
+	tool4.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	tool4.TText = "Stats"
+	tool4.TTitle = "Statistics and Information"
+	tool4:SetScript('OnEnter', FightOMaticTool_OnEnter)
+	tool4:SetScript('OnLeave', FightOMaticTool_OnLeave)
+	tool4:SetScript('OnMouseDown', FightOMaticTool_OnMouseDown)
+
+	local tool3 = CreateFrame("Frame", "SVUI_FightOMaticTool3", toolBar)
+	tool3:SetPoint("BOTTOM",tool4,"TOP",0,2)
+	tool3:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	tool3.icon = tool3:CreateTexture(nil, 'OVERLAY')
+	tool3.icon:SetTexture(UTILITY_ICON)
+	tool3.icon:FillInner(tool3)
+	tool3.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	tool3.TText = "Tools"
+	tool3.TTitle = "Tools and Utilities"
+	tool3:SetScript('OnEnter', FightOMaticTool_OnEnter)
+	tool3:SetScript('OnLeave', FightOMaticTool_OnLeave)
+	tool3:SetScript('OnMouseDown', FightOMaticTool_OnMouseDown)
+
+	local tool2 = CreateFrame("Frame", "SVUI_FightOMaticTool2", toolBar)
+	tool2:SetPoint("BOTTOM",tool3,"TOP",0,2)
+	tool2:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	tool2.icon = tool2:CreateTexture(nil, 'OVERLAY')
+	tool2.icon:SetTexture(RADIO_ICON)
+	tool2.icon:FillInner(tool2)
+	tool2.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	tool2.TText = "Radio"
+	tool2.TTitle = "Radio Communicator"
+	tool2:SetScript('OnEnter', FightOMaticTool_OnEnter)
+	tool2:SetScript('OnLeave', FightOMaticTool_OnLeave)
+	tool2:SetScript('OnMouseDown', FightOMaticTool_OnMouseDown)
+
+	local tool1 = CreateFrame("Frame", "SVUI_FightOMaticTool1", toolBar)
+	tool1:SetPoint("BOTTOM",tool2,"TOP",0,2)
+	tool1:SetSize(BUTTON_SIZE,BUTTON_SIZE)
+	tool1.icon = tool1:CreateTexture(nil, 'OVERLAY')
+	tool1.icon:SetTexture(SCANNER_ICON)
+	tool1.icon:FillInner(tool1)
+	tool1.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
+	tool1.TText = "Scanner"
+	tool1.TTitle = "Enemy Scanner"
+	tool1:SetScript('OnEnter', FightOMaticTool_OnEnter)
+	tool1:SetScript('OnLeave', FightOMaticTool_OnLeave)
+	tool1:SetScript('OnMouseDown', Scanner_OnMouseDown)
+
+	local title = CreateFrame("ScrollingMessageFrame", nil, holder)
+	title:SetSpacing(4)
+	title:SetClampedToScreen(false)
+	title:SetFrameStrata("MEDIUM")
+	title:SetPoint("TOPLEFT", toolBar, "TOPRIGHT",0,0)
+	title:SetPoint("BOTTOMRIGHT", holder, "TOPRIGHT",0,-16)
+	title:SetFontTemplate(SV.Media.font.names, 16, "OUTLINE", "CENTER", "MIDDLE")
+	title:SetMaxLines(1)
+	title:EnableMouseWheel(false)
+	title:SetFading(false)
+	title:SetInsertMode('TOP')
+
+	local divider1 = title:CreateTexture(nil,"OVERLAY")
+    divider1:SetTexture(0,0,0,0.5)
+    divider1:SetPoint("BOTTOMLEFT")
+    divider1:SetPoint("BOTTOMRIGHT")
+    divider1:SetHeight(1)
+
+    self.Title = title
+
+    local listbutton = CreateFrame("Button", nil, holder)
+    listbutton:SetPoint("TOPLEFT", title, "BOTTOMLEFT",0,0)
+	listbutton:SetPoint("BOTTOMRIGHT", title, "BOTTOMRIGHT",0,-14)
+	listbutton:SetButtonTemplate(true)
+	listbutton.ShowingKOS = false
+	listbutton:SetScript("OnEnter", Switch_OnEnter)
+	listbutton:SetScript("OnLeave", Switch_OnLeave)
+	listbutton:SetScript("OnClick", Switch_OnClick)
+
+	self.Switch = listbutton
+
+    local summary = CreateFrame("ScrollingMessageFrame", nil, holder)
+	summary:SetSpacing(4)
+	summary:SetClampedToScreen(false)
+	summary:SetFrameStrata("MEDIUM")
+	summary:SetPoint("TOPLEFT", title, "BOTTOMLEFT",0,0)
+	summary:SetPoint("BOTTOMRIGHT", title, "BOTTOMRIGHT",0,-14)
+	summary:SetFontTemplate(SV.Media.font.system, 12, "OUTLINE", "CENTER", "MIDDLE")
+	summary:SetMaxLines(1)
+	summary:EnableMouse(false)
+	summary:SetFading(false)
+	summary:SetInsertMode('TOP')
+
+	self.Summary = summary
+
+	local divider2 = summary:CreateTexture(nil,"OVERLAY")
+    divider2:SetTexture(0,0,0,0.5)
+    divider2:SetPoint("BOTTOMLEFT")
+    divider2:SetPoint("BOTTOMRIGHT")
+    divider2:SetHeight(1)
+
+	MakeLogWindow()
+	MakeCommWindow()
+	MakeUtilityWindow()
+	MakeInfoWindow()
+
+	SV:RegisterDocklet("SVUI_FightOMaticDock", self.TitleID, ICON_FILE)
+
+	holder:Hide()
+
+	self:ResetLogs()
+
+	local targetButton = CreateFrame("Button", "SVUI_TargetScanButton", UIParent, "SecureActionButtonTemplate")
+	targetButton:SetAllPoints(self.LOG)
+	targetButton:SetFrameLevel(99)
+	targetButton:RegisterForClicks("AnyUp")
+	targetButton:SetAttribute("type1", "macro")
+	targetButton:SetAttribute("macrotext", "/tar")
+	targetButton:EnableMouse(false)
+	targetButton:HookScript("OnClick", function(this) this:EnableMouse(false) end)
+
+	self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
+
+	self:RegisterEvent("PLAYER_TARGET_CHANGED", "EventDistributor")
+	self:RegisterEvent("PLAYER_REGEN_ENABLED", "EventDistributor")
+	self:RegisterEvent("PLAYER_DEAD", "EventDistributor")
+
+	self:RegisterEvent("ZONE_CHANGED", "UpdateZoneStatus")
+	self:RegisterEvent("ZONE_CHANGED_NEW_AREA", "UpdateZoneStatus")
+	self:RegisterEvent("UNIT_FACTION", "UpdateZoneStatus")
+
+	self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateCommunicator")
+	self:RegisterEvent("UPDATE_BATTLEFIELD_SCORE", "UpdateCommunicator")
+
+	--SVUI_Player.Health.LowAlertFunc = LowHealth_PlayerEmote
+	--SVUI_Target.Health.LowAlertFunc = LowHealth_TargetEmote
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc
new file mode 100644
index 0000000..b58b7c1
--- /dev/null
+++ b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.toc
@@ -0,0 +1,14 @@
+## Interface: 60000
+## Author: Munglunch
+## Version: 4.8
+## Title: |cffFF9900SVUI |r|cffFFEF00Fight-O-Matic|r
+## Notes: Supervillain UI [|cff9911FFPvP Tools|r].
+## SavedVariables: FightOMatic_Data
+## SavedVariablesPerCharacter: FightOMatic_Cache
+## RequiredDeps: SVUI
+## LoadOnDemand: 1
+## X-Email: munglunch@gmail.com
+## X-SVUI-Header: Fight-O-Matic
+## X-SVUI-Schema: FightOMatic
+
+SVUI_FightOMatic.xml
diff --git a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.xml b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.xml
new file mode 100644
index 0000000..c7383dd
--- /dev/null
+++ b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.xml
@@ -0,0 +1,5 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='Loader.lua'/>
+	<Script file='SVUI_FightOMatic.lua'/>
+	<!-- <Include file='components\_load.xml'/> -->
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_FightOMatic/artwork/DOCK-PVP.blp b/Interface/AddOns/SVUI_FightOMatic/artwork/DOCK-PVP.blp
new file mode 100644
index 0000000..a51de9a
Binary files /dev/null and b/Interface/AddOns/SVUI_FightOMatic/artwork/DOCK-PVP.blp differ
diff --git a/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INCOMING.blp b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INCOMING.blp
new file mode 100644
index 0000000..f72c045
Binary files /dev/null and b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INCOMING.blp differ
diff --git a/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INFO.blp b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INFO.blp
new file mode 100644
index 0000000..112e648
Binary files /dev/null and b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-INFO.blp differ
diff --git a/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-RADIO.blp b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-RADIO.blp
new file mode 100644
index 0000000..8d38764
Binary files /dev/null and b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-RADIO.blp differ
diff --git a/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SAFE.blp b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SAFE.blp
new file mode 100644
index 0000000..4c84f3e
Binary files /dev/null and b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SAFE.blp differ
diff --git a/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SCANNER.blp b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SCANNER.blp
new file mode 100644
index 0000000..6bcd5d3
Binary files /dev/null and b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-SCANNER.blp differ
diff --git a/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-UTILITIES.blp b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-UTILITIES.blp
new file mode 100644
index 0000000..eef0a56
Binary files /dev/null and b/Interface/AddOns/SVUI_FightOMatic/artwork/PVP-UTILITIES.blp differ
diff --git a/Interface/AddOns/SVUI_FightOMatic/components/_load.xml b/Interface/AddOns/SVUI_FightOMatic/components/_load.xml
new file mode 100644
index 0000000..0a8a1e2
--- /dev/null
+++ b/Interface/AddOns/SVUI_FightOMatic/components/_load.xml
@@ -0,0 +1,3 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file="radio.lua"/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_Laborer/Bindings.xml b/Interface/AddOns/SVUI_Laborer/Bindings.xml
deleted file mode 100644
index 2a3cd5f..0000000
--- a/Interface/AddOns/SVUI_Laborer/Bindings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<Bindings>
-  <Binding name="SVUILABORER_FISH" category="ADDONS" header="SVUILABORER" runOnUp="false">
-    SVUIFishingMode()
-  </Binding>
-   <Binding name="SVUILABORER_FARM" category="ADDONS" runOnUp="false">
-    SVUIFarmingMode()
-  </Binding>
-  <Binding name="SVUILABORER_ARCH" category="ADDONS" runOnUp="false">
-    SVUIArchaeologyMode()
-  </Binding>
-  <Binding name="SVUILABORER_COOK" category="ADDONS" runOnUp="false">
-    SVUICookingMode()
-  </Binding>
-</Bindings>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.lua b/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.lua
deleted file mode 100644
index 1a6280b..0000000
--- a/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.lua
+++ /dev/null
@@ -1,670 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
-
---[[  CONSTANTS ]]--
-
-BINDING_HEADER_SVUILABORER = "Supervillain UI: Laborer";
-BINDING_NAME_SVUILABORER_FISH = "Toggle Fishing Mode";
-BINDING_NAME_SVUILABORER_FARM = "Toggle Farming Mode";
-BINDING_NAME_SVUILABORER_COOK = "Toggle Cooking Mode";
-BINDING_NAME_SVUILABORER_ARCH = "Toggle Archaeology Mode";
-
---[[ GLOBALS ]]--
-
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local type 		= _G.type;
-local string    = _G.string;
-local math 		= _G.math;
-local table 	= _G.table;
-local rept      = string.rep;
-local tsort,twipe = table.sort,table.wipe;
-local floor,ceil  = math.floor, math.ceil;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SVUIAddOnName, PLUGIN = ...;
-local SV = SVUI
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local NewHook = hooksecurefunc;
-
-local playerGUID = UnitGUID('player')
-local classColor = RAID_CLASS_COLORS
-
-PLUGIN = Registry:NewPrototype(SVUIAddOnName)
-local SCHEMA = PLUGIN.___schema;
-
-_G["LaborVillain"] = PLUGIN;
---[[
-##########################################################
-GLOBAL BINDINGS
-##########################################################
-]]--
-function SVUIFishingMode()
-	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
-	if PLUGIN.CurrentMode and PLUGIN.CurrentMode == "Fishing" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Fishing") end
-end
-
-function SVUIFarmingMode()
-	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
-	if PLUGIN.CurrentMode and SV.CurrentMode == "Farming" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Farming") end
-end
-
-function SVUIArchaeologyMode()
-	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
-	if PLUGIN.CurrentMode and PLUGIN.CurrentMode == "Archaeology" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Archaeology") end
-end
-
-function SVUICookingMode()
-	if InCombatLockdown() then SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end
-	if PLUGIN.CurrentMode and PLUGIN.CurrentMode == "Cooking" then PLUGIN:EndJobModes() else PLUGIN:SetJobMode("Cooking") end
-end
---[[
-##########################################################
-LOCALIZED GLOBALS
-##########################################################
-]]--
-local LOOT_ITEM_SELF = _G.LOOT_ITEM_SELF;
-local LOOT_ITEM_CREATED_SELF = _G.LOOT_ITEM_CREATED_SELF;
-local LOOT_ITEM_SELF_MULTIPLE = _G.LOOT_ITEM_SELF_MULTIPLE
-local LOOT_ITEM_PUSHED_SELF_MULTIPLE = _G.LOOT_ITEM_PUSHED_SELF_MULTIPLE
-local LOOT_ITEM_PUSHED_SELF = _G.LOOT_ITEM_PUSHED_SELF
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local currentModeKey = false;
-local ModeLogsFrame = CreateFrame("Frame", "SVUI_ModeLogsFrame", UIParent)
-local classColors = SVUI_CLASS_COLORS[SV.class]
-local classR, classG, classB = classColors.r, classColors.g, classColors.b
-local classA = 0.35
-local lastClickTime;
-local ICON_FILE = [[Interface\AddOns\SVUI_Laborer\artwork\DOCK-LABORER]]
-local COOK_ICON = [[Interface\AddOns\SVUI_Laborer\artwork\LABORER-COOKING]]
-local FISH_ICON = [[Interface\AddOns\SVUI_Laborer\artwork\LABORER-FISHING]]
-local ARCH_ICON = [[Interface\AddOns\SVUI_Laborer\artwork\LABORER-SURVEY]]
-local FARM_ICON = [[Interface\AddOns\SVUI_Laborer\artwork\LABORER-FARMING]]
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local function SendModeMessage(...)
-	if not CombatText_AddMessage then return end
-	CombatText_AddMessage(...)
-end
-
-local function onMouseWheel(self, delta)
-	if (delta > 0) then
-		self:ScrollUp()
-	elseif (delta < 0) then
-		self:ScrollDown()
-	end
-end
-
-local function CheckForDoubleClick()
-	if lastClickTime then
-		local pressTime = GetTime()
-		local doubleTime = pressTime - lastClickTime
-		if ( (doubleTime < 0.4) and (doubleTime > 0.05) ) then
-			lastClickTime = nil
-			return true
-		end
-	end
-	lastClickTime = GetTime()
-	return false
-end
---[[
-##########################################################
-CORE FUNCTIONS
-##########################################################
-]]--
-function PLUGIN:WorldFrameHook(button)
-	if InCombatLockdown() then return end
-	if(currentModeKey and button == "RightButton" and CheckForDoubleClick()) then
-		local handle = PLUGIN[currentModeKey];
-		if(handle and handle.Bind) then
-			handle.Bind()
-		end
-	end
-end
-
-function SVUI_ModeCaptureWindow:PostClickHandler()
-	if InCombatLockdown() then
-		self:RegisterEvent("PLAYER_REGEN_ENABLED")
-		return
-	end
-	ClearOverrideBindings(self)
-	self.Grip:Hide()
-end
-
-function PLUGIN:LaborerReset()
-	self.TitleWindow:Clear();
-	self.LogWindow:Clear();
-	self.TitleWindow:AddMessage("Laborer Modes", 1, 1, 0);
-	self.LogWindow:AddMessage("Select a Tool to Begin", 1, 1, 1);
-	self.LogWindow:AddMessage(" ", 0, 1, 1);
-	collectgarbage("collect")
-end
-
-function PLUGIN:ModeLootLoader(mode, msg, info)
-	self.TitleWindow:Clear();
-	self.LogWindow:Clear();
-	self.ModeAlert.HelpText = info
-	if(mode and self[mode]) then
-		if(self[mode].Log) then
-			local stored = self[mode].Log;
-			self.TitleWindow:AddMessage(msg, 1, 1, 1);
-			local previous = false
-			for name,data in pairs(stored) do
-				if type(data) == "table" and data.amount and data.texture then
-					self.LogWindow:AddMessage("|cff55FF55"..data.amount.." x|r |T".. data.texture ..":16:16:0:0:64:64:4:60:4:60|t".." "..name, 0.8, 0.8, 0.8);
-					previous = true
-				end
-			end
-			if(previous) then
-				self.LogWindow:AddMessage("----------------", 0, 0, 0);
-				self.LogWindow:AddMessage(" ", 0, 0, 0);
-			end
-			self.LogWindow:AddMessage(info, 1, 1, 1);
-			self.LogWindow:AddMessage(" ", 1, 1, 1);
-		end
-	else
-		self:LaborerReset()
-	end
-end
-
-function PLUGIN:CheckForModeLoot(msg)
-  	local item, amt = SV:DeFormat(msg, LOOT_ITEM_CREATED_SELF)
-	if not item then
-	  item = SV:DeFormat(msg, LOOT_ITEM_SELF_MULTIPLE)
-	  	if not item then
-		  item = SV:DeFormat(msg, LOOT_ITEM_SELF)
-		  	if not item then
-		      	item = SV:DeFormat(msg, LOOT_ITEM_PUSHED_SELF_MULTIPLE)
-		      	if not item then
-		        	item, amt = SV:DeFormat(msg, LOOT_ITEM_PUSHED_SELF)
-		        	--print(item)
-		      	end
-		    end
-		end
-	end
-	--print(msg)
-	if item then
-		if not amt then
-		  	amt = 1
-		end
-		return item, amt
-	end
-end
-
-function PLUGIN:SetJobMode(category)
-	if InCombatLockdown() then return end
-	if(not category) then
-		self:EndJobModes()
-		return;
-	end
-	self:ChangeModeGear()
-	if(currentModeKey and self[currentModeKey] and self[currentModeKey].Disable) then
-		self[currentModeKey].Disable()
-	end
-	currentModeKey = category;
-	if(self[category] and self[category].Enable) then
-		self[category].Enable()
-	else
-		self:EndJobModes()
-		return;
-	end
-end
-
-function PLUGIN:EndJobModes()
-	if(currentModeKey and self[currentModeKey] and self[currentModeKey].Disable) then
-		self[currentModeKey].Disable()
-	end
-	currentModeKey = false;
-	if SVUI_ModesDockFrame:IsShown() then SVUI_ModesDockFrame_ToolBarButton:Click() end
-	self:ChangeModeGear()
-	self.ModeAlert:Hide();
-	SendModeMessage("Mode Disabled", CombatText_StandardScroll, 1, 0.35, 0);
-	PlaySound("UndeadExploration");
-	self:LaborerReset()
-end
-
-function PLUGIN:ChangeModeGear()
-	if(not self.InModeGear) then return end
-	if InCombatLockdown() then
-		_G["SVUI_ModeCaptureWindow"]:RegisterEvent("PLAYER_REGEN_ENABLED");
-		return
-	else
-		if(self.WornItems["HEAD"]) then
-			EquipItemByName(self.WornItems["HEAD"])
-			self.WornItems["HEAD"] = false
-		end
-		if(self.WornItems["TAB"]) then
-			EquipItemByName(self.WornItems["TAB"])
-			self.WornItems["TAB"] = false
-		end
-		if(self.WornItems["MAIN"]) then
-			EquipItemByName(self.WornItems["MAIN"])
-			self.WornItems["MAIN"] = false
-		end
-		if(self.WornItems["OFF"]) then
-			EquipItemByName(self.WornItems["OFF"])
-			self.WornItems["OFF"] = false
-		end
-
-		self.InModeGear = false
-	end
-end
-
-function PLUGIN:UpdateLogWindow()
- 	self.LogWindow:SetFont(SV.Media.font.system, self.db.fontSize, "OUTLINE")
-end
-
-function PLUGIN:MakeLogWindow()
-	local DOCK_WIDTH = SVUI_ModesDockFrame:GetWidth();
-	local DOCK_HEIGHT = SVUI_ModesDockFrame:GetHeight();
-
-	ModeLogsFrame:SetFrameStrata("MEDIUM")
-	ModeLogsFrame:SetPoint("TOPLEFT",SVUI_ModeButton1,"TOPRIGHT",5,-5)
-	ModeLogsFrame:SetPoint("BOTTOMRIGHT",SVUI_ModesDockFrame,"BOTTOMRIGHT",-5,5)
-	ModeLogsFrame:SetParent(SVUI_ModesDockFrame)
-
-	local title = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
-	title:SetSpacing(4)
-	title:SetClampedToScreen(false)
-	title:SetFrameStrata("MEDIUM")
-	title:SetPoint("TOPLEFT",ModeLogsFrame,"TOPLEFT",0,0)
-	title:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"TOPRIGHT",0,-20)
-	title:SetFontTemplate(UNIT_NAME_FONT, 16, "OUTLINE", "CENTER", "MIDDLE")
-	title:SetMaxLines(1)
-	title:EnableMouseWheel(false)
-	title:SetFading(false)
-	title:SetInsertMode('TOP')
-
-	title.divider = title:CreateTexture(nil,"OVERLAY")
-    title.divider:SetTexture(0,0,0,0.5)
-    title.divider:SetPoint("BOTTOMLEFT")
-    title.divider:SetPoint("BOTTOMRIGHT")
-    title.divider:SetHeight(1)
-
-    local topleftline = title:CreateTexture(nil,"OVERLAY")
-    topleftline:SetTexture(0,0,0,0.5)
-    topleftline:SetPoint("TOPLEFT")
-    topleftline:SetPoint("BOTTOMLEFT")
-    topleftline:SetWidth(1)
-
-	local log = CreateFrame("ScrollingMessageFrame", nil, ModeLogsFrame)
-	log:SetSpacing(4)
-	log:SetClampedToScreen(false)
-	log:SetFrameStrata("MEDIUM")
-	log:SetPoint("TOPLEFT",title,"BOTTOMLEFT",0,0)
-	log:SetPoint("BOTTOMRIGHT",ModeLogsFrame,"BOTTOMRIGHT",0,0)
-	log:SetFontTemplate(nil, self.db.fontSize, "OUTLINE")
-	log:SetJustifyH("CENTER")
-	log:SetJustifyV("MIDDLE")
-	log:SetShadowColor(0, 0, 0, 0)
-	log:SetMaxLines(120)
-	log:EnableMouseWheel(true)
-	log:SetScript("OnMouseWheel", onMouseWheel)
-	log:SetFading(false)
-	log:SetInsertMode('TOP')
-
-	local bottomleftline = log:CreateTexture(nil,"OVERLAY")
-    bottomleftline:SetTexture(0,0,0,0.5)
-    bottomleftline:SetPoint("TOPLEFT")
-    bottomleftline:SetPoint("BOTTOMLEFT")
-    bottomleftline:SetWidth(1)
-
-	self.TitleWindow = title
-	self.LogWindow = log
-
-	self.ListenerEnabled = false;
-	SV:RegisterDocklet("SVUI_ModesDockFrame", "Laborer Modes", ICON_FILE, false)
-	self:LaborerReset()
-end
-
-function PLUGIN:SKILL_LINES_CHANGED()
-	if(currentModeKey and self[currentModeKey] and self[currentModeKey].Update) then
-		self[currentModeKey].Update()
-	end
-end
---[[
-##########################################################
-BUILD FUNCTION / UPDATE
-##########################################################
-]]--
-local ModeAlert_OnEnter = function(self)
-	if InCombatLockdown() then return; end
-	self:SetBackdropColor(0.9, 0.15, 0.1)
-	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-	GameTooltip:ClearLines()
-	GameTooltip:AddLine(self.ModeText, 1, 1, 0)
-	GameTooltip:AddLine("")
-	GameTooltip:AddLine("Click here end this mode.", 0.79, 0.23, 0.23)
-	GameTooltip:AddLine("")
-	GameTooltip:AddLine(self.HelpText, 0.74, 1, 0.57)
-	GameTooltip:Show()
-end
-
-local ModeAlert_OnLeave = function(self)
-	GameTooltip:Hide()
-	if InCombatLockdown() then return end
-	self:SetBackdropColor(0.25, 0.52, 0.1)
-end
-
-local ModeAlert_OnHide = function()
-	if InCombatLockdown() then
-		SV:AddonMessage(ERR_NOT_IN_COMBAT);
-		return;
-	end
-	SuperDockAlertRight:Deactivate()
-end
-
-local ModeAlert_OnShow = function(self)
-	if InCombatLockdown() then
-		SV:AddonMessage(ERR_NOT_IN_COMBAT);
-		self:Hide()
-		return;
-	end
-	SV:SecureFadeIn(self, 0.3, 0, 1)
-	SuperDockAlertRight:Activate(self)
-end
-
-local ModeAlert_OnMouseDown = function(self)
-	PLUGIN:EndJobModes()
-	SV:SecureFadeOut(self, 0.5, 1, 0, true)
-end
-
-local ModeButton_OnEnter = function(self)
-	if InCombatLockdown() then return; end
-	local name = self.modeName
-	self.icon:SetGradient(unpack(SV.Media.gradient.yellow))
-	GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4)
-	GameTooltip:ClearLines()
-	GameTooltip:AddLine(L[name .. " Mode"], 1, 1, 1)
-	GameTooltip:Show()
-end
-
-local ModeButton_OnLeave = function(self)
-	if InCombatLockdown() then return; end
-	self.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	GameTooltip:Hide()
-end
-
-local ModeButton_OnMouseDown = function(self)
-	local name = self.modeName
-	PLUGIN:SetJobMode(name)
-end
---[[
-##########################################################
-BUILD FUNCTION
-##########################################################
-]]--
-function PLUGIN:Load()
-	if(not SV.db[SCHEMA].enable) then return end
-
-	self.db = SV.db[SCHEMA]
-	lastClickTime = nil;
-	self.WornItems = {};
-	self.InModeGear = false;
-
-	local ALERT_HEIGHT = 60;
-	local DOCK_WIDTH = SuperDockWindowRight:GetWidth();
-	local DOCK_HEIGHT = SuperDockWindowRight:GetHeight();
-	local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4;
-
-	local modesDocklet = CreateFrame("Frame", "SVUI_ModesDockFrame", SuperDockWindowRight)
-	modesDocklet:SetWidth(DOCK_WIDTH - 4);
-	modesDocklet:SetHeight(DOCK_HEIGHT - 4);
-	modesDocklet:SetPoint("CENTER",SuperDockWindowRight,"CENTER",0,0);
-
-	local modesToolBar = CreateFrame("Frame", "SVUI_ModesDockToolBar", modesDocklet)
-	modesToolBar:SetWidth(BUTTON_SIZE + 4);
-	modesToolBar:SetHeight((BUTTON_SIZE + 4) * 4);
-	modesToolBar:SetPoint("BOTTOMLEFT",modesDocklet,"BOTTOMLEFT",0,0);
-
-	local mode4Button = CreateFrame("Frame", "SVUI_ModeButton4", modesToolBar)
-	mode4Button:SetPoint("BOTTOM",modesToolBar,"BOTTOM",0,0)
-	mode4Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	mode4Button.icon = mode4Button:CreateTexture(nil, 'OVERLAY')
-	mode4Button.icon:SetTexture(FARM_ICON)
-	mode4Button.icon:FillInner(mode4Button)
-	mode4Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	mode4Button.modeName = "Farming"
-	mode4Button:SetScript('OnEnter', ModeButton_OnEnter)
-	mode4Button:SetScript('OnLeave', ModeButton_OnLeave)
-	mode4Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
-
-	local mode3Button = CreateFrame("Frame", "SVUI_ModeButton3", modesToolBar)
-	mode3Button:SetPoint("BOTTOM",mode4Button,"TOP",0,2)
-	mode3Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	mode3Button.icon = mode3Button:CreateTexture(nil, 'OVERLAY')
-	mode3Button.icon:SetTexture(ARCH_ICON)
-	mode3Button.icon:FillInner(mode3Button)
-	mode3Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	mode3Button.modeName = "Archaeology"
-	mode3Button:SetScript('OnEnter', ModeButton_OnEnter)
-	mode3Button:SetScript('OnLeave', ModeButton_OnLeave)
-	mode3Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
-
-	local mode2Button = CreateFrame("Frame", "SVUI_ModeButton2", modesToolBar)
-	mode2Button:SetPoint("BOTTOM",mode3Button,"TOP",0,2)
-	mode2Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	mode2Button.icon = mode2Button:CreateTexture(nil, 'OVERLAY')
-	mode2Button.icon:SetTexture(FISH_ICON)
-	mode2Button.icon:FillInner(mode2Button)
-	mode2Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	mode2Button.modeName = "Fishing"
-	mode2Button:SetScript('OnEnter', ModeButton_OnEnter)
-	mode2Button:SetScript('OnLeave', ModeButton_OnLeave)
-	mode2Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
-
-	local mode1Button = CreateFrame("Frame", "SVUI_ModeButton1", modesToolBar)
-	mode1Button:SetPoint("BOTTOM",mode2Button,"TOP",0,2)
-	mode1Button:SetSize(BUTTON_SIZE,BUTTON_SIZE)
-	mode1Button.icon = mode1Button:CreateTexture(nil, 'OVERLAY')
-	mode1Button.icon:SetTexture(COOK_ICON)
-	mode1Button.icon:FillInner(mode1Button)
-	mode1Button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1)
-	mode1Button.modeName = "Cooking"
-	mode1Button:SetScript('OnEnter', ModeButton_OnEnter)
-	mode1Button:SetScript('OnLeave', ModeButton_OnLeave)
-	mode1Button:SetScript('OnMouseDown', ModeButton_OnMouseDown)
-
-	local ModeAlert = CreateFrame("Frame", nil, SuperDockAlertRight)
-	ModeAlert:SetAllPoints(SuperDockAlertRight)
-	ModeAlert:SetBackdrop({
-        bgFile = [[Interface\AddOns\SVUI\assets\artwork\Bars\HALFTONE]],
-        edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-        tile = true,
-        tileSize = 64,
-        edgeSize = 1,
-        insets = {
-            left = 1,
-            right = 1,
-            top = 1,
-            bottom = 1
-        }
-    })
-
-	ModeAlert:SetBackdropBorderColor(0,0,0,1)
-	ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
-	ModeAlert.text = ModeAlert:CreateFontString(nil, 'ARTWORK', 'GameFontWhite')
-	ModeAlert.text:SetAllPoints(ModeAlert)
-	ModeAlert.text:SetTextColor(1, 1, 1)
-	ModeAlert.text:SetJustifyH("CENTER")
-	ModeAlert.text:SetJustifyV("MIDDLE")
-	ModeAlert.text:SetText("Click to Exit")
-	ModeAlert.ModeText = "Click to Exit";
-	ModeAlert.HelpText = "";
-	ModeAlert:SetScript('OnEnter', ModeAlert_OnEnter)
-	ModeAlert:SetScript('OnLeave', ModeAlert_OnLeave)
-	ModeAlert:SetScript('OnHide', ModeAlert_OnHide)
-	ModeAlert:SetScript('OnShow', ModeAlert_OnShow)
-	ModeAlert:SetScript('OnMouseDown', ModeAlert_OnMouseDown)
-	ModeAlert:Hide()
-
-	self.ModeAlert = ModeAlert
-
-	self:MakeLogWindow()
-
-	modesDocklet:Hide()
-
-	self:LoadCookingMode()
-	self:LoadFishingMode()
-	self:LoadArchaeologyMode()
-	self:PrepareFarmingTools()
-	self:RegisterEvent("SKILL_LINES_CHANGED")
-
-	local option = {
-		order = 2,
-		name = L["Font Size"],
-		desc = L["Set the font size of the log window."],
-		type = "range",
-		min = 6,
-		max = 22,
-		step = 1,
-		set = function(j,value)PLUGIN:ChangeDBVar(value,j[#j]);PLUGIN:UpdateLogWindow()end
-	}
-	self:AddOption("fontSize", option)
-	option = {
-		order = 3,
-		type = "group",
-		name = L["Fishing Mode Settings"],
-		guiInline = true,
-		args = {
-			autoequip = {
-				type = "toggle",
-				order = 1,
-				name = L['AutoEquip'],
-				desc = L['Enable/Disable automatically equipping fishing gear.'],
-				get = function(key)return SV.db[SCHEMA].fishing[key[#key]]end,
-				set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key], "fishing")end
-			}
-		}
-	}
-	self:AddOption("fishing", option)
-	option = {
-		order = 4,
-		type = "group",
-		name = L["Cooking Mode Settings"],
-		guiInline = true,
-		args = {
-			autoequip = {
-				type = "toggle",
-				order = 1,
-				name = L['AutoEquip'],
-				desc = L['Enable/Disable automatically equipping cooking gear.'],
-				get = function(key)return SV.db[SCHEMA].cooking[key[#key]]end,
-				set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key], "cooking")end
-			}
-		}
-	}
-	self:AddOption("cooking", option)
-	option = {
-		order = 5,
-		type = "group",
-		name = L["Farming Mode Settings"],
-		guiInline = true,
-		get = function(key)return SV.db[SCHEMA].farming[key[#key]]end,
-		set = function(key, value)SV.db[SCHEMA].farming[key[#key]] = value end,
-		args = {
-			buttonsize = {
-				type = 'range',
-				name = L['Button Size'],
-				desc = L['The size of the action buttons.'],
-				min = 15,
-				max = 60,
-				step = 1,
-				order = 1,
-				set = function(key, value)
-					PLUGIN:ChangeDBVar(value, key[#key],"farming");
-					PLUGIN:RefreshFarmingTools()
-				end,
-			},
-			buttonspacing = {
-				type = 'range',
-				name = L['Button Spacing'],
-				desc = L['The spacing between buttons.'],
-				min = 1,
-				max = 10,
-				step = 1,
-				order = 2,
-				set = function(key, value)
-					PLUGIN:ChangeDBVar(value, key[#key],"farming");
-					PLUGIN:RefreshFarmingTools()
-				end,
-			},
-			onlyactive = {
-				order = 3,
-				type = 'toggle',
-				name = L['Only active buttons'],
-				desc = L['Only show the buttons for the seeds, portals, tools you have in your bags.'],
-				set = function(key, value)
-					PLUGIN:ChangeDBVar(value, key[#key],"farming");
-					PLUGIN:RefreshFarmingTools()
-				end,
-			},
-			droptools = {
-				order = 4,
-				type = 'toggle',
-				name = L['Drop '],
-				desc = L['Automatically drop tools from your bags when leaving the farming area.'],
-			},
-			toolbardirection = {
-				order = 5,
-				type = 'select',
-				name = L['Bar Direction'],
-				desc = L['The direction of the bar buttons (Horizontal or Vertical).'],
-				set = function(key, value)PLUGIN:ChangeDBVar(value, key[#key],"farming"); PLUGIN:RefreshFarmingTools() end,
-				values = {
-						['VERTICAL'] = L['Vertical'], ['HORIZONTAL'] = L['Horizontal']
-				}
-			}
-		}
-	}
-	self:AddOption("farming", option)
-end
-
-CONFIGS[SCHEMA] = {
-	["enable"] = true,
-	["fontSize"] = 12,
-	["farming"] = {
-		["buttonsize"] = 35,
-		["buttonspacing"] = 3,
-		["onlyactive"] = false,
-		["droptools"] = true,
-		["toolbardirection"] = "HORIZONTAL",
-	},
-	["fishing"] = {
-		["autoequip"] = true,
-	},
-	["cooking"] = {
-		["autoequip"] = true,
-	},
-}
-
-Registry:NewPlugin(PLUGIN)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.toc b/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.toc
deleted file mode 100644
index e3603d1..0000000
--- a/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.toc
+++ /dev/null
@@ -1,13 +0,0 @@
-## Interface: 60000
-## Author: Munglunch
-## Version: 4.4
-## Title: |cffFF9900SVUI |r|cffFFEF00Laborer|r
-## Notes: Supervillain UI [|cff9911FFProfession Tools|r].
-## SavedVariables: LABOR_Data
-## SavedVariablesPerCharacter: LABOR_Cache
-## RequiredDeps: SVUI
-## LoadOnDemand: 1
-## X-SVUI-Header: Laborer
-## X-SVUI-Schema: SVLaborer
-
-SVUI_Laborer.xml
diff --git a/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.xml b/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.xml
deleted file mode 100644
index ed6483d..0000000
--- a/Interface/AddOns/SVUI_Laborer/SVUI_Laborer.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-	<Frame name="SVUI_ModesHandler" hidden="true" frameStrata="LOW" parent="UIParent">
-		<Anchors>
-            <Anchor point="LEFT" relativeTo="UIParent" relativePoint="RIGHT">
-                <Offset x="10000" y="0"/>
-            </Anchor>
-        </Anchors>
-        <Frames>
-            <Button name="SVUI_ModeCaptureWindow" inherits="SecureActionButtonTemplate" enableMouse="true">
-            	<Scripts>
-		            <PostClick>
-						if(self.PostClickHandler) then self:PostClickHandler() end
-		            </PostClick>
-		            <OnLoad>
-						self.Grip = _G["SVUI_ModesHandler"];
-						self:RegisterForClicks("RightButtonUp");
-					    self:Hide();
-						self:RegisterEvent("PLAYER_ENTERING_WORLD")
-						self:SetScript("OnEvent", function(self, event, ...)
-							if event == "PLAYER_REGEN_ENABLED" then
-								self:UnregisterEvent("PLAYER_REGEN_ENABLED")
-								LaborVillain:ChangeModeGear()
-								self:PostClickHandler()
-							end
-							if event == "PLAYER_ENTERING_WORLD" then
-								if (IsSpellKnown(131474) or IsSpellKnown(80451) or IsSpellKnown(818)) then
-									WorldFrame:HookScript("OnMouseDown", LaborVillain.WorldFrameHook)
-								end
-								self:UnregisterEvent("PLAYER_ENTERING_WORLD")
-							end
-						end)
-		            </OnLoad>
-		        </Scripts>
-            </Button>
-        </Frames>
-    </Frame>
-
-    <Script file='SVUI_Laborer.lua'/>
-	<Script file="modes\archaeology.lua"/>
-	<Script file="modes\cooking.lua"/>
-	<Script file="modes\fishing.lua"/>
-	<Script file="modes\farming.lua"/>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_Laborer/artwork/DOCK-LABORER.blp b/Interface/AddOns/SVUI_Laborer/artwork/DOCK-LABORER.blp
deleted file mode 100644
index 9397f22..0000000
Binary files a/Interface/AddOns/SVUI_Laborer/artwork/DOCK-LABORER.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-COOKING.blp b/Interface/AddOns/SVUI_Laborer/artwork/LABORER-COOKING.blp
deleted file mode 100644
index fe824f0..0000000
Binary files a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-COOKING.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-FARMING.blp b/Interface/AddOns/SVUI_Laborer/artwork/LABORER-FARMING.blp
deleted file mode 100644
index 7127055..0000000
Binary files a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-FARMING.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-FISHING.blp b/Interface/AddOns/SVUI_Laborer/artwork/LABORER-FISHING.blp
deleted file mode 100644
index 76474d1..0000000
Binary files a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-FISHING.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-SURVEY.blp b/Interface/AddOns/SVUI_Laborer/artwork/LABORER-SURVEY.blp
deleted file mode 100644
index 40f68ae..0000000
Binary files a/Interface/AddOns/SVUI_Laborer/artwork/LABORER-SURVEY.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_Laborer/modes/archaeology.lua b/Interface/AddOns/SVUI_Laborer/modes/archaeology.lua
deleted file mode 100644
index ab29d22..0000000
--- a/Interface/AddOns/SVUI_Laborer/modes/archaeology.lua
+++ /dev/null
@@ -1,514 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local type 		= _G.type;
-local string    = _G.string;
-local math 		= _G.math;
-local table 	= _G.table;
-local rept,format   = string.rep, string.format;
-local tsort,twipe 	= table.sort, table.wipe;
-local floor,ceil  	= math.floor, math.ceil;
-local min 			= math.min
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local MOD = _G.LaborVillain;
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local playerRace = select(2,UnitRace("player"))
-local archSpell, survey, surveyIsKnown, skillRank, skillModifier;
-local EnableListener, DisableListener;
-local CanScanResearchSite = CanScanResearchSite
-local GetNumArtifactsByRace = GetNumArtifactsByRace
-local GetArchaeologyRaceInfo = GetArchaeologyRaceInfo
-local GetSelectedArtifactInfo = GetSelectedArtifactInfo
-local GetArtifactProgress = GetArtifactProgress
-local CanSolveArtifact = CanSolveArtifact
-local GetContainerNumSlots = GetContainerNumSlots
-local GetContainerItemInfo = GetContainerItemInfo
-local GetContainerItemID = GetContainerItemID
-local DockButton, ModeLogsFrame;
-local refArtifacts = {};
-for i = 1, 12 do
-	refArtifacts[i] = {}
-end
-local NEEDS_UPDATE = true;
-local ArchLaborer = CreateFrame("Frame", "SVUI_ArchLaborer", UIParent)
---[[
-##########################################################
-DATA
-##########################################################
-]]--
-MOD.Archaeology = {};
-MOD.Archaeology.Bars = {};
-MOD.Archaeology.Loaded = false;
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local function EnableSolve(index, button)
-	button:SetAlpha(1)
-	button.text:SetTextColor(1, 1, 1)
-	button:SetScript("OnEnter", function(self)
-		self.text:SetTextColor(1, 1, 0)
-	end)
-	button:SetScript("OnLeave", function(self)
-		self.text:SetTextColor(1, 1, 1)
-	end)
-	button:SetScript("OnClick", function(self)
-		SetSelectedArtifact(index)
-		local _, _, _, _, _, numSockets = GetActiveArtifactByRace(index)
-		local _, _, itemID = GetArchaeologyRaceInfo(index)
-		local ready = true
-		if numSockets and numSockets > 0 then
-			for socketNum = 1, numSockets do
-				if not ItemAddedToArtifact(itemID) then
-					SocketItemToArtifact()
-				end
-			end
-		end
-
-		if GetNumArtifactsByRace(index) > 0 then
-			print("Solving...")
-			SolveArtifact()
-		end
-	end)
-end
-
-local function DisableSolve(button)
-	button:SetAlpha(0)
-	button.text:SetTextColor(0.5, 0.5, 0.5)
-	button.text:SetText("")
-	button:SetScript("OnEnter", SV.fubar)
-	button:SetScript("OnLeave", SV.fubar)
-	button:SetScript("OnMouseUp", SV.fubar)
-end
-
-local function UpdateArtifactBars(index)
-	local cache = refArtifacts[index]
-	local bar = MOD.Archaeology.Bars[index]
-
-	bar["race"]:SetText(cache["race"])
-
-	if GetNumArtifactsByRace(index) ~= 0 then
-		local keystoneBonus = 0
-		bar["race"]:SetTextColor(1, 1, 1)
-		bar["progress"]:SetTextColor(1, 1, 1)
-		if cache["numKeysockets"] then
-			keystoneBonus = min(cache["numKeystones"], cache["numKeysockets"]) * 12
-		end
-		local actual = min(cache["progress"], cache["total"])
-		local potential = cache["total"]
-		local green = 0.75 * (actual / potential);
-		bar["bar"]:SetMinMaxValues(0, potential)
-		bar["bar"]:SetValue(actual)
-
-		if cache["numKeysockets"] and cache["numKeysockets"] > 0 then
-			bar["solve"].text:SetText(SOLVE.." ["..cache["numKeystones"].."/"..cache["numKeysockets"].."]")
-		else
-			bar["solve"].text:SetText(SOLVE)
-		end
-
-		if keystoneBonus > 0 then
-			bar["progress"]:SetText(format("|cff00c1ea%d|r/%d", cache["progress"] + keystoneBonus, cache["total"]))
-		else
-			if cache["total"] > 65 then
-				bar["progress"]:SetText(format("%d/|cff00c1ea%d|r", cache["progress"], cache["total"]))
-			else
-				bar["progress"]:SetText(format("%d/%d", cache["progress"], cache["total"]))
-			end
-		end
-		if cache["canSolve"] then
-			EnableSolve(index, bar["solve"])
-		else
-			DisableSolve(bar["solve"])
-		end
-		bar["bar"]:SetStatusBarColor(0.1, green, 1, 0.5)
-	else
-		DisableSolve(bar["solve"])
-		bar["progress"]:SetText("")
-		bar["bar"]:SetStatusBarColor(0, 0, 0, 0)
-		bar["race"]:SetTextColor(0.25, 0.25, 0.25)
-		bar["progress"]:SetTextColor(0.25, 0.25, 0.25)
-	end
-end
-
-local function UpdateArtifactCache()
-	local found, raceName, raceItemID, cache, _;
-	for index = 1, 12 do
-		found = GetNumArtifactsByRace(index)
-		raceName, _, raceItemID = GetArchaeologyRaceInfo(index)
-		cache = refArtifacts[index]
-		cache["race"] = raceName
-		cache["keyID"] = raceItemID
-		cache["numKeystones"] = 0
-		local oldNum = cache["progress"]
-		if found == 0 then
-			cache["numKeysockets"] = 0
-			cache["progress"] = 0
-			cache["modifier"] = 0
-			cache["total"] = 0
-			cache["canSolve"] = false
-		else
-			SetSelectedArtifact(index)
-			local _, _, _, _, _, keystoneCount = GetSelectedArtifactInfo()
-			local numFragmentsCollected, numFragmentsAdded, numFragmentsRequired = GetArtifactProgress()
-
-			cache["numKeysockets"] = keystoneCount
-			cache["progress"] = numFragmentsCollected
-			cache["modifier"] = numFragmentsAdded
-			cache["total"] = numFragmentsRequired
-			cache["canSolve"] = CanSolveArtifact()
-
-			for i = 0, 4 do
-				for j = 1, GetContainerNumSlots(i) do
-					local slotID = GetContainerItemID(i, j)
-					if slotID == cache["keyID"] then
-						local _, count = GetContainerItemInfo(i, j)
-						if cache["numKeystones"] < cache["numKeysockets"] then
-							cache["numKeystones"] = cache["numKeystones"] + count
-						end
-						if min(cache["numKeystones"], cache["numKeysockets"]) * 12 + cache["progress"] >= cache["total"] then
-							cache["canSolve"] = true
-						end
-					end
-				end
-			end
-		end
-		UpdateArtifactBars(index)
-	end
-	NEEDS_UPDATE = false
-end
-
-local function GetTitleAndSkill()
-	local msg = "|cff22ff11Archaeology Mode|r"
-	if(skillRank) then
-		if(skillModifier) then
-			skillRank = skillRank + skillModifier;
-		end
-		msg = msg .. " (|cff00ddff" .. skillRank .. "|r)";
-	end
-	return msg
-end
-
-local function SendModeMessage(...)
-	if not CombatText_AddMessage then return end
-	CombatText_AddMessage(...)
-end
---[[
-##########################################################
-EVENT HANDLER
-##########################################################
-]]--
-do
-	local SURVEYCDFONT = SV.Media.font.numbers
-	local SURVEYRED = {0,0.5,1}
-	local last = 0
-	local time = 3
-
-	local ArchEventHandler = CreateFrame("Frame");
-	local SurveyCooldown = CreateFrame("Frame", nil, UIParent);
-	local ArchSiteFound;
-	local ArchCanSurvey, ArchWillSurvey = false, false;
-
-	SurveyCooldown:SetPoint("CENTER", 0, -80)
-	SurveyCooldown:SetSize(150, 150)
-	SurveyCooldown.text = SurveyCooldown:CreateFontString(nil, "OVERLAY")
-	SurveyCooldown.text:SetAllPoints(SurveyCooldown)
-	SurveyCooldown.text:SetFont(SURVEYCDFONT, 150, "OUTLINE")
-	SurveyCooldown.text:SetTextColor(0,1,0.12,0.5)
-	SurveyCooldown.text:SetPoint("CENTER")
-	SurveyCooldown:SetScale(1.5)
-
-	local Arch_OnEvent = function(self, event, ...)
-		if(InCombatLockdown() or not archSpell) then return end
-		if(event == "CURRENCY_DISPLAY_UPDATE" or event == "CHAT_MSG_SKILL" or event == "ARTIFACT_COMPLETE") then
-			local msg = GetTitleAndSkill()
-			MOD.TitleWindow:Clear()
-			MOD.TitleWindow:AddMessage(msg)
-		end
-		if(CanScanResearchSite() and (event == "CURRENCY_DISPLAY_UPDATE")) then
-			UpdateArtifactCache()
-		elseif(event == "ARCHAEOLOGY_SURVEY_CAST" or event == "ARTIFACT_COMPLETE" or event == "ARTIFACT_DIG_SITE_UPDATED") then
-			UpdateArtifactCache()
-		elseif(event == "ARTIFACT_HISTORY_READY" or event == "ARTIFACT_DIGSITE_COMPLETE") then
-			NEEDS_UPDATE = true
-		else
-			ArchCanSurvey = CanScanResearchSite()
-			if(ArchCanSurvey and not ArchWillSurvey) then
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', survey)
-				MOD.ModeAlert.HelpText = "Double-Right-Click anywhere on the screen to survey.";
-				ArchWillSurvey = true
-			elseif(not ArchCanSurvey and ArchWillSurvey) then
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', archSpell)
-				MOD.ModeAlert.HelpText = "Double-Right-Click anywhere on the screen to open the artifacts window.";
-				ArchWillSurvey = false
-			end
-			if(event == "ZONE_CHANGED_NEW_AREA") then ArchSiteFound = nil end
-			if(not ArchSiteFound) then
-				local sites = ArchaeologyMapUpdateAll();
-				if(sites and sites > 0) then
-					ArchSiteFound = true
-					SendModeMessage("Digsite Located", CombatText_StandardScroll, 0.91, 0.78, 0.12);
-				else
-					ArchSiteFound = nil
-				end
-			end
-			if(NEEDS_UPDATE) then
-				UpdateArtifactCache()
-			end
-		end
-	end
-
-	local Survey_OnUpdate = function(self, elapsed)
-		last = last + elapsed
-		if last > 1 then
-			time = time - 1
-			self.text:SetText(time)
-			if time <= 0 then
-				self:SetScript("OnUpdate", nil)
-				self.text:SetText("")
-				time = 3
-			end
-			self.text:SetTextColor(SURVEYRED[time],1,0.12,0.8)
-			last = 0
-		end
-	end
-
-	local Survey_OnEvent = function(self, event, unit, _, _, _, spellid)
-		if not unit == "player" then return end
-		if spellid == 80451 then
-			self.text:SetText("3")
-			self:SetScript("OnUpdate", Survey_OnUpdate)
-		end
-	end
-
-	function EnableListener()
-		UpdateArtifactCache()
-
-		ArchEventHandler:RegisterEvent("ZONE_CHANGED")
-		ArchEventHandler:RegisterEvent("ZONE_CHANGED_NEW_AREA")
-		ArchEventHandler:RegisterEvent("ZONE_CHANGED_INDOORS")
-
-		ArchEventHandler:RegisterEvent("ARTIFACT_DIG_SITE_UPDATED")
-		ArchEventHandler:RegisterEvent("ARTIFACT_DIGSITE_COMPLETE")
-		ArchEventHandler:RegisterEvent("ARTIFACT_HISTORY_READY")
-		ArchEventHandler:RegisterEvent("ARTIFACT_COMPLETE")
-
-		ArchEventHandler:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
-		ArchEventHandler:RegisterEvent("ARCHAEOLOGY_SURVEY_CAST")
-
-		ArchEventHandler:RegisterEvent("CHAT_MSG_SKILL")
-
-		ArchEventHandler:SetScript("OnEvent", Arch_OnEvent)
-		if(playerRace ~= "Dwarf") then
-			SurveyCooldown:RegisterEvent("UNIT_SPELLCAST_STOP")
-			SurveyCooldown:SetScript("OnEvent", Survey_OnEvent)
-		end
-	end
-
-	function DisableListener()
-		ArchEventHandler:UnregisterAllEvents()
-		ArchEventHandler:SetScript("OnEvent", nil)
-		if(playerRace ~= "Dwarf") then
-			SurveyCooldown:UnregisterAllEvents()
-			SurveyCooldown:SetScript("OnEvent", nil)
-		end
-	end
-end
---[[
-##########################################################
-CORE FUNCTIONS
-##########################################################
-]]--
-function MOD.Archaeology:Enable()
-	MOD.Archaeology:Update()
-	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
-
-	PlaySoundFile("Sound\\Item\\UseSounds\\UseCrinklingPaper.wav")
-	MOD.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
-	if(not IsSpellKnown(80451)) then
-		MOD:ModeLootLoader("Archaeology", "WTF is Archaeology?", "You don't know archaeology! \nPicking up a rock and telling everyone that \nyou found a fossil is cute, BUT WRONG!! \nGo find someone who can train you to do this job.");
-		MOD.TitleWindow:Clear();
-		MOD.TitleWindow:AddMessage("WTF is Archaeology?");
-		MOD.LogWindow:Clear();
-		MOD.LogWindow:AddMessage("You don't know archaeology! \nPicking up a rock and telling everyone that \nyou found a fossil is cute, BUT WRONG!! \nGo find someone who can train you to do this job.", 1, 1, 1);
-		MOD.LogWindow:AddMessage(" ", 1, 1, 1);
-	else
-		ArchLaborer:Show()
-		local msg = GetTitleAndSkill()
-		if surveyIsKnown and CanScanResearchSite() then
-			MOD:ModeLootLoader("Archaeology", msg, "Double-Right-Click anywhere on the screen to survey.");
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', survey)
-		else
-			MOD:ModeLootLoader("Archaeology", msg, "Double-Right-Click anywhere on the screen to open the artifacts window.");
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', archSpell)
-		end
-		MOD.TitleWindow:Clear();
-		MOD.TitleWindow:AddMessage(msg);
-	end
-	EnableListener()
-	MOD.ModeAlert:Show()
-	SendModeMessage("Archaeology Mode Enabled", CombatText_StandardScroll, 0.28, 0.9, 0.1);
-end
-
-function MOD.Archaeology:Disable()
-	DisableListener()
-	ArchLaborer:Hide()
-end
-
-function MOD.Archaeology:Bind()
-	if InCombatLockdown() then return end
-	if(archSpell) then
-		if surveyIsKnown and CanScanResearchSite() then
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', survey)
-			MOD.ModeAlert.HelpText = 'Double-Right-Click anywhere on the screen to survey.'
-		else
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', archSpell)
-			MOD.ModeAlert.HelpText = 'Double-Right-Click anywhere on the screen to open the artifacts window.'
-		end
-		SetOverrideBindingClick(_G["SVUI_ModeCaptureWindow"], true, "BUTTON2", "SVUI_ModeCaptureWindow");
-		_G["SVUI_ModeCaptureWindow"].Grip:Show();
-	end
-end
-
-function MOD.Archaeology:Update()
-	surveyIsKnown = IsSpellKnown(80451);
-	survey = GetSpellInfo(80451);
-	local _,_,arch,_,_,_ = GetProfessions();
-	if(arch) then
-		archSpell, _, skillRank, _, _, _, _, skillModifier = GetProfessionInfo(arch)
-	end
-end
---[[
-##########################################################
-LOADER
-##########################################################
-]]--
-function MOD:LoadArchaeologyMode()
-	ModeLogsFrame = MOD.LogWindow;
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"];
-
-	local progressBars = MOD.Archaeology.Bars
-
-	ArchLaborer:SetParent(ModeLogsFrame)
-	ArchLaborer:SetFrameStrata("MEDIUM")
-	ArchLaborer:FillInner(ModeLogsFrame)
-
-	local BAR_WIDTH = (ArchLaborer:GetWidth() * 0.5) - 4
-	local BAR_HEIGHT = (ArchLaborer:GetHeight() / 6) - 4
-
-	for i = 1, 12 do
-		local bar = CreateFrame("StatusBar", nil, ArchLaborer)
-		local race = bar:CreateFontString()
-		local progress = bar:CreateFontString()
-		local solve = CreateFrame("Button", nil, bar, "SecureHandlerClickTemplate")
-		local yOffset;
-
-		bar:SetPanelTemplate("Inset")
-		bar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-		bar:SetSize(BAR_WIDTH,BAR_HEIGHT)
-		if(i > 6) then
-			yOffset = ((i - 7) * (BAR_HEIGHT + 4)) + 4
-			bar:SetPoint("TOPRIGHT", ArchLaborer, "TOPRIGHT", -2, -yOffset)
-		else
-			yOffset = ((i - 1) * (BAR_HEIGHT + 4)) + 4;
-			bar:SetPoint("TOPLEFT", ArchLaborer, "TOPLEFT", 2, -yOffset)
-		end
-		bar:SetStatusBarColor(0.2, 0.2, 0.8, 0.5)
-		bar:SetScript("OnEnter", function(self)
-			GameTooltip:SetOwner(self, "ANCHOR_BOTTOMRIGHT", 2, 250)
-			GameTooltip:ClearLines()
-			if GetNumArtifactsByRace(i) > 0 then
-				SetSelectedArtifact(i)
-				local artifactName, artifactDescription, artifactRarity, _, _, keystoneCount = GetSelectedArtifactInfo()
-				local numFragmentsCollected, numFragmentsAdded, numFragmentsRequired = GetArtifactProgress()
-				local r, g, b
-				if artifactRarity == 1 then
-					artifactRarity = ITEM_QUALITY3_DESC
-					r, g, b = GetItemQualityColor(3)
-				else
-					artifactRarity = ITEM_QUALITY1_DESC
-					r, g, b = GetItemQualityColor(1)
-				end
-				GameTooltip:AddLine(artifactName, r, g, b, 1)
-				GameTooltip:AddLine(artifactRarity, r, g, b, r, g, b)
-				GameTooltip:AddDoubleLine(ARCHAEOLOGY_RUNE_STONES..": "..numFragmentsCollected.."/"..numFragmentsRequired, "Keystones: "..keystoneCount, 1, 1, 1, 1, 1, 1)
-				GameTooltip:AddLine(" ")
-				GameTooltip:AddLine(artifactDescription, 1, 1, 1, 1)
-				GameTooltip:Show()
-			end
-		end)
-		bar:SetScript("OnLeave", function()
-			GameTooltip:Hide()
-		end)
-
-		-- Race Text
-		race:SetFont(SV.Media.font.roboto, 12, "OUTLINE")
-		race:SetText(RACE)
-		race:SetPoint("LEFT", bar, "LEFT", 2, 0)
-
-		-- Progress Text
-		progress:SetFont(SV.Media.font.roboto, 12, "OUTLINE")
-		progress:SetText("")
-		progress:SetPoint("RIGHT", bar, "RIGHT", 1, 0)
-
-		-- Solve
-		solve:SetAllPoints(bar)
-
-		solve.bg = solve:CreateTexture(nil,"BORDER")
-		solve.bg:SetAllPoints(solve)
-		solve.bg:SetTexture(SV.Media.bar.default)
-		solve.bg:SetVertexColor(0.1,0.5,0)
-
-		solve.text = solve:CreateFontString(nil,"OVERLAY")
-		solve.text:SetFont(SV.Media.font.roboto, 14, "NONE")
-		solve.text:SetShadowOffset(-1,-1)
-		solve.text:SetShadowColor(0,0,0,0.5)
-		solve.text:SetText(SOLVE)
-		solve.text:SetPoint("CENTER", solve, "CENTER", 2, 0)
-
-		progressBars[i] = {
-			["bar"] = bar,
-			["race"] = race,
-			["progress"] = progress,
-			["solve"] = solve
-		}
-	end
-	ArchLaborer:Hide()
-	MOD.Archaeology:Update()
-	UpdateArtifactCache()
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_Laborer/modes/cooking.lua b/Interface/AddOns/SVUI_Laborer/modes/cooking.lua
deleted file mode 100644
index e1966ae..0000000
--- a/Interface/AddOns/SVUI_Laborer/modes/cooking.lua
+++ /dev/null
@@ -1,229 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local type 		= _G.type;
-local string    = _G.string;
-local math 		= _G.math;
-local table 	= _G.table;
-local rept      = string.rep;
-local tsort,twipe = table.sort,table.wipe;
-local floor,ceil  = math.floor, math.ceil;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local MOD = _G.LaborVillain;
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local cookingSpell, campFire, skillRank, skillModifier;
-local DockButton;
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local function UpdateChefWear()
-	if(GetItemCount(46349) > 0) then
-		MOD.WornItems["HEAD"] = GetInventoryItemID("player", INVSLOT_HEAD);
-		EquipItemByName(46349)
-		MOD.InModeGear = true
-	end
-	if(GetItemCount(86468) > 0) then
-		MOD.WornItems["TAB"] = GetInventoryItemID("player", INVSLOT_TABARD);
-		EquipItemByName(86468)
-		MOD.InModeGear = true
-	end
-	if(GetItemCount(86559) > 0) then
-		MOD.WornItems["MAIN"] = GetInventoryItemID("player", INVSLOT_MAINHAND);
-		EquipItemByName(86559)
-		MOD.InModeGear = true
-	end
-	if(GetItemCount(86558) > 0) then
-		MOD.WornItems["OFF"] = GetInventoryItemID("player", INVSLOT_OFFHAND);
-		EquipItemByName(86558)
-		MOD.InModeGear = true
-	end
-end
-
-local function GetTitleAndSkill()
-	local msg = "|cff22ff11Cooking Mode|r"
-	if(skillRank) then
-		if(skillModifier) then
-			skillRank = skillRank + skillModifier;
-		end
-		msg = msg .. " (|cff00ddff" .. skillRank .. "|r)";
-	end
-	return msg
-end
-
-local function SendModeMessage(...)
-	if not CombatText_AddMessage then return end
-	CombatText_AddMessage(...)
-end
---[[
-##########################################################
-CORE NAMESPACE
-##########################################################
-]]--
-MOD.Cooking = {};
-MOD.Cooking.Log = {};
-MOD.Cooking.Loaded = false;
---[[
-##########################################################
-EVENT HANDLER
-##########################################################
-]]--
-local EnableListener, DisableListener
-do
-	local CookEventHandler = CreateFrame("Frame")
-	local LootProxy = function(item, name)
-		if(item) then
-			local mask = [[0x10000]];
-			local itemType = GetItemFamily(item);
-			local pass = bit.band(itemType, mask);
-			if pass > 0 then
-				proxyTest = true;
-			end
-		end
-	end
-
-	local Cook_OnEvent = function(self, event, ...)
-		if(InCombatLockdown()) then return end
-		if(event == "BAG_UPDATE" or event == "CHAT_MSG_SKILL") then
-			local msg = GetTitleAndSkill()
-			MOD.TitleWindow:Clear()
-			MOD.TitleWindow:AddMessage(msg)
-		elseif(event == "CHAT_MSG_LOOT") then
-			local item, amt = MOD:CheckForModeLoot(...);
-			if item then
-				local name, lnk, rarity, lvl, mlvl, itype, stype, cnt, ieq, tex, price = GetItemInfo(item);
-				if proxyTest == false then
-					LootProxy(lnk, name)
-				end
-				if proxyTest == false then return end
-				if not MOD.Cooking.Log[name] then
-					MOD.Cooking.Log[name] = {amount = 0, texture = ""};
-				end
-				local r, g, b, hex = GetItemQualityColor(rarity);
-				local stored = MOD.Cooking.Log
-				local mod = stored[name];
-				local newAmt = mod.amount + 1;
-				if amt >= 2 then newAmt = mod.amount + amt end
-				MOD.Cooking.Log[name].amount = newAmt;
-				MOD.Cooking.Log[name].texture = tex;
-				MOD.LogWindow:Clear();
-				for name,data in pairs(stored) do
-					if type(data) == "table" and data.amount and data.texture then
-						MOD.LogWindow:AddMessage("|cff55FF55"..data.amount.." x|r |T".. data.texture ..":16:16:0:0:64:64:4:60:4:60|t".." "..name, r, g, b);
-					end
-				end
-				MOD.LogWindow:AddMessage("----------------", 0, 0, 0);
-				MOD.LogWindow:AddMessage("Cooked So Far...", 0, 1, 1);
-				MOD.LogWindow:AddMessage(" ", 0, 0, 0);
-				proxyTest = false;
-			end
-		end
-	end
-
-	function EnableListener()
-		CookEventHandler:RegisterEvent("ZONE_CHANGED")
-		CookEventHandler:RegisterEvent("BAG_UPDATE")
-		CookEventHandler:RegisterEvent("CHAT_MSG_SKILL")
-		CookEventHandler:SetScript("OnEvent", Cook_OnEvent)
-	end
-
-	function DisableListener()
-		CookEventHandler:UnregisterAllEvents()
-		CookEventHandler:SetScript("OnEvent", nil)
-	end
-end
---[[
-##########################################################
-CORE METHODS
-##########################################################
-]]--
-function MOD.Cooking:Enable()
-	MOD.Cooking:Update()
-	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
-	if(MOD.db.cooking.autoequip) then
-		UpdateChefWear();
-	end
-	PlaySoundFile("Sound\\Spells\\Tradeskills\\CookingPrepareA.wav")
-	MOD.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
-
-	if(not IsSpellKnown(818)) then
-		MOD:ModeLootLoader("Cooking", "WTF is Cooking?", "You have no clue how to cook! \nEven toast is a mystery to you. \nGo find a trainer and learn \nhow to do this simple job.");
-	else
-		local msg = GetTitleAndSkill();
-		if cookingSpell and GetSpellCooldown(campFire) > 0 then
-			MOD:ModeLootLoader("Cooking", msg, "Double-Right-Click anywhere on the screen \nto open your cookbook.");
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', cookingSpell)
-		else
-			MOD:ModeLootLoader("Cooking", msg, "Double-Right-Click anywhere on the screen \nto start a cooking fire.");
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', campFire)
-		end
-	end
-	EnableListener()
-	MOD.ModeAlert:Show()
-	SendModeMessage("Cooking Mode Enabled", CombatText_StandardScroll, 0.28, 0.9, 0.1);
-end
-
-function MOD.Cooking:Disable()
-	DisableListener()
-end
-
-function MOD.Cooking:Bind()
-	if InCombatLockdown() then return end
-	if cookingSpell then
-		if cookingSpell and GetSpellCooldown(campFire) > 0 then
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', cookingSpell)
-			MOD.ModeAlert.HelpText = 'Double-Right-Click to open the cooking window.'
-		end
-		SetOverrideBindingClick(_G["SVUI_ModeCaptureWindow"], true, "BUTTON2", "SVUI_ModeCaptureWindow");
-		_G["SVUI_ModeCaptureWindow"].Grip:Show();
-	end
-end
-
-function MOD.Cooking:Update()
-	campFire = GetSpellInfo(818);
-	local _,_,_,_,cook,_ = GetProfessions();
-	if cook ~= nil then
-		cookingSpell, _, skillRank, _, _, _, _, skillModifier = GetProfessionInfo(cook)
-	end
-end
---[[
-##########################################################
-LOADER
-##########################################################
-]]--
-function MOD:LoadCookingMode()
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"];
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_Laborer/modes/farming.lua b/Interface/AddOns/SVUI_Laborer/modes/farming.lua
deleted file mode 100644
index 124a5bc..0000000
--- a/Interface/AddOns/SVUI_Laborer/modes/farming.lua
+++ /dev/null
@@ -1,614 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local type 		= _G.type;
-local string    = _G.string;
-local math 		= _G.math;
-local table 	= _G.table;
-local rept      = string.rep;
-local tsort,twipe = table.sort,table.wipe;
-local floor,ceil  = math.floor, math.ceil;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local MOD = _G.LaborVillain;
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local NUM_SEED_BARS = 7
-local EnableListener, DisableListener, InventoryUpdate, LoadFarmingModeTools;
-local seedButtons,farmToolButtons,portalButtons = {},{},{};
-local DockButton, ModeLogsFrame;
-local refSeeds = {[79102]={1},[89328]={1},[80590]={1},[80592]={1},[80594]={1},[80593]={1},[80591]={1},[89329]={1},[80595]={1},[89326]={1},[80809]={3},[95434]={4},[89848]={3},[95437]={4},[84782]={3},[95436]={4},[85153]={3},[95438]={4},[85162]={3},[95439]={4},[85158]={3},[95440]={4},[84783]={3},[95441]={4},[89849]={3},[95442]={4},[85163]={3},[95443]={4},[89847]={3},[95444]={4},[85216]={2},[85217]={2},[89202]={2},[85215]={2},[89233]={2},[89197]={2},[85219]={2},[91806]={2},[95449]={5},[95450]={6},[95451]={5},[95452]={6},[95457]={5},[95458]={6},[95447]={5},[95448]={6},[95445]={5},[95446]={6},[95454]={5},[95456]={6},[85267]={7},[85268]={7},[85269]={7}};
-local refTools = {[79104]={30254},[80513]={30254},[89880]={30535},[89815]={31938}};
-local refPortals = {[91850]={"Horde"},[91861]={"Horde"},[91862]={"Horde"},[91863]={"Horde"},[91860]={"Alliance"},[91864]={"Alliance"},[91865]={"Alliance"},[91866]={"Alliance"}};
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local Scroll_OnValueChanged = function(self,argValue)
-	FarmModeFrame:SetVerticalScroll(argValue)
-end
-
-local Scroll_OnMouseWheel = function(self, delta)
-	local scroll = self:GetVerticalScroll();
-	local value = (scroll - (20 * delta));
-	if value < -1 then
-		value = 0
-	end
-	if value > 420 then
-		value = 420
-	end
-	self:SetVerticalScroll(value)
-	self.slider:SetValue(value)
-end
-
-local function FindItemInBags(itemId)
-	for container = 0, NUM_BAG_SLOTS do
-		for slot = 1, GetContainerNumSlots(container) do
-			if itemId == GetContainerItemID(container, slot) then
-				return container, slot
-			end
-		end
-	end
-end
---[[
-##########################################################
-EVENT HANDLER
-##########################################################
-]]--
-do
-	local FarmEventHandler = CreateFrame("Frame")
-
-	local ButtonUpdate = function(button)
-		button.items = GetItemCount(button.itemId)
-		if button.text then
-			button.text:SetText(button.items)
-		end
-		button.icon:SetDesaturated(button.items == 0)
-		button.icon:SetAlpha(button.items == 0 and .25 or 1)
-	end
-
-	local InFarmZone = function()
-		local zone = GetSubZoneText()
-		if (zone == L["Sunsong Ranch"] or zone == L["The Halfhill Market"]) then
-			if MOD.Farming.ToolsLoaded and MOD.ModeAlert:IsShown() then
-				MOD.TitleWindow:Clear()
-	 			MOD.TitleWindow:AddMessage("|cff22ff11Farming Mode|r")
-			end
-			return true
-		else
-			if MOD.Farming.ToolsLoaded and MOD.ModeAlert:IsShown() then
-				MOD.TitleWindow:Clear()
-	 			MOD.TitleWindow:AddMessage("|cffff2211Must be in Sunsong Ranch|r")
-			end
-			return false
-		end
-	end
-
-	local UpdateFarmtoolCooldown = function()
-		for i = 1, NUM_SEED_BARS do
-			for _, button in ipairs(seedButtons[i]) do
-				if button.cooldown then
-					button.cooldown:SetCooldown(GetItemCooldown(button.itemId))
-				end
-			end
-		end
-		for _, button in ipairs(farmToolButtons) do
-			if button.cooldown then
-				button.cooldown:SetCooldown(GetItemCooldown(button.itemId))
-			end
-		end
-		for _, button in ipairs(portalButtons) do
-			if button.cooldown then
-				button.cooldown:SetCooldown(GetItemCooldown(button.itemId))
-			end
-		end
-	end
-
-	local Farm_OnEvent = function(self, event, ...)
-		if(InCombatLockdown()) then return end
-		if(event == "ZONE_CHANGED") then
-			local inZone = InFarmZone()
-			if not inZone and MOD.db.farming.droptools then
-				for k, v in pairs(refTools) do
-					local container, slot = FindItemInBags(k)
-					if container and slot then
-						PickupContainerItem(container, slot)
-						DeleteCursorItem()
-					end
-				end
-			end
-			if inZone then
-				self:RegisterEvent("BAG_UPDATE")
-				self:RegisterEvent("BAG_UPDATE_COOLDOWN")
-			else
-				self:UnregisterEvent("BAG_UPDATE")
-				self:UnregisterEvent("BAG_UPDATE_COOLDOWN")
-			end
-			InventoryUpdate()
-		elseif(event == "BAG_UPDATE") then
-			InventoryUpdate()
-		elseif(event == "BAG_UPDATE_COOLDOWN") then
-			UpdateFarmtoolCooldown()
-		end
-	end
-
-	InventoryUpdate = function()
-		if InCombatLockdown() then
-			FarmEventHandler:RegisterEvent("PLAYER_REGEN_ENABLED", InventoryUpdate)
-			return
-		else
-			FarmEventHandler:UnregisterEvent("PLAYER_REGEN_ENABLED")
-	 	end
-		for i = 1, NUM_SEED_BARS do
-			for _, button in ipairs(seedButtons[i]) do
-				ButtonUpdate(button)
-			end
-		end
-		for _, button in ipairs(farmToolButtons) do
-			ButtonUpdate(button)
-		end
-		for _, button in ipairs(portalButtons) do
-			ButtonUpdate(button)
-		end
-
-		MOD:RefreshFarmingTools()
-	end
-
-	EnableListener = function()
-		FarmEventHandler:RegisterEvent("ZONE_CHANGED")
-		FarmEventHandler:SetScript("OnEvent", Farm_OnEvent)
-	end
-
-	DisableListener = function()
-		FarmEventHandler:UnregisterAllEvents()
-		FarmEventHandler:SetScript("OnEvent", nil)
-	end
-end
---[[
-##########################################################
-LOADING HANDLER
-##########################################################
-]]--
-do
-	local seedsort = function(a, b) return a.sortname < b.sortname end
-
-	local SeedToSoil = function(group, itemId)
-		if(UnitName("target") ~= L["Tilled Soil"]) then return false; end
-		for i, v in pairs(group) do
-			if i == itemId then return true end
-		end
-		return false
-	end
-
-	local Button_OnEnter = function(self)
-		GameTooltip:SetOwner(self, 'ANCHOR_TOPLEFT', 2, 4)
-		GameTooltip:ClearLines()
-		GameTooltip:AddDoubleLine(self.sortname)
-		if self.allowDrop then
-			GameTooltip:AddLine(L['Right-click to drop the item.'])
-		end
-		GameTooltip:Show()
-	end
-
-	local Button_OnLeave = function()
-		GameTooltip:Hide()
-	end
-
-	local Button_OnMouseDown = function(self, mousebutton)
-		if InCombatLockdown() then return end
-		if mousebutton == "LeftButton" then
-			self:SetAttribute("type", self.buttonType)
-			self:SetAttribute(self.buttonType, self.sortname)
-			if(SeedToSoil(refSeeds, self.itemId)) then
-				local container, slot = FindItemInBags(self.itemId)
-				if container and slot then
-					self:SetAttribute("type", "macro")
-					self:SetAttribute("macrotext", format("/targetexact %s \n/use %s %s", L["Tilled Soil"], container, slot))
-				end
-			end
-			if self.cooldown then
-				self.cooldown:SetCooldown(GetItemCooldown(self.itemId))
-			end
-		elseif mousebutton == "RightButton" and self.allowDrop then
-			self:SetAttribute("type", "click")
-			local container, slot = FindItemInBags(self.itemId)
-			if container and slot then
-				PickupContainerItem(container, slot)
-				DeleteCursorItem()
-			end
-		end
-	end
-
-	local function CreateFarmingButton(index, owner, buttonName, buttonType, name, texture, allowDrop, showCount)
-		local BUTTONSIZE = owner.ButtonSize;
-		local button = CreateFrame("Button", ("FarmingButton"..buttonName.."%d"):format(index), owner, "SecureActionButtonTemplate")
-		button:SetFixedPanelTemplate("Transparent")
-		button.Panel:SetFrameLevel(0)
-		button:SetNormalTexture(nil)
-		button:Size(BUTTONSIZE, BUTTONSIZE)
-		button.sortname = name
-		button.itemId = index
-		button.allowDrop = allowDrop
-		button.buttonType = buttonType
-		button.items = GetItemCount(index)
-		button.icon = button:CreateTexture(nil, "OVERLAY", nil, 2)
-		button.icon:SetTexture(texture)
-		button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		button.icon:FillInner(button,2,2)
-		if showCount then
-			button.text = button:CreateFontString(nil, "OVERLAY")
-			button.text:SetFont(SV.Media.font.action, 12, "OUTLINE")
-			button.text:SetPoint("BOTTOMRIGHT", button, 1, 2)
-		end
-		button.cooldown = CreateFrame("Cooldown", ("FarmingButton"..buttonName.."%dCooldown"):format(index), button)
-		button.cooldown:SetAllPoints(button)
-		button:SetScript("OnEnter", Button_OnEnter)
-		button:SetScript("OnLeave", Button_OnLeave)
-		button:SetScript("OnMouseDown", Button_OnMouseDown)
-		return button
-	end
-
-	function LoadFarmingModeTools()
-		local itemError = false
-		for k, v in pairs(refSeeds) do
-			if select(2, GetItemInfo(k)) == nil then itemError = true end
-		end
-		for k, v in pairs(refTools) do
-			if select(2, GetItemInfo(k)) == nil then itemError = true end
-		end
-		for k, v in pairs(refPortals) do
-			if select(2, GetItemInfo(k)) == nil then itemError = true end
-		end
-		if InCombatLockdown() or itemError then
-			MOD.TitleWindow:AddMessage("|cffffff11Loading Farm Tools...|r|cffff1111PLEASE WAIT|r")
-			SV.Timers:ExecuteTimer(LoadFarmingModeTools, 5)
-		else
-			local horizontal = MOD.db.farming.toolbardirection == 'HORIZONTAL'
-
-			local seeds, farmtools, portals = {},{},{}
-
-			for k, v in pairs(refSeeds) do
-				seeds[k] = { v[1], GetItemInfo(k) }
-			end
-
-			for k, v in pairs(refTools) do
-				farmtools[k] = { v[1], GetItemInfo(k) }
-			end
-
-			for k, v in pairs(refPortals) do
-				portals[k] = { v[1], GetItemInfo(k) }
-			end
-
-			for i = 1, NUM_SEED_BARS do
-				local seedBar = _G["FarmSeedBar"..i]
-				seedButtons[i] = seedButtons[i] or {}
-				local sbc = 1;
-				for k, v in pairs(seeds) do
-					if v[1] == i then
-						seedButtons[i][sbc] = CreateFarmingButton(k, seedBar, "SeedBar"..i.."Seed", "item", v[2], v[11], false, true);
-						sbc = sbc + 1;
-					end
-					tsort(seedButtons[i], seedsort)
-				end
-			end
-
-			local ftc = 1;
-			for k, v in pairs(farmtools) do
-				farmToolButtons[ftc] = CreateFarmingButton(k, _G["FarmToolBar"], "Tools", "item", v[2], v[11], true, false);
-				ftc = ftc + 1;
-			end
-
-			local playerFaction = UnitFactionGroup('player')
-			local pbc = 1;
-			for k, v in pairs(portals) do
-				if v[1] == playerFaction then
-					portalButtons[pbc] = CreateFarmingButton(k, _G["FarmPortalBar"], "Portals", "item", v[2], v[11], false, true);
-					pbc = pbc + 1;
-				end
-			end
-
-			MOD.Farming.Loaded = true
-			SV.Timers:ExecuteTimer(MOD.Farming.Enable, 1.5)
-		end
-	end
-end
---[[
-##########################################################
-CORE FUNCTIONS
-##########################################################
-]]--
-MOD.Farming = {};
-MOD.Farming.Loaded = false;
-MOD.Farming.ToolsLoaded = false;
-
-function MOD.Farming:Enable()
-	if InCombatLockdown() then return end
-
- 	MOD:ModeLootLoader("Farming", "Farming Mode", "This mode will provide you \nwith fast-access buttons for each \nof your seeds and farming tools.");
-
- 	MOD.TitleWindow:Clear()
-	if(not MOD.Farming.Loaded) then
-		MOD.TitleWindow:AddMessage("|cffffff11Loading Farm Tools...|r")
-		LoadFarmingModeTools()
-		return
-	else
-		if not MOD.Farming.ToolsLoaded then
-			PlaySoundFile("Sound\\Effects\\DeathImpacts\\mDeathImpactColossalDirtA.wav")
-			MOD.TitleWindow:AddMessage("|cff22ff11Farming Mode|r")
-			MOD.ModeAlert:Show()
-			InventoryUpdate()
-			MOD.Farming.ToolsLoaded = true
-			EnableListener()
-			if not FarmModeFrame:IsShown() then FarmModeFrame:Show() end
-			if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
-		end
-	end
-end
-
-function MOD.Farming:Disable()
-	if(InCombatLockdown() or (not MOD.Farming.Loaded) or (not MOD.Farming.ToolsLoaded)) then
-		DisableListener()
-		return
-	end
-	if MOD.db.farming.droptools then
-		for k, v in pairs(refTools) do
-			local container, slot = FindItemInBags(k)
-			if container and slot then
-				PickupContainerItem(container, slot)
-				DeleteCursorItem()
-			end
-		end
-	end
-	if FarmModeFrame:IsShown() then FarmModeFrame:Hide() end
-	MOD.Farming.ToolsLoaded = false
-	DisableListener()
-end
---[[
-##########################################################
-CORE FUNCTIONS
-##########################################################
-]]--
-function MOD:RefreshFarmingTools()
-	local count, horizontal = 0, MOD.db.farming.toolbardirection == 'HORIZONTAL'
-	local BUTTONSPACE = MOD.db.farming.buttonspacing or 2;
-	local lastBar;
-	if not FarmToolBar:IsShown() then
-		_G["FarmSeedBarAnchor"]:SetPoint("TOPLEFT", _G["FarmModeFrameSlots"], "TOPLEFT", 0, 0)
-	else
-		_G["FarmSeedBarAnchor"]:SetPoint("TOPLEFT", _G["FarmToolBar"], horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
-	end
-
-	for i = 1, NUM_SEED_BARS do
-		local seedBar = _G["FarmSeedBar"..i]
-		count = 0
-		for i, button in ipairs(seedButtons[i]) do
-			local BUTTONSIZE = seedBar.ButtonSize;
-			button:Point("TOPLEFT", seedBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
-			button:Size(BUTTONSIZE,BUTTONSIZE)
-			if (not MOD.db.farming.onlyactive or (MOD.db.farming.onlyactive and button.items > 0)) then
-				button.icon:SetVertexColor(1,1,1)
-				count = count + 1
-			elseif (not MOD.db.farming.onlyactive and button.items <= 0) then
-				button:Show()
-				button.icon:SetVertexColor(0.25,0.25,0.25)
-				count = count + 1
-			else
-				button:Hide()
-			end
-		end
-		if(MOD.db.farming.onlyactive and not MOD.db.farming.undocked) then
-			if count==0 then
-				seedBar:Hide()
-			else
-				seedBar:Show()
-				if(not lastBar) then
-					seedBar:SetPoint("TOPLEFT", _G["FarmSeedBarAnchor"], "TOPLEFT", 0, 0)
-				else
-					seedBar:SetPoint("TOPLEFT", lastBar, horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
-				end
-				lastBar = seedBar
-			end
-		end
-	end
-	count = 0;
-	lastBar = nil;
-	FarmToolBar:ClearAllPoints()
-	FarmToolBar:SetAllPoints(FarmToolBarAnchor)
-	for i, button in ipairs(farmToolButtons) do
-		local BUTTONSIZE = FarmToolBar.ButtonSize;
-		button:Point("TOPLEFT", FarmToolBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
-		button:Size(BUTTONSIZE,BUTTONSIZE)
-		if (not MOD.db.farming.onlyactive or (MOD.db.farming.onlyactive and button.items > 0)) then
-			button:Show()
-			button.icon:SetVertexColor(1,1,1)
-			count = count + 1
-		elseif (not MOD.db.farming.onlyactive and button.items == 0) then
-			button:Show()
-			button.icon:SetVertexColor(0.25,0.25,0.25)
-			count = count + 1
-		else
-			button:Hide()
-		end
-	end
-	if(MOD.db.farming.onlyactive and not MOD.db.farming.undocked) then
-		if count==0 then
-			FarmToolBarAnchor:Hide()
-			FarmPortalBar:SetPoint("TOPLEFT", FarmModeFrameSlots, "TOPLEFT", 0, 0)
-		else
-			FarmToolBarAnchor:Show()
-			FarmPortalBar:SetPoint("TOPLEFT", FarmToolBarAnchor, "TOPRIGHT", 0, 0)
-		end
-	end
-	count = 0;
-	FarmPortalBar:ClearAllPoints()
-	FarmPortalBar:SetAllPoints(FarmPortalBarAnchor)
-	for i, button in ipairs(portalButtons) do
-		local BUTTONSIZE = FarmPortalBar.ButtonSize;
-		button:Point("TOPLEFT", FarmPortalBar, "TOPLEFT", horizontal and (count * (BUTTONSIZE + BUTTONSPACE) + 1) or 1, horizontal and -1 or -(count * (BUTTONSIZE + BUTTONSPACE) + 1))
-		button:Size(BUTTONSIZE,BUTTONSIZE)
-		if (not MOD.db.farming.onlyactive or (MOD.db.farming.onlyactive and button.items > 0)) then
-			button:Show()
-			button.icon:SetVertexColor(1,1,1)
-			count = count + 1
-		elseif (not MOD.db.farming.onlyactive and button.items == 0) then
-			button:Show()
-			button.icon:SetVertexColor(0.25,0.25,0.25)
-			count = count + 1
-		else
-			button:Hide()
-		end
-	end
-	if(MOD.db.farming.onlyactive) then
-		if count==0 then
-			FarmPortalBar:Hide()
-		else
-			FarmPortalBar:Show()
-		end
-	end
-end
-
-function MOD:PrepareFarmingTools()
-	local horizontal = self.db.farming.toolbardirection == "HORIZONTAL"
-	local BUTTONSPACE = self.db.farming.buttonspacing or 2;
-
-	ModeLogsFrame = MOD.LogWindow;
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"]
-
-	if not self.db.farming.undocked then
-		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
-		local bdTex = SV.Media.bar.glow
-		local farmingDocklet = CreateFrame("ScrollFrame", "FarmModeFrame", ModeLogsFrame);
-		farmingDocklet:SetPoint("TOPLEFT", ModeLogsFrame, 31, -3);
-		farmingDocklet:SetPoint("BOTTOMRIGHT", ModeLogsFrame, -3, 3);
-		farmingDocklet:EnableMouseWheel(true);
-
-		local farmingDockletSlots = CreateFrame("Frame", "FarmModeFrameSlots", farmingDocklet);
-		farmingDockletSlots:SetPoint("TOPLEFT", farmingDocklet, 0, 0);
-		farmingDockletSlots:SetWidth(farmingDocklet:GetWidth())
-		farmingDockletSlots:SetHeight(500);
-		farmingDockletSlots:SetFrameLevel(farmingDocklet:GetFrameLevel() + 1)
-		farmingDocklet:SetScrollChild(farmingDockletSlots)
-
-		local slotSlider = CreateFrame("Slider", "FarmModeSlotSlider", farmingDocklet);
-		slotSlider:SetHeight(farmingDocklet:GetHeight() - 3);
-		slotSlider:SetWidth(18);
-		slotSlider:SetPoint("TOPLEFT", farmingDocklet, -28, 0);
-		slotSlider:SetPoint("BOTTOMLEFT", farmingDocklet, -28, 0);
-		slotSlider:SetBackdrop({bgFile = bgTex, edgeFile = bdTex, edgeSize = 4, insets = {left = 3, right = 3, top = 3, bottom = 3}});
-		slotSlider:SetFrameLevel(6)
-		slotSlider:SetFixedPanelTemplate("Transparent", true);
-		slotSlider:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob");
-		slotSlider:SetOrientation("VERTICAL");
-		slotSlider:SetValueStep(5);
-		slotSlider:SetMinMaxValues(1, 420);
-		slotSlider:SetValue(1);
-
-		farmingDocklet.slider = slotSlider;
-		slotSlider:SetScript("OnValueChanged", Scroll_OnValueChanged)
-		farmingDocklet:SetScript("OnMouseWheel", Scroll_OnMouseWheel);
-
-		local parentWidth = FarmModeFrameSlots:GetWidth() - 31
-		local BUTTONSIZE = (parentWidth / (horizontal and 10 or 8));
-		local TOOLSIZE = (parentWidth / 8);
-
-		-- FARM TOOLS
-		local farmToolBarAnchor = CreateFrame("Frame", "FarmToolBarAnchor", farmingDockletSlots)
-		farmToolBarAnchor:Point("TOPLEFT", farmingDockletSlots, "TOPLEFT", 0, 0)
-		farmToolBarAnchor:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
-
-		local farmToolBar = CreateFrame("Frame", "FarmToolBar", farmToolBarAnchor)
-		farmToolBar:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
-		farmToolBar:SetPoint("TOPLEFT", farmToolBarAnchor, "TOPLEFT", (horizontal and BUTTONSPACE or (TOOLSIZE + BUTTONSPACE)), (horizontal and -(TOOLSIZE + BUTTONSPACE) or -BUTTONSPACE))
-		farmToolBar.ButtonSize = TOOLSIZE;
-
-		-- PORTALS
-		local farmPortalBarAnchor = CreateFrame("Frame", "FarmPortalBarAnchor", farmingDockletSlots)
-		farmPortalBarAnchor:Point("TOPLEFT", farmToolBarAnchor, "TOPRIGHT", 0, 0)
-		farmPortalBarAnchor:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
-
-		local farmPortalBar = CreateFrame("Frame", "FarmPortalBar", farmPortalBarAnchor)
-		farmPortalBar:Size(horizontal and ((TOOLSIZE + BUTTONSPACE) * 4) or (TOOLSIZE + BUTTONSPACE), horizontal and (TOOLSIZE + BUTTONSPACE) or ((TOOLSIZE + BUTTONSPACE) * 4))
-		farmPortalBar:SetPoint("TOPLEFT", farmPortalBarAnchor, "TOPLEFT", (horizontal and BUTTONSPACE or (TOOLSIZE + BUTTONSPACE)), (horizontal and -(TOOLSIZE + BUTTONSPACE) or -BUTTONSPACE))
-		farmPortalBar.ButtonSize = TOOLSIZE;
-
-		-- SEEDS
-		local farmSeedBarAnchor = CreateFrame("Frame", "FarmSeedBarAnchor", farmingDockletSlots)
-		farmSeedBarAnchor:Point("TOPLEFT", farmPortalBarAnchor, horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
-		farmSeedBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or ((BUTTONSIZE + BUTTONSPACE) * 8), horizontal and ((BUTTONSIZE + BUTTONSPACE) * 8) or ((BUTTONSIZE + BUTTONSPACE) * 10))
-
-		for i = 1, NUM_SEED_BARS do
-			local seedBar = CreateFrame("Frame", "FarmSeedBar"..i, farmSeedBarAnchor)
-			seedBar.ButtonSize = BUTTONSIZE;
-			seedBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 10))
-			if i == 1 then
-				seedBar:SetPoint("TOPLEFT", farmSeedBarAnchor, "TOPLEFT", 0, 0)
-			else
-				seedBar:SetPoint("TOPLEFT", "FarmSeedBar"..i-1, horizontal and "BOTTOMLEFT" or "TOPRIGHT", 0, 0)
-			end
-		end
-
-		farmingDocklet:Hide()
-	else
-		local BUTTONSIZE = self.db.farming.buttonsize or 35;
-
-		-- SEEDS
-		local farmSeedBarAnchor = CreateFrame("Frame", "FarmSeedBarAnchor", SV.UIParent)
-		farmSeedBarAnchor:Point("TOPRIGHT", SV.UIParent, "TOPRIGHT", -40, -300)
-		farmSeedBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or ((BUTTONSIZE + BUTTONSPACE) * 8), horizontal and ((BUTTONSIZE + BUTTONSPACE) * 8) or ((BUTTONSIZE + BUTTONSPACE) * 10))
-		for i = 1, NUM_SEED_BARS do
-			local seedBar = CreateFrame("Frame", "FarmSeedBar"..i, farmSeedBarAnchor)
-			seedBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 10) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 10))
-			seedBar:SetPoint("TOPRIGHT", _G["FarmSeedBarAnchor"], "TOPRIGHT", (horizontal and 0 or -((BUTTONSIZE + BUTTONSPACE) * i)), (horizontal and -((BUTTONSIZE + BUTTONSPACE) * i) or 0))
-			seedBar.ButtonSize = BUTTONSIZE;
-		end
-		SV:SetSVMovable(farmSeedBarAnchor, "Farming Seeds")
-
-		-- FARM TOOLS
-		local farmToolBarAnchor = CreateFrame("Frame", "FarmToolBarAnchor", SV.UIParent)
-		farmToolBarAnchor:Point("TOPRIGHT", farmSeedBarAnchor, horizontal and "BOTTOMRIGHT" or "TOPLEFT", horizontal and 0 or -(BUTTONSPACE * 2), horizontal and -(BUTTONSPACE * 2) or 0)
-		farmToolBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
-		local farmToolBar = CreateFrame("Frame", "FarmToolBar", farmToolBarAnchor)
-		farmToolBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
-		farmToolBar:SetPoint("TOPRIGHT", farmToolBarAnchor, "TOPRIGHT", (horizontal and -BUTTONSPACE or -(BUTTONSIZE + BUTTONSPACE)), (horizontal and -(BUTTONSIZE + BUTTONSPACE) or -BUTTONSPACE))
-		farmToolBar.ButtonSize = BUTTONSIZE;
-		SV:SetSVMovable(farmToolBarAnchor, "Farming Tools")
-
-		-- PORTALS
-		local farmPortalBarAnchor = CreateFrame("Frame", "FarmPortalBarAnchor", SV.UIParent)
-		farmPortalBarAnchor:Point("TOPRIGHT", farmToolBarAnchor, horizontal and "BOTTOMRIGHT" or "TOPLEFT", horizontal and 0 or -(BUTTONSPACE * 2), horizontal and -(BUTTONSPACE * 2) or 0)
-		farmPortalBarAnchor:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
-		local farmPortalBar = CreateFrame("Frame", "FarmPortalBar", farmPortalBarAnchor)
-		farmPortalBar:Size(horizontal and ((BUTTONSIZE + BUTTONSPACE) * 4) or (BUTTONSIZE + BUTTONSPACE), horizontal and (BUTTONSIZE + BUTTONSPACE) or ((BUTTONSIZE + BUTTONSPACE) * 4))
-		farmPortalBar:SetPoint("TOPRIGHT", farmPortalBarAnchor, "TOPRIGHT", (horizontal and -BUTTONSPACE or -(BUTTONSIZE + BUTTONSPACE)), (horizontal and -(BUTTONSIZE + BUTTONSPACE) or -BUTTONSPACE))
-		farmPortalBar.ButtonSize = BUTTONSIZE;
-		SV:SetSVMovable(farmPortalBarAnchor, "Farming Portals")
-	end
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_Laborer/modes/fishing.lua b/Interface/AddOns/SVUI_Laborer/modes/fishing.lua
deleted file mode 100644
index 37467eb..0000000
--- a/Interface/AddOns/SVUI_Laborer/modes/fishing.lua
+++ /dev/null
@@ -1,381 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local type 		= _G.type;
-local string    = _G.string;
-local math 		= _G.math;
-local table 	= _G.table;
-local rept      = string.rep;
-local tsort,twipe = table.sort,table.wipe;
-local floor,ceil  = math.floor, math.ceil;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local MOD = _G.LaborVillain;
---[[
-##########################################################
-LOCAL VARS
-##########################################################
-]]--
-local fishingIsKnown, fishingSpell, fishingLure;
-local proxyTest = false;
-local refLures = {
-	{ ["id"] = 6529,  ["bonus"] = 25,  ["skillReq"] = 1,   ["order"] = 10, },  --Shiny Bauble
-	{ ["id"] = 6811,  ["bonus"] = 50,  ["skillReq"] = 50,  ["order"] = 10, },  --Aquadynamic Fish Lens
-	{ ["id"] = 6530,  ["bonus"] = 50,  ["skillReq"] = 50,  ["order"] = 10, },  --Nightcrawlers
-	{ ["id"] = 7307,  ["bonus"] = 75,  ["skillReq"] = 100, ["order"] = 10, },  --Flesh Eating Worm
-	{ ["id"] = 6532,  ["bonus"] = 75,  ["skillReq"] = 100, ["order"] = 10, },  --Bright Baubles
-	{ ["id"] = 34861, ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 10, },  --Sharpened Fish Hook
-	{ ["id"] = 6533,  ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 10, },  --Aquadynamic Fish Attractor
-	{ ["id"] = 62673, ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 10, },  --Feathered Lure
-	{ ["id"] = 46006, ["bonus"] = 100, ["skillReq"] = 100, ["order"] = 60, },  --Glow Worm
-	{ ["id"] = 68049, ["bonus"] = 150, ["skillReq"] = 250, ["order"] = 5,  },  --Heat-Treated Spinning Lure
-	{ ["id"] = 67404, ["bonus"] = 15,  ["skillReq"] = 1,   ["order"] = 10, },  --Glass Fishing Bobber
-}
-tsort(refLures, function(a,b)
-	if ( a.bonus == b.bonus ) then
-		return a.order < b.order;
-	else
-		return a.bonus < b.bonus;
-	end
-end);
-local refHats = {
-	{ ["id"] = 93732, ["weight"] = 10, ["nocast"] = true },  --Darkmoon Fishing Hat
-	{ ["id"] = 33820, ["weight"] = 50  },  --Weather Beaten Fishing Hat
-	{ ["id"] = 19972, ["weight"] = 75  },  --Lucky Fishing Hat
-	{ ["id"] = 88710, ["weight"] = 100 },  --Nats Hat
-}
-local refPoles = {
-	{ ["id"] = 44050, ["weight"] = 33 },  --Kaluak
-	{ ["id"] = 25978, ["weight"] = 22 },  --Seths Graphite
-	{ ["id"] = 19022, ["weight"] = 21 },  --Nat Pagles Extreme Angler
-	{ ["id"] = 6367,  ["weight"] = 20 },  --Big Iron
-	{ ["id"] = 6366,  ["weight"] = 15 },  --Darkwood
-	{ ["id"] = 84661, ["weight"] = 32 },  --Dragon
-	{ ["id"] = 19970, ["weight"] = 40 },  --Arcanite
-	{ ["id"] = 45858, ["weight"] = 25 },  --Nats Lucky
-	{ ["id"] = 45992, ["weight"] = 31 },  --Jeweled
-	{ ["id"] = 45991, ["weight"] = 30 },  --Bone
-	{ ["id"] = 6365,  ["weight"] = 5 },   --Strong
-	{ ["id"] = 12225, ["weight"] = 4 },   --Blump Family
-	{ ["id"] = 46337, ["weight"] = 3 },   --Staats
-	{ ["id"] = 84660, ["weight"] = 10 },  --Pandaren
-	{ ["id"] = 6256,  ["weight"] = 1 }    --Standard
-}
-local DockButton;
---[[
-##########################################################
-LOCAL FUNCTIONS
-##########################################################
-]]--
-local function SendModeMessage(...)
-	if not CombatText_AddMessage then return end
-	CombatText_AddMessage(...)
-end
-
-local function GetFishingSkill()
-	local fishing = select(4, GetProfessions())
-	if (fishing) then
-		local rank = select(3, GetProfessionInfo(fishing))
-		return rank
-	end
-	return 0, 0, 0
-end
-
-local function FishingPoleIsEquipped()
-	local itemId = GetInventoryItemID("player", 16)
-	if itemId then
-		local subclass = select(7, GetItemInfo(itemId))
-		local weaponSubTypesList = select(17, GetAuctionItemSubClasses(1))
-		if subclass == weaponSubTypesList then
-			return true
-		else
-			return false
-		end
-	else
-		return false
-	end
-end
-
-local function UpdateFishingGear(autoequip)
-	local lastBonus, lastWeight = 0,0;
-	local rawskill = GetFishingSkill();
-	local item,id,bonus,count;
-
-	-- Check for and equip a fishing hat, if autoequip is enabled
-	if(autoequip) then
-		local fishingHat = false;
-		for i=1, #refHats do
-			item = refHats[i]
-			id = item.id
-			bonus = item.weight
-			count = GetItemCount(id)
-			if ( count > 0 and bonus > lastWeight ) then
-				fishingHat = id
-				lastWeight = bonus
-				if(item.weight > 10) then
-					fishingLure = id
-					lastBonus = bonus
-				end
-			end
-		end
-		if(fishingHat) then
-			local HelmetID = GetInventoryItemID("player", INVSLOT_HEAD);
-			if(HelmetID) then
-				MOD.WornItems["HEAD"] = HelmetID
-			end
-			EquipItemByName(fishingHat)
-			MOD.InModeGear = true
-		end
-	end
-
-	-- Check for and save best fishing lure
-	for i=1, #refLures do
-		item = refLures[i]
-		id = item.id
-		bonus = item.bonus
-		count = GetItemCount(id)
-		if ( count > 0 and bonus > (lastBonus or 0) ) then
-			if ( item.skillReq <= rawskill ) then
-				fishingLure = id
-				lastBonus = bonus
-			end
-		end
-	end
-
-	-- Check for and equip a fishing pole, if autoequip is enabled
-	if(autoequip) then
-		lastBonus = 0;
-		local fishingPole = false;
-		for i=1, #refPoles do
-			item = refPoles[i]
-			id = item.id
-			bonus = item.weight
-			count = GetItemCount(id)
-			if ( count > 0 and bonus > (lastBonus or 0) ) then
-				fishingPole = id
-				lastBonus = bonus
-			end
-		end
-		if(fishingPole) then
-			local MainHandID = GetInventoryItemID("player", INVSLOT_MAINHAND);
-			if(MainHandID) then
-				MOD.WornItems["MAIN"] = MainHandID
-			end
-
-			local OffHandID = GetInventoryItemID("player", INVSLOT_OFFHAND);
-			if(OffHandID) then
-				MOD.WornItems["OFF"] = OffHandID;
-			end
-
-			EquipItemByName(fishingPole)
-			MOD.InModeGear = true
-		end
-	end
-end
-
-local function LootProxy(item, name)
-	if(item) then
-		local mask = [[0x100000]];
-		local itemType = GetItemFamily(item);
-		local pass = bit.band(itemType, mask);
-		if pass > 0 then
-			proxyTest = true;
-		end
-	end
-end
-
-local function GetTitleAndSkill()
-	local skillRank, skillModifier;
-	local msg = "|cff22ff11Fishing Mode|r"
-	local _,_,_,fishing,_,_ = GetProfessions();
-	if fishing ~= nil then
-		_, _, skillRank, _, _, _, _, skillModifier = GetProfessionInfo(fishing)
-		if(skillModifier) then
-			skillRank = skillRank + skillModifier;
-		end
-		msg = msg .. " (|cff00ddff" .. skillRank .. "|r)";
-	end
-	return msg
-end
---[[
-##########################################################
-CORE NAMESPACE
-##########################################################
-]]--
-MOD.Fishing = {};
-MOD.Fishing.Log = {};
-MOD.Fishing.Loaded = false;
---[[
-##########################################################
-EVENT HANDLER
-##########################################################
-]]--
-local EnableListener, DisableListener
-do
-	local FishEventHandler = CreateFrame("Frame")
-	local LootProxy = function(item, name)
-		if(item) then
-			local mask = [[0x10000]];
-			local itemType = GetItemFamily(item);
-			local pass = bit.band(itemType, mask);
-			if pass > 0 then
-				proxyTest = true;
-			end
-		end
-	end
-
-	local Fish_OnEvent = function(self, event, ...)
-		if(InCombatLockdown()) then return end
-		if(event == "BAG_UPDATE" or event == "CHAT_MSG_SKILL") then
-			local msg = GetTitleAndSkill()
-			MOD.TitleWindow:Clear()
-			MOD.TitleWindow:AddMessage(msg)
-		elseif(event == "LOOT_OPENED") then
-			if IsFishingLoot() then
-				proxyTest = true;
-			else
-				proxyTest = false;
-			end
-		elseif(event == "CHAT_MSG_LOOT") then
-			local item, amt = MOD:CheckForModeLoot(...);
-			if item then
-				local name, lnk, rarity, lvl, mlvl, itype, stype, cnt, ieq, tex, price = GetItemInfo(item);
-				if proxyTest == false then
-					LootProxy(lnk, name)
-				end
-				if proxyTest == false then return end
-				if not MOD.Fishing.Log[name] then
-					MOD.Fishing.Log[name] = {amount = 0, texture = ""};
-				end
-				local r, g, b, hex = GetItemQualityColor(rarity);
-				local stored = MOD.Fishing.Log
-				local mod = stored[name];
-				local newAmt = mod.amount + 1;
-				if amt >= 2 then newAmt = mod.amount + amt end
-				MOD.Fishing.Log[name].amount = newAmt;
-				MOD.Fishing.Log[name].texture = tex;
-				MOD.LogWindow:Clear();
-
-				for name,data in pairs(stored) do
-					if type(data) == "table" and data.amount and data.texture then
-						MOD.LogWindow:AddMessage("|cff55FF55"..data.amount.." x|r |T".. data.texture ..":16:16:0:0:64:64:4:60:4:60|t".." "..name, r, g, b);
-					end
-				end
-				MOD.LogWindow:AddMessage("----------------", 0, 0, 0);
-				MOD.LogWindow:AddMessage("Caught So Far...", 0, 1, 1);
-				MOD.LogWindow:AddMessage(" ", 0, 0, 0);
-				proxyTest = false;
-			end
-		end
-	end
-
-	function EnableListener()
-		FishEventHandler:RegisterEvent("LOOT_OPENED")
-		FishEventHandler:RegisterEvent("CHAT_MSG_LOOT")
-		FishEventHandler:RegisterEvent("BAG_UPDATE")
-		FishEventHandler:RegisterEvent("CHAT_MSG_SKILL")
-		FishEventHandler:SetScript("OnEvent", Fish_OnEvent)
-	end
-
-	function DisableListener()
-		FishEventHandler:UnregisterAllEvents()
-		FishEventHandler:SetScript("OnEvent", nil)
-	end
-end
---[[
-##########################################################
-CORE METHODS
-##########################################################
-]]--
-function MOD.Fishing:Enable()
-	MOD:UpdateFishingMode()
-	if(not SVUI_ModesDockFrame:IsShown()) then DockButton:Click() end
-	UpdateFishingGear(MOD.db.fishing.autoequip);
-	PlaySoundFile("Sound\\Spells\\Tradeskills\\FishCast.wav")
-	MOD.ModeAlert:SetBackdropColor(0.25, 0.52, 0.1)
-	if(not IsSpellKnown(131474)) then
-		MOD:ModeLootLoader("Fishing", "WTF is Fishing?", "You have no clue how to fish! \nThe last time you tried \nyou hooked yourself through the eyelid. \nGo find a trainer and learn \nhow to do this properly!");
-	else
-		local msg = GetTitleAndSkill();
-		MOD:ModeLootLoader("Fishing", msg, "Double-Right-Click anywhere on the screen \nto cast your fishing line.");
-	end
-	EnableListener()
-	MOD.ModeAlert:Show()
-	SendModeMessage("Fishing Mode Enabled", CombatText_StandardScroll, 0.28, 0.9, 0.1);
-end
-
-function MOD.Fishing:Disable()
-	DisableListener()
-end
-
-function MOD.Fishing:Bind()
-	if InCombatLockdown() then return end
-	if fishingIsKnown then
-		if FishingPoleIsEquipped() then
-			local hasMainHandEnchant = GetWeaponEnchantInfo()
-			if hasMainHandEnchant then
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
-				MOD.ModeAlert.HelpText = 'Double-Right-Click to fish.'
-			elseif(fishingLure) then
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "item")
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute("item", "item:" .. fishingLure)
-				if(GetItemCooldown(fishingLure) > 0) then
-					_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-					_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
-					MOD.ModeAlert.HelpText = 'Double-Right-Click to fish.'
-				else
-					MOD.ModeAlert.HelpText = 'Double-Right-Click to apply fishing enchants.'
-				end
-			else
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-				_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
-				MOD.ModeAlert.HelpText = 'Double-Right-Click to fish.'
-			end
-		else
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute("type", "spell")
-			_G["SVUI_ModeCaptureWindow"]:SetAttribute('spell', fishingSpell)
-			MOD.ModeAlert.HelpText = 'Double-Right-Click to fish.'
-		end
-		SetOverrideBindingClick(_G["SVUI_ModeCaptureWindow"], true, "BUTTON2", "SVUI_ModeCaptureWindow");
-		_G["SVUI_ModeCaptureWindow"].Grip:Show();
-	end
-end
---[[
-##########################################################
-LOADER
-##########################################################
-]]--
-function MOD:UpdateFishingMode()
-	fishingIsKnown = IsSpellKnown(131474);
-	fishingSpell = GetSpellInfo(131474);
-end
-
-function MOD:LoadFishingMode()
-	DockButton = _G["SVUI_ModesDockFrame_ToolBarButton"]
-	MOD:UpdateFishingMode()
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_LogOMatic/Loader.lua b/Interface/AddOns/SVUI_LogOMatic/Loader.lua
new file mode 100644
index 0000000..c07686b
--- /dev/null
+++ b/Interface/AddOns/SVUI_LogOMatic/Loader.lua
@@ -0,0 +1,35 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+local AddonName, AddonObject = ...
+
+assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")
+
+local PLUGIN = LibSuperVillain:NewPlugin(AddonName, AddonObject)
+
+local Schema = PLUGIN.Schema;
+local SV = _G["SVUI"];
+local L = SV.L
+--[[
+##########################################################
+CONFIG DATA
+##########################################################
+]]--
+SV.configs[Schema] = {
+	["enable"] = true,
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
index 50f1949..a12c511 100644
--- a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
+++ b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua
@@ -37,17 +37,14 @@ local twipe,tcopy,tsort = table.wipe, table.copy, table.sort;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUIAddOnName, PLUGIN = ...;
-local SV = SVUI
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0")
-local NewHook = hooksecurefunc;
-
-PLUGIN = Registry:NewPrototype(SVUIAddOnName)
-local SCHEMA = PLUGIN.___schema;
+local PLUGIN = select(2, ...)
+local Schema = PLUGIN.Schema;

-_G["LogVillain"] = PLUGIN;
+local SV = _G["SVUI"];
+local L = SV.L
 local CHAT = SV.SVChat;
+
+local NewHook = hooksecurefunc;
 --[[
 ##########################################################
 LOCAL VARIABLES
@@ -56,27 +53,6 @@ LOCAL VARIABLES
 local nameKey = UnitName("player");
 local realmKey = GetRealmName();
 local NewHook = hooksecurefunc;
-local LoggingEvents = {
-	"CHAT_MSG_CHANNEL",
-	"CHAT_MSG_EMOTE",
-	"CHAT_MSG_GUILD_ACHIEVEMENT",
-	"CHAT_MSG_RAID_WARNING",
-	"CHAT_MSG_SAY",
-	"CHAT_MSG_YELL",
-	"CHAT_MSG_WHISPER_INFORM",
-	"CHAT_MSG_WHISPER",
-	"CHAT_MSG_GUILD",
-	"CHAT_MSG_OFFICER",
-	"CHAT_MSG_PARTY",
-	"CHAT_MSG_PARTY_LEADER",
-	"CHAT_MSG_RAID",
-	"CHAT_MSG_RAID_LEADER",
-	"CHAT_MSG_INSTANCE_CHAT",
-	"CHAT_MSG_INSTANCE_CHAT_LEADER",
-	"CHAT_MSG_BN_CONVERSATION",
-	"CHAT_MSG_BN_WHISPER",
-	"CHAT_MSG_BN_WHISPER_INFORM"
-};
 --[[
 ##########################################################
 CORE DATA
@@ -180,7 +156,7 @@ local GameTooltip_LogTooltipSetItem = function(self)
 		self:AddLine(" ")
 		self:AddDoubleLine("|cFFFFDD3C[Character]|r","|cFFFFDD3C[Count]|r")
 		for alt,amt in pairs(PLUGIN.BagItemCache[key]) do
-			local hexString = SVLOG_Data[realmKey]["info"][alt] or "|cffCC1410"
+			local hexString = LogOMatic_Data[realmKey]["info"][alt] or "|cffCC1410"
 			local name = ("%s%s|r"):format(hexString, alt)
 			local result = ("%s%s|r"):format(hexString, amt)
 			self:AddDoubleLine(name,result)
@@ -194,89 +170,23 @@ end
 CORE FUNCTIONS
 ##########################################################
 ]]--
-function CHAT:LoadSavedChatLog()
-	local temp, data = {}
-	for id, _ in pairs(SVLOG_Cache["chat"]) do
-		tinsert(temp, tonumber(id))
-	end
-	tsort(temp, function(a, b)
-		return a < b
-	end)
-	for i = 1, #temp do
-		data = SVLOG_Cache["chat"][tostring(temp[i])]
-		if type(data) == "table" and data[20] ~= nil then
-			self.timeOverride = temp[i]
-			ChatFrame_MessageEventHandler(DEFAULT_CHAT_FRAME, data[20], unpack(data))
-		end
-	end
-end
-
-function CHAT:LogCurrentChat(event, ...)
-	local temp = {}
-	for i = 1, select('#', ...) do
-		temp[i] = select(i, ...) or false
-	end
-	if #temp > 0 then
-	  temp[20] = event
-	  local randomTime = select(2, ("."):split(GetTime() or "0."..random(1, 999), 2)) or 0;
-	  local timeForMessage = time().."."..randomTime;
-	  SVLOG_Cache["chat"][timeForMessage] = temp
-		local c, k = 0
-		for id, data in pairs(SVLOG_Cache["chat"]) do
-			c = c + 1
-			if (not k) or k > id then
-				k = id
-			end
-		end
-		if c > 128 then
-			SVLOG_Cache["chat"][k] = nil
-		end
-	end
-end
-
-function CHAT:PLAYER_ENTERING_WORLD()
-	local temp, data = {}
-	for id, _ in pairs(SVLOG_Cache["chat"]) do
-		tinsert(temp, tonumber(id))
-	end
-	tsort(temp, function(a, b)
-		return a < b
-	end)
-	for i = 1, #temp do
-		data = SVLOG_Cache["chat"][tostring(temp[i])]
-		if type(data) == "table" and data[20] ~= nil then
-			ChatFrame_MessageEventHandler(DEFAULT_CHAT_FRAME, data[20], unpack(data))
-		end
-	end
-	self:UnregisterEvent("PLAYER_ENTERING_WORLD")
-end
-
 function PLUGIN:AppendBankFunctions()
 	local BAGS = SV.SVBag;
 	if(BAGS.BankFrame) then
 		BAGS.BankFrame.RefreshBagsSlots = RefreshLoggedBagsSlots
 	end
 end
-
-function PLUGIN:AppendChatFunctions()
-	if SV.db.SVChat.enable and SV.db[SCHEMA].saveChats then
-		for _,event in pairs(LoggingEvents) do
-			SV.SVChat:RegisterEvent(event, "LogCurrentChat")
-		end
-		SV.SVChat:RegisterEvent("PLAYER_ENTERING_WORLD")
-	end
-end
 --[[
 ##########################################################
 CORE FUNCTIONS
 ##########################################################
 ]]--
 local function ResetAllLogs()
-	if SVLOG_Data[realmKey] then
-		if SVLOG_Data[realmKey]["bags"] and SVLOG_Data[realmKey]["bags"][nameKey] then SVLOG_Data[realmKey]["bags"][nameKey] = {} end
-		if SVLOG_Data[realmKey]["gold"] and SVLOG_Data[realmKey]["gold"][nameKey] then SVLOG_Data[realmKey]["gold"][nameKey] = 0 end
+	if LogOMatic_Data[realmKey] then
+		if LogOMatic_Data[realmKey]["bags"] and LogOMatic_Data[realmKey]["bags"][nameKey] then LogOMatic_Data[realmKey]["bags"][nameKey] = {} end
+		if LogOMatic_Data[realmKey]["gold"] and LogOMatic_Data[realmKey]["gold"][nameKey] then LogOMatic_Data[realmKey]["gold"][nameKey] = 0 end
 	end
-	if SVLOG_Cache then SVLOG_Cache = {} end
+	if LogOMatic_Cache then LogOMatic_Cache = {} end
 end
 --[[
 ##########################################################
@@ -284,35 +194,34 @@ BUILD FUNCTION
 ##########################################################
 ]]--
 function PLUGIN:Load()
-	if IsAddOnLoaded("Altoholic") or not SV.db[SCHEMA].enable then return end
-
-	self.db = SV.db[SCHEMA]
+	if SVLOG_Data then SVLOG_Data = nil end
+	if SVLOG_Cache then SVLOG_Cache = nil end
+
+	if IsAddOnLoaded("Altoholic") or not SV.db[Schema].enable then return end

 	local toonClass = select(2,UnitClass("player"));
 	local r,g,b = RAID_CLASS_COLORS[toonClass].r, RAID_CLASS_COLORS[toonClass].g, RAID_CLASS_COLORS[toonClass].b
 	local hexString = ("|cff%02x%02x%02x"):format(r * 255, g * 255, b * 255)
-	if not SVLOG_Cache then SVLOG_Cache = {} end
-	SVLOG_Data = SVLOG_Data or {}
-	SVLOG_Data[realmKey] = SVLOG_Data[realmKey] or {}
-	SVLOG_Data[realmKey]["bags"] = SVLOG_Data[realmKey]["bags"] or {};
-	SVLOG_Data[realmKey]["info"] = SVLOG_Data[realmKey]["info"] or {};
-	SVLOG_Data[realmKey]["info"][nameKey] = hexString;
-	SVLOG_Data[realmKey]["bags"][nameKey] = SVLOG_Data[realmKey]["bags"][nameKey] or {};
+	if not LogOMatic_Cache then LogOMatic_Cache = {} end
+	LogOMatic_Data = LogOMatic_Data or {}
+	LogOMatic_Data[realmKey] = LogOMatic_Data[realmKey] or {}
+	LogOMatic_Data[realmKey]["bags"] = LogOMatic_Data[realmKey]["bags"] or {};
+	LogOMatic_Data[realmKey]["info"] = LogOMatic_Data[realmKey]["info"] or {};
+	LogOMatic_Data[realmKey]["info"][nameKey] = hexString;
+	LogOMatic_Data[realmKey]["bags"][nameKey] = LogOMatic_Data[realmKey]["bags"][nameKey] or {};

-	self.stash = SVLOG_Data[realmKey]["bags"];
-	self.myStash = SVLOG_Data[realmKey]["bags"][nameKey];
+	self.stash = LogOMatic_Data[realmKey]["bags"];
+	self.myStash = LogOMatic_Data[realmKey]["bags"][nameKey];

-	SVLOG_Data[realmKey]["quests"] = SVLOG_Data[realmKey]["quests"] or {};
-	SVLOG_Data[realmKey]["quests"][nameKey] = SVLOG_Data[realmKey]["quests"][nameKey] or {};
+	LogOMatic_Data[realmKey]["quests"] = LogOMatic_Data[realmKey]["quests"] or {};
+	LogOMatic_Data[realmKey]["quests"][nameKey] = LogOMatic_Data[realmKey]["quests"][nameKey] or {};

-	self.chronicle = SVLOG_Data[realmKey]["quests"][nameKey];
+	self.chronicle = LogOMatic_Data[realmKey]["quests"][nameKey];

 	NewHook(SV, "ResetAllUI", ResetAllLogs);
-
-	if not SVLOG_Cache["chat"] then SVLOG_Cache["chat"] = {} end

-	for alt,_ in pairs(SVLOG_Data[realmKey]["bags"]) do
-		for bag,items in pairs(SVLOG_Data[realmKey]["bags"][alt]) do
+	for alt,_ in pairs(LogOMatic_Data[realmKey]["bags"]) do
+		for bag,items in pairs(LogOMatic_Data[realmKey]["bags"][alt]) do
 			for id,amt in pairs(items) do
 				self.BagItemCache[id] = self.BagItemCache[id] or {}
 				self.BagItemCache[id][alt] = amt
@@ -332,25 +241,4 @@ function PLUGIN:Load()
 	if SV.db.SVTip.enable then
 		GameTooltip:HookScript("OnTooltipSetItem", GameTooltip_LogTooltipSetItem)
 	end
-
-	--[[ APPLY HOOKS ]]--
-	self:AppendChatFunctions()
-	NewHook(CHAT, "ReLoad", self.AppendChatFunctions)
-
-	local saveChats = {
-		order = 2,
-		type = "toggle",
-		name = L["Save Chats"],
-		desc = L["Retain chat messages even after logging out."],
-		get = function(a)return SV.db[SCHEMA].saveChats end,
-		set = function(a,b) SV.db[SCHEMA].saveChats = b; SV:StaticPopup_Show("RL_CLIENT") end
-	}
-	self:AddOption("saveChats", saveChats)
-end
-
-SV.private[SCHEMA] = {
-	["enable"] = true,
-	["saveChats"] = false
-}
-
-Registry:NewPlugin(PLUGIN)
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
index f4f3e83..0196894 100644
--- a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
+++ b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.toc
@@ -1,13 +1,14 @@
 ## Interface: 60000
 ## Author: Munglunch
-## Version: 4.4
-## Title: |cffFF9900SVUI |r|cffFFEF00Log O Matic|r
+## Version: 4.8
+## Title: |cffFF9900SVUI |r|cffFFEF00Log-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFData Logging|r].
-## SavedVariables: SVLOG_Data
-## SavedVariablesPerCharacter: SVLOG_Cache
+## SavedVariables: LogOMatic_Data
+## SavedVariablesPerCharacter: LogOMatic_Cache
 ## RequiredDeps: SVUI
 ## LoadOnDemand: 1
-## X-SVUI-Header: Log O Matic
-## X-SVUI-Schema: SVLogs
+## X-Email: munglunch@gmail.com
+## X-SVUI-Header: Log-O-Matic
+## X-SVUI-Schema: LogOMatic

-SVUI_LogOMatic.lua
+SVUI_LogOMatic.xml
diff --git a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.xml b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.xml
new file mode 100644
index 0000000..d0b6bb5
--- /dev/null
+++ b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.xml
@@ -0,0 +1,4 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='Loader.lua'/>
+	<Script file='SVUI_LogOMatic.lua'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/License.txt b/Interface/AddOns/SVUI_StyleOMatic/License.txt
index b1a26dc..25cfd6f 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/License.txt
+++ b/Interface/AddOns/SVUI_StyleOMatic/License.txt
@@ -14,7 +14,7 @@

 SVUI_StyleOMatic SVUI License Copyright 2014 http://wowinterface.com

-(Adapted with permissions from AddOnSkins for ElvUI) Copyright 2014 http://www.tukui.org
+(Adapted with permissions from AddOnSkins for ElvUI) Copyright 2014 Azilroka http://www.tukui.org

 The contents of this addon, excluding third-party resources, are
 copyrighted to their authors with all rights reserved.
diff --git a/Interface/AddOns/SVUI_StyleOMatic/Loader.lua b/Interface/AddOns/SVUI_StyleOMatic/Loader.lua
new file mode 100644
index 0000000..2865ff9
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/Loader.lua
@@ -0,0 +1,438 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+local AddonName, AddonObject = ...
+
+assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")
+
+local PLUGIN = LibSuperVillain:NewPlugin(AddonName, AddonObject)
+
+local Schema = PLUGIN.Schema;
+local SV = _G["SVUI"];
+local L = SV.L
+--[[
+##########################################################
+CONFIG DATA
+##########################################################
+]]--
+SV.configs[Schema] = {
+	["enable"] = true,
+	["blizzard"] = {
+		["enable"] = true,
+		["bags"] = true,
+		["bmah"] = true,
+		["chat"] = true,
+		["reforge"] = true,
+		["calendar"] = true,
+		["achievement"] = true,
+		["lfguild"] = true,
+		["inspect"] = true,
+		["binding"] = true,
+		["gbank"] = true,
+		["archaeology"] = true,
+		["guildcontrol"] = true,
+		["gossip"] = true,
+		["guild"] = true,
+		["tradeskill"] = true,
+		["raid"] = false,
+		["talent"] = true,
+		["auctionhouse"] = true,
+		["barber"] = true,
+		["macro"] = true,
+		["debug"] = true,
+		["trainer"] = true,
+		["socket"] = true,
+		["loot"] = true,
+		["alertframes"] = true,
+		["bgscore"] = true,
+		["merchant"] = true,
+		["mail"] = true,
+		["help"] = true,
+		["trade"] = true,
+		["gossip"] = true,
+		["greeting"] = true,
+		["worldmap"] = true,
+		["taxi"] = true,
+		["quest"] = true,
+		["petition"] = true,
+		["dressingroom"] = true,
+		["pvp"] = true,
+		["lfg"] = true,
+		["nonraid"] = true,
+		["friends"] = true,
+		["spellbook"] = true,
+		["character"] = true,
+		["misc"] = true,
+		["tabard"] = true,
+		["guildregistrar"] = true,
+		["timemanager"] = true,
+		["encounterjournal"] = true,
+		["voidstorage"] = true,
+		["transmogrify"] = true,
+		["stable"] = true,
+		["bgmap"] = true,
+		["mounts"] = true,
+		["petbattleui"] = true,
+		["losscontrol"] = true,
+		["itemUpgrade"] = true,
+	},
+	["addons"] = {
+		["enable"] = true,
+		["Skada"] = true,
+		["Recount"] = true,
+		["AuctionLite"] = true,
+		["AtlasLoot"] = true,
+		["SexyCooldown"] = true,
+		["Lightheaded"] = true,
+		["Outfitter"] = true,
+		["Quartz"] = true,
+		["TomTom"] = true,
+		["TinyDPS"] = true,
+		["Clique"] = true,
+		["CoolLine"] = true,
+		["ACP"] = true,
+		["DXE"] = true,
+		["DBM-Core"] = true,
+		["VEM"] = true,
+		["MogIt"] = true,
+		["alDamageMeter"] = true,
+		["Omen"] = true,
+		["TradeSkillDW"] = true,
+	}
+};
+--[[
+##########################################################
+CONFIG OPTIONS
+##########################################################
+]]--
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["blizzardEnable"] = {
+    order = 2,
+	name = "Standard UI Styling",
+    type = "toggle",
+    get = function(key) return SV.db[Schema].blizzard.enable end,
+    set = function(key,value) SV.db[Schema].blizzard.enable = value; SV:StaticPopup_Show("RL_CLIENT") end
+}
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["addonEnable"] = {
+    order = 3,
+	name = "Addon Styling",
+    type = "toggle",
+    get = function(key) return SV.db[Schema].addons.enable end,
+    set = function(key,value) SV.db[Schema].addons.enable = value; SV:StaticPopup_Show("RL_CLIENT") end
+}
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["addons"] = {
+	order = 4,
+	type = "group",
+	name = "Addon Styling",
+	get = function(key) return SV.db[Schema].addons[key[#key]] end,
+	set = function(key,value) SV.db[Schema].addons[key[#key]] = value; SV:StaticPopup_Show("RL_CLIENT")end,
+	disabled = function() return not SV.db[Schema].addons.enable end,
+	guiInline = true,
+	args = {
+		ace3 = {
+			type = "toggle",
+			order = 1,
+			name = "Ace3"
+		},
+	}
+}
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["blizzard"] = {
+	order = 300,
+	type = "group",
+	name = "Individual Mods",
+	get = function(key) return SV.db[Schema].blizzard[key[#key]] end,
+	set = function(key,value) SV.db[Schema].blizzard[key[#key]] = value; SV:StaticPopup_Show("RL_CLIENT") end,
+	disabled = function() return not SV.db[Schema].blizzard.enable end,
+	guiInline = true,
+	args = {
+		bmah = {
+			type = "toggle",
+			name = L["Black Market AH"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		chat = {
+			type = "toggle",
+			name = L["Chat Menus"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		transmogrify = {
+			type = "toggle",
+			name = L["Transmogrify Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		encounterjournal = {
+			type = "toggle",
+			name = L["Encounter Journal"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		reforge = {
+			type = "toggle",
+			name = L["Reforge Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		calendar = {
+			type = "toggle",
+			name = L["Calendar Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		achievement = {
+			type = "toggle",
+			name = L["Achievement Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		lfguild = {
+			type = "toggle",
+			name = L["LF Guild Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		inspect = {
+			type = "toggle",
+			name = L["Inspect Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		binding = {
+			type = "toggle",
+			name = L["KeyBinding Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		gbank = {
+			type = "toggle",
+			name = L["Guild Bank"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		archaeology = {
+			type = "toggle",
+			name = L["Archaeology Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		guildcontrol = {
+			type = "toggle",
+			name = L["Guild Control Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		guild = {
+			type = "toggle",
+			name = L["Guild Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		tradeskill = {
+			type = "toggle",
+			name = L["TradeSkill Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		raid = {
+			type = "toggle",
+			name = L["Raid Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		talent = {
+			type = "toggle",
+			name = L["Talent Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		auctionhouse = {
+			type = "toggle",
+			name = L["Auction Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		timemanager = {
+			type = "toggle",
+			name = L["Time Manager"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		barber = {
+			type = "toggle",
+			name = L["Barbershop Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		macro = {
+			type = "toggle",
+			name = L["Macro Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		debug = {
+			type = "toggle",
+			name = L["Debug Tools"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		trainer = {
+			type = "toggle",
+			name = L["Trainer Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		socket = {
+			type = "toggle",
+			name = L["Socket Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		alertframes = {
+			type = "toggle",
+			name = L["Alert Frames"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		loot = {
+			type = "toggle",
+			name = L["Loot Frames"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		bgscore = {
+			type = "toggle",
+			name = L["BG Score"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		merchant = {
+			type = "toggle",
+			name = L["Merchant Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		mail = {
+			type = "toggle",
+			name = L["Mail Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		help = {
+			type = "toggle",
+			name = L["Help Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		trade = {
+			type = "toggle",
+			name = L["Trade Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		gossip = {
+			type = "toggle",
+			name = L["Gossip Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		greeting = {
+			type = "toggle",
+			name = L["Greeting Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		worldmap = {
+			type = "toggle",
+			name = L["World Map"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		taxi = {
+			type = "toggle",
+			name = L["Taxi Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		lfg = {
+			type = "toggle",
+			name = L["LFG Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		mounts = {
+			type = "toggle",
+			name = L["Mounts & Pets"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		quest = {
+			type = "toggle",
+			name = L["Quest Frames"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		petition = {
+			type = "toggle",
+			name = L["Petition Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		dressingroom = {
+			type = "toggle",
+			name = L["Dressing Room"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		pvp = {
+			type = "toggle",
+			name = L["PvP Frames"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		nonraid = {
+			type = "toggle",
+			name = L["Non-Raid Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		friends = {
+			type = "toggle",
+			name = L["Friends"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		spellbook = {
+			type = "toggle",
+			name = L["Spellbook"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		character = {
+			type = "toggle",
+			name = L["Character Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		misc = {
+			type = "toggle",
+			name = L["Misc Frames"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		tabard = {
+			type = "toggle",
+			name = L["Tabard Frame"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		guildregistrar = {
+			type = "toggle",
+			name = L["Guild Registrar"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		bags = {
+			type = "toggle",
+			name = L["Bags"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		stable = {
+			type = "toggle",
+			name = L["Stable"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		bgmap = {
+			type = "toggle",
+			name = L["BG Map"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		petbattleui = {
+			type = "toggle",
+			name = L["Pet Battle"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		losscontrol = {
+			type = "toggle",
+			name = L["Loss Control"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		voidstorage = {
+			type = "toggle",
+			name = L["Void Storage"],
+			desc = L["TOGGLEART_DESC"]
+		},
+		itemUpgrade = {
+			type = "toggle",
+			name = L["Item Upgrade"],
+			desc = L["TOGGLEART_DESC"]
+		}
+	}
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
index d7118f7..a8dfd52 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
@@ -37,18 +37,13 @@ local twipe, tcopy = table.wipe, table.copy;
 GET ADDON DATA
 ##########################################################
 ]]--
-local SVUIAddOnName, PLUGIN = ...;
-local SV = SVUI
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-local CONFIGS = SV.private
-local NewHook = hooksecurefunc;
-
-PLUGIN = Registry:NewPrototype(SVUIAddOnName)
-local SCHEMA = PLUGIN.___schema;
-local VERSION = PLUGIN.___version;
+local PLUGIN = select(2, ...)
+local Schema = PLUGIN.Schema;
+local VERSION = PLUGIN.Version;

-_G["StyleVillain"] = PLUGIN;
+local SV = _G.SVUI
+local L = SV.L
+local NewHook = hooksecurefunc;
 --[[
 ##########################################################
 CORE DATA
@@ -61,23 +56,7 @@ PLUGIN.CustomQueue = {};
 PLUGIN.EventListeners = {};
 PLUGIN.OnLoadAddons = {};
 PLUGIN.StyledAddons = {};
-PLUGIN.OptionsCache = {
-	order = 4,
-	type = "group",
-	name = "Addon Styling",
-	get = function(a)return SV.db[SCHEMA].addons[a[#a]] end,
-	set = function(a,b) SV.db[SCHEMA].addons[a[#a]] = b; SV:StaticPopup_Show("RL_CLIENT")end,
-	disabled = function()return not SV.db[SCHEMA].addons.enable end,
-	guiInline = true,
-	args = {
-		ace3 = {
-			type = "toggle",
-			order = 1,
-			name = "Ace3"
-		},
-	}
-}
-PLUGIN.Debugging = true
+PLUGIN.Debugging = false
 --[[
 ##########################################################
 CORE FUNCTIONS
@@ -115,26 +94,27 @@ end

 function PLUGIN:Style(style, fn, ...)
 	local pass, error = pcall(fn, ...)
+	if(self.Debugging and error) then
+		SV:Debugger(errorMessage:format(VERSION, style, error))
+		return
+	end
 	if(pass and (not style:find("Blizzard")) and not self.StyledAddons[style]) then
 		self.StyledAddons[style] = true
 		local verb = charming[math.random(1,#charming)]
 		self:AddonMessage(styleMessage:format(style, verb))
-	elseif(self.Debugging and error) then
-		SV:Debugger(errorMessage:format(VERSION, style, error))
 	end
-	--self.Debugging = false
+	self.Debugging = false
 end

 function PLUGIN:IsAddonReady(addon, ...)
+	if not SV.db[Schema].addons then return end
 	for i = 1, select('#', ...) do
 		local a = select(i, ...)
 		if not a then break end
 		if not IsAddOnLoaded(a) then return false end
 	end

-	local config = SV.db[SCHEMA] or SV.private[SCHEMA]
-
-	return config.addons[addon]
+	return SV.db[Schema].addons[addon]
 end

 function PLUGIN:SaveAddonStyle(addon, fn, force, passive, ...)
@@ -148,8 +128,8 @@ function PLUGIN:SaveAddonStyle(addon, fn, force, passive, ...)
 			self:DefineEventFunction(event, addon)
 		end
 	end
-	if(SV.private[SCHEMA].addons[addon] == nil) then
-		SV.private[SCHEMA].addons[addon] = true
+	if(SV.db[Schema].addons and SV.db[Schema].addons[addon] == nil) then
+		SV.db[Schema].addons[addon] = true
 	end

 	if force then
@@ -216,33 +196,14 @@ function PLUGIN:RefreshAddonStyles()
 	end
 end

-function PLUGIN:AppendAddonOption(addon)
-	if(not self.OptionsCache.args[addon]) then
-		self.OptionsCache.args[addon] = {
-			type = "toggle",
-			name = addon,
-			desc = L["Addon Styling"],
-			get = function(key) return self:IsAddonReady(key[#key]) end,
-			set = function(key,value) self:ChangeDBVar(value, key[#key], "addons"); SV:StaticPopup_Show("RL_CLIENT") end,
-			disabled = function()
-				if addon then
-					 return not IsAddOnLoaded(addon)
-				else
-					 return false
-				end
-			end
-		}
-	end
-end
-
 function PLUGIN:PLAYER_ENTERING_WORLD(event, ...)
-	for name,fn in pairs(self.OnLoadAddons) do
-		if(SV.db[SCHEMA].blizzard[name] == nil) then
-			SV.db[SCHEMA].blizzard[name] = true
+	for addonName,fn in pairs(self.OnLoadAddons) do
+		if(SV.db[Schema].blizzard[addonName] == nil) then
+			SV.db[Schema].blizzard[addonName] = true
 		end
-		if(IsAddOnLoaded(name) and (SV.db[SCHEMA].blizzard[name] or SV.db[SCHEMA].addons[name])) then
-			self:Style(name, fn, event, ...)
-			self.OnLoadAddons[name] = nil
+		if(IsAddOnLoaded(addonName) and (SV.db[Schema].blizzard[addonName] or SV.db[Schema].addons[addonName])) then
+			self:Style(addonName, fn, event, ...)
+			self.OnLoadAddons[addonName] = nil
 		end
 	end

@@ -253,17 +214,30 @@ function PLUGIN:PLAYER_ENTERING_WORLD(event, ...)
 	twipe(self.CustomQueue)

 	local listener = self.EventListeners[event]
-	for name,fn in pairs(self.AddOnQueue)do
-		self:AppendAddonOption(name)
-		if(SV.db[SCHEMA].addons[name] == nil) then
-			SV.db[SCHEMA].addons[name] = true
+	for addonName,fn in pairs(self.AddOnQueue)do
+		if(not SV.Options.args.plugins.args.pluginOptions.args[Schema].args["addons"].args[addonName]) then
+			SV.Options.args.plugins.args.pluginOptions.args[Schema].args["addons"].args[addonName] = {
+				type = "toggle",
+				name = addonName,
+				desc = L["Addon Styling"],
+				get = function(key) return PLUGIN:IsAddonReady(key[#key]) end,
+				set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key], "addons"); SV:StaticPopup_Show("RL_CLIENT") end,
+				disabled = function()
+					if addonName then
+						 return not IsAddOnLoaded(addonName)
+					else
+						 return false
+					end
+				end
+			}
+		end
+		if(SV.db[Schema].addons[addonName] == nil) then
+			SV.db[Schema].addons[addonName] = true
 		end
-		if(listener[name] and self:IsAddonReady(name)) then
-			self:Style(name, fn, event, ...)
+		if(listener[addonName] and self:IsAddonReady(addonName)) then
+			self:Style(addonName, fn, event, ...)
 		end
 	end
-
-	collectgarbage("collect")
 end

 function PLUGIN:ADDON_LOADED(event, addon)
@@ -383,8 +357,7 @@ BUILD FUNCTION
 ##########################################################
 ]]--
 function PLUGIN:Load()
-	if(not SV.db[SCHEMA].enable) then return end
-	self.db = SV.db[SCHEMA]
+	if(not SV.db[Schema].enable) then return end

 	local alert = CreateFrame('Frame', nil, UIParent);
 	alert:SetFixedPanelTemplate('Transparent');
@@ -416,403 +389,7 @@ function PLUGIN:Load()

 	NewHook(SV, "ReloadDocklets", RegisterAddonDocklets);
 	SV:ReloadDocklets();
-	SV.DynamicOptions[SCHEMA] = {key = "addons", data = self.OptionsCache};
-
-	local option = {
-		order = 2,
-		type = "toggle",
-		name = "Standard UI Styling",
-		get = function(a)return SV.db[SCHEMA].blizzard.enable end,
-		set = function(a,b) SV.db[SCHEMA].blizzard.enable = b; SV:StaticPopup_Show("RL_CLIENT") end
-	}
-	self:AddOption("blizzardEnable", option)
-
-	option = {
-		order = 3,
-		type = "toggle",
-		name = "Addon Styling",
-		get = function(a)return SV.db[SCHEMA].addons.enable end,
-		set = function(a,b) SV.db[SCHEMA].addons.enable = b; SV:StaticPopup_Show("RL_CLIENT") end
-	}
-	self:AddOption("addonEnable", option)
-
-	option = {
-		order = 300,
-		type = "group",
-		name = "Individual Mods",
-		get = function(a)return SV.db[SCHEMA].blizzard[a[#a]]end,
-		set = function(a,b) SV.db[SCHEMA].blizzard[a[#a]] = b; SV:StaticPopup_Show("RL_CLIENT") end,
-		disabled = function() return not SV.db[SCHEMA].blizzard.enable end,
-		guiInline = true,
-		args = {
-			bmah = {
-				type = "toggle",
-				name = L["Black Market AH"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			chat = {
-				type = "toggle",
-				name = L["Chat Menus"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			transmogrify = {
-				type = "toggle",
-				name = L["Transmogrify Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			encounterjournal = {
-				type = "toggle",
-				name = L["Encounter Journal"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			reforge = {
-				type = "toggle",
-				name = L["Reforge Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			calendar = {
-				type = "toggle",
-				name = L["Calendar Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			achievement = {
-				type = "toggle",
-				name = L["Achievement Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			lfguild = {
-				type = "toggle",
-				name = L["LF Guild Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			inspect = {
-				type = "toggle",
-				name = L["Inspect Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			binding = {
-				type = "toggle",
-				name = L["KeyBinding Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			gbank = {
-				type = "toggle",
-				name = L["Guild Bank"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			archaeology = {
-				type = "toggle",
-				name = L["Archaeology Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			guildcontrol = {
-				type = "toggle",
-				name = L["Guild Control Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			guild = {
-				type = "toggle",
-				name = L["Guild Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			tradeskill = {
-				type = "toggle",
-				name = L["TradeSkill Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			raid = {
-				type = "toggle",
-				name = L["Raid Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			talent = {
-				type = "toggle",
-				name = L["Talent Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			auctionhouse = {
-				type = "toggle",
-				name = L["Auction Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			timemanager = {
-				type = "toggle",
-				name = L["Time Manager"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			barber = {
-				type = "toggle",
-				name = L["Barbershop Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			macro = {
-				type = "toggle",
-				name = L["Macro Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			debug = {
-				type = "toggle",
-				name = L["Debug Tools"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			trainer = {
-				type = "toggle",
-				name = L["Trainer Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			socket = {
-				type = "toggle",
-				name = L["Socket Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			alertframes = {
-				type = "toggle",
-				name = L["Alert Frames"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			loot = {
-				type = "toggle",
-				name = L["Loot Frames"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			bgscore = {
-				type = "toggle",
-				name = L["BG Score"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			merchant = {
-				type = "toggle",
-				name = L["Merchant Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			mail = {
-				type = "toggle",
-				name = L["Mail Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			help = {
-				type = "toggle",
-				name = L["Help Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			trade = {
-				type = "toggle",
-				name = L["Trade Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			gossip = {
-				type = "toggle",
-				name = L["Gossip Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			greeting = {
-				type = "toggle",
-				name = L["Greeting Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			worldmap = {
-				type = "toggle",
-				name = L["World Map"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			taxi = {
-				type = "toggle",
-				name = L["Taxi Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			lfg = {
-				type = "toggle",
-				name = L["LFG Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			mounts = {
-				type = "toggle",
-				name = L["Mounts & Pets"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			quest = {
-				type = "toggle",
-				name = L["Quest Frames"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			petition = {
-				type = "toggle",
-				name = L["Petition Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			dressingroom = {
-				type = "toggle",
-				name = L["Dressing Room"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			pvp = {
-				type = "toggle",
-				name = L["PvP Frames"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			nonraid = {
-				type = "toggle",
-				name = L["Non-Raid Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			friends = {
-				type = "toggle",
-				name = L["Friends"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			spellbook = {
-				type = "toggle",
-				name = L["Spellbook"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			character = {
-				type = "toggle",
-				name = L["Character Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			misc = {
-				type = "toggle",
-				name = L["Misc Frames"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			tabard = {
-				type = "toggle",
-				name = L["Tabard Frame"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			guildregistrar = {
-				type = "toggle",
-				name = L["Guild Registrar"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			bags = {
-				type = "toggle",
-				name = L["Bags"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			stable = {
-				type = "toggle",
-				name = L["Stable"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			bgmap = {
-				type = "toggle",
-				name = L["BG Map"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			petbattleui = {
-				type = "toggle",
-				name = L["Pet Battle"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			losscontrol = {
-				type = "toggle",
-				name = L["Loss Control"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			voidstorage = {
-				type = "toggle",
-				name = L["Void Storage"],
-				desc = L["TOGGLEART_DESC"]
-			},
-			itemUpgrade = {
-				type = "toggle",
-				name = L["Item Upgrade"],
-				desc = L["TOGGLEART_DESC"]
-			}
-		}
-	}
-	self:AddOption("blizzard", option)
-	self:AddOption("addons", self.OptionsCache)

 	self:RegisterEvent("PLAYER_ENTERING_WORLD");
 	self:RegisterEvent("ADDON_LOADED");
-end
-
-CONFIGS[SCHEMA] = {
-	["enable"] = true,
-	["blizzard"] = {
-		["enable"] = true,
-		["bags"] = true,
-		["bmah"] = true,
-		["chat"] = true,
-		["reforge"] = true,
-		["calendar"] = true,
-		["achievement"] = true,
-		["lfguild"] = true,
-		["inspect"] = true,
-		["binding"] = true,
-		["gbank"] = true,
-		["archaeology"] = true,
-		["guildcontrol"] = true,
-		["gossip"] = true,
-		["guild"] = true,
-		["tradeskill"] = true,
-		["raid"] = false,
-		["talent"] = true,
-		["auctionhouse"] = true,
-		["barber"] = true,
-		["macro"] = true,
-		["debug"] = true,
-		["trainer"] = true,
-		["socket"] = true,
-		["loot"] = true,
-		["alertframes"] = true,
-		["bgscore"] = true,
-		["merchant"] = true,
-		["mail"] = true,
-		["help"] = true,
-		["trade"] = true,
-		["gossip"] = true,
-		["greeting"] = true,
-		["worldmap"] = true,
-		["taxi"] = true,
-		["quest"] = true,
-		["petition"] = true,
-		["dressingroom"] = true,
-		["pvp"] = true,
-		["lfg"] = true,
-		["nonraid"] = true,
-		["friends"] = true,
-		["spellbook"] = true,
-		["character"] = true,
-		["misc"] = true,
-		["tabard"] = true,
-		["guildregistrar"] = true,
-		["timemanager"] = true,
-		["encounterjournal"] = true,
-		["voidstorage"] = true,
-		["transmogrify"] = true,
-		["stable"] = true,
-		["bgmap"] = true,
-		["mounts"] = true,
-		["petbattleui"] = true,
-		["losscontrol"] = true,
-		["itemUpgrade"] = true,
-	},
-	["addons"] = {
-		["enable"] = true,
-		["Skada"] = true,
-		["Recount"] = true,
-		["AuctionLite"] = true,
-		["AtlasLoot"] = true,
-		["SexyCooldown"] = true,
-		["Lightheaded"] = true,
-		["Outfitter"] = true,
-		["Quartz"] = true,
-		["TomTom"] = true,
-		["TinyDPS"] = true,
-		["Clique"] = true,
-		["CoolLine"] = true,
-		["ACP"] = true,
-		["DXE"] = true,
-		["DBM-Core"] = true,
-		["VEM"] = true,
-		["MogIt"] = true,
-		["alDamageMeter"] = true,
-		["Omen"] = true,
-		["TradeSkillDW"] = true,
-	}
-}
-
-Registry:NewPlugin(PLUGIN)
\ No newline at end of file
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
index d817f26..a7f1c43 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
+++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc
@@ -1,11 +1,12 @@
 ## Interface: 60000
 ## Author: Munglunch, Azilroka, Sortokk
-## Version: 4.4
-## Title: |cffFF9900SVUI |r|cffFFEF00Style O Matic|r
+## Version: 4.8
+## Title: |cffFF9900SVUI |r|cffFFEF00Style-O-Matic|r
 ## Notes: Supervillain UI [|cff9911FFAddon Skins|r].
 ## RequiredDeps: SVUI
 ## OptionalDeps: Blizzard_DebugTools, Blizzard_PetJournal, SharedMedia
-## X-SVUI-Header: Style O Matic
-## X-SVUI-Schema: SVStyle
+## X-Email: munglunch@gmail.com
+## X-SVUI-Header: Style-O-Matic
+## X-SVUI-Schema: StyleOMatic

 SVUI_StyleOMatic.xml
diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.xml b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.xml
index 5d27072..dcd69ea 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.xml
+++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.xml
@@ -1,5 +1,5 @@
 <Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='Loader.lua'/>
 	<Script file='SVUI_StyleOMatic.lua'/>
-	<Script file='common\methods.lua'/>
-	<Include file='addons\_load.xml'/>
+	<Include file='components\_load.xml'/>
 </Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/_load.xml b/Interface/AddOns/SVUI_StyleOMatic/addons/_load.xml
deleted file mode 100644
index a250be8..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/_load.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-	<Script file='supervillain.lua'/>
-	<Script file='achievement.lua'/>
-	<Script file='alert.lua'/>
-	<Script file='archeology.lua'/>
-	<Script file='auctionhouse.lua'/>
-	<Script file='barbershop.lua'/>
-	<Script file='battlefield.lua'/>
-	<Script file='blackmarket.lua'/>
-	<Script file='calendar.lua'/>
-	<Script file='challenges.lua'/>
-	<Script file='chat.lua'/>
-	<Script file='character.lua'/>
-	<Script file='dressup.lua'/>
-	<Script file='encounterjournal.lua'/>
-	<Script file='friends.lua'/>
-	<Script file='gossip.lua'/>
-	<Script file='guild.lua'/>
-	<Script file='help.lua'/>
-	<Script file='inspect.lua'/>
-	<Script file='itemsocketing.lua'/>
-	<Script file='itemupgrade.lua'/>
-	<Script file='keybinding.lua'/>
-	<Script file='lfd.lua'/>
-	<Script file='loothistory.lua'/>
-	<Script file='lossofcontrol.lua'/>
-	<Script file='macro.lua'/>
-	<Script file='mailbox.lua'/>
-	<Script file='merchant.lua'/>
-	<Script file='petbattle.lua'/>
-	<Script file='petition.lua'/>
-	<Script file='petjournal.lua'/>
-	<Script file='petstable.lua'/>
-	<Script file='pvp.lua'/>
-	<Script file='quest.lua'/>
-	<Script file='raid.lua'/>
-	<Script file='reforging.lua'/>
-	<Script file='spellbook.lua'/>
-	<Script file='tabard.lua'/>
-	<Script file='talents.lua'/>
-	<Script file='taxi.lua'/>
-	<Script file='timemanager.lua'/>
-	<Script file='trade.lua'/>
-	<Script file='tradeskill.lua'/>
-	<Script file='trainer.lua'/>
-	<Script file='transmog.lua'/>
-	<Script file='voidstorage.lua'/>
-	<Script file='worldmap.lua'/>
-	<Script file='worldstate.lua'/>
-	<Script file='store.lua'/>
-	<Script file='system.lua'/>
-	<Include file='thirdparty\_load.xml'/>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/achievement.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/achievement.lua
deleted file mode 100644
index d022cb9..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/achievement.lua
+++ /dev/null
@@ -1,455 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local AchievementFrameList = {
-	"AchievementFrame",
-	"AchievementFrameCategories",
-	"AchievementFrameSummary",
-	"AchievementFrameHeader",
-	"AchievementFrameSummaryCategoriesHeader",
-	"AchievementFrameSummaryAchievementsHeader",
-	"AchievementFrameStatsBG",
-	"AchievementFrameAchievements",
-	"AchievementFrameComparison",
-	"AchievementFrameComparisonHeader",
-	"AchievementFrameComparisonSummaryPlayer",
-	"AchievementFrameComparisonSummaryFriend"
-}
-
-local AchievementTextureList = {
-	"AchievementFrameStats",
-	"AchievementFrameSummary",
-	"AchievementFrameAchievements",
-	"AchievementFrameComparison"
-}
-
-local AchievementItemButtons = {
-	"AchievementFrameAchievementsContainerButton1",
-	"AchievementFrameAchievementsContainerButton2",
-	"AchievementFrameAchievementsContainerButton3",
-	"AchievementFrameAchievementsContainerButton4",
-	"AchievementFrameAchievementsContainerButton5",
-	"AchievementFrameAchievementsContainerButton6",
-	"AchievementFrameAchievementsContainerButton7",
-}
-
-local _hook_DescriptionColor = function(self, r, g, b)
-	if(r ~= 0.6 or g ~= 0.6 or b ~= 0.6) then
-		self:SetTextColor(0.6, 0.6, 0.6)
-	end
-end
-
-local _hook_HiddenDescriptionColor = function(self, r, g, b)
-	if(r ~= 1 or g ~= 1 or b ~= 1) then
-		self:SetTextColor(1, 1, 1)
-	end
-end
-
-local _hook_TrackingPoint = function(self, anchor, parent, relative, x, y)
-	local actual = self.ListParent
-	if(anchor ~= "BOTTOMLEFT" or parent ~= actual or relative ~= "BOTTOMLEFT" or x ~= 5 or y ~= 5) then
-		self:ClearAllPoints()
-		self:Point("BOTTOMLEFT", actual, "BOTTOMLEFT", 5, 5)
-	end
-end
-
-local _hook_AchievementsUpdate = function()
-	for i = 1, ACHIEVEMENTUI_MAX_SUMMARY_ACHIEVEMENTS do
-		local globalName = ("AchievementFrameSummaryAchievement%d"):format(i)
-		local summary = _G[globalName]
-		if(summary) then
-			summary:RemoveTextures()
-			summary:SetButtonTemplate()
-
-			local highlight = _G[("%sHighlight"):format(globalName)]
-			local desc = _G[("%sDescription"):format(globalName)]
-			local icon = _G[("%sIcon"):format(globalName)]
-			local iconbling = _G[("%sIconBling"):format(globalName)]
-			local iconover = _G[("%sIconOverlay"):format(globalName)]
-			local icontex = _G[("%sIconTexture"):format(globalName)]
-
-			if(highlight) then highlight:Die() end
-			if(desc) then desc:SetTextColor(0.6, 0.6, 0.6) end
-			if(iconbling) then iconbling:Die() end
-			if(iconover) then iconover:Die() end
-			if(icontex) then
-				icontex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				icontex:FillInner()
-			end
-			if(icon and not icon.Panel) then
-				icon:SetFixedPanelTemplate("Slot")
-				icon:Height(icon:GetHeight() - 14)
-				icon:Width(icon:GetWidth() - 14)
-				icon:ClearAllPoints()
-				icon:Point("LEFT", 6, 0)
-			end
-
-			if summary.accountWide then
-				summary:SetBackdropBorderColor(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
-			else
-				summary:SetBackdropBorderColor(0,0,0,1)
-			end
-		end
-	end
-
-	collectgarbage("collect");
-end
-
-local function BarStyleHelper(bar)
-	bar:RemoveTextures()
-	bar:SetStatusBarTexture(SV.Media.bar.default)
-	bar:SetStatusBarColor(4/255, 179/255, 30/255)
-	bar:SetPanelTemplate("Default")
-	if _G[bar:GetName().."Title"]then
-		_G[bar:GetName().."Title"]:SetPoint("LEFT", 4, 0)
-	end
-	if _G[bar:GetName().."Label"]then
-		_G[bar:GetName().."Label"]:SetPoint("LEFT", 4, 0)
-	end
-	if _G[bar:GetName().."Text"]then
-		_G[bar:GetName().."Text"]:SetPoint("RIGHT", -4, 0)
-	end
-end
---[[
-##########################################################
-ACHIEVEMENTFRAME STYLER
-##########################################################
-]]--
-local function AchievementStyle()
-	if SV.db.SVStyle.blizzard.enable  ~= true or SV.db.SVStyle.blizzard.achievement  ~= true then
-		return
-	end
-
-	for _, gName in pairs(AchievementFrameList) do
-		local frame = _G[gName]
-		if(frame) then
-			frame:RemoveTextures(true)
-		end
-	end
-
-	for _, gName in pairs(AchievementTextureList) do
-		local frame = _G[gName]
-		if(frame) then
-			local count = frame:GetNumChildren()
-			for i = 1, count do
-				local childFrame = select(i, frame:GetChildren())
-				if(childFrame and not childFrame:GetName()) then
-					childFrame:SetBackdrop(nil)
-				end
-			end
-		end
-	end
-
-	STYLE:ApplyWindowStyle(AchievementFrame)
-
-	AchievementFrameSummaryAchievements:RemoveTextures(true)
-	AchievementFrameSummaryAchievements:SetBasicPanel()
-	AchievementFrameHeaderTitle:ClearAllPoints()
-	AchievementFrameHeaderTitle:Point("TOPLEFT", AchievementFrame.Panel, "TOPLEFT", -30, -8)
-	AchievementFrameHeaderPoints:ClearAllPoints()
-	AchievementFrameHeaderPoints:Point("LEFT", AchievementFrameHeaderTitle, "RIGHT", 2, 0)
-	AchievementFrameCategoriesContainer:SetPanelTemplate("Inset", true, 2, -2, 2)
-	AchievementFrameAchievementsContainer:SetPanelTemplate("Default")
-	AchievementFrameAchievementsContainer.Panel:Point("TOPLEFT", 0, 2)
-	AchievementFrameAchievementsContainer.Panel:Point("BOTTOMRIGHT", -3, -3)
-	STYLE:ApplyCloseButtonStyle(AchievementFrameCloseButton, AchievementFrame.Panel)
-	STYLE:ApplyDropdownStyle(AchievementFrameFilterDropDown)
-	AchievementFrameFilterDropDown:Point("TOPRIGHT", AchievementFrame, "TOPRIGHT", -44, 5)
-
-	STYLE:ApplyScrollFrameStyle(AchievementFrameCategoriesContainerScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(AchievementFrameAchievementsContainerScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(AchievementFrameStatsContainerScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(AchievementFrameComparisonContainerScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(AchievementFrameComparisonStatsContainerScrollBar, 5)
-
-	for i = 1, 3 do
-		local tab = _G["AchievementFrameTab"..i]
-		if(tab) then
-			STYLE:ApplyTabStyle(tab)
-			tab:SetFrameLevel(tab:GetFrameLevel() + 2)
-		end
-	end
-
-	BarStyleHelper(AchievementFrameSummaryCategoriesStatusBar)
-	BarStyleHelper(AchievementFrameComparisonSummaryPlayerStatusBar)
-	BarStyleHelper(AchievementFrameComparisonSummaryFriendStatusBar)
-
-	AchievementFrameComparisonSummaryFriendStatusBar.text:ClearAllPoints()
-	AchievementFrameComparisonSummaryFriendStatusBar.text:SetPoint("CENTER")
-	AchievementFrameComparisonHeader:Point("BOTTOMRIGHT", AchievementFrameComparison, "TOPRIGHT", 45, -20)
-
-	for f = 1, 10 do
-		local d = _G["AchievementFrameSummaryCategoriesCategory"..f]
-		local i = _G["AchievementFrameSummaryCategoriesCategory"..f.."Button"]
-		local j = _G["AchievementFrameSummaryCategoriesCategory"..f.."ButtonHighlight"]
-		BarStyleHelper(d)
-		i:RemoveTextures()
-		j:RemoveTextures()
-		_G[j:GetName().."Middle"]:SetTexture(1, 1, 1, 0.3)
-		_G[j:GetName().."Middle"]:SetAllPoints(d)
-	end
-
-	AchievementFrame:HookScript("OnShow", function(self)
-		if(self.containerStyled) then return end
-		for i = 1, 20 do
-			STYLE:ApplyItemButtonStyle(_G["AchievementFrameCategoriesContainerButton"..i])
-		end
-		self.containerStyled = true
-	end)
-
-	hooksecurefunc("AchievementButton_DisplayAchievement", function(self)
-		if(self.accountWide and self.bg3) then
-			self.bg3:SetTexture(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
-		elseif self.bg3 then
-			self.bg3:SetTexture(0,0,0,1)
-		end
-	end)
-
-	hooksecurefunc("AchievementFrameSummary_UpdateAchievements", _hook_AchievementsUpdate)
-
-	for i = 1, #AchievementItemButtons do
-		local gName = AchievementItemButtons[i]
-		local button = _G[gName]
-
-		if(button) then
-			local hl = _G[gName.."Highlight"]
-			local desc = _G[gName.."Description"]
-			local hdesc = _G[gName.."HiddenDescription"]
-			local icon = _G[gName.."Icon"]
-			local track = _G[gName.."Tracked"]
-
-			if(hl) then hl:Die() end
-
-			button:RemoveTextures(true)
-
-			button.bg1 = button:CreateTexture(nil, "BACKGROUND", nil, 4)
-			button.bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-			button.bg1:SetVertexColor(unpack(SV.Media.color.default))
-			button.bg1:Point("TOPLEFT", 1, -1)
-			button.bg1:Point("BOTTOMRIGHT", -1, 1)
-
-			button.bg3 = button:CreateTexture(nil, "BACKGROUND", nil, 2)
-			button.bg3:SetTexture(unpack(SV.Media.color.default))
-			button.bg3:WrapOuter(1)
-
-			if(desc) then
-				desc:SetTextColor(0.6, 0.6, 0.6)
-				hooksecurefunc(desc, "SetTextColor", _hook_DescriptionColor)
-			end
-
-			if(hdesc) then
-				hdesc:SetTextColor(1, 1, 1)
-				hooksecurefunc(hdesc, "SetTextColor", _hook_HiddenDescriptionColor)
-			end
-
-			if(icon) then
-				local bling = _G[gName.."IconBling"]
-				local over = _G[gName.."IconOverlay"]
-				local tex = _G[gName.."IconTexture"]
-				if(bling) then bling:Die() end
-				if(over) then over:Die() end
-				if(tex) then
-					tex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-					tex:FillInner()
-				end
-
-				icon:SetFixedPanelTemplate("Default")
-				icon:Height(icon:GetHeight()-14)
-				icon:Width(icon:GetWidth()-14)
-				icon:ClearAllPoints()
-				icon:Point("LEFT", 6, 0)
-			end
-
-			if(track) then
-				track:RemoveTextures()
-				track:SetCheckboxTemplate(true)
-				track:ClearAllPoints()
-				track:Point("BOTTOMLEFT", d, "BOTTOMLEFT", -1, -3)
-				track.ListParent = button
-
-				hooksecurefunc(track, "SetPoint", _hook_TrackingPoint)
-			end
-		end
-	end
-
-	local u = {"Player", "Friend"}
-	for c, v in pairs(u) do
-		for f = 1, 9 do
-			local d = "AchievementFrameComparisonContainerButton"..f..v;
-			_G[d]:RemoveTextures()
-			_G[d.."Background"]:Die()
-			if _G[d.."Description"]then
-				_G[d.."Description"]:SetTextColor(0.6, 0.6, 0.6)
-				hooksecurefunc(_G[d.."Description"], "SetTextColor", _hook_DescriptionColor)
-			end
-			_G[d].bg1 = _G[d]:CreateTexture(nil, "BACKGROUND")
-			_G[d].bg1:SetDrawLayer("BACKGROUND", 4)
-			_G[d].bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-			_G[d].bg1:SetVertexColor(unpack(SV.Media.color.default))
-			_G[d].bg1:Point("TOPLEFT", 4, -4)
-			_G[d].bg1:Point("BOTTOMRIGHT", -4, 4)
-			_G[d].bg2 = _G[d]:CreateTexture(nil, "BACKGROUND")
-			_G[d].bg2:SetDrawLayer("BACKGROUND", 3)
-			_G[d].bg2:SetTexture(0, 0, 0)
-			_G[d].bg2:Point("TOPLEFT", 3, -3)
-			_G[d].bg2:Point("BOTTOMRIGHT", -3, 3)
-			_G[d].bg3 = _G[d]:CreateTexture(nil, "BACKGROUND")
-			_G[d].bg3:SetDrawLayer("BACKGROUND", 2)
-			_G[d].bg3:SetTexture(0,0,0,1)
-			_G[d].bg3:Point("TOPLEFT", 2, -2)
-			_G[d].bg3:Point("BOTTOMRIGHT", -2, 2)
-			_G[d].bg4 = _G[d]:CreateTexture(nil, "BACKGROUND")
-			_G[d].bg4:SetDrawLayer("BACKGROUND", 1)
-			_G[d].bg4:SetTexture(0, 0, 0)
-			_G[d].bg4:Point("TOPLEFT", 1, -1)
-			_G[d].bg4:Point("BOTTOMRIGHT", -1, 1)
-
-			if v == "Friend"then
-				_G[d.."Shield"]:Point("TOPRIGHT", _G["AchievementFrameComparisonContainerButton"..f.."Friend"], "TOPRIGHT", -20, -3)
-			end
-
-			_G[d.."IconBling"]:Die()
-			_G[d.."IconOverlay"]:Die()
-			_G[d.."Icon"]:SetFixedPanelTemplate("Default")
-			_G[d.."Icon"]:Height(_G[d.."Icon"]:GetHeight()-14)
-			_G[d.."Icon"]:Width(_G[d.."Icon"]:GetWidth()-14)
-			_G[d.."Icon"]:ClearAllPoints()
-			_G[d.."Icon"]:Point("LEFT", 6, 0)
-			_G[d.."IconTexture"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			_G[d.."IconTexture"]:FillInner()
-		end
-	end
-
-	hooksecurefunc("AchievementFrameComparison_DisplayAchievement", function(i)
-		local w = i.player;
-		local x = i.friend
-		w.titleBar:Die()
-		x.titleBar:Die()
-		if not w.bg3 or not x.bg3 then
-			return
-		end
-		if w.accountWide then
-			w.bg3:SetTexture(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
-		else
-			w.bg3:SetTexture(0,0,0,1)
-		end
-
-		if x.accountWide then
-			x.bg3:SetTexture(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
-		else
-			x.bg3:SetTexture(0,0,0,1)
-		end
-	end)
-
-	for f = 1, 20 do
-		local d = _G["AchievementFrameStatsContainerButton"..f]
-		_G["AchievementFrameStatsContainerButton"..f.."BG"]:SetTexture(1, 1, 1, 0.2)
-		_G["AchievementFrameStatsContainerButton"..f.."HeaderLeft"]:Die()
-		_G["AchievementFrameStatsContainerButton"..f.."HeaderRight"]:Die()
-		_G["AchievementFrameStatsContainerButton"..f.."HeaderMiddle"]:Die()
-		local d = "AchievementFrameComparisonStatsContainerButton"..f;
-		_G[d]:RemoveTextures()
-		_G[d]:SetPanelTemplate("Default")
-		_G[d.."BG"]:SetTexture(1, 1, 1, 0.2)
-		_G[d.."HeaderLeft"]:Die()
-		_G[d.."HeaderRight"]:Die()
-		_G[d.."HeaderMiddle"]:Die()
-	end
-
-	hooksecurefunc("AchievementButton_GetProgressBar", function(y)
-		local d = _G["AchievementFrameProgressBar"..y]
-		if d then
-			if not d.styled then
-				d:RemoveTextures()
-				d:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-				d:SetStatusBarColor(4/255, 179/255, 30/255)
-				d:SetFrameLevel(d:GetFrameLevel()+3)
-				d:Height(d:GetHeight()-2)
-				d.bg1 = d:CreateTexture(nil, "BACKGROUND")
-				d.bg1:SetDrawLayer("BACKGROUND", 4)
-				d.bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-				d.bg1:SetVertexColor(unpack(SV.Media.color.default))
-				d.bg1:SetAllPoints()
-				d.bg3 = d:CreateTexture(nil, "BACKGROUND")
-				d.bg3:SetDrawLayer("BACKGROUND", 2)
-				d.bg3:SetTexture(0,0,0,1)
-				d.bg3:Point("TOPLEFT", -1, 1)
-				d.bg3:Point("BOTTOMRIGHT", 1, -1);
-				d.text:ClearAllPoints()
-				d.text:SetPoint("CENTER", d, "CENTER", 0, -1)
-				d.text:SetJustifyH("CENTER")
-				if y>1 then
-					d:ClearAllPoints()
-					d:Point("TOP", _G["AchievementFrameProgressBar"..y-1], "BOTTOM", 0, -5)
-					hooksecurefunc(d, "SetPoint", function(k, p, q, r, s, t, z)
-						if not z then
-							k:ClearAllPoints()k:SetPoint("TOP", _G["AchievementFrameProgressBar"..y-1], "BOTTOM", 0, -5, true)
-						end
-					end)
-				end
-				d.styled = true
-			end
-		end
-	end)
-
-	hooksecurefunc("AchievementObjectives_DisplayCriteria", function(A, B)
-		local C = GetAchievementNumCriteria(B)
-		local D, E = 0, 0;
-		for f = 1, C do
-			local F, G, H, I, J, K, L, M, N = GetAchievementCriteriaInfo(B, f)
-			if G == CRITERIA_TYPE_ACHIEVEMENT and M then
-				E = E+1;
-				local O = AchievementButton_GetMeta(E)
-				if A.completed and H then
-					O.label:SetShadowOffset(0, 0)
-					O.label:SetTextColor(1, 1, 1, 1)
-				elseif H then
-					O.label:SetShadowOffset(1, -1)
-					O.label:SetTextColor(0, 1, 0, 1)
-				else
-					O.label:SetShadowOffset(1, -1)
-					O.label:SetTextColor(.6, .6, .6, 1)
-				end
-			elseif G  ~= 1 then
-				D = D+1;
-				local P = AchievementButton_GetCriteria(D)
-				if A.completed and H then
-					P.name:SetTextColor(1, 1, 1, 1)
-					P.name:SetShadowOffset(0, 0)
-				elseif H then
-					P.name:SetTextColor(0, 1, 0, 1)
-					P.name:SetShadowOffset(1, -1)
-				else
-					P.name:SetTextColor(.6, .6, .6, 1)
-					P.name:SetShadowOffset(1, -1)
-				end
-			end
-		end
-	end)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_AchievementUI", AchievementStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/alert.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/alert.lua
deleted file mode 100644
index f3fba4a..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/alert.lua
+++ /dev/null
@@ -1,328 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local function AlphaHelper(this, value, flag)
-	if value ~= 1 and flag ~= true then
-		d:SetAlpha(1, true)
-	end
-end
---[[
-##########################################################
-ALERTFRAME STYLER
-##########################################################
-]]--
-local function AlertStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.alertframes ~= true then return end
-
-	for i = 1, 4 do
-		local alert = _G["SVUI_SystemAlert"..i];
-		if(alert) then
-			for b = 1, 3 do
-				alert.buttons[b]:SetButtonTemplate()
-			end
-			alert:RemoveTextures()
-			STYLE:ApplyAlertStyle(alert)
-			alert.input:SetEditboxTemplate()
-			alert.input.Panel:Point("TOPLEFT", -2, -4)
-			alert.input.Panel:Point("BOTTOMRIGHT", 2, 4)
-			alert.gold:SetEditboxTemplate()
-			alert.silver:SetEditboxTemplate()
-			alert.copper:SetEditboxTemplate()
-		end
-	end
-
-	hooksecurefunc("AlertFrame_SetAchievementAnchors", function(g)
-		for i = 1, MAX_ACHIEVEMENT_ALERTS do
-			local frame = _G["AchievementAlertFrame"..i]
-			if frame then
-				frame:SetAlpha(1)
-				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-				if not frame.Panel then
-					frame:SetBasicPanel()
-					frame.Panel:Point("TOPLEFT", _G[frame:GetName().."Background"], "TOPLEFT", -2, -6)
-					frame.Panel:Point("BOTTOMRIGHT", _G[frame:GetName().."Background"], "BOTTOMRIGHT", -2, 6)
-				end
-				_G["AchievementAlertFrame"..i.."Background"]:SetTexture(0,0,0,0)
-				_G["AchievementAlertFrame"..i.."OldAchievement"]:Die()
-				_G["AchievementAlertFrame"..i.."Glow"]:Die()
-				_G["AchievementAlertFrame"..i.."Shine"]:Die()
-				_G["AchievementAlertFrame"..i.."GuildBanner"]:Die()
-				_G["AchievementAlertFrame"..i.."GuildBorder"]:Die()
-				_G["AchievementAlertFrame"..i.."Unlocked"]:SetFontTemplate(nil, 12)
-				_G["AchievementAlertFrame"..i.."Unlocked"]:SetTextColor(1, 1, 1)
-				_G["AchievementAlertFrame"..i.."Name"]:SetFontTemplate(nil, 12)
-				_G["AchievementAlertFrame"..i.."IconTexture"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				_G["AchievementAlertFrame"..i.."IconOverlay"]:Die()
-				_G["AchievementAlertFrame"..i.."IconTexture"]:ClearAllPoints()
-				_G["AchievementAlertFrame"..i.."IconTexture"]:Point("LEFT", frame, 7, 0)
-				if not _G["AchievementAlertFrame"..i.."IconTexture"].b then
-					_G["AchievementAlertFrame"..i.."IconTexture"].b = CreateFrame("Frame", nil, _G["AchievementAlertFrame"..i])
-					_G["AchievementAlertFrame"..i.."IconTexture"].b:SetFixedPanelTemplate("Default")
-					_G["AchievementAlertFrame"..i.."IconTexture"].b:WrapOuter(_G["AchievementAlertFrame"..i.."IconTexture"])
-					_G["AchievementAlertFrame"..i.."IconTexture"]:SetParent(_G["AchievementAlertFrame"..i.."IconTexture"].b)
-				end
-			end
-		end
-	end)
-
-	hooksecurefunc("AlertFrame_SetDungeonCompletionAnchors", function(g)
-		for i = 1, DUNGEON_COMPLETION_MAX_REWARDS do
-			local frame = _G["DungeonCompletionAlertFrame"..i]
-			if frame then
-				frame:SetAlpha(1)
-				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-				if not frame.Panel then
-					frame:SetBasicPanel()
-					frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", -2, -6)
-					frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 6)
-				end
-				frame.shine:Die()
-				frame.glowFrame:Die()
-				frame.glowFrame.glow:Die()
-				frame.raidArt:Die()
-				frame.dungeonArt1:Die()
-				frame.dungeonArt2:Die()
-				frame.dungeonArt3:Die()
-				frame.dungeonArt4:Die()
-				frame.heroicIcon:Die()
-				frame.dungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				frame.dungeonTexture:SetDrawLayer("OVERLAY")
-				frame.dungeonTexture:ClearAllPoints()
-				frame.dungeonTexture:Point("LEFT", frame, 7, 0)
-				if not frame.dungeonTexture.b then
-					frame.dungeonTexture.b = CreateFrame("Frame", nil, frame)
-					frame.dungeonTexture.b:SetFixedPanelTemplate("Default")
-					frame.dungeonTexture.b:WrapOuter(frame.dungeonTexture)
-					frame.dungeonTexture:SetParent(frame.dungeonTexture.b)
-				end
-			end
-		end
-	end)
-
-	hooksecurefunc("AlertFrame_SetGuildChallengeAnchors", function(g)
-		local frame = GuildChallengeAlertFrame;
-		if frame then
-			frame:SetAlpha(1)
-			hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-			if not frame.Panel then
-				frame:SetBasicPanel()
-				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", -2, -6)
-				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 6)
-			end
-			local j = select(2, frame:GetRegions())
-			if j:GetObjectType() == "Texture"then
-				if j:GetTexture() == "Interface\\GuildFrame\\GuildChallenges"then j:Die()end
-			end
-			GuildChallengeAlertFrameGlow:Die()
-			GuildChallengeAlertFrameShine:Die()
-			GuildChallengeAlertFrameEmblemBorder:Die()
-			if not GuildChallengeAlertFrameEmblemIcon.b then
-				GuildChallengeAlertFrameEmblemIcon.b = CreateFrame("Frame", nil, frame)
-				GuildChallengeAlertFrameEmblemIcon.b:SetFixedPanelTemplate("Default")
-				GuildChallengeAlertFrameEmblemIcon.b:Point("TOPLEFT", GuildChallengeAlertFrameEmblemIcon, "TOPLEFT", -3, 3)
-				GuildChallengeAlertFrameEmblemIcon.b:Point("BOTTOMRIGHT", GuildChallengeAlertFrameEmblemIcon, "BOTTOMRIGHT", 3, -2)
-				GuildChallengeAlertFrameEmblemIcon:SetParent(GuildChallengeAlertFrameEmblemIcon.b)
-			end
-			SetLargeGuildTabardTextures("player", GuildChallengeAlertFrameEmblemIcon, nil, nil)
-		end
-	end)
-
-	hooksecurefunc("AlertFrame_SetChallengeModeAnchors", function(g)
-		local frame = ChallengeModeAlertFrame1;
-		if frame then
-			frame:SetAlpha(1)
-			hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-			if not frame.Panel then
-				frame:SetBasicPanel()
-				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", 19, -6)
-				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -22, 6)
-			end
-			for i = 1, frame:GetNumRegions()do
-				local j = select(i, frame:GetRegions())
-				if j:GetObjectType() == "Texture"then
-					if j:GetTexture() == "Interface\\Challenges\\challenges-main" then j:Die() end
-				end
-			end
-			ChallengeModeAlertFrame1Shine:Die()
-			ChallengeModeAlertFrame1GlowFrame:Die()
-			ChallengeModeAlertFrame1GlowFrame.glow:Die()
-			ChallengeModeAlertFrame1Border:Die()
-			ChallengeModeAlertFrame1DungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			ChallengeModeAlertFrame1DungeonTexture:ClearAllPoints()
-			ChallengeModeAlertFrame1DungeonTexture:Point("LEFT", frame.Panel, 9, 0)
-			if not ChallengeModeAlertFrame1DungeonTexture.b then
-				ChallengeModeAlertFrame1DungeonTexture.b = CreateFrame("Frame", nil, frame)
-				ChallengeModeAlertFrame1DungeonTexture.b:SetFixedPanelTemplate("Default")
-				ChallengeModeAlertFrame1DungeonTexture.b:WrapOuter(ChallengeModeAlertFrame1DungeonTexture)
-				ChallengeModeAlertFrame1DungeonTexture:SetParent(ChallengeModeAlertFrame1DungeonTexture.b)
-			end
-		end
-	end)
-
-	hooksecurefunc("AlertFrame_SetScenarioAnchors", function(g)
-		local frame = ScenarioAlertFrame1;
-		if frame then
-			frame:SetAlpha(1)
-			hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-			if not frame.Panel then
-				frame:SetBasicPanel()
-				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", 4, 4)
-				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -7, 6)
-			end
-			for i = 1, frame:GetNumRegions()do
-				local j = select(i, frame:GetRegions())
-				if j:GetObjectType() == "Texture"then
-					if j:GetTexture() == "Interface\\Scenarios\\ScenariosParts" then j:Die() end
-				end
-			end
-			ScenarioAlertFrame1Shine:Die()
-			ScenarioAlertFrame1GlowFrame:Die()
-			ScenarioAlertFrame1GlowFrame.glow:Die()
-			ScenarioAlertFrame1DungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			ScenarioAlertFrame1DungeonTexture:ClearAllPoints()
-			ScenarioAlertFrame1DungeonTexture:Point("LEFT", frame.Panel, 9, 0)
-			if not ScenarioAlertFrame1DungeonTexture.b then
-				ScenarioAlertFrame1DungeonTexture.b = CreateFrame("Frame", nil, frame)
-				ScenarioAlertFrame1DungeonTexture.b:SetFixedPanelTemplate("Default")
-				ScenarioAlertFrame1DungeonTexture.b:WrapOuter(ScenarioAlertFrame1DungeonTexture)
-				ScenarioAlertFrame1DungeonTexture:SetParent(ScenarioAlertFrame1DungeonTexture.b)
-			end
-		end
-	end)
-
-	hooksecurefunc("AlertFrame_SetCriteriaAnchors", function()
-		for i = 1, MAX_ACHIEVEMENT_ALERTS do
-			local frame = _G["CriteriaAlertFrame"..i]
-			if frame then
-				frame:SetAlpha(1)
-				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-				if not frame.Panel then
-					frame:SetBasicPanel()
-					frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", -2, -6)
-					frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 6)
-				end
-				_G["CriteriaAlertFrame"..i.."Unlocked"]:SetTextColor(1, 1, 1)
-				_G["CriteriaAlertFrame"..i.."Name"]:SetTextColor(1, 1, 0)
-				_G["CriteriaAlertFrame"..i.."Background"]:Die()
-				_G["CriteriaAlertFrame"..i.."Glow"]:Die()
-				_G["CriteriaAlertFrame"..i.."Shine"]:Die()
-				_G["CriteriaAlertFrame"..i.."IconBling"]:Die()
-				_G["CriteriaAlertFrame"..i.."IconOverlay"]:Die()
-				if not _G["CriteriaAlertFrame"..i.."IconTexture"].b then
-					_G["CriteriaAlertFrame"..i.."IconTexture"].b = CreateFrame("Frame", nil, frame)
-					_G["CriteriaAlertFrame"..i.."IconTexture"].b:SetFixedPanelTemplate("Default")
-					_G["CriteriaAlertFrame"..i.."IconTexture"].b:Point("TOPLEFT", _G["CriteriaAlertFrame"..i.."IconTexture"], "TOPLEFT", -3, 3)
-					_G["CriteriaAlertFrame"..i.."IconTexture"].b:Point("BOTTOMRIGHT", _G["CriteriaAlertFrame"..i.."IconTexture"], "BOTTOMRIGHT", 3, -2)
-					_G["CriteriaAlertFrame"..i.."IconTexture"]:SetParent(_G["CriteriaAlertFrame"..i.."IconTexture"].b)
-				end
-				_G["CriteriaAlertFrame"..i.."IconTexture"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			end
-		end
-	end)
-
-	hooksecurefunc("AlertFrame_SetLootWonAnchors", function()
-		for i = 1, #LOOT_WON_ALERT_FRAMES do
-			local frame = LOOT_WON_ALERT_FRAMES[i]
-			if frame then
-				frame:SetAlpha(1)
-				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-				frame.Background:Die()
-				frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				frame.IconBorder:Die()
-				frame.glow:Die()
-				frame.shine:Die()
-				if not frame.Icon.b then
-					frame.Icon.b = CreateFrame("Frame", nil, frame)
-					frame.Icon.b:SetFixedPanelTemplate("Default")
-					frame.Icon.b:WrapOuter(frame.Icon)
-					frame.Icon:SetParent(frame.Icon.b)
-				end
-				if not frame.Panel then
-					frame:SetBasicPanel()
-					frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
-					frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
-				end
-			end
-		end
-	end)
-
-	hooksecurefunc("AlertFrame_SetMoneyWonAnchors", function()
-		for i = 1, #MONEY_WON_ALERT_FRAMES do
-			local frame = MONEY_WON_ALERT_FRAMES[i]
-			if frame then
-				frame:SetAlpha(1)
-				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-				frame.Background:Die()
-				frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				frame.IconBorder:Die()
-				if not frame.Icon.b then
-					frame.Icon.b = CreateFrame("Frame", nil, frame)
-					frame.Icon.b:SetFixedPanelTemplate("Default")
-					frame.Icon.b:WrapOuter(frame.Icon)
-					frame.Icon:SetParent(frame.Icon.b)
-				end
-				if not frame.Panel then
-					frame:SetBasicPanel()
-					frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
-					frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
-				end
-			end
-		end
-	end)
-
-	local frame = BonusRollMoneyWonFrame;
-	frame:SetAlpha(1)
-	hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-	frame.Background:Die()
-	frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	frame.IconBorder:Die()
-	frame.Icon.b = CreateFrame("Frame", nil, frame)
-	frame.Icon.b:SetFixedPanelTemplate("Default")
-	frame.Icon.b:WrapOuter(frame.Icon)
-	frame.Icon:SetParent(frame.Icon.b)
-	frame:SetBasicPanel()
-	frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
-	frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
-
-	local frame = BonusRollLootWonFrame;
-	frame:SetAlpha(1)
-	hooksecurefunc(frame, "SetAlpha", AlphaHelper)
-	frame.Background:Die()
-	frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	frame.IconBorder:Die()
-	frame.glow:Die()
-	frame.shine:Die()
-	frame.Icon.b = CreateFrame("Frame", nil, frame)
-	frame.Icon.b:SetFixedPanelTemplate("Default")
-	frame.Icon.b:WrapOuter(frame.Icon)
-	frame.Icon:SetParent(frame.Icon.b)
-	frame:SetBasicPanel()
-	frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
-	frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(AlertStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/archeology.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/archeology.lua
deleted file mode 100644
index 4beb4da..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/archeology.lua
+++ /dev/null
@@ -1,87 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ARCHEOLOGYFRAME STYLER
-##########################################################
-]]--
---240 24
-local progressBarHolder = CreateFrame("Frame", "SVUI_ArcheologyProgressBar", nil)
-progressBarHolder:SetSize(240, 24)
-progressBarHolder:SetPoint("BOTTOM", CastingBarFrame, "TOP", 0, 10)
-SV:SetSVMovable(progressBarHolder, "Archeology Progress Bar")
-
-local function ArchaeologyStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.archaeology ~= true then return end
-
-	ArchaeologyFrame:RemoveTextures()
-	ArchaeologyFrameInset:RemoveTextures()
-	ArchaeologyFrame:SetPanelTemplate("Halftone")
-	ArchaeologyFrame.Panel:SetAllPoints()
-	ArchaeologyFrame.portrait:SetAlpha(0)
-	ArchaeologyFrameInset:SetPanelTemplate("Inset")
-	ArchaeologyFrameInset.Panel:SetPoint("TOPLEFT")
-	ArchaeologyFrameInset.Panel:SetPoint("BOTTOMRIGHT", -3, -1)
-	ArchaeologyFrameArtifactPageSolveFrameSolveButton:SetButtonTemplate()
-	ArchaeologyFrameArtifactPageBackButton:SetButtonTemplate()
-	ArchaeologyFrameRaceFilter:SetFrameLevel(ArchaeologyFrameRaceFilter:GetFrameLevel()+2)
-	STYLE:ApplyDropdownStyle(ArchaeologyFrameRaceFilter, 125)
-	STYLE:ApplyPaginationStyle(ArchaeologyFrameCompletedPageNextPageButton)
-	STYLE:ApplyPaginationStyle(ArchaeologyFrameCompletedPagePrevPageButton)
-	ArchaeologyFrameRankBar:RemoveTextures()
-	ArchaeologyFrameRankBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	ArchaeologyFrameRankBar:SetFrameLevel(ArchaeologyFrameRankBar:GetFrameLevel()+2)
-	ArchaeologyFrameRankBar:SetPanelTemplate("Default")
-	ArchaeologyFrameArtifactPageSolveFrameStatusBar:RemoveTextures()
-	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetStatusBarColor(0.7, 0.2, 0)
-	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetFrameLevel(ArchaeologyFrameArtifactPageSolveFrameStatusBar:GetFrameLevel()+2)
-	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetPanelTemplate("Default")
-
-	for b = 1, ARCHAEOLOGY_MAX_COMPLETED_SHOWN do
-		local c = _G["ArchaeologyFrameCompletedPageArtifact"..b]
-		if c then
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Border"]:Die()
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Bg"]:Die()
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop = CreateFrame("Frame", nil, c)
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop:SetFixedPanelTemplate("Default")
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop:WrapOuter(_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"])
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop:SetFrameLevel(c:GetFrameLevel()-2)
-			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"]:SetDrawLayer("OVERLAY")
-		end
-	end
-
-	ArchaeologyFrameArtifactPageIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	ArchaeologyFrameArtifactPageIcon.backdrop = CreateFrame("Frame", nil, ArchaeologyFrameArtifactPage)
-	ArchaeologyFrameArtifactPageIcon.backdrop:SetFixedPanelTemplate("Default")
-	ArchaeologyFrameArtifactPageIcon.backdrop:WrapOuter(ArchaeologyFrameArtifactPageIcon)
-	ArchaeologyFrameArtifactPageIcon.backdrop:SetFrameLevel(ArchaeologyFrameArtifactPage:GetFrameLevel())
-	ArchaeologyFrameArtifactPageIcon:SetParent(ArchaeologyFrameArtifactPageIcon.backdrop)
-	ArchaeologyFrameArtifactPageIcon:SetDrawLayer("OVERLAY")
-	STYLE:ApplyCloseButtonStyle(ArchaeologyFrameCloseButton)
-	ArcheologyDigsiteProgressBar:SetAllPoints(progressBarHolder)
-	progressBarHolder:SetParent(ArcheologyDigsiteProgressBar)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_ArchaeologyUI", ArchaeologyStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/auctionhouse.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/auctionhouse.lua
deleted file mode 100644
index 37941d4..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/auctionhouse.lua
+++ /dev/null
@@ -1,330 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local AuctionSortLinks = {
-	"BrowseQualitySort",
-	"BrowseLevelSort",
-	"BrowseDurationSort",
-	"BrowseHighBidderSort",
-	"BrowseCurrentBidSort",
-	"BidQualitySort",
-	"BidLevelSort",
-	"BidDurationSort",
-	"BidBuyoutSort",
-	"BidStatusSort",
-	"BidBidSort",
-	"AuctionsQualitySort",
-	"AuctionsDurationSort",
-	"AuctionsHighBidderSort",
-	"AuctionsBidSort"
-}
-local AuctionBidButtons = {
-	"BrowseBidButton",
-	"BidBidButton",
-	"BrowseBuyoutButton",
-	"BidBuyoutButton",
-	"BrowseCloseButton",
-	"BidCloseButton",
-	"BrowseSearchButton",
-	"AuctionsCreateAuctionButton",
-	"AuctionsCancelAuctionButton",
-	"AuctionsCloseButton",
-	"BrowseResetButton",
-	"AuctionsStackSizeMaxButton",
-	"AuctionsNumStacksMaxButton",
-}
-
-local AuctionTextFields = {
-	"BrowseName",
-	"BrowseMinLevel",
-	"BrowseMaxLevel",
-	"BrowseBidPriceGold",
-	"BidBidPriceGold",
-	"AuctionsStackSizeEntry",
-	"AuctionsNumStacksEntry",
-	"StartPriceGold",
-	"BuyoutPriceGold",
-	"BrowseBidPriceSilver",
-	"BrowseBidPriceCopper",
-	"BidBidPriceSilver",
-	"BidBidPriceCopper",
-	"StartPriceSilver",
-	"StartPriceCopper",
-	"BuyoutPriceSilver",
-	"BuyoutPriceCopper"
-}
---[[
-##########################################################
-AUCTIONFRAME STYLER
-##########################################################
-]]--
-local function AuctionStyle()
-	--STYLE.Debugging = true
-	if(SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.auctionhouse ~= true) then return end
-
-	STYLE:ApplyWindowStyle(AuctionFrame, false, true)
-
-	BrowseFilterScrollFrame:RemoveTextures()
-	BrowseScrollFrame:RemoveTextures()
-	AuctionsScrollFrame:RemoveTextures()
-	BidScrollFrame:RemoveTextures()
-
-	STYLE:ApplyCloseButtonStyle(AuctionFrameCloseButton)
-	STYLE:ApplyScrollFrameStyle(AuctionsScrollFrameScrollBar)
-
-	STYLE:ApplyDropdownStyle(BrowseDropDown)
-	STYLE:ApplyDropdownStyle(PriceDropDown)
-	STYLE:ApplyDropdownStyle(DurationDropDown)
-	STYLE:ApplyScrollFrameStyle(BrowseFilterScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(BrowseScrollFrameScrollBar)
-	IsUsableCheckButton:SetCheckboxTemplate(true)
-	ShowOnPlayerCheckButton:SetCheckboxTemplate(true)
-
-	--ExactMatchCheckButton:SetCheckboxTemplate(true)
-
-	SideDressUpFrame:RemoveTextures(true)
-	SideDressUpFrame:Size(300, 400)
-	SideDressUpFrame:SetPoint("LEFT", AuctionFrame, "RIGHT", 16, 0)
-	SideDressUpFrame.SetPoint = SV.fubar
-	SideDressUpModel:RemoveTextures(true)
-	SideDressUpModel:SetAllPoints(SideDressUpFrame)
-	SideDressUpModel:SetFixedPanelTemplate("ModelComic")
-	SideDressUpModelResetButton:SetButtonTemplate()
-	SideDressUpModelResetButton:SetPoint("BOTTOM", SideDressUpModel, "BOTTOM", 0, 20)
-	STYLE:ApplyCloseButtonStyle(SideDressUpModelCloseButton)
-
-	AuctionProgressFrame:RemoveTextures()
-	AuctionProgressFrame:SetFixedPanelTemplate("Transparent", true)
-	AuctionProgressFrameCancelButton:SetButtonTemplate()
-	AuctionProgressFrameCancelButton:SetFixedPanelTemplate("Default")
-	AuctionProgressFrameCancelButton:SetHitRectInsets(0, 0, 0, 0)
-	AuctionProgressFrameCancelButton:GetNormalTexture():FillInner()
-	AuctionProgressFrameCancelButton:GetNormalTexture():SetTexCoord(0.67, 0.37, 0.61, 0.26)
-	AuctionProgressFrameCancelButton:Size(28, 28)
-	AuctionProgressFrameCancelButton:Point("LEFT", AuctionProgressBar, "RIGHT", 8, 0)
-	AuctionProgressBarIcon:SetTexCoord(0.67, 0.37, 0.61, 0.26)
-
-	local AuctionProgressBarBG = CreateFrame("Frame", nil, AuctionProgressBarIcon:GetParent())
-	AuctionProgressBarBG:WrapOuter(AuctionProgressBarIcon)
-	AuctionProgressBarBG:SetFixedPanelTemplate("Default")
-	AuctionProgressBarIcon:SetParent(AuctionProgressBarBG)
-
-	AuctionProgressBarText:ClearAllPoints()
-	AuctionProgressBarText:SetPoint("CENTER")
-	AuctionProgressBar:RemoveTextures()
-	AuctionProgressBar:SetPanelTemplate("Default")
-	AuctionProgressBar:SetStatusBarTexture(SV.Media.bar.default)
-	AuctionProgressBar:SetStatusBarColor(1, 1, 0)
-
-	STYLE:ApplyPaginationStyle(BrowseNextPageButton)
-	STYLE:ApplyPaginationStyle(BrowsePrevPageButton)
-
-	for _,gName in pairs(AuctionBidButtons) do
-		if(_G[gName]) then
-			_G[gName]:RemoveTextures()
-			_G[gName]:SetButtonTemplate()
-		end
-	end
-
-	AuctionsCloseButton:Point("BOTTOMRIGHT", AuctionFrameAuctions, "BOTTOMRIGHT", 66, 10)
-	AuctionsCancelAuctionButton:Point("RIGHT", AuctionsCloseButton, "LEFT", -4, 0)
-
-	BidBuyoutButton:Point("RIGHT", BidCloseButton, "LEFT", -4, 0)
-	BidBidButton:Point("RIGHT", BidBuyoutButton, "LEFT", -4, 0)
-
-	BrowseBuyoutButton:Point("RIGHT", BrowseCloseButton, "LEFT", -4, 0)
-	BrowseBidButton:Point("RIGHT", BrowseBuyoutButton, "LEFT", -4, 0)
-
-	AuctionsItemButton:RemoveTextures()
-	AuctionsItemButton:SetButtonTemplate()
-	AuctionsItemButton:SetScript("OnUpdate", function()
-		if AuctionsItemButton:GetNormalTexture()then
-			AuctionsItemButton:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			AuctionsItemButton:GetNormalTexture():FillInner()
-		end
-	end)
-
-	for _,frame in pairs(AuctionSortLinks)do
-		_G[frame.."Left"]:Die()
-		_G[frame.."Middle"]:Die()
-		_G[frame.."Right"]:Die()
-	end
-
-	STYLE:ApplyTabStyle(_G["AuctionFrameTab1"])
-	STYLE:ApplyTabStyle(_G["AuctionFrameTab2"])
-	STYLE:ApplyTabStyle(_G["AuctionFrameTab3"])
-
-	AuctionFrameBrowse.bg1 = CreateFrame("Frame", nil, AuctionFrameBrowse)
-	AuctionFrameBrowse.bg1:Point("TOPLEFT", 20, -103)
-	AuctionFrameBrowse.bg1:Point("BOTTOMRIGHT", -575, 40)
-	AuctionFrameBrowse.bg1:SetFixedPanelTemplate("Inset")
-
-	BrowseNoResultsText:SetParent(AuctionFrameBrowse.bg1)
-	BrowseSearchCountText:SetParent(AuctionFrameBrowse.bg1)
-
-	BrowseResetButton:Point("TOPLEFT", AuctionFrameBrowse, "TOPLEFT", 81, -74)
-	BrowseSearchButton:Point("TOPRIGHT", AuctionFrameBrowse, "TOPRIGHT", 25, -34)
-
-	AuctionFrameBrowse.bg1:SetFrameLevel(AuctionFrameBrowse.bg1:GetFrameLevel()-1)
-	BrowseFilterScrollFrame:Height(300)
-	AuctionFrameBrowse.bg2 = CreateFrame("Frame", nil, AuctionFrameBrowse)
-	AuctionFrameBrowse.bg2:SetFixedPanelTemplate("Inset")
-	AuctionFrameBrowse.bg2:Point("TOPLEFT", AuctionFrameBrowse.bg1, "TOPRIGHT", 4, 0)
-	AuctionFrameBrowse.bg2:Point("BOTTOMRIGHT", AuctionFrame, "BOTTOMRIGHT", -8, 40)
-	AuctionFrameBrowse.bg2:SetFrameLevel(AuctionFrameBrowse.bg2:GetFrameLevel() - 1)
-
-	for i = 1, NUM_FILTERS_TO_DISPLAY do
-		local header = _G[("AuctionFilterButton%d"):format(i)]
-		if(header) then
-			header:RemoveTextures()
-			header:SetButtonTemplate()
-		end
-	end
-
-	for _,field in pairs(AuctionTextFields)do
-		_G[field]:SetEditboxTemplate()
-		_G[field]:SetTextInsets(-1, -1, -2, -2)
-	end
-
-	BrowseMaxLevel:Point("LEFT", BrowseMinLevel, "RIGHT", 8, 0)
-	AuctionsStackSizeEntry.Panel:SetAllPoints()
-	AuctionsNumStacksEntry.Panel:SetAllPoints()
-
-	for h = 1, NUM_BROWSE_TO_DISPLAY do
-		local button = _G["BrowseButton"..h];
-		local buttonItem = _G["BrowseButton"..h.."Item"];
-		local buttonTex = _G["BrowseButton"..h.."ItemIconTexture"];
-
-		if(button) then
-			if(buttonTex) then
-				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				buttonTex:FillInner()
-			end
-
-			button:RemoveTextures()
-			button:SetButtonTemplate()
-
-			if(buttonItem) then
-				buttonItem:SetButtonTemplate()
-				buttonItem.Panel:SetAllPoints()
-				buttonItem:HookScript("OnUpdate", function()
-					buttonItem:GetNormalTexture():Die()
-				end)
-
-				local highLight = button:GetHighlightTexture()
-				_G["BrowseButton"..h.."Highlight"] = highLight
-				highLight:ClearAllPoints()
-				highLight:Point("TOPLEFT", buttonItem, "TOPRIGHT", 2, 0)
-				highLight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -2, 5)
-				button:GetPushedTexture():SetAllPoints(highLight)
-			end
-		end
-	end
-
-	for h = 1, NUM_AUCTIONS_TO_DISPLAY do
-		local button = _G["AuctionsButton"..h];
-		local buttonItem = _G["AuctionsButton"..h.."Item"];
-		local buttonTex = _G["AuctionsButton"..h.."ItemIconTexture"];
-
-		if(button) then
-			if(buttonTex) then
-				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				buttonTex:FillInner()
-			end
-
-			button:RemoveTextures()
-			button:SetButtonTemplate()
-
-			if(buttonItem) then
-				buttonItem:SetButtonTemplate()
-				buttonItem.Panel:SetAllPoints()
-				buttonItem:HookScript("OnUpdate", function()
-					buttonItem:GetNormalTexture():Die()
-				end)
-
-				local highLight = button:GetHighlightTexture()
-				_G["AuctionsButton"..h.."Highlight"] = highLight
-				highLight:ClearAllPoints()
-				highLight:Point("TOPLEFT", buttonItem, "TOPRIGHT", 2, 0)
-				highLight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -2, 5)
-				button:GetPushedTexture():SetAllPoints(highLight)
-			end
-		end
-	end
-
-	for h = 1, NUM_BIDS_TO_DISPLAY do
-		local button = _G["BidButton"..h];
-		local buttonItem = _G["BidButton"..h.."Item"];
-		local buttonTex = _G["BidButton"..h.."ItemIconTexture"];
-
-		if(button) then
-			if(buttonTex) then
-				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				buttonTex:FillInner()
-			end
-
-			button:RemoveTextures()
-			button:SetButtonTemplate()
-
-			if(buttonItem) then
-				buttonItem:SetButtonTemplate()
-				buttonItem.Panel:SetAllPoints()
-				buttonItem:HookScript("OnUpdate", function()
-					buttonItem:GetNormalTexture():Die()
-				end)
-
-				local highLight = button:GetHighlightTexture()
-				_G["BidButton"..h.."Highlight"] = highLight
-				highLight:ClearAllPoints()
-				highLight:Point("TOPLEFT", buttonItem, "TOPRIGHT", 2, 0)
-				highLight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -2, 5)
-				button:GetPushedTexture():SetAllPoints(highLight)
-			end
-		end
-	end
-
-	BrowseScrollFrame:Height(300)
-	AuctionFrameBid.bg = CreateFrame("Frame", nil, AuctionFrameBid)
-	AuctionFrameBid.bg:SetFixedPanelTemplate("Inset")
-	AuctionFrameBid.bg:Point("TOPLEFT", 22, -72)
-	AuctionFrameBid.bg:Point("BOTTOMRIGHT", 66, 39)
-	AuctionFrameBid.bg:SetFrameLevel(AuctionFrameBid.bg:GetFrameLevel()-1)
-	BidScrollFrame:Height(332)
-	AuctionsScrollFrame:Height(336)
-	AuctionFrameAuctions.bg1 = CreateFrame("Frame", nil, AuctionFrameAuctions)
-	AuctionFrameAuctions.bg1:SetFixedPanelTemplate("Inset")
-	AuctionFrameAuctions.bg1:Point("TOPLEFT", 15, -70)
-	AuctionFrameAuctions.bg1:Point("BOTTOMRIGHT", -545, 35)
-	AuctionFrameAuctions.bg1:SetFrameLevel(AuctionFrameAuctions.bg1:GetFrameLevel() - 2)
-	AuctionFrameAuctions.bg2 = CreateFrame("Frame", nil, AuctionFrameAuctions)
-	AuctionFrameAuctions.bg2:SetFixedPanelTemplate("Inset")
-	AuctionFrameAuctions.bg2:Point("TOPLEFT", AuctionFrameAuctions.bg1, "TOPRIGHT", 3, 0)
-	AuctionFrameAuctions.bg2:Point("BOTTOMRIGHT", AuctionFrame, -8, 35)
-	AuctionFrameAuctions.bg2:SetFrameLevel(AuctionFrameAuctions.bg2:GetFrameLevel() - 2)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_AuctionUI", AuctionStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/barbershop.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/barbershop.lua
deleted file mode 100644
index 5cc87c6..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/barbershop.lua
+++ /dev/null
@@ -1,66 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-BARBERSHOP STYLER
-##########################################################
-]]--
-local function BarberShopStyle()
-	if SV.db.SVStyle.blizzard.enable~=true or SV.db.SVStyle.blizzard.barber~=true then return end
-	local buttons = {"BarberShopFrameOkayButton", "BarberShopFrameCancelButton", "BarberShopFrameResetButton"}
-	BarberShopFrameOkayButton:Point("RIGHT", BarberShopFrameSelector4, "BOTTOM", 2, -50)
-	for b = 1, #buttons do
-		_G[buttons[b]]:RemoveTextures()
-		_G[buttons[b]]:SetButtonTemplate()
-	end
-	for b = 1, 4 do
-		local c = _G["BarberShopFrameSelector"..b]
-		local d = _G["BarberShopFrameSelector"..b-1]
-		STYLE:ApplyPaginationStyle(_G["BarberShopFrameSelector"..b.."Prev"])
-		STYLE:ApplyPaginationStyle(_G["BarberShopFrameSelector"..b.."Next"])
-		if b ~= 1 then
-			c:ClearAllPoints()c:Point("TOP", d, "BOTTOM", 0, -3)
-		end
-		if c then
-			c:RemoveTextures()
-		end
-	end
-	BarberShopFrameSelector1:ClearAllPoints()
-	BarberShopFrameSelector1:Point("TOP", 0, -12)
-	BarberShopFrameResetButton:ClearAllPoints()
-	BarberShopFrameResetButton:Point("BOTTOM", 0, 12)
-	BarberShopFrame:RemoveTextures()
-	BarberShopFrame:SetPanelTemplate("Halftone")
-	BarberShopFrame:Size(BarberShopFrame:GetWidth()-30, BarberShopFrame:GetHeight()-56)
-	BarberShopFrameMoneyFrame:RemoveTextures()
-	BarberShopFrameMoneyFrame:SetPanelTemplate()
-	BarberShopFrameBackground:Die()
-	BarberShopBannerFrameBGTexture:Die()
-	BarberShopBannerFrame:Die()
-	BarberShopAltFormFrameBorder:RemoveTextures()
-	BarberShopAltFormFrame:Point("BOTTOM", BarberShopFrame, "TOP", 0, 5)
-	BarberShopAltFormFrame:RemoveTextures()
-	BarberShopAltFormFrame:SetBasicPanel()
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_BarbershopUI",BarberShopStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/battlefield.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/battlefield.lua
deleted file mode 100644
index 834e73f..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/battlefield.lua
+++ /dev/null
@@ -1,93 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-BATTLEFIELD STYLER
-##########################################################
-]]--
-local function BattlefieldStyle()
-	if SV.db.SVStyle.blizzard.enable~=true or SV.db.SVStyle.blizzard.bgmap~=true then return end
-	BattlefieldMinimap:SetClampedToScreen(true)
-	BattlefieldMinimapCorner:Die()
-	BattlefieldMinimapBackground:Die()
-	BattlefieldMinimapTab:Die()
-	BattlefieldMinimapTabLeft:Die()
-	BattlefieldMinimapTabMiddle:Die()
-	BattlefieldMinimapTabRight:Die()
-	BattlefieldMinimap:SetFixedPanelTemplate("Transparent")
-	BattlefieldMinimap.Panel:Point("BOTTOMRIGHT", -4, 2)
-	BattlefieldMinimap:SetFrameStrata("LOW")
-	BattlefieldMinimapCloseButton:ClearAllPoints()
-	BattlefieldMinimapCloseButton:SetPoint("TOPRIGHT", -4, 0)
-	STYLE:ApplyCloseButtonStyle(BattlefieldMinimapCloseButton)
-	BattlefieldMinimapCloseButton:SetFrameStrata("MEDIUM")
-	BattlefieldMinimap:EnableMouse(true)
-	BattlefieldMinimap:SetMovable(true)
-	BattlefieldMinimap:SetScript("OnMouseUp", function(f, g)
-		if g == "LeftButton"then
-			BattlefieldMinimapTab:StopMovingOrSizing()BattlefieldMinimapTab:SetUserPlaced(true)
-			if OpacityFrame:IsShown()then
-				OpacityFrame:Hide()
-			end
-		elseif g == "RightButton"then
-			ToggleDropDownMenu(1, nil, BattlefieldMinimapTabDropDown, f:GetName(), 0, -4)
-			if OpacityFrame:IsShown()then
-				OpacityFrame:Hide()
-			end
-		end
-	end)
-	BattlefieldMinimap:SetScript("OnMouseDown", function(f, g)
-		if g == "LeftButton"then
-			if BattlefieldMinimapOptions and BattlefieldMinimapOptions.locked then
-				return
-			else
-				BattlefieldMinimapTab:StartMoving()
-			end
-		end
-	end)
-	hooksecurefunc("BattlefieldMinimap_UpdateOpacity", function(opacity)
-		local h = 1.0-BattlefieldMinimapOptions.opacity or 0;
-		BattlefieldMinimap.Panel:SetAlpha(h)
-	end)
-	local i;
-	BattlefieldMinimap:HookScript("OnEnter", function()
-		i = BattlefieldMinimapOptions.opacity or 0;
-		BattlefieldMinimap_UpdateOpacity(0)
-	end)
-	BattlefieldMinimap:HookScript("OnLeave", function()
-		if i then
-			BattlefieldMinimap_UpdateOpacity(i)i = nil
-		end
-	end)
-	BattlefieldMinimapCloseButton:HookScript("OnEnter", function()
-		i = BattlefieldMinimapOptions.opacity or 0;
-		BattlefieldMinimap_UpdateOpacity(0)
-	end)
-	BattlefieldMinimapCloseButton:HookScript("OnLeave", function()
-		if i then
-			BattlefieldMinimap_UpdateOpacity(i)i = nil
-		end
-	end)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_BattlefieldMinimap",BattlefieldStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/blackmarket.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/blackmarket.lua
deleted file mode 100644
index 5904ef5..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/blackmarket.lua
+++ /dev/null
@@ -1,92 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-BLACKMARKET STYLER
-##########################################################
-]]--
-local function BlackMarketStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.bmah ~= true then
-		return
-	end
-
-	local ChangeTab = function(p)
-		p.Left:SetAlpha(0)
-		if p.Middle then
-			p.Middle:SetAlpha(0)
-		end
-		p.Right:SetAlpha(0)
-	end
-
-	BlackMarketFrame:RemoveTextures()
-	BlackMarketFrame:SetPanelTemplate("Halftone")
-	BlackMarketFrame.Inset:RemoveTextures()
-	BlackMarketFrame.Inset:SetFixedPanelTemplate("Inset")
-	STYLE:ApplyCloseButtonStyle(BlackMarketFrame.CloseButton)
-	STYLE:ApplyScrollFrameStyle(BlackMarketScrollFrameScrollBar, 4)
-
-	ChangeTab(BlackMarketFrame.ColumnName)
-	ChangeTab(BlackMarketFrame.ColumnLevel)
-	ChangeTab(BlackMarketFrame.ColumnType)
-	ChangeTab(BlackMarketFrame.ColumnDuration)
-	ChangeTab(BlackMarketFrame.ColumnHighBidder)
-	ChangeTab(BlackMarketFrame.ColumnCurrentBid)
-
-	BlackMarketFrame.MoneyFrameBorder:RemoveTextures()
-	BlackMarketBidPriceGold:SetEditboxTemplate()
-	BlackMarketBidPriceGold.Panel:Point("TOPLEFT", -2, 0)
-	BlackMarketBidPriceGold.Panel:Point("BOTTOMRIGHT", -2, 0)
-	BlackMarketFrame.BidButton:SetButtonTemplate()
-	hooksecurefunc("BlackMarketScrollFrame_Update", function()
-		local buttons = BlackMarketScrollFrame.buttons;
-		local r = #buttons;
-		local s = HybridScrollFrame_GetOffset(BlackMarketScrollFrame)
-		local t = C_BlackMarket.GetNumItems()
-		for b = 1, r do
-			local u = buttons[b]
-			local v = s+b;
-			if not u.styled then
-				u:RemoveTextures()
-				u:SetButtonTemplate()
-				STYLE:ApplyItemButtonStyle(u.Item)
-				u.styled = true
-			end
-			if v <= t then
-				local w, x = C_BlackMarket.GetItemInfoByIndex(v)
-				if w then
-					u.Item.IconTexture:SetTexture(x)
-				end
-			end
-		end
-	end)
-	BlackMarketFrame.HotDeal:RemoveTextures()
-	STYLE:ApplyItemButtonStyle(BlackMarketFrame.HotDeal.Item)
-	for b = 1, BlackMarketFrame:GetNumRegions()do
-		local y = select(b, BlackMarketFrame:GetRegions())
-		if y and y:GetObjectType() == "FontString" and y:GetText() == BLACK_MARKET_TITLE then
-			y:ClearAllPoints()y:SetPoint("TOP", BlackMarketFrame, "TOP", 0, -4)
-		end
-	end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_BlackMarketUI",BlackMarketStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/calendar.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/calendar.lua
deleted file mode 100644
index dc0a3f4..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/calendar.lua
+++ /dev/null
@@ -1,187 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local CalendarButtons = {
-	"CalendarViewEventAcceptButton",
-	"CalendarViewEventTentativeButton",
-	"CalendarViewEventRemoveButton",
-	"CalendarViewEventDeclineButton"
-};
---[[
-##########################################################
-CALENDAR STYLER
-##########################################################
-]]--
-local function CalendarStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.calendar ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(CalendarFrame)
-
-	STYLE:ApplyCloseButtonStyle(CalendarCloseButton)
-	CalendarCloseButton:SetPoint("TOPRIGHT", CalendarFrame, "TOPRIGHT", -4, -4)
-	STYLE:ApplyPaginationStyle(CalendarPrevMonthButton)
-	STYLE:ApplyPaginationStyle(CalendarNextMonthButton)
-
-	do
-		local cfframe = _G["CalendarFilterFrame"];
-
-		if(cfframe) then
-			cfframe:RemoveTextures()
-			cfframe:Width(155)
-			cfframe:SetPanelTemplate("Default")
-
-			local cftext = _G["CalendarFilterFrameText"]
-			if(cftext) then
-				cftext:ClearAllPoints()
-				cftext:SetPoint("RIGHT", cfbutton, "LEFT", -2, 0)
-			end
-
-			local cfbutton = _G["CalendarFilterButton"];
-			if(cfbutton) then
-				cfbutton:ClearAllPoints()
-				cfbutton:SetPoint("RIGHT", cfframe, "RIGHT", -10, 3)
-				STYLE:ApplyPaginationStyle(cfbutton, true)
-				cfframe.Panel:SetPoint("TOPLEFT", 20, 2)
-				cfframe.Panel:SetPoint("BOTTOMRIGHT", cfbutton, "BOTTOMRIGHT", 2, -2)
-			end
-		end
-	end
-
-	local l = CreateFrame("Frame", "CalendarFrameBackdrop", CalendarFrame)
-	l:SetFixedPanelTemplate("Default")
-	l:SetPoint("TOPLEFT", 10, -72)
-	l:SetPoint("BOTTOMRIGHT", -8, 3)
-	CalendarContextMenu:SetFixedPanelTemplate("Default")
-	hooksecurefunc(CalendarContextMenu, "SetBackdropColor", function(f, r, g, b, a)
-		if r ~= 0 or g ~= 0 or b ~= 0 or a ~= 0.5 then
-			 f:SetBackdropColor(0, 0, 0, 0.5)
-		end
-	end)
-	hooksecurefunc(CalendarContextMenu, "SetBackdropBorderColor", function(f, r, g, b)
-		if r ~= 0 or g ~= 0 or b ~= 0 then
-			 f:SetBackdropBorderColor(0, 0, 0)
-		end
-	end)
-	for u = 1, 42 do
-		 _G["CalendarDayButton"..u]:SetFrameLevel(_G["CalendarDayButton"..u]:GetFrameLevel()+1)
-	end
-	CalendarCreateEventFrame:RemoveTextures()
-	CalendarCreateEventFrame:SetFixedPanelTemplate("Transparent", true)
-	CalendarCreateEventFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
-	CalendarCreateEventTitleFrame:RemoveTextures()
-	CalendarCreateEventCreateButton:SetButtonTemplate()
-	CalendarCreateEventMassInviteButton:SetButtonTemplate()
-	CalendarCreateEventInviteButton:SetButtonTemplate()
-	CalendarCreateEventInviteButton:SetPoint("TOPLEFT", CalendarCreateEventInviteEdit, "TOPRIGHT", 4, 1)
-	CalendarCreateEventInviteEdit:Width(CalendarCreateEventInviteEdit:GetWidth()-2)
-	CalendarCreateEventInviteList:RemoveTextures()
-	CalendarCreateEventInviteList:SetFixedPanelTemplate("Default")
-	CalendarCreateEventInviteEdit:SetEditboxTemplate()
-	CalendarCreateEventTitleEdit:SetEditboxTemplate()
-	STYLE:ApplyDropdownStyle(CalendarCreateEventTypeDropDown, 120)
-	CalendarCreateEventDescriptionContainer:RemoveTextures()
-	CalendarCreateEventDescriptionContainer:SetFixedPanelTemplate("Default")
-	STYLE:ApplyCloseButtonStyle(CalendarCreateEventCloseButton)
-	CalendarCreateEventLockEventCheck:SetCheckboxTemplate(true)
-	STYLE:ApplyDropdownStyle(CalendarCreateEventHourDropDown, 68)
-	STYLE:ApplyDropdownStyle(CalendarCreateEventMinuteDropDown, 68)
-	STYLE:ApplyDropdownStyle(CalendarCreateEventAMPMDropDown, 68)
-	STYLE:ApplyDropdownStyle(CalendarCreateEventRepeatOptionDropDown, 120)
-	CalendarCreateEventIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	hooksecurefunc(CalendarCreateEventIcon, "SetTexCoord", function(f, v, w, x, y)
-		local z, A, B, C = 0.1, 0.9, 0.1, 0.9
-		if v ~= z or w ~= A or x ~= B or y ~= C then
-			 f:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		end
-	end)
-	CalendarCreateEventInviteListSection:RemoveTextures()
-	CalendarClassButtonContainer:HookScript("OnShow", function()
-		for u, D in ipairs(CLASS_SORT_ORDER)do
-			local e = _G["CalendarClassButton"..u]e:RemoveTextures()
-			e:SetPanelTemplate("Default")
-			local E = CLASS_ICON_TCOORDS[D]
-			local F = e:GetNormalTexture()
-			F:SetTexture("Interface\\Glues\\CharacterCreate\\UI-CharacterCreate-Classes")
-			F:SetTexCoord(E[1]+0.015, E[2]-0.02, E[3]+0.018, E[4]-0.02)
-		end
-		CalendarClassButton1:SetPoint("TOPLEFT", CalendarClassButtonContainer, "TOPLEFT", 5, 0)
-		CalendarClassTotalsButton:RemoveTextures()
-		CalendarClassTotalsButton:SetPanelTemplate("Default")
-	end)
-	CalendarTexturePickerFrame:RemoveTextures()
-	CalendarTexturePickerTitleFrame:RemoveTextures()
-	CalendarTexturePickerFrame:SetFixedPanelTemplate("Transparent", true)
-	STYLE:ApplyScrollFrameStyle(CalendarTexturePickerScrollBar)
-	CalendarTexturePickerAcceptButton:SetButtonTemplate()
-	CalendarTexturePickerCancelButton:SetButtonTemplate()
-	CalendarCreateEventInviteButton:SetButtonTemplate()
-	CalendarCreateEventRaidInviteButton:SetButtonTemplate()
-	CalendarMassInviteFrame:RemoveTextures()
-	CalendarMassInviteFrame:SetFixedPanelTemplate("Transparent", true)
-	CalendarMassInviteTitleFrame:RemoveTextures()
-	STYLE:ApplyCloseButtonStyle(CalendarMassInviteCloseButton)
-	CalendarMassInviteGuildAcceptButton:SetButtonTemplate()
-	STYLE:ApplyDropdownStyle(CalendarMassInviteGuildRankMenu, 130)
-	CalendarMassInviteGuildMinLevelEdit:SetEditboxTemplate()
-	CalendarMassInviteGuildMaxLevelEdit:SetEditboxTemplate()
-	CalendarViewRaidFrame:RemoveTextures()
-	CalendarViewRaidFrame:SetFixedPanelTemplate("Transparent", true)
-	CalendarViewRaidFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
-	CalendarViewRaidTitleFrame:RemoveTextures()
-	STYLE:ApplyCloseButtonStyle(CalendarViewRaidCloseButton)
-	CalendarViewHolidayFrame:RemoveTextures(true)
-	CalendarViewHolidayFrame:SetFixedPanelTemplate("Transparent", true)
-	CalendarViewHolidayFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
-	CalendarViewHolidayTitleFrame:RemoveTextures()
-	STYLE:ApplyCloseButtonStyle(CalendarViewHolidayCloseButton)
-	CalendarViewEventFrame:RemoveTextures()
-	CalendarViewEventFrame:SetFixedPanelTemplate("Transparent", true)
-	CalendarViewEventFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
-	CalendarViewEventTitleFrame:RemoveTextures()
-	CalendarViewEventDescriptionContainer:RemoveTextures()
-	CalendarViewEventDescriptionContainer:SetFixedPanelTemplate("Transparent", true)
-	CalendarViewEventInviteList:RemoveTextures()
-	CalendarViewEventInviteList:SetFixedPanelTemplate("Transparent", true)
-	CalendarViewEventInviteListSection:RemoveTextures()
-	STYLE:ApplyCloseButtonStyle(CalendarViewEventCloseButton)
-	STYLE:ApplyScrollFrameStyle(CalendarViewEventInviteListScrollFrameScrollBar)
-	for _,btn in pairs(CalendarButtons)do
-		 _G[btn]:SetButtonTemplate()
-	end
-	CalendarEventPickerFrame:RemoveTextures()
-	CalendarEventPickerTitleFrame:RemoveTextures()
-	CalendarEventPickerFrame:SetFixedPanelTemplate("Transparent", true)
-	STYLE:ApplyScrollFrameStyle(CalendarEventPickerScrollBar)
-	CalendarEventPickerCloseButton:SetButtonTemplate()
-	STYLE:ApplyScrollFrameStyle(CalendarCreateEventDescriptionScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(CalendarCreateEventInviteListScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(CalendarViewEventDescriptionScrollFrameScrollBar)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_Calendar",CalendarStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/challenges.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/challenges.lua
deleted file mode 100644
index 0afbba8..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/challenges.lua
+++ /dev/null
@@ -1,59 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-CHALLENGES UI STYLER
-##########################################################
-]]--
-local function ChallengesFrameStyle()
-  if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.lfg ~= true then return end
-  ChallengesFrameInset:RemoveTextures()
-  ChallengesFrameInsetBg:Hide()
-  ChallengesFrameDetails.bg:Hide()
-  ChallengesFrameLeaderboard:SetButtonTemplate()
-  select(2, ChallengesFrameDetails:GetRegions()):Hide()
-  select(9, ChallengesFrameDetails:GetRegions()):Hide()
-  select(10, ChallengesFrameDetails:GetRegions()):Hide()
-  select(11, ChallengesFrameDetails:GetRegions()):Hide()
-  ChallengesFrameDungeonButton1:SetPoint("TOPLEFT", ChallengesFrame, "TOPLEFT", 8, -83)
-  for u = 1, 9 do
-    local v = ChallengesFrame["button"..u]
-    v:SetButtonTemplate()
-    v:SetButtonTemplate()
-    v:SetHighlightTexture("")
-    v.selectedTex:SetAlpha(.2)
-    v.selectedTex:SetPoint("TOPLEFT", 1, -1)
-    v.selectedTex:SetPoint("BOTTOMRIGHT", -1, 1)
-  v.NoMedal:Die()
-  end
-  for u = 1, 3 do
-    local F = ChallengesFrame["RewardRow"..u]
-    for A = 1, 2 do
-      local v = F["Reward"..A]
-      v:SetPanelTemplate()
-      v.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-    end
-  end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_ChallengesUI",ChallengesFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/character.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/character.lua
deleted file mode 100644
index f6ccd88..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/character.lua
+++ /dev/null
@@ -1,391 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local CharacterSlotNames = {
-	"HeadSlot",
-	"NeckSlot",
-	"ShoulderSlot",
-	"BackSlot",
-	"ChestSlot",
-	"ShirtSlot",
-	"TabardSlot",
-	"WristSlot",
-	"HandsSlot",
-	"WaistSlot",
-	"LegsSlot",
-	"FeetSlot",
-	"Finger0Slot",
-	"Finger1Slot",
-	"Trinket0Slot",
-	"Trinket1Slot",
-	"MainHandSlot",
-	"SecondaryHandSlot"
-};
-
-local CharFrameList = {
-	"CharacterFrame",
-	"CharacterModelFrame",
-	"CharacterFrameInset",
-	"CharacterStatsPane",
-	"CharacterFrameInsetRight",
-	"PaperDollFrame",
-	"PaperDollSidebarTabs",
-	"PaperDollEquipmentManagerPane"
-};
-
-local function SetItemFrame(frame, point)
-	point = point or frame
-	local noscalemult = 2 * UIParent:GetScale()
-	if point.bordertop then return end
-	point.backdrop = frame:CreateTexture(nil, "BORDER")
-	point.backdrop:SetDrawLayer("BORDER", -4)
-	point.backdrop:SetAllPoints(point)
-	point.backdrop:SetTexture(SV.Media.bar.default)
-	point.backdrop:SetVertexColor(unpack(SV.Media.color.default))
-	point.bordertop = frame:CreateTexture(nil, "BORDER")
-	point.bordertop:SetPoint("TOPLEFT", point, "TOPLEFT", -noscalemult, noscalemult)
-	point.bordertop:SetPoint("TOPRIGHT", point, "TOPRIGHT", noscalemult, noscalemult)
-	point.bordertop:SetHeight(noscalemult)
-	point.bordertop:SetTexture(0,0,0)
-	point.bordertop:SetDrawLayer("BORDER", 1)
-	point.borderbottom = frame:CreateTexture(nil, "BORDER")
-	point.borderbottom:SetPoint("BOTTOMLEFT", point, "BOTTOMLEFT", -noscalemult, -noscalemult)
-	point.borderbottom:SetPoint("BOTTOMRIGHT", point, "BOTTOMRIGHT", noscalemult, -noscalemult)
-	point.borderbottom:SetHeight(noscalemult)
-	point.borderbottom:SetTexture(0,0,0)
-	point.borderbottom:SetDrawLayer("BORDER", 1)
-	point.borderleft = frame:CreateTexture(nil, "BORDER")
-	point.borderleft:SetPoint("TOPLEFT", point, "TOPLEFT", -noscalemult, noscalemult)
-	point.borderleft:SetPoint("BOTTOMLEFT", point, "BOTTOMLEFT", noscalemult, -noscalemult)
-	point.borderleft:SetWidth(noscalemult)
-	point.borderleft:SetTexture(0,0,0)
-	point.borderleft:SetDrawLayer("BORDER", 1)
-	point.borderright = frame:CreateTexture(nil, "BORDER")
-	point.borderright:SetPoint("TOPRIGHT", point, "TOPRIGHT", noscalemult, noscalemult)
-	point.borderright:SetPoint("BOTTOMRIGHT", point, "BOTTOMRIGHT", -noscalemult, -noscalemult)
-	point.borderright:SetWidth(noscalemult)
-	point.borderright:SetTexture(0,0,0)
-	point.borderright:SetDrawLayer("BORDER", 1)
-end
-
-local function StyleCharacterSlots()
-	for _,slotName in pairs(CharacterSlotNames)do
-		local charSlot = _G["Character"..slotName]
-		local slotID,_,_ = GetInventorySlotInfo(slotName)
-		local itemID = GetInventoryItemID("player",slotID)
-		if itemID then
-			local _,_,info = GetItemInfo(itemID)
-			if info and info > 1 then
-				 charSlot:SetBackdropBorderColor(GetItemQualityColor(info))
-			else
-				 charSlot:SetBackdropBorderColor(0,0,0,1)
-			end
-		else
-			 charSlot:SetBackdropBorderColor(0,0,0,1)
-		end
-	end
-end
-
-local function EquipmentFlyout_OnShow()
-	EquipmentFlyoutFrameButtons:RemoveTextures()
-	local counter = 1;
-	local button = _G["EquipmentFlyoutFrameButton"..counter]
-	while button do
-		local texture = _G["EquipmentFlyoutFrameButton"..counter.."IconTexture"]
-		button:SetButtonTemplate()
-		texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		button:GetNormalTexture():SetTexture(0,0,0,0)
-		texture:FillInner()
-		button:SetFrameLevel(button:GetFrameLevel() + 2)
-		if not button.Panel then
-			button:SetPanelTemplate("Default")
-			button.Panel:SetAllPoints()
-		end
-		counter = counter + 1;
-		button = _G["EquipmentFlyoutFrameButton"..counter]
-	end
-end
-
-local function PaperDoll_UpdateTabs()
-	for i = 1, #PAPERDOLL_SIDEBARS do
-		local tab = _G["PaperDollSidebarTab"..i]
-		if tab then
-			tab.Highlight:SetTexture(1, 1, 1, 0.3)
-			tab.Highlight:Point("TOPLEFT", 3, -4)
-			tab.Highlight:Point("BOTTOMRIGHT", -1, 0)
-			tab.Hider:SetTexture(0.4, 0.4, 0.4, 0.4)
-			tab.Hider:Point("TOPLEFT", 3, -4)
-			tab.Hider:Point("BOTTOMRIGHT", -1, 0)
-			tab.TabBg:Die()
-			if i == 1 then
-				for i = 1, tab:GetNumRegions()do
-					local texture = select(i, tab:GetRegions())
-					texture:SetTexCoord(0.16, 0.86, 0.16, 0.86)
-					hooksecurefunc(texture, "SetTexCoord", function(f, v, w, x, y)
-						if v ~= 0.16001 then
-							 f:SetTexCoord(0.16001, 0.86, 0.16, 0.86)
-						end
-					end)
-				end
-			end
-			tab:SetPanelTemplate("Default", true, 2)
-			tab.Panel:Point("TOPLEFT", 2, -3)
-			tab.Panel:Point("BOTTOMRIGHT", 0, -2)
-		end
-	end
-end
-
-local function Reputation_OnShow()
-	for i = 1, GetNumFactions()do
-		local bar = _G["ReputationBar"..i.."ReputationBar"]
-		if bar then
-			 bar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-			if not bar.Panel then
-				 bar:SetPanelTemplate("Inset")
-			end
-			_G["ReputationBar"..i.."Background"]:SetTexture(0,0,0,0)
-			_G["ReputationBar"..i.."ReputationBarHighlight1"]:SetTexture(0,0,0,0)
-			_G["ReputationBar"..i.."ReputationBarHighlight2"]:SetTexture(0,0,0,0)
-			_G["ReputationBar"..i.."ReputationBarAtWarHighlight1"]:SetTexture(0,0,0,0)
-			_G["ReputationBar"..i.."ReputationBarAtWarHighlight2"]:SetTexture(0,0,0,0)
-			_G["ReputationBar"..i.."ReputationBarLeftTexture"]:SetTexture(0,0,0,0)
-			_G["ReputationBar"..i.."ReputationBarRightTexture"]:SetTexture(0,0,0,0)
-		end
-	end
-end
---[[
-##########################################################
-CHARACTERFRAME STYLER
-##########################################################
-]]--
-local function CharacterFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.character ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(CharacterFrame, true)
-
-	STYLE:ApplyCloseButtonStyle(CharacterFrameCloseButton)
-	STYLE:ApplyScrollFrameStyle(CharacterStatsPaneScrollBar)
-	STYLE:ApplyScrollFrameStyle(ReputationListScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(TokenFrameContainerScrollBar)
-	STYLE:ApplyScrollFrameStyle(GearManagerDialogPopupScrollFrameScrollBar)
-
-	for _,slotName in pairs(CharacterSlotNames) do
-		local charSlot = _G["Character"..slotName]
-		local iconTex = _G["Character"..slotName.."IconTexture"]
-		local cd = _G["Character"..slotName.."Cooldown"]
-		charSlot:RemoveTextures()
-		charSlot:SetSlotTemplate(true)
-		charSlot.Panel:SetFrameLevel(charSlot.Panel:GetFrameLevel() + 1)
-		charSlot.ignoreTexture:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-LeaveItem-Transparent]])
-		iconTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		iconTex:FillInner(charSlot, 0, 0)
-		if cd then
-			 SV.Timers:AddCooldown(cd)
-		end
-	end
-
-	local eqSlotListener = CreateFrame("Frame")
-	eqSlotListener:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
-	eqSlotListener:SetScript("OnEvent", StyleCharacterSlots)
-
-	CharacterFrame:HookScript("OnShow", StyleCharacterSlots)
-
-	StyleCharacterSlots()
-
-	CharacterFrameExpandButton:Size(CharacterFrameExpandButton:GetWidth() - 7, CharacterFrameExpandButton:GetHeight() - 7)
-	STYLE:ApplyPaginationStyle(CharacterFrameExpandButton)
-
-	hooksecurefunc('CharacterFrame_Collapse', function()
-		CharacterFrameExpandButton:SetNormalTexture(nil)
-		CharacterFrameExpandButton:SetPushedTexture(nil)
-		CharacterFrameExpandButton:SetDisabledTexture(nil)
-		SquareButton_SetIcon(CharacterFrameExpandButton, 'RIGHT')
-	end)
-
-	hooksecurefunc('CharacterFrame_Expand', function()
-		CharacterFrameExpandButton:SetNormalTexture(nil)
-		CharacterFrameExpandButton:SetPushedTexture(nil)
-		CharacterFrameExpandButton:SetDisabledTexture(nil)
-		SquareButton_SetIcon(CharacterFrameExpandButton, 'LEFT')
-	end)
-
-	if GetCVar("characterFrameCollapsed") ~= "0" then
-		 SquareButton_SetIcon(CharacterFrameExpandButton, 'RIGHT')
-	else
-		 SquareButton_SetIcon(CharacterFrameExpandButton, 'LEFT')
-	end
-
-	STYLE:ApplyCloseButtonStyle(ReputationDetailCloseButton)
-	STYLE:ApplyCloseButtonStyle(TokenFramePopupCloseButton)
-	ReputationDetailAtWarCheckBox:SetCheckboxTemplate(true)
-	ReputationDetailMainScreenCheckBox:SetCheckboxTemplate(true)
-	ReputationDetailInactiveCheckBox:SetCheckboxTemplate(true)
-	ReputationDetailLFGBonusReputationCheckBox:SetCheckboxTemplate(true)
-	TokenFramePopupInactiveCheckBox:SetCheckboxTemplate(true)
-	TokenFramePopupBackpackCheckBox:SetCheckboxTemplate(true)
-	EquipmentFlyoutFrameHighlight:Die()
-	EquipmentFlyoutFrame:HookScript("OnShow", EquipmentFlyout_OnShow)
-	hooksecurefunc("EquipmentFlyout_Show", EquipmentFlyout_OnShow)
-	CharacterFramePortrait:Die()
-	STYLE:ApplyScrollFrameStyle(_G["PaperDollTitlesPaneScrollBar"], 5)
-	STYLE:ApplyScrollFrameStyle(_G["PaperDollEquipmentManagerPaneScrollBar"], 5)
-	for _,btn in pairs(CharFrameList)do
-		 _G[btn]:RemoveTextures(true)
-	end
-	CharacterModelFrameBackgroundTopLeft:SetTexture(0,0,0,0)
-	CharacterModelFrameBackgroundTopRight:SetTexture(0,0,0,0)
-	CharacterModelFrameBackgroundBotLeft:SetTexture(0,0,0,0)
-	CharacterModelFrameBackgroundBotRight:SetTexture(0,0,0,0)
-
-	CharacterModelFrame:SetFixedPanelTemplate("ModelComic")
-	CharacterFrameExpandButton:SetFrameLevel(CharacterModelFrame:GetFrameLevel() + 5)
-
-	PaperDollTitlesPane:SetBasicPanel()
-
-	PaperDollTitlesPane:HookScript("OnShow", function(f)
-		for _,btn in pairs(PaperDollTitlesPane.buttons)do
-			btn.BgTop:SetTexture(0,0,0,0)
-			btn.BgBottom:SetTexture(0,0,0,0)
-			btn.BgMiddle:SetTexture(0,0,0,0)
-			btn.Check:SetTexture(0,0,0,0)
-			btn.text:FillInner(btn)
-			btn.text:SetFont(SV.Media.font.roboto,10,"NONE","LEFT")
-		end
-	end)
-
-	PaperDollEquipmentManagerPane:SetBasicPanel()
-	PaperDollEquipmentManagerPaneEquipSet:SetButtonTemplate()
-	PaperDollEquipmentManagerPaneSaveSet:SetButtonTemplate()
-	PaperDollEquipmentManagerPaneEquipSet:Width(PaperDollEquipmentManagerPaneEquipSet:GetWidth()-8)
-	PaperDollEquipmentManagerPaneSaveSet:Width(PaperDollEquipmentManagerPaneSaveSet:GetWidth()-8)
-	PaperDollEquipmentManagerPaneEquipSet:Point("TOPLEFT", PaperDollEquipmentManagerPane, "TOPLEFT", 8, 0)
-	PaperDollEquipmentManagerPaneSaveSet:Point("LEFT", PaperDollEquipmentManagerPaneEquipSet, "RIGHT", 4, 0)
-	PaperDollEquipmentManagerPaneEquipSet.ButtonBackground:SetTexture(0,0,0,0)
-	PaperDollEquipmentManagerPane:HookScript("OnShow", function(f)
-		for _,btn in pairs(PaperDollEquipmentManagerPane.buttons)do
-			btn.BgTop:SetTexture(0,0,0,0)
-			btn.BgBottom:SetTexture(0,0,0,0)
-			btn.BgMiddle:SetTexture(0,0,0,0)
-			btn.icon:Size(36, 36)
-			btn.Check:SetTexture(0,0,0,0)
-			btn.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			btn.icon:SetPoint("LEFT", btn, "LEFT", 4, 0)
-			hooksecurefunc(btn.icon, "SetPoint", function(f, g, h, i, j, k, X)
-				if X ~= true then
-					 f:SetPoint("LEFT", btn, "LEFT", 4, 0, true)
-				end
-			end)
-			hooksecurefunc(btn.icon, "SetSize", function(f, Y, Z)
-				if Y == 30 or Z == 30 then
-					 f:Size(36, 36)
-				end
-			end)
-			if not btn.icon.bordertop then
-				 SetItemFrame(btn, btn.icon)
-			end
-		end
-		GearManagerDialogPopup:RemoveTextures()
-		GearManagerDialogPopup:SetFixedPanelTemplate("Transparent", true)
-		GearManagerDialogPopup:Point("LEFT", PaperDollFrame, "RIGHT", 4, 0)
-		GearManagerDialogPopupScrollFrame:RemoveTextures()
-		GearManagerDialogPopupEditBox:RemoveTextures()
-
-		GearManagerDialogPopupEditBox:SetBasicPanel()
-
-		GearManagerDialogPopupOkay:SetButtonTemplate()
-		GearManagerDialogPopupCancel:SetButtonTemplate()
-
-		for i = 1, NUM_GEARSET_ICONS_SHOWN do
-			local e = _G["GearManagerDialogPopupButton"..i]
-			local texture = e.icon;
-			if e then
-				e:RemoveTextures()
-				e:SetButtonTemplate()
-				texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				_G["GearManagerDialogPopupButton"..i.."Icon"]:SetTexture(0,0,0,0)
-				texture:FillInner()
-				e:SetFrameLevel(e:GetFrameLevel() + 2)
-				if not e.Panel then
-					e:SetPanelTemplate("Default")
-					e.Panel:SetAllPoints()
-				end
-			end
-		end
-	end)
-
-	for i = 1, 4 do
-		 STYLE:ApplyTabStyle(_G["CharacterFrameTab"..i])
-	end
-
-	hooksecurefunc("PaperDollFrame_UpdateSidebarTabs", PaperDoll_UpdateTabs)
-
-	for i = 1, 7 do
-		local category = _G["CharacterStatsPaneCategory"..i]
-		if(category) then
-			category:RemoveTextures()
-			category:SetButtonTemplate()
-		end
-	end
-
-	ReputationFrame:RemoveTextures(true)
-	ReputationListScrollFrame:RemoveTextures()
-	ReputationDetailFrame:RemoveTextures()
-	ReputationDetailFrame:SetBasicPanel()
-	ReputationDetailFrame:Point("TOPLEFT", ReputationFrame, "TOPRIGHT", 4, -28)
-	ReputationFrame:HookScript("OnShow", Reputation_OnShow)
-	hooksecurefunc("ExpandFactionHeader", Reputation_OnShow)
-	hooksecurefunc("CollapseFactionHeader", Reputation_OnShow)
-	TokenFrameContainer:SetBasicPanel()
-
-	TokenFrame:HookScript("OnShow", function()
-		for i = 1, GetCurrencyListSize() do
-			local currency = _G["TokenFrameContainerButton"..i]
-			if(currency) then
-				currency.highlight:Die()
-				currency.categoryMiddle:Die()
-				currency.categoryLeft:Die()
-				currency.categoryRight:Die()
-				if currency.icon then
-					 currency.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				end
-			end
-		end
-		TokenFramePopup:RemoveTextures()
-		TokenFramePopup:SetBasicPanel()
-		TokenFramePopup:Point("TOPLEFT", TokenFrame, "TOPRIGHT", 4, -28)
-	end)
-	PetModelFrame:SetPanelTemplate("Comic",false,1,-7,-7)
-	PetPaperDollPetInfo:GetRegions():SetTexCoord(.12, .63, .15, .55)
-	PetPaperDollPetInfo:SetFrameLevel(PetPaperDollPetInfo:GetFrameLevel() + 10)
-	PetPaperDollPetInfo:SetPanelTemplate("Slot")
-	PetPaperDollPetInfo.Panel:SetFrameLevel(0)
-	PetPaperDollPetInfo:Size(24, 24)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(CharacterFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/chat.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/chat.lua
deleted file mode 100644
index 114d33b..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/chat.lua
+++ /dev/null
@@ -1,480 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-FRAME LISTS
-##########################################################
-]]--
-local ChatMenuList = {
-	"ChatMenu",
-	"EmoteMenu",
-	"LanguageMenu",
-	"VoiceMacroMenu",
-};
-local ChatFrameList1 = {
-	"ChatConfigFrame",
-	"ChatConfigBackgroundFrame",
-	"ChatConfigCategoryFrame",
-	"ChatConfigChatSettingsClassColorLegend",
-	"ChatConfigChatSettingsLeft",
-	"ChatConfigChannelSettingsLeft",
-	"ChatConfigChannelSettingsClassColorLegend",
-	"ChatConfigOtherSettingsCombat",
-	"ChatConfigOtherSettingsPVP",
-	"ChatConfigOtherSettingsSystem",
-	"ChatConfigOtherSettingsCreature",
-	"ChatConfigCombatSettingsFilters",
-	"CombatConfigMessageSourcesDoneBy",
-	"CombatConfigMessageSourcesDoneTo",
-	"CombatConfigColorsUnitColors",
-	"CombatConfigColorsHighlighting",
-	"CombatConfigColorsColorizeUnitName",
-	"CombatConfigColorsColorizeSpellNames",
-	"CombatConfigColorsColorizeDamageNumber",
-	"CombatConfigColorsColorizeDamageSchool",
-	"CombatConfigColorsColorizeEntireLine",
-};
-local ChatFrameList2 = {
-	"ChatConfigFrameDefaultButton",
-	"ChatConfigFrameOkayButton",
-	"CombatLogDefaultButton",
-	"ChatConfigCombatSettingsFiltersCopyFilterButton",
-	"ChatConfigCombatSettingsFiltersAddFilterButton",
-	"ChatConfigCombatSettingsFiltersDeleteButton",
-	"CombatConfigSettingsSaveButton",
-	"ChatConfigFrameCancelButton",
-};
-local ChatFrameList3 = {
-	"ChatConfigCategoryFrame",
-	"ChatConfigBackgroundFrame",
-	"ChatConfigChatSettingsClassColorLegend",
-	"ChatConfigChannelSettingsClassColorLegend",
-	"ChatConfigCombatSettingsFilters",
-	"ChatConfigCombatSettingsFiltersScrollFrame",
-	"CombatConfigColorsHighlighting",
-	"CombatConfigColorsColorizeUnitName",
-	"CombatConfigColorsColorizeSpellNames",
-	"CombatConfigColorsColorizeDamageNumber",
-	"CombatConfigColorsColorizeDamageSchool",
-	"CombatConfigColorsColorizeEntireLine",
-	"ChatConfigChatSettingsLeft",
-	"ChatConfigOtherSettingsCombat",
-	"ChatConfigOtherSettingsPVP",
-	"ChatConfigOtherSettingsSystem",
-	"ChatConfigOtherSettingsCreature",
-	"ChatConfigChannelSettingsLeft",
-	"CombatConfigMessageSourcesDoneBy",
-	"CombatConfigMessageSourcesDoneTo",
-	"CombatConfigColorsUnitColors",
-};
-local ChatFrameList4 = {
-	"CombatConfigColorsColorizeSpellNames",
-	"CombatConfigColorsColorizeDamageNumber",
-	"CombatConfigColorsColorizeDamageSchool",
-	"CombatConfigColorsColorizeEntireLine",
-};
-local ChatFrameList5 = {
-	"ChatConfigFrameOkayButton",
-	"ChatConfigFrameDefaultButton",
-	"CombatLogDefaultButton",
-	"ChatConfigCombatSettingsFiltersDeleteButton",
-	"ChatConfigCombatSettingsFiltersAddFilterButton",
-	"ChatConfigCombatSettingsFiltersCopyFilterButton",
-	"CombatConfigSettingsSaveButton",
-};
-local ChatFrameList6 = {
-	"CombatConfigColorsHighlightingLine",
-	"CombatConfigColorsHighlightingAbility",
-	"CombatConfigColorsHighlightingDamage",
-	"CombatConfigColorsHighlightingSchool",
-	"CombatConfigColorsColorizeUnitNameCheck",
-	"CombatConfigColorsColorizeSpellNamesCheck",
-	"CombatConfigColorsColorizeSpellNamesSchoolColoring",
-	"CombatConfigColorsColorizeDamageNumberCheck",
-	"CombatConfigColorsColorizeDamageNumberSchoolColoring",
-	"CombatConfigColorsColorizeDamageSchoolCheck",
-	"CombatConfigColorsColorizeEntireLineCheck",
-	"CombatConfigFormattingShowTimeStamp",
-	"CombatConfigFormattingShowBraces",
-	"CombatConfigFormattingUnitNames",
-	"CombatConfigFormattingSpellNames",
-	"CombatConfigFormattingItemNames",
-	"CombatConfigFormattingFullText",
-	"CombatConfigSettingsShowQuickButton",
-	"CombatConfigSettingsSolo",
-	"CombatConfigSettingsParty",
-	"CombatConfigSettingsRaid",
-};
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local ChatGeneric_OnShow = function(self)
-	 if(not self.Panel) then
-	 	self:SetPanelTemplate("Halftone")
-	end
-end
-
-local ChatMenu_OnShow = function(self)
-	if(not self.Panel) then
-		self:SetPanelTemplate("Halftone")
-	end
-	self:ClearAllPoints()
-	self:Point("BOTTOMLEFT", ChatFrame1, "TOPLEFT", 0, 30)
-end
-
-local ChatConfigChannelSettingsLeft_OnEvent = function(self)
-	local checkBoxTable = self.checkBoxTable;
-    local checkBoxNameString = "ChatConfigChannelSettingsLeftCheckBox";
-    local boxHeight = ChatConfigOtherSettingsCombatCheckBox1:GetHeight() or 20
-    local colorsHeight = ChatConfigChatSettingsLeftCheckBox1Check:GetHeight() or 20
-	for i = 1,#checkBoxTable do
-		local gName = ("ChatConfigChannelSettingsLeftCheckBox%d"):format(i)
-		local checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetBasicPanel()
-			end
-			checkbox:SetHeight(boxHeight)
-			checkbox.Panel:Point("TOPLEFT",3,-1)
-			checkbox.Panel:Point("BOTTOMRIGHT",-3,1)
-
-			local check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-
-			local colors = _G[("%sColorClasses"):format(gName)]
-			if(colors) then
-				colors:SetCheckboxTemplate(true)
-				colors:SetHeight(colorsHeight)
-			end
-		end
-	end
-end
-
-local ChatConfigBackgroundFrame_OnShow = function(self)
-	local gName, checkbox, check, colors
-	local boxHeight = ChatConfigOtherSettingsCombatCheckBox1:GetHeight() or 20
-    local colorsHeight = ChatConfigChatSettingsLeftCheckBox1Check:GetHeight() or 20
-
-	for i = 1, #CHAT_CONFIG_CHAT_LEFT do
-		gName = ("ChatConfigChatSettingsLeftCheckBox%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-			checkbox:SetHeight(boxHeight)
-
-			check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-
-			colors = _G[("%sColorClasses"):format(gName)]
-			if(colors) then
-				colors:SetCheckboxTemplate(true)
-				colors:SetHeight(colorsHeight)
-			end
-		end
-	end
-	for i = 1, #CHAT_CONFIG_OTHER_COMBAT do
-		gName = ("ChatConfigOtherSettingsCombatCheckBox%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-
-			check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-		end
-	end
-	for i = 1, #CHAT_CONFIG_OTHER_PVP do
-		gName = ("ChatConfigOtherSettingsPVPCheckBox%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-
-			check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-		end
-	end
-	for i = 1, #CHAT_CONFIG_OTHER_SYSTEM do
-		gName = ("ChatConfigOtherSettingsSystemCheckBox%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-
-			check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-		end
-	end
-	for i = 1, #CHAT_CONFIG_CHAT_CREATURE_LEFT do
-		gName = ("ChatConfigOtherSettingsCreatureCheckBox%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-
-			check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-		end
-	end
-	for i = 1, #COMBAT_CONFIG_MESSAGESOURCES_BY do
-		gName = ("CombatConfigMessageSourcesDoneByCheckBox%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-
-			check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-		end
-	end
-	for i = 1, #COMBAT_CONFIG_MESSAGESOURCES_TO do
-		gName = ("CombatConfigMessageSourcesDoneToCheckBox%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-
-			check = _G[("%sCheck"):format(gName)]
-			if(check) then
-				check:SetCheckboxTemplate(true)
-			end
-		end
-	end
-	for i = 1, #COMBAT_CONFIG_UNIT_COLORS do
-		gName = ("CombatConfigColorsUnitColorsSwatch%d"):format(i)
-		checkbox = _G[gName]
-		if(checkbox) then
-			if(not checkbox.Panel) then
-				checkbox:RemoveTextures()
-				checkbox:SetPanelTemplate("Default")
-			end
-			checkbox.Panel:Point("TOPLEFT", 3, -1)
-			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
-		end
-	end
-	for i = 1, 4 do
-		gName = ("CombatConfigMessageTypesLeftCheckBox%d"):format(i)
-		for j = 1, 4 do
-			local gName2 = ("%s_%d"):format(gName, j)
-			if(_G[gName] and _G[gName2]) then
-				_G[gName]:SetCheckboxTemplate(true)
-				_G[gName2]:SetCheckboxTemplate(true)
-			end
-		end
-
-		gName = ("CombatConfigMessageTypesRightCheckBox%d"):format(i)
-		for j = 1, 10 do
-			local gName2 = ("%s_%d"):format(gName, j)
-			if(_G[gName] and _G[gName2]) then
-				_G[gName]:SetCheckboxTemplate(true)
-				_G[gName2]:SetCheckboxTemplate(true)
-			end
-		end
-
-		gName = ("CombatConfigMessageTypesMiscCheckBox%d"):format(i)
-		if(_G[gName]) then
-			_G[gName]:SetCheckboxTemplate(true)
-		end
-	end
-end
---[[
-##########################################################
-CHAT STYLER
-##########################################################
-]]--
-local function ChatStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.chat ~= true then
-		 return
-	end
-
-	for i = 1, #ChatMenuList do
-		local name = ChatMenuList[i]
-		local this = _G[name]
-		if(this) then
-			if(name == "ChatMenu") then
-				this:HookScript("OnShow", ChatMenu_OnShow)
-			else
-				this:HookScript("OnShow", ChatGeneric_OnShow)
-			end
-		end
-	end
-
-	for i = 1, #ChatFrameList1 do
-		local name = ChatFrameList1[i]
-		local this = _G[name]
-		if(this) then
-			this:RemoveTextures()
-		end
-	end
-
-	for i = 1, #ChatFrameList2 do
-		local name = ChatFrameList2[i]
-		local this = _G[name]
-		if(this) then
-			this:SetButtonTemplate()
-		end
-	end
-
-	ChatConfigFrameOkayButton:Point("RIGHT", ChatConfigFrameCancelButton, "RIGHT", -11, -1)
-	ChatConfigCombatSettingsFiltersDeleteButton:Point("TOPRIGHT", ChatConfigCombatSettingsFilters, "BOTTOMRIGHT", 0, -1)
-	ChatConfigCombatSettingsFiltersAddFilterButton:Point("RIGHT", ChatConfigCombatSettingsFiltersDeleteButton, "LEFT", -1, 0)
-	ChatConfigCombatSettingsFiltersCopyFilterButton:Point("RIGHT", ChatConfigCombatSettingsFiltersAddFilterButton, "LEFT", -1, 0)
-
-	if(_G["CombatConfigTab1"]) then _G["CombatConfigTab1"]:RemoveTextures() end
-	if(_G["CombatConfigTab2"]) then _G["CombatConfigTab2"]:RemoveTextures() end
-	if(_G["CombatConfigTab3"]) then _G["CombatConfigTab3"]:RemoveTextures() end
-	if(_G["CombatConfigTab4"]) then _G["CombatConfigTab4"]:RemoveTextures() end
-	if(_G["CombatConfigTab5"]) then _G["CombatConfigTab5"]:RemoveTextures() end
-
-	CombatConfigSettingsNameEditBox:SetEditboxTemplate()
-	ChatConfigFrame:SetPanelTemplate("Halftone", true)
-
-	for i = 1, #ChatFrameList3 do
-		local frame = _G[ChatFrameList3[i]]
-		if(frame) then
-			frame:RemoveTextures()
-			frame:SetBasicPanel()
-		end
-	end
-
-	for i = 1, #ChatFrameList4 do
-		local this = _G[ChatFrameList4[i]]
-		if(this) then
-			this:ClearAllPoints()
-			if this == CombatConfigColorsColorizeSpellNames then
-				this:Point("TOP",CombatConfigColorsColorizeUnitName,"BOTTOM",0,-2)
-			else
-				this:Point("TOP",_G[ChatFrameList4[i-1]],"BOTTOM",0,-2)
-			end
-		end
-	end
-
-	ChatConfigChannelSettingsLeft:HookScript("OnShow", ChatConfigChannelSettingsLeft_OnEvent)
-
-	CreateChatChannelList(ChatConfigChannelSettings, GetChannelList())
-	ChatConfig_CreateCheckboxes(ChatConfigChannelSettingsLeft, CHAT_CONFIG_CHANNEL_LIST, "ChatConfigCheckBoxWithSwatchAndClassColorTemplate", CHANNELS)
-	ChatConfig_UpdateCheckboxes(ChatConfigChannelSettingsLeft)
-
-	ChatConfigBackgroundFrame:SetScript("OnShow", ChatConfigBackgroundFrame_OnShow)
-
-	for i = 1, #COMBAT_CONFIG_TABS do
-		local this = _G["CombatConfigTab"..i]
-		if(this) then
-			STYLE:ApplyTabStyle(this)
-			this:SetHeight(this:GetHeight()-2)
-			this:SetWidth(ceil(this:GetWidth()+1.6))
-			_G["CombatConfigTab"..i.."Text"]:SetPoint("BOTTOM", 0, 10)
-		end
-	end
-
-	CombatConfigTab1:ClearAllPoints()
-	CombatConfigTab1:SetPoint("BOTTOMLEFT", ChatConfigBackgroundFrame, "TOPLEFT", 6, -2)
-
-	for i = 1, #ChatFrameList5 do
-		local this = _G[ChatFrameList5[i]]
-		if(this) then
-			this:SetButtonTemplate()
-		end
-	end
-
-	ChatConfigFrameOkayButton:SetPoint("TOPRIGHT", ChatConfigBackgroundFrame, "BOTTOMRIGHT", -3, -5)
-	ChatConfigFrameDefaultButton:SetPoint("TOPLEFT", ChatConfigCategoryFrame, "BOTTOMLEFT", 1, -5)
-	CombatLogDefaultButton:SetPoint("TOPLEFT", ChatConfigCategoryFrame, "BOTTOMLEFT", 1, -5)
-	ChatConfigCombatSettingsFiltersDeleteButton:SetPoint("TOPRIGHT", ChatConfigCombatSettingsFilters, "BOTTOMRIGHT", -3, -1)
-	ChatConfigCombatSettingsFiltersCopyFilterButton:SetPoint("RIGHT", ChatConfigCombatSettingsFiltersDeleteButton, "LEFT", -2, 0)
-	ChatConfigCombatSettingsFiltersAddFilterButton:SetPoint("RIGHT", ChatConfigCombatSettingsFiltersCopyFilterButton, "LEFT", -2, 0)
-
-	for i = 1, #ChatFrameList6 do
-		local this = _G[ChatFrameList6[i]]
-		if(this) then
-			this:SetCheckboxTemplate(true)
-		end
-	end
-
-	STYLE:ApplyPaginationStyle(ChatConfigMoveFilterUpButton,true)
-	STYLE:ApplyPaginationStyle(ChatConfigMoveFilterDownButton,true)
-
-	ChatConfigMoveFilterUpButton:ClearAllPoints()
-	ChatConfigMoveFilterDownButton:ClearAllPoints()
-	ChatConfigMoveFilterUpButton:SetPoint("TOPLEFT",ChatConfigCombatSettingsFilters,"BOTTOMLEFT",3,0)
-	ChatConfigMoveFilterDownButton:SetPoint("LEFT",ChatConfigMoveFilterUpButton,24,0)
-
-	CombatConfigSettingsNameEditBox:SetEditboxTemplate()
-
-	ChatConfigFrame:Size(680,596)
-	ChatConfigFrameHeader:ClearAllPoints()
-	ChatConfigFrameHeader:SetPoint("TOP", ChatConfigFrame, "TOP", 0, -5)
-
-	-- for i=1, select("#", GetChatWindowChannels(3)) do
-	-- 	local info = select(i, GetChatWindowChannels(3))
-	-- 	print(info)
-	-- end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(ChatStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/dressup.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/dressup.lua
deleted file mode 100644
index 3d65d8c..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/dressup.lua
+++ /dev/null
@@ -1,50 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-DRESSUP STYLER
-##########################################################
-]]--
-local function DressUpStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.dressingroom ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(DressUpFrame, true, true)
-
-	DressUpModel:ClearAllPoints()
-	DressUpModel:SetPoint("TOPLEFT", DressUpFrame, "TOPLEFT", 12, -76)
-	DressUpModel:SetPoint("BOTTOMRIGHT", DressUpFrame, "BOTTOMRIGHT", -12, 36)
-
-	DressUpModel:SetFixedPanelTemplate("ModelComic")
-
-	DressUpFrameCancelButton:Point("BOTTOMRIGHT", DressUpFrame, "BOTTOMRIGHT", -12, 12)
-	DressUpFrameCancelButton:SetButtonTemplate()
-
-	DressUpFrameResetButton:Point("RIGHT", DressUpFrameCancelButton, "LEFT", -12, 0)
-	DressUpFrameResetButton:SetButtonTemplate()
-
-	STYLE:ApplyCloseButtonStyle(DressUpFrameCloseButton, DressUpFrame.Panel)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(DressUpStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/encounterjournal.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/encounterjournal.lua
deleted file mode 100644
index d3ab5f5..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/encounterjournal.lua
+++ /dev/null
@@ -1,228 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ENCOUNTERJOURNAL STYLER
-##########################################################
-]]--
-local PVP_LOST = [[Interface\WorldMap\Skull_64Red]]
-
-local function Tab_OnEnter(this)
-  this.backdrop:SetPanelColor("highlight")
-  this.backdrop:SetBackdropBorderColor(unpack(SV.Media.color.highlight))
-end
-
-local function Tab_OnLeave(this)
-  this.backdrop:SetPanelColor("dark")
-  this.backdrop:SetBackdropBorderColor(0,0,0,1)
-end
-
-local function ChangeTabHelper(this, xOffset, yOffset)
-  this:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
-  this:GetNormalTexture():FillInner()
-  this.backdrop = CreateFrame("Frame", nil, this)
-  this.backdrop:FillInner(this)
-
-  local level = this:GetFrameLevel()
-  if(level > 0) then
-    this.backdrop:SetFrameLevel(level - 1)
-  else
-    this.backdrop:SetFrameLevel(0)
-  end
-
-  this.backdrop:SetPanelTemplate("Component", true)
-  this.backdrop:SetPanelColor("dark")
-  this:HookScript("OnEnter",Tab_OnEnter)
-  this:HookScript("OnLeave",Tab_OnLeave)
-
-  local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = this:GetPoint()
-  this:Point(initialAnchor, anchorParent, relativeAnchor, xOffset or 7, yOffset or yPosition)
-end
-
-local function Outline(frame, noHighlight)
-    if(frame.Outlined) then return; end
-    local offset = noHighlight and 30 or 5
-    local mod = noHighlight and 50 or 5
-
-    local panel = CreateFrame('Frame', nil, frame)
-    panel:Point('TOPLEFT', frame, 'TOPLEFT', 1, -1)
-    panel:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -1, 1)
-
-    --[[ UNDERLAY BORDER ]]--
-    local borderLeft = panel:CreateTexture(nil, "BORDER")
-    borderLeft:SetTexture(0, 0, 0)
-    borderLeft:SetPoint("TOPLEFT")
-    borderLeft:SetPoint("BOTTOMLEFT")
-    borderLeft:SetWidth(offset)
-
-    local borderRight = panel:CreateTexture(nil, "BORDER")
-    borderRight:SetTexture(0, 0, 0)
-    borderRight:SetPoint("TOPRIGHT")
-    borderRight:SetPoint("BOTTOMRIGHT")
-    borderRight:SetWidth(offset)
-
-    local borderTop = panel:CreateTexture(nil, "BORDER")
-    borderTop:SetTexture(0, 0, 0)
-    borderTop:SetPoint("TOPLEFT")
-    borderTop:SetPoint("TOPRIGHT")
-    borderTop:SetHeight(mod)
-
-    local borderBottom = panel:CreateTexture(nil, "BORDER")
-    borderBottom:SetTexture(0, 0, 0)
-    borderBottom:SetPoint("BOTTOMLEFT")
-    borderBottom:SetPoint("BOTTOMRIGHT")
-    borderBottom:SetHeight(mod)
-
-    if(not noHighlight) then
-      local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
-      highlight:SetTexture(0, 1, 1, 0.35)
-      highlight:SetAllPoints(panel)
-    end
-
-    frame.Outlined = true
-end
-
-local function EncounterJournalStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.encounterjournal ~= true then
-		 return
-	end
-
-	EncounterJournal:RemoveTextures(true)
-  EncounterJournalInstanceSelect:RemoveTextures(true)
-  EncounterJournalNavBar:RemoveTextures(true)
-  EncounterJournalNavBarOverlay:RemoveTextures(true)
-  EncounterJournalNavBarHomeButton:RemoveTextures(true)
-  EncounterJournalInset:RemoveTextures(true)
-
-  EncounterJournalEncounterFrame:RemoveTextures(true)
-  EncounterJournalEncounterFrameInfo:RemoveTextures(true)
-  EncounterJournalEncounterFrameInfoDifficulty:RemoveTextures(true)
-  EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:RemoveTextures(true)
-  EncounterJournalEncounterFrameInfoBossesScrollFrame:RemoveTextures(true)
-  EncounterJournalInstanceSelectDungeonTab:RemoveTextures(true)
-  EncounterJournalInstanceSelectRaidTab:RemoveTextures(true)
-  ChangeTabHelper(EncounterJournalEncounterFrameInfoBossTab)
-  ChangeTabHelper(EncounterJournalEncounterFrameInfoLootTab, 0, -10)
-
-  EncounterJournalSearchResults:RemoveTextures(true)
-
-  EncounterJournal:SetPanelTemplate("Action")
-  EncounterJournal:SetPanelColor("dark")
-  EncounterJournalInset:SetFixedPanelTemplate("Inset")
-
-  EncounterJournalInstanceSelectScrollFrameScrollChild:SetFixedPanelTemplate("Default")
-  EncounterJournalInstanceSelectScrollFrameScrollChild:SetPanelColor("dark")
-
-  EncounterJournalEncounterFrameInstanceFrame:SetFixedPanelTemplate("Inset")
-
-  local comicHolder = CreateFrame('Frame', nil, EncounterJournal.encounter)
-  comicHolder:SetPoint("TOPLEFT", EncounterJournalEncounterFrameInfoBossesScrollFrame, "TOPLEFT", -20, 40)
-  comicHolder:SetPoint("BOTTOMRIGHT", EncounterJournalEncounterFrameInfoBossesScrollFrame, "BOTTOMRIGHT", 0, 0)
-  comicHolder:SetPanelTemplate("Comic")
-  comicHolder:SetPanelColor("dark")
-  EncounterJournal.encounter.info.encounterTitle:SetParent(comicHolder)
-  EncounterJournal.searchResults.TitleText:SetParent(comicHolder)
-
-  EncounterJournalNavBarHomeButton:SetButtonTemplate()
-  EncounterJournalEncounterFrameInfoDifficulty:SetButtonTemplate()
-  EncounterJournalEncounterFrameInfoDifficulty:SetFrameLevel(EncounterJournalEncounterFrameInfoDifficulty:GetFrameLevel() + 10)
-  EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:SetButtonTemplate()
-  EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:SetFrameLevel(EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:GetFrameLevel() + 10)
-
-  EncounterJournalInstanceSelectDungeonTab:SetButtonTemplate()
-  EncounterJournalInstanceSelectRaidTab:SetButtonTemplate()
-
-  STYLE:ApplyScrollBarStyle(EncounterJournalEncounterFrameInfoLootScrollBar)
-
-  local bgParent = EncounterJournal.encounter.instance
-  local loreParent = EncounterJournal.encounter.instance.loreScroll
-
-  bgParent.loreBG:SetPoint("TOPLEFT", bgParent, "TOPLEFT", 0, 0)
-  bgParent.loreBG:SetPoint("BOTTOMRIGHT", bgParent, "BOTTOMRIGHT", 0, 90)
-
-  loreParent:SetPanelTemplate("Pattern", true, 1, 1, 5)
-  loreParent:SetPanelColor("dark")
-  loreParent.child.lore:SetTextColor(1, 1, 1)
-  EncounterJournal.encounter.infoFrame.description:SetTextColor(1, 1, 1)
-
-  loreParent:SetFrameLevel(loreParent:GetFrameLevel() + 10)
-
-  local frame = EncounterJournal.instanceSelect.scroll.child
-  local index = 1
-  local instanceButton = frame["instance"..index];
-  while instanceButton do
-      Outline(instanceButton)
-      index = index + 1;
-      instanceButton = frame["instance"..index]
-  end
-
-  hooksecurefunc("EncounterJournal_ListInstances", function()
-    local frame = EncounterJournal.instanceSelect.scroll.child
-    local index = 1
-    local instanceButton = frame["instance"..index];
-    while instanceButton do
-        Outline(instanceButton)
-        index = index + 1;
-        instanceButton = frame["instance"..index]
-    end
-  end)
-
-  EncounterJournal.instanceSelect.raidsTab:GetFontString():SetTextColor(1, 1, 1);
-  hooksecurefunc("EncounterJournal_ToggleHeaders", function()
-    local usedHeaders = EncounterJournal.encounter.usedHeaders
-    for key,used in pairs(usedHeaders) do
-      if(not used.button.Panel) then
-          used:RemoveTextures(true)
-          used.button:RemoveTextures(true)
-          used.button:SetButtonTemplate()
-      end
-      used.description:SetTextColor(1, 1, 1)
-      used.button.portrait.icon:Hide()
-    end
-  end)
-
-  hooksecurefunc("EncounterJournal_LootUpdate", function()
-    local scrollFrame = EncounterJournal.encounter.info.lootScroll;
-    local offset = HybridScrollFrame_GetOffset(scrollFrame);
-    local items = scrollFrame.buttons;
-    local item, index;
-
-    local numLoot = EJ_GetNumLoot()
-
-    for i = 1,#items do
-      item = items[i];
-      index = offset + i;
-      if index <= numLoot then
-          item.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-          if(not item.Panel) then
-            item:SetFixedPanelTemplate("Slot")
-          end
-          item.slot:SetTextColor(0.5, 1, 0)
-          item.armorType:SetTextColor(1, 1, 0)
-          item.boss:SetTextColor(0.7, 0.08, 0)
-      end
-    end
-  end)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle('Blizzard_EncounterJournal', EncounterJournalStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/friends.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/friends.lua
deleted file mode 100644
index 358192b..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/friends.lua
+++ /dev/null
@@ -1,282 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local FrameSuffix = {
-	"LeftDisabled",
-	"MiddleDisabled",
-	"RightDisabled",
-	"Left",
-	"Middle",
-	"Right"
-};
-local FriendsFrameList1 = {
-	"ScrollOfResurrectionSelectionFrame",
-	"ScrollOfResurrectionSelectionFrameList",
-	"FriendsListFrame",
-	"FriendsTabHeader",
-	"FriendsFrameFriendsScrollFrame",
-	"WhoFrameColumnHeader1",
-	"WhoFrameColumnHeader2",
-	"WhoFrameColumnHeader3",
-	"WhoFrameColumnHeader4",
-	"ChannelListScrollFrame",
-	"ChannelRoster",
-	"FriendsFramePendingButton1",
-	"FriendsFramePendingButton2",
-	"FriendsFramePendingButton3",
-	"FriendsFramePendingButton4",
-	"ChannelFrameDaughterFrame",
-	"AddFriendFrame",
-	"AddFriendNoteFrame"
-};
--- local FriendsFrameList2 = {
--- 	"FriendsFrameBroadcastInputLeft",
--- 	"FriendsFrameBroadcastInputRight",
--- 	"FriendsFrameBroadcastInputMiddle",
--- 	"ChannelFrameDaughterFrameChannelNameLeft",
--- 	"ChannelFrameDaughterFrameChannelNameRight",
--- 	"ChannelFrameDaughterFrameChannelNameMiddle",
--- 	"ChannelFrameDaughterFrameChannelPasswordLeft",
--- 	"ChannelFrameDaughterFrameChannelPasswordRight",
--- 	"ChannelFrameDaughterFrameChannelPasswordMiddle"
--- };
-local FriendsFrameButtons = {
-	"FriendsFrameAddFriendButton",
-	"FriendsFrameSendMessageButton",
-	"WhoFrameWhoButton",
-	"WhoFrameAddFriendButton",
-	"WhoFrameGroupInviteButton",
-	"ChannelFrameNewButton",
-	"FriendsFrameIgnorePlayerButton",
-	"FriendsFrameUnsquelchButton",
-	"FriendsFramePendingButton1AcceptButton",
-	"FriendsFramePendingButton1DeclineButton",
-	"FriendsFramePendingButton2AcceptButton",
-	"FriendsFramePendingButton2DeclineButton",
-	"FriendsFramePendingButton3AcceptButton",
-	"FriendsFramePendingButton3DeclineButton",
-	"FriendsFramePendingButton4AcceptButton",
-	"FriendsFramePendingButton4DeclineButton",
-	"ChannelFrameDaughterFrameOkayButton",
-	"ChannelFrameDaughterFrameCancelButton",
-	"AddFriendEntryFrameAcceptButton",
-	"AddFriendEntryFrameCancelButton",
-	"AddFriendInfoFrameContinueButton",
-	"ScrollOfResurrectionSelectionFrameAcceptButton",
-	"ScrollOfResurrectionSelectionFrameCancelButton"
-};
-
-local function TabCustomHelper(this)
-	if not this then return end
-	for _,prop in pairs(FrameSuffix) do
-		local frame = _G[this:GetName()..prop]
-		frame:SetTexture(0,0,0,0)
-	end
-	this:GetHighlightTexture():SetTexture(0,0,0,0)
-	this.backdrop = CreateFrame("Frame", nil, this)
-	this.backdrop:SetFixedPanelTemplate("Default")
-	this.backdrop:SetFrameLevel(this:GetFrameLevel()-1)
-	this.backdrop:Point("TOPLEFT", 3, -8)
-	this.backdrop:Point("BOTTOMRIGHT", -6, 0)
-end
-
-local function ChannelList_OnUpdate()
-	for i = 1, MAX_DISPLAY_CHANNEL_BUTTONS do
-		local btn = _G["ChannelButton"..i]
-		if btn then
-			btn:RemoveTextures()
-			btn:SetHighlightTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight")
-			_G["ChannelButton"..i.."Text"]:SetFontTemplate(nil, 12)
-		end
-	end
-end
---[[
-##########################################################
-FRIENDSFRAME STYLER
-##########################################################
-]]--FriendsFrameBattlenetFrameScrollFrame
-local function FriendsFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.friends ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(FriendsFrame)
-
-	STYLE:ApplyScrollFrameStyle(FriendsFrameFriendsScrollFrameScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(WhoListScrollFrameScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(ChannelRosterScrollFrameScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(FriendsFriendsScrollFrameScrollBar)
-	FriendsFrameInset:RemoveTextures()
-	WhoFrameListInset:RemoveTextures()
-	WhoFrameEditBoxInset:RemoveTextures()
-	STYLE:ApplyEditBoxStyle(WhoFrameEditBoxInset)
-	ChannelFrameRightInset:RemoveTextures()
-	ChannelFrameLeftInset:RemoveTextures()
-	ChannelFrameRightInset:SetFixedPanelTemplate("Inset", true)
-	ChannelFrameLeftInset:SetFixedPanelTemplate("Inset", true)
-	LFRQueueFrameListInset:RemoveTextures()
-	LFRQueueFrameRoleInset:RemoveTextures()
-	LFRQueueFrameCommentInset:RemoveTextures()
-	LFRQueueFrameListInset:SetFixedPanelTemplate("Inset", true)
-	FriendsFrameFriendsScrollFrame:SetBasicPanel()
-	FriendsFrameFriendsScrollFrame.Panel:Point("TOPRIGHT", -4, 0)
-	WhoFrameListInset:SetBasicPanel()
-
-	for c, e in pairs(FriendsFrameButtons)do
-		 _G[e]:SetButtonTemplate()
-	end
-
-	-- for c, texture in pairs(FriendsFrameList2)do
-	-- 	 _G[texture]:Die()
-	-- end
-
-	for c, V in pairs(FriendsFrameList1)do
-		 _G[V]:RemoveTextures()
-	end
-
-	for u = 1, FriendsFrame:GetNumRegions()do
-		local a1 = select(u, FriendsFrame:GetRegions())
-		if a1:GetObjectType() == "Texture"then
-			a1:SetTexture(0,0,0,0)
-			a1:SetAlpha(0)
-		end
-	end
-
-	FriendsFrameStatusDropDown:SetPoint('TOPLEFT', FriendsTabHeader, 'TOPLEFT', 0, -27)
-	STYLE:ApplyDropdownStyle(FriendsFrameStatusDropDown, 70)
-	FriendsFrameBattlenetFrame:RemoveTextures()
-	FriendsFrameBattlenetFrame:SetHeight(22)
-	FriendsFrameBattlenetFrame:SetPoint('TOPLEFT', FriendsFrameStatusDropDown, 'TOPRIGHT', 0, -1)
-	FriendsFrameBattlenetFrame:SetFixedPanelTemplate("Inset")
-	FriendsFrameBattlenetFrame:SetBackdropColor(0,0,0,0.8)
-
-	-- FriendsFrameBattlenetFrame.BroadcastButton:GetNormalTexture():SetTexCoord(.28, .72, .28, .72)
-	-- FriendsFrameBattlenetFrame.BroadcastButton:GetPushedTexture():SetTexCoord(.28, .72, .28, .72)
-	-- FriendsFrameBattlenetFrame.BroadcastButton:GetHighlightTexture():SetTexCoord(.28, .72, .28, .72)
-	FriendsFrameBattlenetFrame.BroadcastButton:RemoveTextures()
-	FriendsFrameBattlenetFrame.BroadcastButton:SetSize(22,22)
-	FriendsFrameBattlenetFrame.BroadcastButton:SetPoint('TOPLEFT', FriendsFrameBattlenetFrame, 'TOPRIGHT', 8, 0)
-	FriendsFrameBattlenetFrame.BroadcastButton:SetButtonTemplate()
-	FriendsFrameBattlenetFrame.BroadcastButton:SetBackdropColor(0.4,0.4,0.4)
-	FriendsFrameBattlenetFrame.BroadcastButton:SetNormalTexture([[Interface\FriendsFrame\UI-Toast-BroadcastIcon]])
-	FriendsFrameBattlenetFrame.BroadcastButton:SetPushedTexture([[Interface\FriendsFrame\UI-Toast-BroadcastIcon]])
-	FriendsFrameBattlenetFrame.BroadcastButton:SetScript('OnClick', function()
-		SV:StaticPopup_Show("SET_BN_BROADCAST")
-	end)
-	FriendsFrameBattlenetFrame.Tag:SetFontTemplate(SV.Media.font.narrator,16,"NONE")
-	AddFriendNameEditBox:SetEditboxTemplate()
-	AddFriendFrame:SetFixedPanelTemplate("Transparent", true)
-	ScrollOfResurrectionSelectionFrame:SetFixedPanelTemplate('Transparent')
-	ScrollOfResurrectionSelectionFrameList:SetFixedPanelTemplate('Default')
-	STYLE:ApplyScrollFrameStyle(ScrollOfResurrectionSelectionFrameListScrollFrameScrollBar, 4)
-	ScrollOfResurrectionSelectionFrameTargetEditBox:SetEditboxTemplate()
-	FriendsFrameBroadcastInput:SetPanelTemplate("Default")
-	ChannelFrameDaughterFrameChannelName:SetPanelTemplate("Default")
-	ChannelFrameDaughterFrameChannelPassword:SetPanelTemplate("Default")
-
-	ChannelFrame:HookScript("OnShow", function()
-		ChannelRosterScrollFrame:RemoveTextures()
-	end)
-
-	hooksecurefunc("FriendsFrame_OnEvent", function()
-		ChannelRosterScrollFrame:RemoveTextures()
-	end)
-
-	WhoFrame:HookScript("OnShow", function()
-		ChannelRosterScrollFrame:RemoveTextures()
-	end)
-
-	hooksecurefunc("FriendsFrame_OnEvent", function()
-		WhoListScrollFrame:RemoveTextures()
-	end)
-
-	ChannelFrameDaughterFrame:SetBasicPanel()
-	STYLE:ApplyCloseButtonStyle(ChannelFrameDaughterFrameDetailCloseButton, ChannelFrameDaughterFrame)
-	STYLE:ApplyCloseButtonStyle(FriendsFrameCloseButton, FriendsFrame.Panel)
-	STYLE:ApplyDropdownStyle(WhoFrameDropDown, 150)
-
-	for i = 1, 4 do
-		 STYLE:ApplyTabStyle(_G["FriendsFrameTab"..i])
-	end
-
-	for i = 1, 3 do
-		 TabCustomHelper(_G["FriendsTabHeaderTab"..i])
-	end
-
-	hooksecurefunc("ChannelList_Update", ChannelList_OnUpdate)
-	FriendsFriendsFrame:SetBasicPanel()
-
-	_G["FriendsFriendsFrame"]:RemoveTextures()
-	_G["FriendsFriendsList"]:RemoveTextures()
-	_G["FriendsFriendsNoteFrame"]:RemoveTextures()
-
-	_G["FriendsFriendsSendRequestButton"]:SetButtonTemplate()
-	_G["FriendsFriendsCloseButton"]:SetButtonTemplate()
-
-	FriendsFriendsList:SetEditboxTemplate()
-	FriendsFriendsNoteFrame:SetEditboxTemplate()
-	STYLE:ApplyDropdownStyle(FriendsFriendsFrameDropDown, 150)
-	BNConversationInviteDialog:RemoveTextures()
-	BNConversationInviteDialog:SetPanelTemplate('Transparent')
-	BNConversationInviteDialogList:RemoveTextures()
-	BNConversationInviteDialogList:SetFixedPanelTemplate('Default')
-	BNConversationInviteDialogInviteButton:SetButtonTemplate()
-	BNConversationInviteDialogCancelButton:SetButtonTemplate()
-	for i = 1, BN_CONVERSATION_INVITE_NUM_DISPLAYED do
-		 _G["BNConversationInviteDialogListFriend"..i].checkButton:SetCheckboxTemplate(true)
-	end
-	FriendsTabHeaderSoRButton:SetFixedPanelTemplate('Default')
-	FriendsTabHeaderSoRButton:SetButtonTemplate()
-	FriendsTabHeaderSoRButtonIcon:SetDrawLayer('OVERLAY')
-	FriendsTabHeaderSoRButtonIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	FriendsTabHeaderSoRButtonIcon:FillInner()
-	FriendsTabHeaderSoRButton:Point('TOPRIGHT', FriendsTabHeader, 'TOPRIGHT', -8, -56)
-	FriendsTabHeaderRecruitAFriendButton:SetFixedPanelTemplate('Default')
-	FriendsTabHeaderRecruitAFriendButton:SetButtonTemplate()
-	FriendsTabHeaderRecruitAFriendButtonIcon:SetDrawLayer('OVERLAY')
-	FriendsTabHeaderRecruitAFriendButtonIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	FriendsTabHeaderRecruitAFriendButtonIcon:FillInner()
-
-	FriendsFrameIgnoreScrollFrame:SetFixedPanelTemplate("Inset")
-	STYLE:ApplyScrollFrameStyle(FriendsFrameIgnoreScrollFrameScrollBar, 4)
-	FriendsFramePendingScrollFrame:SetFixedPanelTemplate("Inset")
-	STYLE:ApplyScrollFrameStyle(FriendsFramePendingScrollFrameScrollBar, 4)
-	IgnoreListFrame:RemoveTextures()
-	PendingListFrame:RemoveTextures()
-	ScrollOfResurrectionFrame:RemoveTextures()
-	ScrollOfResurrectionFrameAcceptButton:SetButtonTemplate()
-	ScrollOfResurrectionFrameCancelButton:SetButtonTemplate()
-	ScrollOfResurrectionFrameTargetEditBoxLeft:SetTexture(0,0,0,0)
-	ScrollOfResurrectionFrameTargetEditBoxMiddle:SetTexture(0,0,0,0)
-	ScrollOfResurrectionFrameTargetEditBoxRight:SetTexture(0,0,0,0)
-	ScrollOfResurrectionFrameNoteFrame:RemoveTextures()
-	ScrollOfResurrectionFrameNoteFrame:SetFixedPanelTemplate()
-	ScrollOfResurrectionFrameTargetEditBox:SetFixedPanelTemplate()
-	ScrollOfResurrectionFrame:SetFixedPanelTemplate('Transparent')
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(FriendsFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/gossip.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/gossip.lua
deleted file mode 100644
index 1d06bdb..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/gossip.lua
+++ /dev/null
@@ -1,66 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-GOSSIP STYLER
-##########################################################
-]]--
-local function GossipStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.gossip ~= true then return end
-	ItemTextFrame:RemoveTextures(true)
-	ItemTextScrollFrame:RemoveTextures()
-	STYLE:ApplyCloseButtonStyle(GossipFrameCloseButton)
-	STYLE:ApplyPaginationStyle(ItemTextPrevPageButton)
-	STYLE:ApplyPaginationStyle(ItemTextNextPageButton)
-	ItemTextPageText:SetTextColor(1, 1, 1)
-	hooksecurefunc(ItemTextPageText, "SetTextColor", function(q, k, l, m)
-		if k ~= 1 or l ~= 1 or m ~= 1 then
-			ItemTextPageText:SetTextColor(1, 1, 1)
-		end
-	end)
-	ItemTextFrame:SetPanelTemplate("Pattern")
-	ItemTextFrameInset:Die()
-	STYLE:ApplyScrollFrameStyle(ItemTextScrollFrameScrollBar)
-	STYLE:ApplyCloseButtonStyle(ItemTextFrameCloseButton)
-	local r = {"GossipFrameGreetingPanel", "GossipFrame", "GossipFrameInset", "GossipGreetingScrollFrame"}
-	STYLE:ApplyScrollFrameStyle(GossipGreetingScrollFrameScrollBar, 5)
-	for s, t in pairs(r)do
-		_G[t]:RemoveTextures()
-	end
-	GossipFrame:SetPanelTemplate("Halftone")
-	GossipGreetingScrollFrame:SetFixedPanelTemplate("Inset", true)
-	GossipGreetingScrollFrame.spellTex = GossipGreetingScrollFrame:CreateTexture(nil, "ARTWORK")
-	GossipGreetingScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
-	GossipGreetingScrollFrame.spellTex:SetPoint("TOPLEFT", 2, -2)
-	GossipGreetingScrollFrame.spellTex:Size(506, 615)
-	GossipGreetingScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
-	_G["GossipFramePortrait"]:Die()
-	_G["GossipFrameGreetingGoodbyeButton"]:RemoveTextures()
-	_G["GossipFrameGreetingGoodbyeButton"]:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(GossipFrameCloseButton, GossipFrame.Panel)
-	NPCFriendshipStatusBar:RemoveTextures()
-	NPCFriendshipStatusBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	NPCFriendshipStatusBar:SetPanelTemplate("Default")
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(GossipStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/guild.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/guild.lua
deleted file mode 100644
index c85f985..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/guild.lua
+++ /dev/null
@@ -1,698 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local format = string.format;
-local internalTest = false;
-
-local GuildFrameList = {
-	"GuildNewPerksFrame",
-	"GuildFrameInset",
-	"GuildFrameBottomInset",
-	"GuildAllPerksFrame",
-	"GuildMemberDetailFrame",
-	"GuildMemberNoteBackground",
-	"GuildInfoFrameInfo",
-	"GuildLogContainer",
-	"GuildLogFrame",
-	"GuildRewardsFrame",
-	"GuildMemberOfficerNoteBackground",
-	"GuildTextEditContainer",
-	"GuildTextEditFrame",
-	"GuildRecruitmentRolesFrame",
-	"GuildRecruitmentAvailabilityFrame",
-	"GuildRecruitmentInterestFrame",
-	"GuildRecruitmentLevelFrame",
-	"GuildRecruitmentCommentFrame",
-	"GuildRecruitmentCommentInputFrame",
-	"GuildInfoFrameApplicantsContainer",
-	"GuildInfoFrameApplicants",
-	"GuildNewsBossModel",
-	"GuildNewsBossModelTextFrame"
-};
-
-local GuildButtonList = {
-	"GuildPerksToggleButton",
-	"GuildMemberRemoveButton",
-	"GuildMemberGroupInviteButton",
-	"GuildAddMemberButton",
-	"GuildViewLogButton",
-	"GuildControlButton",
-	"GuildRecruitmentListGuildButton",
-	"GuildTextEditFrameAcceptButton",
-	"GuildRecruitmentInviteButton",
-	"GuildRecruitmentMessageButton",
-	"GuildRecruitmentDeclineButton"
-};
-
-local GuildCheckBoxList = {
-	"GuildRecruitmentQuestButton",
-	"GuildRecruitmentDungeonButton",
-	"GuildRecruitmentRaidButton",
-	"GuildRecruitmentPvPButton",
-	"GuildRecruitmentRPButton",
-	"GuildRecruitmentWeekdaysButton",
-	"GuildRecruitmentWeekendsButton",
-	"GuildRecruitmentLevelAnyButton",
-	"GuildRecruitmentLevelMaxButton"
-};
-
-local CalendarIconList = {
-	[CALENDAR_EVENTTYPE_PVP] = "Interface\\Calendar\\UI-Calendar-Event-PVP",
-	[CALENDAR_EVENTTYPE_MEETING] = "Interface\\Calendar\\MeetingIcon",
-	[CALENDAR_EVENTTYPE_OTHER] = "Interface\\Calendar\\UI-Calendar-Event-Other"
-};
-
-local LFGFrameList = {
-  "LookingForGuildPvPButton",
-  "LookingForGuildWeekendsButton",
-  "LookingForGuildWeekdaysButton",
-  "LookingForGuildRPButton",
-  "LookingForGuildRaidButton",
-  "LookingForGuildQuestButton",
-  "LookingForGuildDungeonButton"
-};
-
-local function GCTabHelper(tab)
-	tab.Panel:Hide()
-	tab.bg1 = tab:CreateTexture(nil,"BACKGROUND")
-	tab.bg1:SetDrawLayer("BACKGROUND",4)
-	tab.bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	tab.bg1:SetVertexColor(unpack(SV.Media.color.default))
-	tab.bg1:FillInner(tab.Panel,1)
-	tab.bg3 = tab:CreateTexture(nil,"BACKGROUND")
-	tab.bg3:SetDrawLayer("BACKGROUND",2)
-	tab.bg3:SetTexture(0,0,0,1)
-	tab.bg3:SetAllPoints(tab.Panel)
-end
-
-local RankOrder_OnUpdate = function()
-	for b=1,GuildControlGetNumRanks()do
-		local frame = _G["GuildControlUIRankOrderFrameRank"..b]
-		if frame then
-			frame.downButton:SetButtonTemplate()
-			frame.upButton:SetButtonTemplate()
-			frame.deleteButton:SetButtonTemplate()
-			if not frame.nameBox.Panel then
-				frame.nameBox:SetEditboxTemplate()
-			end
-			frame.nameBox.Panel:Point("TOPLEFT",-2,-4)
-			frame.nameBox.Panel:Point("BOTTOMRIGHT",-4,4)
-		end
-	end
-end
-
-function GuildInfoEvents_SetButton(button, eventIndex)
-	local dateData = date("*t")
-	local month, day, weekday, hour, minute, eventType, title, calendarType, textureName = CalendarGetGuildEventInfo(eventIndex)
-	local formattedTime = GameTime_GetFormattedTime(hour, minute, true)
-	local unformattedText;
-	if dateData["day"] == day and dateData["month"] == month then
-		unformattedText = NORMAL_FONT_COLOR_CODE..GUILD_EVENT_TODAY..FONT_COLOR_CODE_CLOSE
-	else
-		local year = dateData["year"]
-		if month < dateData["month"] then
-			year = year + 1
-		end
-		local newTime = time{year = year, month = month, day = day}
-		if(((newTime - time()) < 518400) and CALENDAR_WEEKDAY_NAMES[weekday]) then
-			unformattedText = CALENDAR_WEEKDAY_NAMES[weekday]
-		elseif CALENDAR_WEEKDAY_NAMES[weekday]and day and month then
-			unformattedText = format(GUILD_NEWS_DATE, CALENDAR_WEEKDAY_NAMES[weekday], day, month)
-		end
-	end
-	if button.text and unformattedText then
-		button.text:SetFormattedText(GUILD_EVENT_FORMAT, unformattedText, formattedTime, title)
-	end
-	button.index = eventIndex;
-	if button.icon.type ~= "event" then
-		button.icon.type = "event"
-		button.icon:SetTexCoord(0, 1, 0, 1)
-		button.icon:SetWidth(14)
-		button.icon:SetHeight(14)
-	end
-	if CalendarIconList[eventType] then
-		button.icon:SetTexture(CalendarIconList[eventType])
-	else
-		button.icon:SetTexture("Interface\\LFGFrame\\LFGIcon-"..textureName)
-	end
-end
---[[
-##########################################################
-GUILDFRAME STYLERS
-##########################################################
-]]--
-local function GuildBankStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.gbank ~= true then
-		return
-	end
-
-	STYLE:ApplyWindowStyle(GuildBankFrame)
-
-	GuildBankEmblemFrame:RemoveTextures(true)
-	GuildBankMoneyFrameBackground:Die()
-	STYLE:ApplyScrollFrameStyle(GuildBankPopupScrollFrameScrollBar)
-
-	for b = 1, GuildBankFrame:GetNumChildren() do
-		local c = select(b, GuildBankFrame:GetChildren())
-		if c.GetPushedTexture and c:GetPushedTexture() and not c:GetName() then
-			STYLE:ApplyCloseButtonStyle(c)
-		end
-	end
-
-	GuildBankFrameDepositButton:SetButtonTemplate()
-	GuildBankFrameWithdrawButton:SetButtonTemplate()
-	GuildBankInfoSaveButton:SetButtonTemplate()
-	GuildBankFramePurchaseButton:SetButtonTemplate()
-	GuildBankFrameWithdrawButton:Point("RIGHT", GuildBankFrameDepositButton, "LEFT", -2, 0)
-	GuildBankInfoScrollFrame:Point('TOPLEFT', GuildBankInfo, 'TOPLEFT', -10, 12)
-	GuildBankInfoScrollFrame:RemoveTextures()
-	GuildBankInfoScrollFrame:Width(GuildBankInfoScrollFrame:GetWidth()-8)
-	GuildBankTransactionsScrollFrame:RemoveTextures()
-
-	for b = 1, NUM_GUILDBANK_COLUMNS do
-		if(_G["GuildBankColumn"..b]) then
-			_G["GuildBankColumn"..b]:RemoveTextures()
-
-			for d = 1, NUM_SLOTS_PER_GUILDBANK_GROUP do
-				local e = _G["GuildBankColumn"..b.."Button"..d]
-				local icon = _G["GuildBankColumn"..b.."Button"..d.."IconTexture"]
-				local texture = _G["GuildBankColumn"..b.."Button"..d.."NormalTexture"]
-				if texture then
-					texture:SetTexture(0,0,0,0)
-				end
-				e:SetSlotTemplate()
-				icon:FillInner()
-				icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			end
-		end
-	end
-
-	for b = 1, 8 do
-		local e = _G["GuildBankTab"..b.."Button"]
-		if(e) then
-			local texture = _G["GuildBankTab"..b.."ButtonIconTexture"]
-			_G["GuildBankTab"..b]:RemoveTextures(true)
-			e:RemoveTextures()
-			e:SetButtonTemplate()
-			e:SetFixedPanelTemplate("Default")
-			texture:FillInner()
-			texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		end
-	end
-
-	for b = 1, 4 do
-		STYLE:ApplyTabStyle(_G["GuildBankFrameTab"..b])
-	end
-
-	hooksecurefunc('GuildBankFrame_Update', function()
-		if GuildBankFrame.mode ~= "bank" then
-			return
-		end
-		local f = GetCurrentGuildBankTab()
-		local e, g, h, i, j, k, l, m;
-		for b = 1, MAX_GUILDBANK_SLOTS_PER_TAB do
-			g = mod(b, NUM_SLOTS_PER_GUILDBANK_GROUP)
-			if g == 0 then
-				g = NUM_SLOTS_PER_GUILDBANK_GROUP
-			end
-			h = ceil((b-0.5)/NUM_SLOTS_PER_GUILDBANK_GROUP)
-			e = _G["GuildBankColumn"..h.."Button"..g]
-			i = GetGuildBankItemLink(f, b)
-			if i then
-				j = select(3, GetItemInfo(i))
-				if j > 1 then
-					k, l, m = GetItemQualityColor(j)
-				else
-					k, l, m = 0,0,0,1
-				end
-			else
-				k, l, m = 0,0,0,1
-			end
-			e:SetBackdropBorderColor(k, l, m)
-		end
-	end)
-
-	GuildBankPopupFrame:RemoveTextures()
-	GuildBankPopupScrollFrame:RemoveTextures()
-	GuildBankPopupFrame:SetFixedPanelTemplate("Transparent", true)
-	GuildBankPopupFrame:Point("TOPLEFT", GuildBankFrame, "TOPRIGHT", 1, -30)
-	GuildBankPopupOkayButton:SetButtonTemplate()
-	GuildBankPopupCancelButton:SetButtonTemplate()
-	GuildBankPopupEditBox:SetEditboxTemplate()
-	GuildBankPopupNameLeft:Die()
-	GuildBankPopupNameRight:Die()
-	GuildBankPopupNameMiddle:Die()
-	GuildItemSearchBox:RemoveTextures()
-	GuildItemSearchBox:SetPanelTemplate("Overlay")
-	GuildItemSearchBox.Panel:Point("TOPLEFT", 10, -1)
-	GuildItemSearchBox.Panel:Point("BOTTOMRIGHT", 4, 1)
-
-	for b = 1, 16 do
-		local e = _G["GuildBankPopupButton"..b]
-		if(e) then
-			local icon = _G[e:GetName().."Icon"]
-			e:RemoveTextures()
-			e:SetFixedPanelTemplate("Default")
-			e:SetButtonTemplate()
-			icon:FillInner()
-			icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		end
-	end
-
-	STYLE:ApplyScrollFrameStyle(GuildBankTransactionsScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(GuildBankInfoScrollFrameScrollBar)
-end
-
-local function GuildFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.guild ~= true then
-		return
-	end
-
-	STYLE:ApplyWindowStyle(GuildFrame)
-
-	STYLE:ApplyCloseButtonStyle(GuildMemberDetailCloseButton)
-	STYLE:ApplyCloseButtonStyle(GuildFrameCloseButton)
-	GuildRewardsFrameVisitText:ClearAllPoints()
-	GuildRewardsFrameVisitText:SetPoint("TOP", GuildRewardsFrame, "TOP", 0, 30)
-
-	for i = 1, #GuildFrameList do
-		local frame = _G[GuildFrameList[i]]
-		if(frame) then
-			frame:RemoveTextures()
-		end
-	end
-
-	for i = 1, #GuildButtonList do
-		local button = _G[GuildButtonList[i]]
-		if(button) then
-			button:RemoveTextures(true)
-			button:SetButtonTemplate()
-		end
-	end
-
-	for i = 1, #GuildCheckBoxList do
-		local check = _G[GuildCheckBoxList[i]]
-		if(check) then check:SetCheckboxTemplate(true) end
-	end
-
-	for i = 1, 5 do
-		local tab = _G["GuildFrameTab"..i]
-		if(tab) then
-			STYLE:ApplyTabStyle(tab)
-			if i == 1 then
-				tab:Point("TOPLEFT", GuildFrame, "BOTTOMLEFT", -10, 3)
-			end
-		end
-	end
-
-	GuildNewsBossModel:SetBasicPanel()
-	GuildNewsBossModelTextFrame:SetPanelTemplate("Default")
-	GuildNewsBossModelTextFrame.Panel:Point("TOPLEFT", GuildNewsBossModel.Panel, "BOTTOMLEFT", 0, -1)
-	GuildNewsBossModel:SetPoint("TOPLEFT", GuildFrame, "TOPRIGHT", 4, -43)
-
-	GuildRecruitmentTankButton.checkButton:SetCheckboxTemplate(true)
-	GuildRecruitmentHealerButton.checkButton:SetCheckboxTemplate(true)
-	GuildRecruitmentDamagerButton.checkButton:SetCheckboxTemplate(true)
-
-	GuildFactionBar:RemoveTextures()
-	GuildFactionBar.progress:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	GuildFactionBar:SetPanelTemplate("Inset")
-	GuildFactionBar.Panel:Point("TOPLEFT", GuildFactionBar.progress, "TOPLEFT", -1, 1)
-	GuildFactionBar.Panel:Point("BOTTOMRIGHT", GuildFactionBar, "BOTTOMRIGHT", 1, 1)
-
-	if(SV.___interface < 60000) then
-		GuildLevelFrame:Die()
-
-		GuildXPFrame:ClearAllPoints()
-		GuildXPFrame:Point("TOP", GuildFrame, "TOP", 0, -40)
-
-		GuildXPBar:RemoveTextures()
-		GuildXPBar.progress:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-		GuildXPBar:SetPanelTemplate("Inset")
-		GuildXPBar.Panel:Point("TOPLEFT", GuildXPBar, "TOPLEFT", -1, -3)
-		GuildXPBar.Panel:Point("BOTTOMRIGHT", GuildXPBar, "BOTTOMRIGHT", 0, 1)
-	end
-
-	GuildLatestPerkButton:RemoveTextures()
-	GuildLatestPerkButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	GuildLatestPerkButtonIconTexture:ClearAllPoints()
-	GuildLatestPerkButtonIconTexture:Point("TOPLEFT", 2, -2)
-	GuildLatestPerkButton:SetPanelTemplate("Inset")
-	GuildLatestPerkButton.Panel:WrapOuter(GuildLatestPerkButtonIconTexture)
-
-	GuildNextPerkButton:RemoveTextures()
-	GuildNextPerkButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	GuildNextPerkButtonIconTexture:ClearAllPoints()
-	GuildNextPerkButtonIconTexture:Point("TOPLEFT", 2, -2)
-	GuildNextPerkButton:SetPanelTemplate("Inset")
-	GuildNextPerkButton.Panel:WrapOuter(GuildNextPerkButtonIconTexture)
-
-	GuildRosterContainer:SetBasicPanel(-2, 2, -1, -2)
-	STYLE:ApplyScrollFrameStyle(GuildRosterContainerScrollBar, 4, -4)
-	GuildRosterShowOfflineButton:SetCheckboxTemplate(true)
-
-	for i = 1, 4 do
-		local btn = _G["GuildRosterColumnButton"..i]
-		if(btn) then
-			btn:RemoveTextures(true)
-		end
-	end
-
-	STYLE:ApplyDropdownStyle(GuildRosterViewDropdown, 200)
-
-	for i = 1, 14 do
-		local btn = _G["GuildRosterContainerButton"..i.."HeaderButton"]
-		if(btn) then
-			btn:RemoveTextures()
-			btn:SetButtonTemplate()
-		end
-	end
-
-	GuildMemberDetailFrame:SetPanelTemplate("Default", true)
-	GuildMemberNoteBackground:SetBasicPanel()
-	GuildMemberOfficerNoteBackground:SetBasicPanel()
-
-	GuildMemberRankDropdown:SetFrameLevel(GuildMemberRankDropdown:GetFrameLevel()+5)
-	STYLE:ApplyDropdownStyle(GuildMemberRankDropdown, 182)
-	GuildMemberRankDropdown.Panel:SetBackdropColor(0,0,0,1)
-	GuildNewsFrame:RemoveTextures()
-	GuildNewsContainer:SetBasicPanel(-2, 2, 0, -2)
-
-	for i = 1, 17 do
-		local btn = _G["GuildNewsContainerButton"..i]
-		if(btn) then
-			if(btn.header) then btn.header:Die() end
-			btn:RemoveTextures()
-			btn:SetButtonTemplate()
-		end
-	end
-
-	GuildNewsFiltersFrame:RemoveTextures()
-	GuildNewsFiltersFrame:SetFixedPanelTemplate("Transparent", true)
-	STYLE:ApplyCloseButtonStyle(GuildNewsFiltersFrameCloseButton)
-
-	for i = 1, 7 do
-		local btn = _G["GuildNewsFilterButton"..i]
-		if(btn) then
-			btn:SetCheckboxTemplate(true)
-		end
-	end
-
-	GuildNewsFiltersFrame:Point("TOPLEFT", GuildFrame, "TOPRIGHT", 4, -20)
-	STYLE:ApplyScrollFrameStyle(GuildNewsContainerScrollBar, 4, 4)
-	STYLE:ApplyScrollFrameStyle(GuildInfoDetailsFrameScrollBar, 4, 4)
-
-	for i = 1, 3 do
-		local tab = _G["GuildInfoFrameTab"..i]
-		if(tab) then
-			tab:RemoveTextures()
-		end
-	end
-
-	local panel1 = CreateFrame("Frame", nil, GuildInfoFrameInfo)
-	panel1:SetPoint("TOPLEFT", GuildInfoFrameInfo, "TOPLEFT", 2, -22)
-	panel1:SetPoint("BOTTOMRIGHT", GuildInfoFrameInfo, "BOTTOMRIGHT", 0, 200)
-	panel1:SetBasicPanel()
-
-	local panel2 = CreateFrame("Frame", nil, GuildInfoFrameInfo)
-	panel2:SetPoint("TOPLEFT", GuildInfoFrameInfo, "TOPLEFT", 2, -158)
-	panel2:SetPoint("BOTTOMRIGHT", GuildInfoFrameInfo, "BOTTOMRIGHT", 0, 118)
-	panel2:SetBasicPanel()
-
-	local panel3 = CreateFrame("Frame", nil, GuildInfoFrameInfo)
-	panel3:SetPoint("TOPLEFT", GuildInfoFrameInfo, "TOPLEFT", 2, -233)
-	panel3:SetPoint("BOTTOMRIGHT", GuildInfoFrameInfo, "BOTTOMRIGHT", 0, 3)
-	panel3:SetBasicPanel()
-
-	GuildRecruitmentCommentInputFrame:SetFixedPanelTemplate("Default")
-	GuildTextEditFrame:SetFixedPanelTemplate("Transparent", true)
-	STYLE:ApplyScrollFrameStyle(GuildTextEditScrollFrameScrollBar, 4, 4)
-	GuildTextEditContainer:SetFixedPanelTemplate("Default")
-
-	local editChildren = GuildTextEditFrame:GetNumChildren()
-
-	for i = 1, editChildren do
-		local child = select(i, GuildTextEditFrame:GetChildren())
-		if(child:GetName() == "GuildTextEditFrameCloseButton") then
-			if(child:GetWidth() < 33) then
-				STYLE:ApplyCloseButtonStyle(child)
-			else
-				child:SetButtonTemplate()
-			end
-		end
-	end
-
-	STYLE:ApplyScrollFrameStyle(GuildLogScrollFrameScrollBar, 4, 4)
-	GuildLogFrame:SetBasicPanel()
-
-	local logChildren = GuildLogFrame:GetNumChildren()
-
-	for i = 1, logChildren do
-		local child = select(i, GuildLogFrame:GetChildren())
-		if child:GetName() == "GuildLogFrameCloseButton" then
-			if(child:GetWidth() < 33) then
-				STYLE:ApplyCloseButtonStyle(child)
-			else
-				child:SetButtonTemplate()
-			end
-		end
-	end
-
-	GuildRewardsFrame:SetBasicPanel(2, 0, -22, 18)
-	STYLE:ApplyScrollFrameStyle(GuildRewardsContainerScrollBar, 4, -4)
-
-	GuildNewPerksFrame:SetBasicPanel(-1, 0, 1, 0)
-	GuildPerksContainer:SetBasicPanel(-3, 0, 26, -3)
-
-	STYLE:ApplyScrollFrameStyle(GuildPerksContainerScrollBar, 4, 2)
-
-	for i = 1, 8 do
-		local button = _G["GuildPerksContainerButton"..i]
-		if button then
-			button:RemoveTextures()
-			if button.icon then
-				STYLE:ApplyItemButtonStyle(button, nil, true)
-				button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				button.icon:ClearAllPoints()
-				button.icon:Point("TOPLEFT", button, "TOPLEFT", 2, -2)
-				button.icon:SetParent(button.Panel)
-			end
-		end
-	end
-
-	for i = 1, 8 do
-		local button = _G["GuildRewardsContainerButton"..i]
-		if button then
-			button:RemoveTextures()
-			if button.icon then
-				button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				button.icon:ClearAllPoints()
-				button.icon:Point("TOPLEFT", button, "TOPLEFT", 2, -2)
-				button:SetFixedPanelTemplate("Button")
-				button.Panel:WrapOuter(button.icon)
-				button.icon:SetParent(button.Panel)
-			end
-		end
-	end
-
-	local maxCalendarEvents = CalendarGetNumGuildEvents();
-	local scrollFrame = GuildInfoFrameApplicantsContainer;
-  	local offset = HybridScrollFrame_GetOffset(scrollFrame);
-  	local buttonIndex,counter = 0,0;
-
-	for _,button in next, GuildInfoFrameApplicantsContainer.buttons do
-		counter = counter + 1;
-		buttonIndex = offset + counter;
-		button.selectedTex:Die()
-		button:GetHighlightTexture():Die()
-		button:SetBackdrop(nil)
-	end
-end
-
-local function GuildControlStyle()
-	if SV.db.SVStyle.blizzard.enable~=true or SV.db.SVStyle.blizzard.guildcontrol~=true then return end
-
-	GuildControlUI:RemoveTextures()
-	GuildControlUIHbar:RemoveTextures()
-	GuildControlUIRankBankFrameInset:RemoveTextures()
-	GuildControlUIRankBankFrameInsetScrollFrame:RemoveTextures()
-
-	STYLE:ApplyWindowStyle(GuildControlUI)
-
-	STYLE:ApplyScrollFrameStyle(GuildControlUIRankBankFrameInsetScrollFrameScrollBar)
-
-	hooksecurefunc("GuildControlUI_RankOrder_Update",RankOrder_OnUpdate)
-
-	GuildControlUIRankOrderFrameNewButton:HookScript("OnClick", function()
-		SV.Timers:ExecuteTimer(1,RankOrder_OnUpdate)
-	end)
-
-	STYLE:ApplyDropdownStyle(GuildControlUINavigationDropDown)
-	STYLE:ApplyDropdownStyle(GuildControlUIRankSettingsFrameRankDropDown,180)
-	GuildControlUINavigationDropDownButton:Width(20)
-	GuildControlUIRankSettingsFrameRankDropDownButton:Width(20)
-
-	for i=1, NUM_RANK_FLAGS do
-		local check = _G["GuildControlUIRankSettingsFrameCheckbox"..i]
-		if(check) then check:SetCheckboxTemplate(true) end
-	end
-
-	GuildControlUIRankOrderFrameNewButton:SetButtonTemplate()
-	GuildControlUIRankSettingsFrameGoldBox:SetEditboxTemplate()
-	GuildControlUIRankSettingsFrameGoldBox.Panel:Point("TOPLEFT",-2,-4)
-	GuildControlUIRankSettingsFrameGoldBox.Panel:Point("BOTTOMRIGHT",2,4)
-	GuildControlUIRankSettingsFrameGoldBox:RemoveTextures()
-	GuildControlUIRankBankFrame:RemoveTextures()
-
-	hooksecurefunc("GuildControlUI_BankTabPermissions_Update",function()
-		local tabs = GetNumGuildBankTabs()
-
-		if tabs < MAX_BUY_GUILDBANK_TABS then
-			tabs = tabs + 1
-		end
-
-		for i=1, tabs do
-			local tab = _G["GuildControlBankTab"..i.."Owned"]
-
-			if(tab) then
-				if(tab.tabIcon) then tab.tabIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9) end
-				if(tab.editBox) then tab.editBox:SetEditboxTemplate() end
-
-				if internalTest == false then
-					_G["GuildControlBankTab"..i.."BuyPurchaseButton"]:SetButtonTemplate()
-					_G["GuildControlBankTab"..i.."OwnedStackBox"]:SetEditboxTemplate()
-					_G["GuildControlBankTab"..i.."OwnedViewCheck"]:SetCheckboxTemplate(true)
-					_G["GuildControlBankTab"..i.."OwnedDepositCheck"]:SetCheckboxTemplate(true)
-					_G["GuildControlBankTab"..i.."OwnedUpdateInfoCheck"]:SetCheckboxTemplate(true)
-
-					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedStackBox"])
-					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedViewCheck"])
-					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedDepositCheck"])
-					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedUpdateInfoCheck"])
-				end
-			end
-		end
-		internalTest = true
-	end)
-
-	STYLE:ApplyDropdownStyle(GuildControlUIRankBankFrameRankDropDown, 180)
-
-	GuildControlUIRankBankFrameRankDropDownButton:Width(20)
-end
-
-
-local function GuildRegistrarStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.guildregistrar ~= true then
-		return
-	end
-
-	STYLE:ApplyWindowStyle(GuildRegistrarFrame, true, true)
-
-	GuildRegistrarFrameInset:Die()
-	GuildRegistrarFrameEditBox:RemoveTextures()
-	GuildRegistrarGreetingFrame:RemoveTextures()
-
-	GuildRegistrarFrameGoodbyeButton:SetButtonTemplate()
-	GuildRegistrarFrameCancelButton:SetButtonTemplate()
-	GuildRegistrarFramePurchaseButton:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(GuildRegistrarFrameCloseButton)
-	GuildRegistrarFrameEditBox:SetEditboxTemplate()
-
-	for b = 1, GuildRegistrarFrameEditBox:GetNumRegions()do
-		local a2 = select(b, GuildRegistrarFrameEditBox:GetRegions())
-		if a2 and a2:GetObjectType() == "Texture"then
-			if a2:GetTexture() == "Interface\\ChatFrame\\UI-ChatInputBorder-Left" or a2:GetTexture() == "Interface\\ChatFrame\\UI-ChatInputBorder-Right" then
-				a2:Die()
-			end
-		end
-	end
-
-	GuildRegistrarFrameEditBox:Height(20)
-
-	if(_G["GuildRegistrarButton1"]) then
-		_G["GuildRegistrarButton1"]:GetFontString():SetTextColor(1, 1, 1)
-	end
-	if(_G["GuildRegistrarButton2"]) then
-		_G["GuildRegistrarButton2"]:GetFontString():SetTextColor(1, 1, 1)
-	end
-
-	GuildRegistrarPurchaseText:SetTextColor(1, 1, 1)
-	AvailableServicesText:SetTextColor(1, 1, 0)
-end
-
-local function LFGuildFrameStyle()
-	if(SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.lfguild ~= true) then return end
-
-	STYLE:ApplyWindowStyle(LookingForGuildFrame, true)
-
-	for i = 1, #LFGFrameList do
-		local check = _G[LFGFrameList[i]]
-		if(check) then check:SetCheckboxTemplate(true) end
-	end
-
-	LookingForGuildTankButton.checkButton:SetCheckboxTemplate(true)
-	LookingForGuildHealerButton.checkButton:SetCheckboxTemplate(true)
-	LookingForGuildDamagerButton.checkButton:SetCheckboxTemplate(true)
-	LookingForGuildFrameInset:RemoveTextures(false)
-	LookingForGuildBrowseButton_LeftSeparator:Die()
-	LookingForGuildRequestButton_RightSeparator:Die()
-
-	STYLE:ApplyScrollFrameStyle(LookingForGuildBrowseFrameContainerScrollBar)
-	LookingForGuildBrowseButton:SetButtonTemplate()
-	LookingForGuildRequestButton:SetButtonTemplate()
-
-	STYLE:ApplyCloseButtonStyle(LookingForGuildFrameCloseButton)
-	LookingForGuildCommentInputFrame:SetPanelTemplate("Default")
-	LookingForGuildCommentInputFrame:RemoveTextures(false)
-
-	for u = 1, 5 do
-		local J = _G["LookingForGuildBrowseFrameContainerButton"..u]
-		local K = _G["LookingForGuildAppsFrameContainerButton"..u]
-		J:SetBackdrop(nil)
-		K:SetBackdrop(nil)
-	end
-
-	for u = 1, 3 do
-		local tab = _G["LookingForGuildFrameTab"..u]
-		STYLE:ApplyTabStyle(tab)
-		tab:SetFrameStrata("HIGH")
-		tab:SetFrameLevel(99)
-	end
-
-	GuildFinderRequestMembershipFrame:RemoveTextures(true)
-	GuildFinderRequestMembershipFrame:SetFixedPanelTemplate("Transparent", true)
-	GuildFinderRequestMembershipFrameAcceptButton:SetButtonTemplate()
-	GuildFinderRequestMembershipFrameCancelButton:SetButtonTemplate()
-	GuildFinderRequestMembershipFrameInputFrame:RemoveTextures()
-	GuildFinderRequestMembershipFrameInputFrame:SetFixedPanelTemplate("Default")
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_GuildBankUI",GuildBankStyle)
-STYLE:SaveBlizzardStyle("Blizzard_GuildUI",GuildFrameStyle)
-STYLE:SaveBlizzardStyle("Blizzard_GuildControlUI",GuildControlStyle)
-STYLE:SaveCustomStyle(GuildRegistrarStyle)
-STYLE:SaveBlizzardStyle("Blizzard_LookingForGuildUI",LFGuildFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/help.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/help.lua
deleted file mode 100644
index 4f026e9..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/help.lua
+++ /dev/null
@@ -1,174 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local HelpFrameList = {
-	"HelpFrameLeftInset",
-	"HelpFrameMainInset",
-	"HelpFrameKnowledgebase",
-	"HelpFrameHeader",
-	"HelpFrameKnowledgebaseErrorFrame"
-}
-
-local HelpFrameButtonList = {
-	"HelpFrameOpenTicketHelpItemRestoration",
-	"HelpFrameAccountSecurityOpenTicket",
-	"HelpFrameOpenTicketHelpTopIssues",
-	"HelpFrameOpenTicketHelpOpenTicket",
-	"HelpFrameKnowledgebaseSearchButton",
-	"HelpFrameKnowledgebaseNavBarHomeButton",
-	"HelpFrameCharacterStuckStuck",
-	"GMChatOpenLog",
-	"HelpFrameTicketSubmit",
-	"HelpFrameTicketCancel"
-}
-
-local function NavBarHelper(button)
-	for i = 1, #button.navList do
-		local this = button.navList[i]
-		local last = button.navList[i - 1]
-		if this and last then
-			local level = last:GetFrameLevel()
-			if(level >= 2) then
-				level = level - 2
-			else
-				level = 0
-			end
-			this:SetFrameLevel(level)
-		end
-	end
-end
---[[
-##########################################################
-HELPFRAME STYLER
-##########################################################
-]]--
-local function HelpFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.help ~= true then
-		return
-	end
-	tinsert(HelpFrameButtonList, "HelpFrameButton16")
-	tinsert(HelpFrameButtonList, "HelpFrameSubmitSuggestionSubmit")
-	tinsert(HelpFrameButtonList, "HelpFrameReportBugSubmit")
-	for d = 1, #HelpFrameList do
-		_G[HelpFrameList[d]]:RemoveTextures(true)
-		_G[HelpFrameList[d]]:SetPanelTemplate("Default")
-	end
-	HelpFrameHeader:SetFrameLevel(HelpFrameHeader:GetFrameLevel()+2)
-	HelpFrameKnowledgebaseErrorFrame:SetFrameLevel(HelpFrameKnowledgebaseErrorFrame:GetFrameLevel()+2)
-	HelpFrameReportBugScrollFrame:RemoveTextures()
-	HelpFrameReportBugScrollFrame:SetPanelTemplate("Default")
-	HelpFrameReportBugScrollFrame.Panel:Point("TOPLEFT", -4, 4)
-	HelpFrameReportBugScrollFrame.Panel:Point("BOTTOMRIGHT", 6, -4)
-	for d = 1, HelpFrameReportBug:GetNumChildren()do
-		local e = select(d, HelpFrameReportBug:GetChildren())
-		if not e:GetName() then
-			e:RemoveTextures()
-		end
-	end
-	STYLE:ApplyScrollFrameStyle(HelpFrameReportBugScrollFrameScrollBar)
-	HelpFrameSubmitSuggestionScrollFrame:RemoveTextures()
-	HelpFrameSubmitSuggestionScrollFrame:SetPanelTemplate("Default")
-	HelpFrameSubmitSuggestionScrollFrame.Panel:Point("TOPLEFT", -4, 4)
-	HelpFrameSubmitSuggestionScrollFrame.Panel:Point("BOTTOMRIGHT", 6, -4)
-	for d = 1, HelpFrameSubmitSuggestion:GetNumChildren()do
-		local e = select(d, HelpFrameSubmitSuggestion:GetChildren())
-		if not e:GetName() then
-			e:RemoveTextures()
-		end
-	end
-	STYLE:ApplyScrollFrameStyle(HelpFrameSubmitSuggestionScrollFrameScrollBar)
-	HelpFrameTicketScrollFrame:RemoveTextures()
-	HelpFrameTicketScrollFrame:SetPanelTemplate("Default")
-	HelpFrameTicketScrollFrame.Panel:Point("TOPLEFT", -4, 4)
-	HelpFrameTicketScrollFrame.Panel:Point("BOTTOMRIGHT", 6, -4)
-	for d = 1, HelpFrameTicket:GetNumChildren()do
-		local e = select(d, HelpFrameTicket:GetChildren())
-		if not e:GetName() then
-			e:RemoveTextures()
-		end
-	end
-	STYLE:ApplyScrollFrameStyle(HelpFrameKnowledgebaseScrollFrame2ScrollBar)
-	for d = 1, #HelpFrameButtonList do
-		_G[HelpFrameButtonList[d]]:RemoveTextures(true)
-		_G[HelpFrameButtonList[d]]:SetButtonTemplate()
-		if _G[HelpFrameButtonList[d]].text then
-			_G[HelpFrameButtonList[d]].text:ClearAllPoints()
-			_G[HelpFrameButtonList[d]].text:SetPoint("CENTER")
-			_G[HelpFrameButtonList[d]].text:SetJustifyH("CENTER")
-		end
-	end
-	for d = 1, 6 do
-		local f = _G["HelpFrameButton"..d]
-		f:SetButtonTemplate()
-		f.text:ClearAllPoints()
-		f.text:SetPoint("CENTER")
-		f.text:SetJustifyH("CENTER")
-	end
-	for d = 1, HelpFrameKnowledgebaseScrollFrameScrollChild:GetNumChildren()do
-		local f = _G["HelpFrameKnowledgebaseScrollFrameButton"..d]
-		f:RemoveTextures(true)
-		f:SetButtonTemplate()
-	end
-	HelpFrameKnowledgebaseSearchBox:ClearAllPoints()
-	HelpFrameKnowledgebaseSearchBox:Point("TOPLEFT", HelpFrameMainInset, "TOPLEFT", 13, -10)
-	HelpFrameKnowledgebaseNavBarOverlay:Die()
-	HelpFrameKnowledgebaseNavBar:RemoveTextures()
-	HelpFrame:RemoveTextures(true)
-	HelpFrame:SetPanelTemplate("Halftone")
-	HelpFrameKnowledgebaseSearchBox:SetEditboxTemplate()
-	STYLE:ApplyScrollFrameStyle(HelpFrameKnowledgebaseScrollFrameScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(HelpFrameTicketScrollFrameScrollBar, 4)
-	STYLE:ApplyCloseButtonStyle(HelpFrameCloseButton, HelpFrame.Panel)
-	STYLE:ApplyCloseButtonStyle(HelpFrameKnowledgebaseErrorFrameCloseButton, HelpFrameKnowledgebaseErrorFrame.Panel)
-	HelpFrameCharacterStuckHearthstone:SetButtonTemplate()
-	HelpFrameCharacterStuckHearthstone:SetFixedPanelTemplate("Default")
-	HelpFrameCharacterStuckHearthstone.IconTexture:FillInner()
-	HelpFrameCharacterStuckHearthstone.IconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	hooksecurefunc("NavBar_AddButton", function(h, k)
-		local i = h.navList[#h.navList]
-		if not i.styled then
-			i:SetButtonTemplate()
-			i.styled = true;
-			i:HookScript("OnClick", function()
-				NavBarHelper(h)
-			end)
-		end
-		NavBarHelper(h)
-	end)
-	HelpFrameGM_ResponseNeedMoreHelp:SetButtonTemplate()
-	HelpFrameGM_ResponseCancel:SetButtonTemplate()
-	for d = 1, HelpFrameGM_Response:GetNumChildren()do
-		local e = select(d, HelpFrameGM_Response:GetChildren())
-		if e and e:GetObjectType()
-		 == "Frame"and not e:GetName()
-		then
-			e:SetFixedPanelTemplate("Default")
-		end
-	end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(HelpFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/inspect.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/inspect.lua
deleted file mode 100644
index 1b4c06b..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/inspect.lua
+++ /dev/null
@@ -1,99 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local InspectSlotList = {
-	"HeadSlot",
-	"NeckSlot",
-	"ShoulderSlot",
-	"BackSlot",
-	"ChestSlot",
-	"ShirtSlot",
-	"TabardSlot",
-	"WristSlot",
-	"HandsSlot",
-	"WaistSlot",
-	"LegsSlot",
-	"FeetSlot",
-	"Finger0Slot",
-	"Finger1Slot",
-	"Trinket0Slot",
-	"Trinket1Slot",
-	"MainHandSlot",
-	"SecondaryHandSlot"
-};
---[[
-##########################################################
-INSPECT UI STYLER
-##########################################################
-]]--
-local function InspectStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.inspect ~= true then
-		return
-	end
-	InspectFrame:RemoveTextures(true)
-	InspectFrameInset:RemoveTextures(true)
-	InspectFrame:SetPanelTemplate('Action')
-	STYLE:ApplyCloseButtonStyle(InspectFrameCloseButton)
-	for d = 1, 4 do
-		STYLE:ApplyTabStyle(_G["InspectFrameTab"..d])
-	end
-	InspectModelFrameBorderTopLeft:Die()
-	InspectModelFrameBorderTopRight:Die()
-	InspectModelFrameBorderTop:Die()
-	InspectModelFrameBorderLeft:Die()
-	InspectModelFrameBorderRight:Die()
-	InspectModelFrameBorderBottomLeft:Die()
-	InspectModelFrameBorderBottomRight:Die()
-	InspectModelFrameBorderBottom:Die()
-	InspectModelFrameBorderBottom2:Die()
-	InspectModelFrameBackgroundOverlay:Die()
-	InspectModelFrame:SetPanelTemplate("Default")
-	for _, slot in pairs(InspectSlotList)do
-		local texture = _G["Inspect"..slot.."IconTexture"]
-		local frame = _G["Inspect"..slot]
-		frame:RemoveTextures()
-		frame:SetButtonTemplate()
-		texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		texture:FillInner()
-		frame:SetFrameLevel(frame:GetFrameLevel() + 1)
-		frame:SetFixedPanelTemplate()
-	end
-	hooksecurefunc('InspectPaperDollItemSlotButton_Update', function(q)
-		local unit = InspectFrame.unit;
-		local r = GetInventoryItemQuality(unit, q:GetID())
-		if r and q.Panel then
-			local s, t, f = GetItemQualityColor(r)
-			q.Panel:SetBackdropBorderColor(s, t, f)
-		elseif q.Panel then
-			q.Panel:SetBackdropBorderColor(0,0,0,1)
-		end
-	end)
-	InspectGuildFrameBG:Die()
-	InspectTalentFrame:RemoveTextures()
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_InspectUI",InspectStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/itemsocketing.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/itemsocketing.lua
deleted file mode 100644
index 4811c79..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/itemsocketing.lua
+++ /dev/null
@@ -1,66 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ITEMSOCKETING STYLER
-##########################################################
-]]--
-local function ItemSocketStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.socket ~= true then return end
-	ItemSocketingFrame:RemoveTextures()
-	ItemSocketingFrame:SetPanelTemplate("Action")
-	ItemSocketingFrameInset:Die()
-	ItemSocketingScrollFrame:RemoveTextures()
-	ItemSocketingScrollFrame:SetPanelTemplate("Inset", true)
-	STYLE:ApplyScrollFrameStyle(ItemSocketingScrollFrameScrollBar, 2)
-	for j = 1, MAX_NUM_SOCKETS do
-		local i = _G[("ItemSocketingSocket%d"):format(j)];
-		local C = _G[("ItemSocketingSocket%dBracketFrame"):format(j)];
-		local D = _G[("ItemSocketingSocket%dBackground"):format(j)];
-		local E = _G[("ItemSocketingSocket%dIconTexture"):format(j)];
-		i:RemoveTextures()
-		i:SetButtonTemplate()
-		i:SetFixedPanelTemplate("Button", true)
-		C:Die()
-		D:Die()
-		E:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		E:FillInner()
-	end
-	hooksecurefunc("ItemSocketingFrame_Update", function()
-		local max = GetNumSockets()
-		for j=1, max do
-			local i = _G[("ItemSocketingSocket%d"):format(j)];
-			local G = GetSocketTypes(j);
-			local color = GEM_TYPE_INFO[G]
-			i:SetBackdropColor(color.r, color.g, color.b, 0.15);
-			i:SetBackdropBorderColor(color.r, color.g, color.b)
-		end
-	end)
-	ItemSocketingFramePortrait:Die()
-	ItemSocketingSocketButton:ClearAllPoints()
-	ItemSocketingSocketButton:Point("BOTTOMRIGHT", ItemSocketingFrame, "BOTTOMRIGHT", -5, 5)
-	ItemSocketingSocketButton:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(ItemSocketingFrameCloseButton)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_ItemSocketingUI",ItemSocketStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/itemupgrade.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/itemupgrade.lua
deleted file mode 100644
index 2fceea7..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/itemupgrade.lua
+++ /dev/null
@@ -1,54 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ITEMUPGRADE UI STYLER
-##########################################################
-]]--
-local function ItemUpgradeStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.itemUpgrade ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(ItemUpgradeFrame, true)
-
-	STYLE:ApplyCloseButtonStyle(ItemUpgradeFrameCloseButton)
-	ItemUpgradeFrameUpgradeButton:RemoveTextures()
-	ItemUpgradeFrameUpgradeButton:SetButtonTemplate()
-	ItemUpgradeFrame.ItemButton:RemoveTextures()
-	ItemUpgradeFrame.ItemButton:SetSlotTemplate(true)
-	ItemUpgradeFrame.ItemButton.IconTexture:FillInner()
-	hooksecurefunc('ItemUpgradeFrame_Update', function()
-		if GetItemUpgradeItemInfo() then
-			ItemUpgradeFrame.ItemButton.IconTexture:SetAlpha(1)
-			ItemUpgradeFrame.ItemButton.IconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		else
-			ItemUpgradeFrame.ItemButton.IconTexture:SetAlpha(0)
-		end
-	end)
-	ItemUpgradeFrameMoneyFrame:RemoveTextures()
-	ItemUpgradeFrame.FinishedGlow:Die()
-	ItemUpgradeFrame.ButtonFrame:DisableDrawLayer('BORDER')
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_ItemUpgradeUI",ItemUpgradeStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/keybinding.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/keybinding.lua
deleted file mode 100644
index f1ceab5..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/keybinding.lua
+++ /dev/null
@@ -1,65 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-KEYBINDING STYLER
-##########################################################
-]]--
-local BindButtons = {
-	"KeyBindingFrameDefaultButton",
-	"KeyBindingFrameUnbindButton",
-	"KeyBindingFrameOkayButton",
-	"KeyBindingFrameCancelButton"
-}
-
-local function BindingStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.binding ~= true then return end
-
-	for _, gName in pairs(BindButtons)do
-		local btn = _G[gName]
-		if(btn) then
-			btn:RemoveTextures()
-			btn:SetButtonTemplate()
-		end
-	end
-
-	for i = 1, KEY_BINDINGS_DISPLAYED do
-		local button1 = _G["KeyBindingFrameBinding"..i.."Key1Button"]
-		if(button1) then
-			button1:RemoveTextures(true)
-			button1:SetEditboxTemplate()
-		end
-
-		local button2 = _G["KeyBindingFrameBinding"..i.."Key2Button"]
-		if(button2) then
-			button2:RemoveTextures(true)
-			button2:SetEditboxTemplate()
-		end
-	end
-
-	STYLE:ApplyScrollFrameStyle(KeyBindingFrameScrollFrameScrollBar)
-	KeyBindingFrame:RemoveTextures()
-	KeyBindingFrame:SetPanelTemplate("Halftone")
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_BindingUI", BindingStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/lfd.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/lfd.lua
deleted file mode 100644
index e288acd..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/lfd.lua
+++ /dev/null
@@ -1,412 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local LFDFrameList = {
-  "LFDQueueFrameRoleButtonHealer",
-  "LFDQueueFrameRoleButtonDPS",
-  "LFDQueueFrameRoleButtonLeader",
-  "LFDQueueFrameRoleButtonTank",
-  "RaidFinderQueueFrameRoleButtonHealer",
-  "RaidFinderQueueFrameRoleButtonDPS",
-  "RaidFinderQueueFrameRoleButtonLeader",
-  "RaidFinderQueueFrameRoleButtonTank",
-  "LFGInvitePopupRoleButtonTank",
-  "LFGInvitePopupRoleButtonHealer",
-  "LFGInvitePopupRoleButtonDPS"
-};
-
-local Incentive_OnShow = function(button)
-  ActionButton_ShowOverlayGlow(button:GetParent().checkButton)
-end
-
-local Incentive_OnHide = function(button)
-  ActionButton_HideOverlayGlow(button:GetParent().checkButton)
-end
-
-local LFDQueueRandom_OnUpdate = function()
-  LFDQueueFrame:RemoveTextures()
-  for u = 1, LFD_MAX_REWARDS do
-    local t = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u]
-    local icon = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."IconTexture"]
-    if t then
-      if not t.restyled then
-        local x = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."ShortageBorder"]
-        local y = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."Count"]
-        local z = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."NameFrame"]
-        icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-        icon:SetDrawLayer("OVERLAY")
-        y:SetDrawLayer("OVERLAY")
-        z:SetTexture()
-        z:SetSize(118, 39)
-        x:SetAlpha(0)
-        t.border = CreateFrame("Frame", nil, t)
-        t.border:SetFixedPanelTemplate()
-        t.border:WrapOuter(icon)
-        icon:SetParent(t.border)
-        y:SetParent(t.border)
-        t.restyled = true;
-        for A = 1, 3 do
-          local B = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."RoleIcon"..A]
-          if B then
-             B:SetParent(t.border)
-          end
-        end
-      end
-    end
-  end
-end
-
-local ScenarioQueueRandom_OnUpdate = function()
-  LFDQueueFrame:RemoveTextures()
-  for u = 1, LFD_MAX_REWARDS do
-    local t = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u]
-    local icon = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."IconTexture"]
-    if t then
-      if not t.restyled then
-        local x = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."ShortageBorder"]
-        local y = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."Count"]
-        local z = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."NameFrame"]icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-        icon:SetDrawLayer("OVERLAY")
-        y:SetDrawLayer("OVERLAY")
-        z:SetTexture()
-        z:SetSize(118, 39)
-        x:SetAlpha(0)
-        t.border = CreateFrame("Frame", nil, t)
-        t.border:SetFixedPanelTemplate()
-        t.border:WrapOuter(icon)
-        icon:SetParent(t.border)
-        y:SetParent(t.border)
-        t.restyled = true
-      end
-    end
-  end
-end
---[[
-##########################################################
-LFD STYLER
-##########################################################
-]]--
-local function LFDFrameStyle()
-  if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.lfg ~= true then return end
-
-  STYLE:ApplyWindowStyle(PVEFrame, true)
-
-  PVEFrameLeftInset:RemoveTextures()
-  RaidFinderQueueFrame:RemoveTextures(true)
-  PVEFrameBg:Hide()
-  PVEFrameTitleBg:Hide()
-  PVEFramePortrait:Hide()
-  PVEFramePortraitFrame:Hide()
-  PVEFrameTopRightCorner:Hide()
-  PVEFrameTopBorder:Hide()
-  PVEFrameLeftInsetBg:Hide()
-  PVEFrame.shadows:Hide()
-
-  LFDQueueFramePartyBackfillBackfillButton:SetButtonTemplate()
-  LFDQueueFramePartyBackfillNoBackfillButton:SetButtonTemplate()
-  LFDQueueFrameRandomScrollFrameChildFrameBonusRepFrame.ChooseButton:SetButtonTemplate()
-  ScenarioQueueFrameRandomScrollFrameChildFrameBonusRepFrame.ChooseButton:SetButtonTemplate()
-
-  STYLE:ApplyScrollFrameStyle(ScenarioQueueFrameRandomScrollFrameScrollBar)
-
-  GroupFinderFrameGroupButton1.icon:SetTexture("Interface\\Icons\\INV_Helmet_08")
-  GroupFinderFrameGroupButton2.icon:SetTexture("Interface\\Icons\\inv_helmet_06")
-  GroupFinderFrameGroupButton3.icon:SetTexture("Interface\\Icons\\Icon_Scenarios")
-  GroupFinderFrameGroupButton4.icon:SetTexture("Interface\\Addons\\SVUI\\assets\\artwork\\Icons\\SVUI-EMBLEM")
-
-  LFGDungeonReadyDialogBackground:Die()
-  LFGDungeonReadyDialogEnterDungeonButton:SetButtonTemplate()
-  LFGDungeonReadyDialogLeaveQueueButton:SetButtonTemplate()
-  STYLE:ApplyCloseButtonStyle(LFGDungeonReadyDialogCloseButton)
-
-  LFGDungeonReadyDialog:RemoveTextures()
-  LFGDungeonReadyDialog:SetPanelTemplate("Pattern", true, 2, 4, 4)
-  LFGDungeonReadyStatus:RemoveTextures()
-  LFGDungeonReadyStatus:SetPanelTemplate("Pattern", true, 2, 4, 4)
-  LFGDungeonReadyDialogRoleIconTexture:SetTexture("Interface\\LFGFrame\\UI-LFG-ICONS-ROLEBACKGROUNDS")
-  LFGDungeonReadyDialogRoleIconTexture:SetAlpha(0.5)
-
-  hooksecurefunc("LFGDungeonReadyPopup_Update", function()
-    local b, c, d, e, f, g, h, i, j, k, l, m = GetLFGProposal()
-    if LFGDungeonReadyDialogRoleIcon:IsShown() then
-      if h == "DAMAGER" then
-        LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
-      elseif h == "TANK" then
-        LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(LFDQueueFrameRoleButtonTank.background:GetTexCoord())
-      elseif h == "HEALER" then
-        LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
-      end
-    end
-  end)
-
-  LFDQueueFrameRoleButtonTankIncentiveIcon:SetAlpha(0)
-  LFDQueueFrameRoleButtonHealerIncentiveIcon:SetAlpha(0)
-  LFDQueueFrameRoleButtonDPSIncentiveIcon:SetAlpha(0)
-  LFDQueueFrameRoleButtonTankIncentiveIcon:HookScript("OnShow", Incentive_OnShow)
-  LFDQueueFrameRoleButtonHealerIncentiveIcon:HookScript("OnShow", Incentive_OnShow)
-  LFDQueueFrameRoleButtonDPSIncentiveIcon:HookScript("OnShow", Incentive_OnShow)
-  LFDQueueFrameRoleButtonTankIncentiveIcon:HookScript("OnHide", Incentive_OnHide)
-  LFDQueueFrameRoleButtonHealerIncentiveIcon:HookScript("OnHide", Incentive_OnHide)
-  LFDQueueFrameRoleButtonDPSIncentiveIcon:HookScript("OnHide", Incentive_OnHide)
-  LFDQueueFrameRoleButtonTank.shortageBorder:Die()
-  LFDQueueFrameRoleButtonDPS.shortageBorder:Die()
-  LFDQueueFrameRoleButtonHealer.shortageBorder:Die()
-  LFGDungeonReadyDialog.filigree:SetAlpha(0)
-  LFGDungeonReadyDialog.bottomArt:SetAlpha(0)
-  STYLE:ApplyCloseButtonStyle(LFGDungeonReadyStatusCloseButton)
-
-  for _,name in pairs(LFDFrameList) do
-    local frame = _G[name];
-    if frame then
-      frame.checkButton:RemoveTextures()
-      frame.checkButton:SetCheckboxTemplate(true, -4, -4)
-      frame.checkButton:SetFrameLevel(frame.checkButton:GetFrameLevel() + 50)
-      frame:DisableDrawLayer("BACKGROUND")
-      frame:DisableDrawLayer("OVERLAY")
-    end
-  end
-
-  LFDQueueFrameRoleButtonLeader.leadIcon = LFDQueueFrameRoleButtonLeader:CreateTexture(nil, 'BACKGROUND')
-  LFDQueueFrameRoleButtonLeader.leadIcon:SetTexture([[Interface\GroupFrame\UI-Group-LeaderIcon]])
-  LFDQueueFrameRoleButtonLeader.leadIcon:SetPoint(LFDQueueFrameRoleButtonLeader:GetNormalTexture():GetPoint())
-  LFDQueueFrameRoleButtonLeader.leadIcon:Size(50)
-  LFDQueueFrameRoleButtonLeader.leadIcon:SetAlpha(0.4)
-  RaidFinderQueueFrameRoleButtonLeader.leadIcon = RaidFinderQueueFrameRoleButtonLeader:CreateTexture(nil, 'BACKGROUND')
-  RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetTexture([[Interface\GroupFrame\UI-Group-LeaderIcon]])
-  RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetPoint(RaidFinderQueueFrameRoleButtonLeader:GetNormalTexture():GetPoint())
-  RaidFinderQueueFrameRoleButtonLeader.leadIcon:Size(50)
-  RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetAlpha(0.4)
-
-  hooksecurefunc('LFG_DisableRoleButton', function(self)
-    if self.checkButton:GetChecked() then
-       self.checkButton:SetAlpha(1)
-    else
-       self.checkButton:SetAlpha(0)
-    end
-    if self.background then
-       self.background:Show()
-    end
-  end)
-
-  hooksecurefunc('LFG_EnableRoleButton', function(self)
-    self.checkButton:SetAlpha(1)
-  end)
-
-  hooksecurefunc("LFG_PermanentlyDisableRoleButton", function(self)
-    if self.background then
-       self.background:Show()
-       self.background:SetDesaturated(true)
-    end
-  end)
-
-  for i = 1, 4 do
-    local button = GroupFinderFrame["groupButton"..i]
-    if(button) then
-      button.ring:Hide()
-      button.bg:SetTexture(0,0,0,0)
-      button.bg:SetAllPoints()
-      button:SetFixedPanelTemplate('Button')
-      button:SetButtonTemplate()
-      button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-      button.icon:SetPoint("LEFT", button, "LEFT")
-      button.icon:SetDrawLayer("OVERLAY")
-      button.icon:Size(40)
-      button.icon:ClearAllPoints()
-      button.icon:SetPoint("LEFT", 10, 0)
-      button.border = CreateFrame("Frame", nil, button)
-      button.border:SetFixedPanelTemplate('Default')
-      button.border:WrapOuter(button.icon)
-      button.icon:SetParent(button.border)
-    end
-  end
-
-  for u = 1, 2 do
-     STYLE:ApplyTabStyle(_G['PVEFrameTab'..u])
-  end
-
-  PVEFrameTab1:SetPoint('BOTTOMLEFT', PVEFrame, 'BOTTOMLEFT', 19, -31)
-  STYLE:ApplyCloseButtonStyle(PVEFrameCloseButton)
-  LFDParentFrame:RemoveTextures()
-  LFDQueueFrameFindGroupButton:RemoveTextures()
-  LFDParentFrameInset:RemoveTextures()
-  LFDQueueFrameSpecificListScrollFrame:RemoveTextures()
-  LFDQueueFrameFindGroupButton:SetButtonTemplate()
-  hooksecurefunc("LFDQueueFrameRandom_UpdateFrame", LFDQueueRandom_OnUpdate)
-
-  hooksecurefunc("ScenarioQueueFrameSpecific_Update", function()
-    for i = 1, NUM_SCENARIO_CHOICE_BUTTONS do
-      local box = _G["ScenarioQueueFrameSpecificButton"..i.."EnableButton"]
-      if(box and (not box.Panel)) then
-        box:RemoveTextures()
-        box:SetCheckboxTemplate(true, -2, -3)
-      end
-    end
-  end)
-
-  STYLE:ApplyDropdownStyle(LFDQueueFrameTypeDropDown)
-
-  RaidFinderFrame:RemoveTextures()
-  RaidFinderFrameBottomInset:RemoveTextures()
-  RaidFinderFrameRoleInset:RemoveTextures()
-  LFDQueueFrameRandomScrollFrameScrollBar:RemoveTextures()
-  ScenarioQueueFrameSpecificScrollFrame:RemoveTextures()
-  RaidFinderFrameBottomInsetBg:Hide()
-  RaidFinderFrameBtnCornerRight:Hide()
-  RaidFinderFrameButtonBottomBorder:Hide()
-  STYLE:ApplyDropdownStyle(RaidFinderQueueFrameSelectionDropDown)
-  RaidFinderFrameFindRaidButton:RemoveTextures()
-  RaidFinderFrameFindRaidButton:SetButtonTemplate()
-  RaidFinderQueueFrame:RemoveTextures()
-
-  for u = 1, LFD_MAX_REWARDS do
-    local t = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u]
-    local icon = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."IconTexture"]
-    if t then
-      if not t.restyled then
-        local x = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."ShortageBorder"]
-        local y = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."Count"]
-        local z = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."NameFrame"]
-        t:RemoveTextures()
-        icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-        icon:SetDrawLayer("OVERLAY")
-        y:SetDrawLayer("OVERLAY")
-        z:SetTexture()
-        z:SetSize(118, 39)
-        x:SetAlpha(0)
-        t.border = CreateFrame("Frame", nil, t)
-        t.border:SetFixedPanelTemplate()
-        t.border:WrapOuter(icon)
-        icon:SetParent(t.border)
-        y:SetParent(t.border)
-        t.restyled = true
-      end
-    end
-  end
-
-  ScenarioFinderFrameInset:DisableDrawLayer("BORDER")
-  ScenarioFinderFrame.TopTileStreaks:Hide()
-  ScenarioFinderFrameBtnCornerRight:Hide()
-  ScenarioFinderFrameButtonBottomBorder:Hide()
-  ScenarioQueueFrame.Bg:Hide()
-  ScenarioFinderFrameInset:GetRegions():Hide()
-  hooksecurefunc("ScenarioQueueFrameRandom_UpdateFrame", ScenarioQueueRandom_OnUpdate)
-  ScenarioQueueFrameFindGroupButton:RemoveTextures()
-  ScenarioQueueFrameFindGroupButton:SetButtonTemplate()
-  STYLE:ApplyDropdownStyle(ScenarioQueueFrameTypeDropDown)
-  LFRBrowseFrameRoleInset:DisableDrawLayer("BORDER")
-  RaidBrowserFrameBg:Hide()
-  LFRQueueFrameSpecificListScrollFrameScrollBackgroundTopLeft:Hide()
-  LFRQueueFrameSpecificListScrollFrameScrollBackgroundBottomRight:Hide()
-  LFRBrowseFrameRoleInsetBg:Hide()
-
-  for u = 1, 14 do
-    if u ~= 6 and u ~= 8 then
-       select(u, RaidBrowserFrame:GetRegions()):Hide()
-    end
-  end
-
-  RaidBrowserFrame:SetPanelTemplate('Pattern')
-  STYLE:ApplyCloseButtonStyle(RaidBrowserFrameCloseButton)
-  LFRQueueFrameFindGroupButton:SetButtonTemplate()
-  LFRQueueFrameAcceptCommentButton:SetButtonTemplate()
-  STYLE:ApplyScrollFrameStyle(LFRQueueFrameCommentScrollFrameScrollBar)
-  STYLE:ApplyScrollFrameStyle(LFDQueueFrameSpecificListScrollFrameScrollBar)
-
-  RaidBrowserFrame:HookScript('OnShow', function()
-    if not LFRQueueFrameSpecificListScrollFrameScrollBar.styled then
-      STYLE:ApplyScrollFrameStyle(LFRQueueFrameSpecificListScrollFrameScrollBar)
-      LFRBrowseFrame:RemoveTextures()
-      for u = 1, 2 do
-        local C = _G['LFRParentFrameSideTab'..u]
-        C:DisableDrawLayer('BACKGROUND')
-        C:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
-        C:GetNormalTexture():FillInner()
-        C.pushed = true;
-        C:SetPanelTemplate("Default")
-        C.Panel:SetAllPoints()
-        C:SetPanelTemplate()
-        hooksecurefunc(C:GetHighlightTexture(), "SetTexture", function(o, D)
-          if D ~= nil then
-             o:SetTexture(0,0,0,0)
-          end
-        end)
-        hooksecurefunc(C:GetCheckedTexture(), "SetTexture", function(o, D)
-          if D ~= nil then
-             o:SetTexture(0,0,0,0)
-          end
-        end)
-      end
-      for u = 1, 7 do
-        local C = _G['LFRBrowseFrameColumnHeader'..u]
-        C:DisableDrawLayer('BACKGROUND')
-      end
-      STYLE:ApplyDropdownStyle(LFRBrowseFrameRaidDropDown)
-      LFRBrowseFrameRefreshButton:SetButtonTemplate()
-      LFRBrowseFrameInviteButton:SetButtonTemplate()
-      LFRBrowseFrameSendMessageButton:SetButtonTemplate()
-      LFRQueueFrameSpecificListScrollFrameScrollBar.styled = true
-    end
-  end)
-
-  LFGInvitePopup:RemoveTextures()
-  LFGInvitePopup:SetPanelTemplate("Pattern", true, 2, 4, 4)
-  LFGInvitePopupAcceptButton:SetButtonTemplate()
-  LFGInvitePopupDeclineButton:SetButtonTemplate()
-
-  _G[LFDQueueFrame.PartyBackfill:GetName().."BackfillButton"]:SetButtonTemplate()
-  _G[LFDQueueFrame.PartyBackfill:GetName().."NoBackfillButton"]:SetButtonTemplate()
-  _G[RaidFinderQueueFrame.PartyBackfill:GetName().."BackfillButton"]:SetButtonTemplate()
-  _G[RaidFinderQueueFrame.PartyBackfill:GetName().."NoBackfillButton"]:SetButtonTemplate()
-  _G[ScenarioQueueFrame.PartyBackfill:GetName().."BackfillButton"]:SetButtonTemplate()
-  _G[ScenarioQueueFrame.PartyBackfill:GetName().."NoBackfillButton"]:SetButtonTemplate()
-
-  STYLE:ApplyScrollFrameStyle(LFDQueueFrameRandomScrollFrameScrollBar)
-  STYLE:ApplyScrollFrameStyle(ScenarioQueueFrameSpecificScrollFrameScrollBar)
-  LFDQueueFrameRandomScrollFrame:SetBasicPanel()
-  ScenarioQueueFrameRandomScrollFrame:SetBasicPanel()
-  RaidFinderQueueFrameScrollFrame:SetBasicPanel()
-
-  for u = 1, NUM_LFD_CHOICE_BUTTONS do
-    local box = _G["LFDQueueFrameSpecificListButton"..u.."EnableButton"]
-    if(box and (not box.Panel)) then
-      box:RemoveTextures()
-      box:SetCheckboxTemplate(true, -2, -3)
-      box:SetFrameLevel(box:GetFrameLevel() + 50)
-    end
-  end
-
-  for u = 1, NUM_LFR_CHOICE_BUTTONS do
-    local box = _G["LFRQueueFrameSpecificListButton"..u.."EnableButton"]
-    if(box and (not box.Panel)) then
-      box:RemoveTextures()
-      box:SetCheckboxTemplate(true, -2, -3)
-      box:SetFrameLevel(box:GetFrameLevel() + 50)
-    end
-  end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(LFDFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/loothistory.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/loothistory.lua
deleted file mode 100644
index b194a26..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/loothistory.lua
+++ /dev/null
@@ -1,131 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local MissingLootFrame_OnShow = function()
-  local N = GetNumMissingLootItems()
-  for u = 1, N do
-    local O = _G["MissingLootFrameItem"..u]
-    local icon = O.icon;
-    STYLE:ApplyItemButtonStyle(O, true)
-    local g, f, y, P = GetMissingLootItemInfo(u)
-    local color = GetItemQualityColor(P) or 0,0,0,1
-    icon:SetTexture(g)
-    M:SetBackdropBorderColor(color)
-  end
-  local Q = ceil(N/2)
-  MissingLootFrame:SetHeight(Q * 43 + 38 + MissingLootFrameLabel:GetHeight())
-end
-
-local LootHistoryFrame_OnUpdate = function(o)
-  local N = C_LootHistory.GetNumItems()
-  for u = 1, N do
-    local M = LootHistoryFrame.itemFrames[u]
-    if not M.isStyled then
-      local Icon = M.Icon:GetTexture()
-      M:RemoveTextures()
-      M.Icon:SetTexture(Icon)
-      M.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-      M:SetFixedPanelTemplate("Button")
-      M.Panel:WrapOuter(M.Icon)
-      M.Icon:SetParent(M.Panel)
-      M.isStyled = true
-    end
-  end
-end
---[[
-##########################################################
-LOOTHISTORY STYLER
-##########################################################
-]]--
-local function LootHistoryStyle()
-  LootHistoryFrame:SetFrameStrata('HIGH')
-  if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.loot ~= true then return end
-  local M = MissingLootFrame;
-  M:RemoveTextures()
-  M:SetPanelTemplate("Pattern")
-  STYLE:ApplyCloseButtonStyle(MissingLootFramePassButton)
-  hooksecurefunc("MissingLootFrame_Show", MissingLootFrame_OnShow)
-  LootHistoryFrame:RemoveTextures()
-  STYLE:ApplyCloseButtonStyle(LootHistoryFrame.CloseButton)
-  LootHistoryFrame:RemoveTextures()
-  LootHistoryFrame:SetFixedPanelTemplate('Transparent')
-  STYLE:ApplyCloseButtonStyle(LootHistoryFrame.ResizeButton)
-  LootHistoryFrame.ResizeButton:SetFixedPanelTemplate()
-  LootHistoryFrame.ResizeButton:Width(LootHistoryFrame:GetWidth())
-  LootHistoryFrame.ResizeButton:Height(19)
-  LootHistoryFrame.ResizeButton:ClearAllPoints()
-  LootHistoryFrame.ResizeButton:Point("TOP", LootHistoryFrame, "BOTTOM", 0, -2)
-  LootHistoryFrame.ResizeButton:SetNormalTexture("")
-
-  local txt = LootHistoryFrame.ResizeButton:CreateFontString(nil,"OVERLAY")
-  txt:SetFont(SV.Media.font.roboto, 14, "NONE")
-  txt:SetAllPoints(LootHistoryFrame.ResizeButton)
-  txt:SetJustifyH("CENTER")
-  txt:SetText("RESIZE")
-
-  LootHistoryFrameScrollFrame:RemoveTextures()
-  STYLE:ApplyScrollFrameStyle(LootHistoryFrameScrollFrameScrollBar)
-  hooksecurefunc("LootHistoryFrame_FullUpdate", LootHistoryFrame_OnUpdate)
-  MasterLooterFrame:RemoveTextures()
-  MasterLooterFrame:SetFixedPanelTemplate()
-  MasterLooterFrame:SetFrameStrata('FULLSCREEN_DIALOG')
-  hooksecurefunc("MasterLooterFrame_Show", function()
-    local J = MasterLooterFrame.Item;
-    if J then
-      local u = J.Icon;
-      local icon = u:GetTexture()
-      local S = ITEM_QUALITY_COLORS[LootFrame.selectedQuality]
-      J:RemoveTextures()
-      u:SetTexture(icon)
-      u:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-      J:SetPanelTemplate("Pattern")
-      J.Panel:WrapOuter(u)
-      J.Panel:SetBackdropBorderColor(S.r, S.g, S.b)
-    end
-    for u = 1, MasterLooterFrame:GetNumChildren()do
-      local T = select(u, MasterLooterFrame:GetChildren())
-      if T and not T.isStyled and not T:GetName() then
-        if T:GetObjectType() == "Button" then
-          if T:GetPushedTexture() then
-            STYLE:ApplyCloseButtonStyle(T)
-          else
-            T:SetFixedPanelTemplate()
-            T:SetButtonTemplate()
-          end
-          T.isStyled = true
-        end
-      end
-    end
-  end)
-  BonusRollFrame:RemoveTextures()
-  STYLE:ApplyAlertStyle(BonusRollFrame)
-  BonusRollFrame.PromptFrame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-  BonusRollFrame.PromptFrame.Timer.Bar:SetTexture(SV.Media.bar.default)
-  BonusRollFrame.PromptFrame.Timer.Bar:SetVertexColor(0.1, 1, 0.1)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(LootHistoryStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/lossofcontrol.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/lossofcontrol.lua
deleted file mode 100644
index 2dd0ada..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/lossofcontrol.lua
+++ /dev/null
@@ -1,62 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-LOSSOFCONTROL STYLER
-##########################################################
-]]--
-local _hook_LossOfControl = function(self, ...)
-  self.Icon:ClearAllPoints()
-  self.Icon:SetPoint("CENTER", self, "CENTER", 0, 0)
-  self.AbilityName:ClearAllPoints()
-  self.AbilityName:SetPoint("BOTTOM", self, 0, -28)
-  self.AbilityName.scrollTime = nil;
-  self.AbilityName:SetFont(SV.Media.font.names, 20, 'OUTLINE')
-  self.TimeLeft.NumberText:ClearAllPoints()
-  self.TimeLeft.NumberText:SetPoint("BOTTOM", self, 4, -58)
-  self.TimeLeft.NumberText.scrollTime = nil;
-  self.TimeLeft.NumberText:SetFont(SV.Media.font.numbers, 20, 'OUTLINE')
-  self.TimeLeft.SecondsText:ClearAllPoints()
-  self.TimeLeft.SecondsText:SetPoint("BOTTOM", self, 0, -80)
-  self.TimeLeft.SecondsText.scrollTime = nil;
-  self.TimeLeft.SecondsText:SetFont(SV.Media.font.roboto, 20, 'OUTLINE')
-  if self.Anim:IsPlaying() then
-     self.Anim:Stop()
-  end
-end
-
-local function LossOfControlStyle()
-  if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.losscontrol ~= true then return end
-  local IconBackdrop = CreateFrame("Frame", nil, LossOfControlFrame)
-  IconBackdrop:WrapOuter(LossOfControlFrame.Icon)
-  IconBackdrop:SetFrameLevel(LossOfControlFrame:GetFrameLevel()-1)
-  IconBackdrop:SetPanelTemplate("Slot")
-  LossOfControlFrame.Icon:SetTexCoord(.1, .9, .1, .9)
-  LossOfControlFrame:RemoveTextures()
-  LossOfControlFrame.AbilityName:ClearAllPoints()
-  LossOfControlFrame:Size(LossOfControlFrame.Icon:GetWidth() + 50)
-  --local bg = CreateFrame("Frame", nil, LossOfControlFrame)
-  hooksecurefunc("LossOfControlFrame_SetUpDisplay", _hook_LossOfControl)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(LossOfControlStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/macro.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/macro.lua
deleted file mode 100644
index 0ecbfc3..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/macro.lua
+++ /dev/null
@@ -1,125 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local MacroButtonList = {
-	"MacroSaveButton", "MacroCancelButton", "MacroDeleteButton", "MacroNewButton", "MacroExitButton", "MacroEditButton", "MacroFrameTab1", "MacroFrameTab2", "MacroPopupOkayButton", "MacroPopupCancelButton"
-}
-local MacroButtonList2 = {
-	"MacroDeleteButton", "MacroNewButton", "MacroExitButton"
-}
---[[
-##########################################################
-MACRO UI STYLER
-##########################################################
-]]--
-local function MacroUIStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.macro ~= true then return end
-	STYLE:ApplyCloseButtonStyle(MacroFrameCloseButton)
-	STYLE:ApplyScrollFrameStyle(MacroButtonScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(MacroFrameScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(MacroPopupScrollFrameScrollBar)
-	MacroFrame:Width(360)
-	for b = 1, #MacroButtonList do
-		_G[MacroButtonList[b]]:RemoveTextures()
-		_G[MacroButtonList[b]]:SetButtonTemplate()
-	end
-	for b = 1, #MacroButtonList2 do
-		local a1,p,a2,x,y = _G[MacroButtonList2[b]]:GetPoint()
-		_G[MacroButtonList2[b]]:SetPoint(a1,p,a2,x,-25)
-	end
-	for b = 1, 2 do
-		tab = _G[format("MacroFrameTab%s", b)]
-		tab:Height(22)
-	end
-	MacroFrameTab1:Point("TOPLEFT", MacroFrame, "TOPLEFT", 85, -39)
-	MacroFrameTab2:Point("LEFT", MacroFrameTab1, "RIGHT", 4, 0)
-	MacroFrame:RemoveTextures()
-	MacroFrame:SetPanelTemplate("Action")
-	MacroFrame.Panel:SetPoint("BOTTOMRIGHT",MacroFrame,"BOTTOMRIGHT",0,-25)
-	MacroFrameText:SetFont(SV.Media.font.roboto, 10, "OUTLINE")
-	MacroFrameTextBackground:RemoveTextures()
-	MacroFrameTextBackground:SetBasicPanel()
-	MacroPopupFrame:RemoveTextures()
-	MacroPopupFrame:SetBasicPanel()
-	MacroPopupScrollFrame:RemoveTextures()
-	MacroPopupScrollFrame:SetPanelTemplate("Pattern")
-	MacroPopupScrollFrame.Panel:Point("TOPLEFT", 51, 2)
-	MacroPopupScrollFrame.Panel:Point("BOTTOMRIGHT", -4, 4)
-	MacroButtonScrollFrame:SetBasicPanel()
-	MacroPopupEditBox:SetEditboxTemplate()
-	MacroPopupNameLeft:SetTexture(0,0,0,0)
-	MacroPopupNameMiddle:SetTexture(0,0,0,0)
-	MacroPopupNameRight:SetTexture(0,0,0,0)
-	MacroFrameInset:Die()
-	MacroEditButton:ClearAllPoints()
-	MacroEditButton:Point("BOTTOMLEFT", MacroFrameSelectedMacroButton, "BOTTOMRIGHT", 10, 0)
-	STYLE:ApplyScrollFrameStyle(MacroButtonScrollFrame)
-	MacroPopupFrame:HookScript("OnShow", function(c)
-		c:ClearAllPoints()
-		c:Point("TOPLEFT", MacroFrame, "TOPRIGHT", 5, -2)
-	end)
-	MacroFrameSelectedMacroButton:RemoveTextures()
-	MacroFrameSelectedMacroButton:SetSlotTemplate()
-	MacroFrameSelectedMacroButtonIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	MacroFrameSelectedMacroButtonIcon:FillInner()
-	MacroFrameCharLimitText:ClearAllPoints()
-	MacroFrameCharLimitText:Point("BOTTOM", MacroFrameTextBackground, -25, -35)
-	for b = 1, MAX_ACCOUNT_MACROS do
-		local d = _G["MacroButton"..b]
-		local e = _G["MacroButton"..b.."Icon"]
-		local f = _G["MacroPopupButton"..b]
-		local g = _G["MacroPopupButton"..b.."Icon"]
-		if d then
-			d:RemoveTextures()
-			d:SetButtonTemplate()
-			local level = d:GetFrameLevel()
-			if(level > 0) then
-				d.Panel:SetFrameLevel(level - 1)
-			else
-				d.Panel:SetFrameLevel(0)
-			end
-			d:SetBackdropColor(0, 0, 0, 0)
-		end
-		if e then
-			e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			e:FillInner()
-			e:SetDrawLayer("OVERLAY")
-		end
-		if f then
-			f:RemoveTextures()
-			f:SetButtonTemplate()
-			f:SetBackdropColor(0, 0, 0, 0)
-		end
-		if g then
-			g:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			g:FillInner()
-		end
-	end
-end
-
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_MacroUI", MacroUIStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/mailbox.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/mailbox.lua
deleted file mode 100644
index 6478e3f..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/mailbox.lua
+++ /dev/null
@@ -1,143 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local function MailFrame_OnUpdate()
-	for b = 1, ATTACHMENTS_MAX_SEND do
-		local d = _G["SendMailAttachment"..b]
-		if not d.styled then
-			d:RemoveTextures()d:SetFixedPanelTemplate("Default")
-			d:SetButtonTemplate()
-			d.styled = true
-		end
-		local e = d:GetNormalTexture()
-		if e then
-			e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			e:FillInner()
-		end
-	end
-end
---[[
-##########################################################
-MAILBOX STYLER
-##########################################################
-]]--
-local function MailBoxStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.mail ~= true then return end
-
-	STYLE:ApplyWindowStyle(MailFrame)
-
-	for b = 1, INBOXITEMS_TO_DISPLAY do
-		local i = _G["MailItem"..b]
-		i:RemoveTextures()
-		i:SetPanelTemplate("Inset")
-		i.Panel:Point("TOPLEFT", 2, 1)
-		i.Panel:Point("BOTTOMRIGHT", -2, 2)
-		local d = _G["MailItem"..b.."Button"]
-		d:RemoveTextures()
-		d:SetButtonTemplate()
-		local e = _G["MailItem"..b.."ButtonIcon"]
-		e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		e:FillInner()
-	end
-	STYLE:ApplyCloseButtonStyle(MailFrameCloseButton)
-	STYLE:ApplyPaginationStyle(InboxPrevPageButton)
-	STYLE:ApplyPaginationStyle(InboxNextPageButton)
-	MailFrameTab1:RemoveTextures()
-	MailFrameTab2:RemoveTextures()
-	STYLE:ApplyTabStyle(MailFrameTab1)
-	STYLE:ApplyTabStyle(MailFrameTab2)
-	SendMailScrollFrame:RemoveTextures(true)
-	SendMailScrollFrame:SetFixedPanelTemplate("Inset")
-	STYLE:ApplyScrollFrameStyle(SendMailScrollFrameScrollBar)
-	SendMailNameEditBox:SetEditboxTemplate()
-	SendMailSubjectEditBox:SetEditboxTemplate()
-	SendMailMoneyGold:SetEditboxTemplate()
-	SendMailMoneySilver:SetEditboxTemplate()
-	SendMailMoneyCopper:SetEditboxTemplate()
-	SendMailMoneyBg:Die()
-	SendMailMoneyInset:RemoveTextures()
-
-	_G["SendMailMoneySilver"]:SetEditboxTemplate()
-	_G["SendMailMoneySilver"].Panel:Point("TOPLEFT", -2, 1)
-	_G["SendMailMoneySilver"].Panel:Point("BOTTOMRIGHT", -12, -1)
-	_G["SendMailMoneySilver"]:SetTextInsets(-1, -1, -2, -2)
-
-	_G["SendMailMoneyCopper"]:SetEditboxTemplate()
-	_G["SendMailMoneyCopper"].Panel:Point("TOPLEFT", -2, 1)
-	_G["SendMailMoneyCopper"].Panel:Point("BOTTOMRIGHT", -12, -1)
-	_G["SendMailMoneyCopper"]:SetTextInsets(-1, -1, -2, -2)
-
-	SendMailNameEditBox.Panel:Point("BOTTOMRIGHT", 2, 4)
-	SendMailSubjectEditBox.Panel:Point("BOTTOMRIGHT", 2, 0)
-	SendMailFrame:RemoveTextures()
-
-	hooksecurefunc("SendMailFrame_Update", MailFrame_OnUpdate)
-	SendMailMailButton:SetButtonTemplate()
-	SendMailCancelButton:SetButtonTemplate()
-	OpenMailFrame:RemoveTextures(true)
-	OpenMailFrame:SetFixedPanelTemplate("Transparent", true)
-	OpenMailFrameInset:Die()
-	STYLE:ApplyCloseButtonStyle(OpenMailFrameCloseButton)
-	OpenMailReportSpamButton:SetButtonTemplate()
-	OpenMailReplyButton:SetButtonTemplate()
-	OpenMailDeleteButton:SetButtonTemplate()
-	OpenMailCancelButton:SetButtonTemplate()
-	InboxFrame:RemoveTextures()
-	MailFrameInset:Die()
-	OpenMailScrollFrame:RemoveTextures(true)
-	OpenMailScrollFrame:SetFixedPanelTemplate("Default")
-	STYLE:ApplyScrollFrameStyle(OpenMailScrollFrameScrollBar)
-	SendMailBodyEditBox:SetTextColor(1, 1, 1)
-	OpenMailBodyText:SetTextColor(1, 1, 1)
-	InvoiceTextFontNormal:SetTextColor(1, 1, 1)
-	OpenMailArithmeticLine:Die()
-	OpenMailLetterButton:RemoveTextures()
-	OpenMailLetterButton:SetFixedPanelTemplate("Default")
-	OpenMailLetterButton:SetButtonTemplate()
-	OpenMailLetterButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	OpenMailLetterButtonIconTexture:FillInner()
-	OpenMailMoneyButton:RemoveTextures()
-	OpenMailMoneyButton:SetFixedPanelTemplate("Default")
-	OpenMailMoneyButton:SetButtonTemplate()
-	OpenMailMoneyButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	OpenMailMoneyButtonIconTexture:FillInner()
-	for b = 1, ATTACHMENTS_MAX_SEND do
-		local d = _G["OpenMailAttachmentButton"..b]
-		d:RemoveTextures()
-		d:SetButtonTemplate()
-		local e = _G["OpenMailAttachmentButton"..b.."IconTexture"]
-		if e then
-			e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			e:FillInner()
-		end
-	end
-	OpenMailReplyButton:Point("RIGHT", OpenMailDeleteButton, "LEFT", -2, 0)
-	OpenMailDeleteButton:Point("RIGHT", OpenMailCancelButton, "LEFT", -2, 0)
-	SendMailMailButton:Point("RIGHT", SendMailCancelButton, "LEFT", -2, 0)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(MailBoxStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/merchant.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/merchant.lua
deleted file mode 100644
index f5b7d0a..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/merchant.lua
+++ /dev/null
@@ -1,90 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-FRAME STYLER
-##########################################################
-]]--
-local function MerchantStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.merchant ~= true then return end
-	MerchantFrame:RemoveTextures(true)
-	MerchantFrame:SetPanelTemplate("Halftone", false, nil, 2, 4)
-	local level = MerchantFrame:GetFrameLevel()
-	if(level > 0) then
-		MerchantFrame:SetFrameLevel(level - 1)
-	else
-		MerchantFrame:SetFrameLevel(0)
-	end
-	MerchantBuyBackItem:RemoveTextures(true)
-	MerchantBuyBackItem:SetPanelTemplate("Inset", true, 2, 2, 3)
-	MerchantBuyBackItem.Panel:SetFrameLevel(MerchantBuyBackItem.Panel:GetFrameLevel() + 1)
-	MerchantBuyBackItemItemButton:RemoveTextures()
-	MerchantBuyBackItemItemButton:SetButtonTemplate()
-	MerchantExtraCurrencyInset:RemoveTextures()
-	MerchantExtraCurrencyBg:RemoveTextures()
-	MerchantFrameInset:RemoveTextures()
-	MerchantMoneyBg:RemoveTextures()
-	MerchantMoneyInset:RemoveTextures()
-	MerchantFrameInset:SetPanelTemplate("Inset")
-	MerchantFrameInset.Panel:SetFrameLevel(MerchantFrameInset.Panel:GetFrameLevel() + 1)
-	STYLE:ApplyDropdownStyle(MerchantFrameLootFilter)
-	for b = 1, 2 do
-		STYLE:ApplyTabStyle(_G["MerchantFrameTab"..b])
-	end
-	for b = 1, 12 do
-		local d = _G["MerchantItem"..b.."ItemButton"]
-		local e = _G["MerchantItem"..b.."ItemButtonIconTexture"]
-		local o = _G["MerchantItem"..b]o:RemoveTextures(true)
-		o:SetFixedPanelTemplate("Inset")
-		d:RemoveTextures()
-		d:SetButtonTemplate()
-		d:Point("TOPLEFT", o, "TOPLEFT", 4, -4)
-		e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		e:FillInner()
-		_G["MerchantItem"..b.."MoneyFrame"]:ClearAllPoints()
-		_G["MerchantItem"..b.."MoneyFrame"]:Point("BOTTOMLEFT", d, "BOTTOMRIGHT", 3, 0)
-	end
-	MerchantBuyBackItemItemButton:RemoveTextures()
-	MerchantBuyBackItemItemButton:SetButtonTemplate()
-	MerchantBuyBackItemItemButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	MerchantBuyBackItemItemButtonIconTexture:FillInner()
-	MerchantRepairItemButton:SetButtonTemplate()
-	for b = 1, MerchantRepairItemButton:GetNumRegions()do
-		local p = select(b, MerchantRepairItemButton:GetRegions())
-		if p:GetObjectType() == "Texture"then
-			p:SetTexCoord(0.04, 0.24, 0.06, 0.5)
-			p:FillInner()
-		end
-	end MerchantGuildBankRepairButton:SetButtonTemplate()
-	MerchantGuildBankRepairButtonIcon:SetTexCoord(0.61, 0.82, 0.1, 0.52)
-	MerchantGuildBankRepairButtonIcon:FillInner()
-	MerchantRepairAllButton:SetButtonTemplate()
-	MerchantRepairAllIcon:SetTexCoord(0.34, 0.1, 0.34, 0.535, 0.535, 0.1, 0.535, 0.535)
-	MerchantRepairAllIcon:FillInner()
-	MerchantFrame:Width(360)
-	STYLE:ApplyCloseButtonStyle(MerchantFrameCloseButton, MerchantFrame.Panel)
-	STYLE:ApplyPaginationStyle(MerchantNextPageButton)
-	STYLE:ApplyPaginationStyle(MerchantPrevPageButton)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(MerchantStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/petbattle.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/petbattle.lua
deleted file mode 100644
index 47a2769..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/petbattle.lua
+++ /dev/null
@@ -1,378 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local PBAB_WIDTH = 382;
-local PBAB_HEIGHT = 72;
-local PetBattleActionBar = CreateFrame("Frame", "SVUI_PetBattleActionBar", UIParent)
-
-local function PetBattleButtonHelper(frame)
-	frame:SetPanelTemplate("Blackout")
-	frame:SetNormalTexture("")
-	frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	frame.Icon:SetDrawLayer('BORDER')
-	frame.Icon:SetParent(frame.Panel)
-	if(frame.SelectedHighlight) then frame.SelectedHighlight:SetAlpha(0) end
-	if(frame.checked) then frame.checked = true end
-	if(frame.pushed) then frame.pushed:FillInner(frame.Panel) end
-	if(frame.hover) then frame.hover:FillInner(frame.Panel) end
-	frame:SetFrameStrata('LOW')
-end
---[[
-##########################################################
-PETBATTLE STYLER
-##########################################################
-]]--
-local function PetBattleStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.petbattleui ~= true then
-		return
-	end
-
-	local PetBattleFrame = _G["PetBattleFrame"];
-	local BottomFrame = PetBattleFrame.BottomFrame;
-	local ActiveFramesList = { PetBattleFrame.ActiveAlly, PetBattleFrame.ActiveEnemy }
-	local StandardFramesList = { PetBattleFrame.Ally2, PetBattleFrame.Ally3, PetBattleFrame.Enemy2, PetBattleFrame.Enemy3 }
-
-	STYLE:ApplyCloseButtonStyle(FloatingBattlePetTooltip.CloseButton)
-	PetBattleFrame:RemoveTextures()
-
-	for i, frame in pairs(ActiveFramesList) do
-		if(not frame.isStyled) then
-			frame.Border:SetAlpha(0)
-			frame.Border2:SetAlpha(0)
-			frame.healthBarWidth = 300;
-
-			frame.IconBackdrop = CreateFrame("Frame", nil, frame)
-			frame.IconBackdrop:SetFrameLevel(0)
-			frame.IconBackdrop:WrapOuter(frame.Icon, 3, 3)
-			frame.IconBackdrop:SetSlotTemplate(true, 3, 0, 0, true);
-
-			frame.IconBackdrop.Panel:SetFixedPanelTemplate("Blackout")
-
-			frame.BorderFlash:Die()
-			frame.HealthBarBG:Die()
-			frame.HealthBarFrame:Die()
-			frame.HealthBarBackdrop = CreateFrame("Frame", nil, frame)
-			frame.HealthBarBackdrop:SetFrameLevel(frame:GetFrameLevel()-1)
-			frame.HealthBarBackdrop:SetFixedPanelTemplate("Blackout")
-			frame.HealthBarBackdrop:Width(frame.healthBarWidth+(2))
-			frame.ActualHealthBar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
-			frame.PetTypeFrame = CreateFrame("Frame", nil, frame)
-			frame.PetTypeFrame:Size(100, 23)
-			frame.PetTypeFrame.text = frame.PetTypeFrame:CreateFontString(nil, 'OVERLAY')
-			frame.PetTypeFrame.text:SetFont(SV.Media.font.roboto, 12, "OUTLINE")
-			frame.PetTypeFrame.text:SetText("")
-			frame.ActualHealthBar:ClearAllPoints()
-			frame.Name:SetFontObject(SystemFont_Shadow_Outline_Huge2)
-			frame.Name:ClearAllPoints()
-			frame.FirstAttack = frame:CreateTexture(nil, "ARTWORK")
-			frame.FirstAttack:Size(30)
-			frame.FirstAttack:SetTexture("Interface\\PetBattles\\PetBattle-StatIcons")
-			if i == 1 then
-				frame.HealthBarBackdrop:Point('TOPLEFT', frame.ActualHealthBar, 'TOPLEFT', -1, 1)
-				frame.HealthBarBackdrop:Point('BOTTOMLEFT', frame.ActualHealthBar, 'BOTTOMLEFT', -1, -1)
-				frame.ActualHealthBar:SetVertexColor(171/255, 214/255, 116/255)
-				PetBattleFrame.Ally2.iconPoint = frame.IconBackdrop;
-				PetBattleFrame.Ally3.iconPoint = frame.IconBackdrop;
-				frame.ActualHealthBar:Point('BOTTOMLEFT', frame.Icon, 'BOTTOMRIGHT', 10, 0)
-				frame.Name:Point('BOTTOMLEFT', frame.ActualHealthBar, 'TOPLEFT', 0, 8)
-				frame.PetTypeFrame:SetPoint("BOTTOMRIGHT", frame.HealthBarBackdrop, "TOPRIGHT", 0, 4)
-				frame.PetTypeFrame.text:SetPoint("RIGHT")
-				frame.FirstAttack:SetPoint("LEFT", frame.HealthBarBackdrop, "RIGHT", 5, 0)
-				frame.FirstAttack:SetTexCoord(frame.SpeedIcon:GetTexCoord())
-				frame.FirstAttack:SetVertexColor(.1, .1, .1, 1)
-			else
-				frame.HealthBarBackdrop:Point('TOPRIGHT', frame.ActualHealthBar, 'TOPRIGHT', 1, 1)
-				frame.HealthBarBackdrop:Point('BOTTOMRIGHT', frame.ActualHealthBar, 'BOTTOMRIGHT', 1, -1)
-				frame.ActualHealthBar:SetVertexColor(196/255, 30/255, 60/255)
-				PetBattleFrame.Enemy2.iconPoint = frame.IconBackdrop;
-				PetBattleFrame.Enemy3.iconPoint = frame.IconBackdrop;
-				frame.ActualHealthBar:Point('BOTTOMRIGHT', frame.Icon, 'BOTTOMLEFT', -10, 0)
-				frame.Name:Point('BOTTOMRIGHT', frame.ActualHealthBar, 'TOPRIGHT', 0, 8)
-				frame.PetTypeFrame:SetPoint("BOTTOMLEFT", frame.HealthBarBackdrop, "TOPLEFT", 2, 4)
-				frame.PetTypeFrame.text:SetPoint("LEFT")
-				frame.FirstAttack:SetPoint("RIGHT", frame.HealthBarBackdrop, "LEFT", -5, 0)
-				frame.FirstAttack:SetTexCoord(.5, 0, .5, 1)
-				frame.FirstAttack:SetVertexColor(.1, .1, .1, 1)
-			end
-			frame.HealthText:ClearAllPoints()
-			frame.HealthText:SetPoint('CENTER', frame.HealthBarBackdrop, 'CENTER')
-			frame.PetType:SetFrameLevel(frame.PetTypeFrame:GetFrameLevel()+2)
-			frame.PetType:ClearAllPoints()
-			frame.PetType:SetAllPoints(frame.PetTypeFrame)
-			frame.PetType:SetAlpha(0)
-			frame.LevelUnderlay:SetAlpha(0)
-			frame.Level:SetFontObject(NumberFont_Outline_Huge)
-			frame.Level:ClearAllPoints()
-			frame.Level:Point('BOTTOMLEFT', frame.Icon, 'BOTTOMLEFT', -2, -2)
-			if frame.SpeedIcon then
-				frame.SpeedIcon:ClearAllPoints()
-				frame.SpeedIcon:SetPoint("CENTER")
-				frame.SpeedIcon:SetAlpha(0)
-				frame.SpeedUnderlay:SetAlpha(0)
-			end
-			frame.isStyled = true
-		end
-	end
-
-	for _, frame in pairs(StandardFramesList) do
-		if(not frame.hasTempBG) then
-			frame.BorderAlive:SetAlpha(0)
-			frame.HealthBarBG:SetAlpha(0)
-			frame.HealthDivider:SetAlpha(0)
-			frame:Size(40)
-
-			frame.IconBackdrop = CreateFrame("Frame", nil, frame)
-			frame.IconBackdrop:SetFrameLevel(0)
-			frame.IconBackdrop:WrapOuter(frame, 2, 2)
-			frame.IconBackdrop:SetSlotTemplate(true, 2, 0, 0, true);
-
-			frame.IconBackdrop.Panel:SetFixedPanelTemplate("Blackout")
-
-			frame:ClearAllPoints()
-			frame.healthBarWidth = 40;
-			frame.ActualHealthBar:ClearAllPoints()
-			frame.ActualHealthBar:SetPoint("TOPLEFT", frame.IconBackdrop, 'BOTTOMLEFT', 2, -3)
-			frame.ActualHealthBar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
-			frame.HealthBarBackdrop = CreateFrame("Frame", nil, frame)
-			frame.HealthBarBackdrop:SetFrameLevel(frame:GetFrameLevel()-1)
-			frame.HealthBarBackdrop:SetFixedPanelTemplate("Blackout")
-			frame.HealthBarBackdrop:Width(frame.healthBarWidth+2)
-			frame.HealthBarBackdrop:Point('TOPLEFT', frame.ActualHealthBar, 'TOPLEFT', -1, 1)
-			frame.HealthBarBackdrop:Point('BOTTOMLEFT', frame.ActualHealthBar, 'BOTTOMLEFT', -1, -1)
-			frame.hasTempBG = true
-		end
-	end
-
-	PetBattleActionBar:SetParent(PetBattleFrame)
-	PetBattleActionBar:SetSize(PBAB_WIDTH, PBAB_HEIGHT)
-	PetBattleActionBar:EnableMouse(true)
-	PetBattleActionBar:SetFrameLevel(0)
-	PetBattleActionBar:SetFrameStrata('BACKGROUND')
-	PetBattleActionBar:SetFixedPanelTemplate("Blackout")
-
-	if(SuperDockBottomDataAnchor) then
-		PetBattleActionBar:SetPoint("BOTTOM", SuperDockBottomDataAnchor, "TOP", 0, 4)
-	else
-		PetBattleActionBar:SetPoint("BOTTOM", SV.UIParent, "BOTTOM", 0, 4)
-	end
-
-	PetBattleFrame.TopVersusText:ClearAllPoints()
-	PetBattleFrame.TopVersusText:SetPoint("TOP", PetBattleFrame, "TOP", 0, -42)
-
-	PetBattleFrame.Ally2:SetPoint("TOPRIGHT", PetBattleFrame.Ally2.iconPoint, "TOPLEFT", -6, -2)
-	PetBattleFrame.Ally3:SetPoint('TOPRIGHT', PetBattleFrame.Ally2, 'TOPLEFT', -8, 0)
-	PetBattleFrame.Enemy2:SetPoint("TOPLEFT", PetBattleFrame.Enemy2.iconPoint, "TOPRIGHT", 6, -2)
-	PetBattleFrame.Enemy3:SetPoint('TOPLEFT', PetBattleFrame.Enemy2, 'TOPRIGHT', 8, 0)
-
-	BottomFrame:RemoveTextures()
-	BottomFrame.TurnTimer:RemoveTextures()
-
-	BottomFrame.TurnTimer.SkipButton:ClearAllPoints()
-	BottomFrame.TurnTimer.SkipButton:SetParent(PetBattleActionBar)
-	BottomFrame.TurnTimer.SkipButton:Size((PBAB_WIDTH * 0.2) - 4, 18)
-	BottomFrame.TurnTimer.SkipButton:SetPoint("BOTTOMLEFT", PetBattleActionBar.Panel, "TOPLEFT", 2, 2)
-	BottomFrame.TurnTimer.SkipButton:SetButtonTemplate()
-
-	BottomFrame.TurnTimer:Size(BottomFrame.TurnTimer.SkipButton:GetWidth(), BottomFrame.TurnTimer.SkipButton:GetHeight())
-	BottomFrame.TurnTimer:ClearAllPoints()
-	BottomFrame.TurnTimer:SetPoint("TOP", SV.UIParent, "TOP", 0, -140)
-	BottomFrame.TurnTimer.TimerText:SetPoint("CENTER")
-
-	BottomFrame.FlowFrame:RemoveTextures()
-	BottomFrame.MicroButtonFrame:Die()
-	BottomFrame.Delimiter:RemoveTextures()
-
-	BottomFrame.xpBar:ClearAllPoints()
-	BottomFrame.xpBar:SetParent(PetBattleActionBar)
-	BottomFrame.xpBar:Size((PBAB_WIDTH * 0.8) - 4, 16)
-	BottomFrame.xpBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
-	BottomFrame.xpBar:SetPanelTemplate("Bar")
-	BottomFrame.xpBar:SetPoint("BOTTOMRIGHT", PetBattleActionBar.Panel, "TOPRIGHT", -3, 3)
-	BottomFrame.xpBar:SetScript("OnShow", function(self)
-		self:RemoveTextures()
-		self:SetStatusBarTexture(SV.Media.bar.default)
-	end)
-
-	for i = 1, 3 do
-		local pet = BottomFrame.PetSelectionFrame["Pet"..i]
-		pet.HealthBarBG:SetAlpha(0)
-		pet.HealthDivider:SetAlpha(0)
-		pet.ActualHealthBar:SetAlpha(0)
-		pet.SelectedTexture:SetAlpha(0)
-		pet.MouseoverHighlight:SetAlpha(0)
-		pet.Framing:SetAlpha(0)
-		pet.Icon:SetAlpha(0)
-		pet.Name:SetAlpha(0)
-		pet.DeadOverlay:SetAlpha(0)
-		pet.Level:SetAlpha(0)
-		pet.HealthText:SetAlpha(0)
-	end
-
-	PetBattleQueueReadyFrame:RemoveTextures()
-	PetBattleQueueReadyFrame:SetBasicPanel()
-	PetBattleQueueReadyFrame.AcceptButton:SetButtonTemplate()
-	PetBattleQueueReadyFrame.DeclineButton:SetButtonTemplate()
-	PetBattleQueueReadyFrame.Art:SetTexture([[Interface\PetBattles\PetBattlesQueue]])
-
-	--[[ TOO MANY GOD DAMN HOOKS ]]--
-	hooksecurefunc("PetBattleFrame_UpdateSpeedIndicators", function()
-		if not PetBattleFrame.ActiveAlly.SpeedIcon:IsShown() and not PetBattleFrame.ActiveEnemy.SpeedIcon:IsShown() then
-			PetBattleFrame.ActiveAlly.FirstAttack:Hide()
-			PetBattleFrame.ActiveEnemy.FirstAttack:Hide()
-			return
-		end
-		PetBattleFrame.ActiveAlly.FirstAttack:Show()
-		if PetBattleFrame.ActiveAlly.SpeedIcon:IsShown() then
-			PetBattleFrame.ActiveAlly.FirstAttack:SetVertexColor(0, 1, 0, 1)
-		else
-			PetBattleFrame.ActiveAlly.FirstAttack:SetVertexColor(.8, 0, .3, 1)
-		end
-		PetBattleFrame.ActiveEnemy.FirstAttack:Show()
-		if PetBattleFrame.ActiveEnemy.SpeedIcon:IsShown() then
-			PetBattleFrame.ActiveEnemy.FirstAttack:SetVertexColor(0, 1, 0, 1)
-		else
-			PetBattleFrame.ActiveEnemy.FirstAttack:SetVertexColor(.8, 0, .3, 1)
-		end
-	end)
-
-	hooksecurefunc("PetBattleUnitFrame_UpdatePetType", function(self)
-		if self.PetType then
-			local pettype = C_PetBattles.GetPetType(self.petOwner, self.petIndex)
-			if self.PetTypeFrame then
-				self.PetTypeFrame.text:SetText(PET_TYPE_SUFFIX[pettype])
-			end
-		end
-	end)
-
-	hooksecurefunc("PetBattleAuraHolder_Update", function(self)
-	    if ( not self.petOwner or not self.petIndex ) then
-	        self:Hide();
-	        return;
-	    end
-
-	    local nextFrame = 1;
-	    for i=1, C_PetBattles.GetNumAuras(self.petOwner, self.petIndex) do
-	        local auraID, instanceID, turnsRemaining, isBuff = C_PetBattles.GetAuraInfo(self.petOwner, self.petIndex, i);
-	        if ( (isBuff and self.displayBuffs) or (not isBuff and self.displayDebuffs) ) then
-				local frame = self.frames[nextFrame]
-				frame.DebuffBorder:Hide()
-				if not frame.isStyled then
-					frame:SetSlotTemplate(true, 2, -8,-2)
-					frame.Icon:FillInner(frame.Panel, 2, 2)
-					frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-					frame.isStyled = true
-				end
-				if isBuff then
-					frame:SetBackdropBorderColor(0, 1, 0)
-				else
-					frame:SetBackdropBorderColor(1, 0, 0)
-				end
-				frame.Duration:SetFont(SV.Media.font.numbers, 16, "OUTLINE")
-				frame.Duration:ClearAllPoints()
-				frame.Duration:SetPoint("BOTTOMLEFT", frame.Icon, "BOTTOMLEFT", 4, 4)
-				if turnsRemaining > 0 then
-					frame.Duration:SetText(turnsRemaining)
-				end
-				nextFrame = nextFrame + 1
-			end
-		end
-	end)
-
-	hooksecurefunc("PetBattleWeatherFrame_Update", function(self)
-		local auraID = C_PetBattles.GetAuraInfo(LE_BATTLE_PET_WEATHER, PET_BATTLE_PAD_INDEX, 1)
-		if auraID then
-			self.Icon:Hide()
-			self.Name:Hide()
-			self.DurationShadow:Hide()
-			self.Label:Hide()
-			self.Duration:SetPoint("CENTER", self, 0, 8)
-			self:ClearAllPoints()
-			self:SetPoint("TOP", SV.UIParent, 0, -15)
-		end
-	end)
-
-	hooksecurefunc("PetBattleUnitFrame_UpdateDisplay", function(self)
-		self.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		--Update the pet rarity border
-	    if (self.IconBackdrop) then
-	    	local petOwner = self.petOwner;
-    		local petIndex = self.petIndex;
-	        local rarity = C_PetBattles.GetBreedQuality(petOwner, petIndex);
-	        if (ENABLE_COLORBLIND_MODE ~= "1") then
-	        	self.IconBackdrop:SetBackdropColor(ITEM_QUALITY_COLORS[rarity-1].r, ITEM_QUALITY_COLORS[rarity-1].g, ITEM_QUALITY_COLORS[rarity-1].b);
-	            self.IconBackdrop:SetBackdropBorderColor(ITEM_QUALITY_COLORS[rarity-1].r, ITEM_QUALITY_COLORS[rarity-1].g, ITEM_QUALITY_COLORS[rarity-1].b);
-	        end
-	    end
-	end)
-
-	hooksecurefunc("PetBattleAbilityTooltip_Show", function()
-		SV:AnchorToCursor(PetBattlePrimaryAbilityTooltip)
-	end)
-
-	hooksecurefunc(BottomFrame.TurnTimer.SkipButton, "SetPoint", function(self, arg1, _, arg2, arg3, arg4)
-		if (arg1 ~= "BOTTOMLEFT" or arg2 ~= "TOPLEFT" or arg3 ~= 2 or arg4 ~= 2) then
-			self:ClearAllPoints()
-			self:SetPoint("BOTTOMLEFT", PetBattleActionBar.Panel, "TOPLEFT", 2, 2)
-		end
-	end)
-
-	hooksecurefunc("PetBattlePetSelectionFrame_Show", function()
-		BottomFrame.PetSelectionFrame:ClearAllPoints()
-		BottomFrame.PetSelectionFrame:SetPoint("BOTTOM", BottomFrame.xpBar, "TOP", 0, 8)
-	end)
-
-	hooksecurefunc("PetBattleFrame_UpdateActionBarLayout", function(self)
-		for i = 1, NUM_BATTLE_PET_ABILITIES do
-			local actionButton = self.BottomFrame.abilityButtons[i]
-			PetBattleButtonHelper(actionButton)
-			actionButton:SetParent(PetBattleActionBar)
-			actionButton:ClearAllPoints()
-			if i == 1 then
-				actionButton:SetPoint("BOTTOMLEFT", 10, 10)
-			else
-				local lastActionButton = self.BottomFrame.abilityButtons[i - 1]
-				actionButton:SetPoint("LEFT", lastActionButton, "RIGHT", 10, 0)
-			end
-		end
-		self.BottomFrame.SwitchPetButton:SetParent(PetBattleActionBar)
-		self.BottomFrame.SwitchPetButton:ClearAllPoints()
-		self.BottomFrame.SwitchPetButton:SetPoint("LEFT", self.BottomFrame.abilityButtons[3], "RIGHT", 10, 0)
-		PetBattleButtonHelper(self.BottomFrame.SwitchPetButton)
-		self.BottomFrame.CatchButton:SetParent(PetBattleActionBar)
-		self.BottomFrame.CatchButton:ClearAllPoints()
-		self.BottomFrame.CatchButton:SetPoint("LEFT", self.BottomFrame.SwitchPetButton, "RIGHT", 10, 0)
-		PetBattleButtonHelper(self.BottomFrame.CatchButton)
-		self.BottomFrame.ForfeitButton:SetParent(PetBattleActionBar)
-		self.BottomFrame.ForfeitButton:ClearAllPoints()
-		self.BottomFrame.ForfeitButton:SetPoint("LEFT", self.BottomFrame.CatchButton, "RIGHT", 10, 0)
-		PetBattleButtonHelper(self.BottomFrame.ForfeitButton)
-	end)
-
-	SV.SVTip:ReLoad()
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(PetBattleStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/petition.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/petition.lua
deleted file mode 100644
index e027b45..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/petition.lua
+++ /dev/null
@@ -1,53 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-PETITIONFRAME STYLER
-##########################################################
-]]--
-local function PetitionFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.petition ~= true then
-		return
-	end
-	PetitionFrame:RemoveTextures(true)
-	PetitionFrame:SetFixedPanelTemplate("Transparent", true)
-	PetitionFrameInset:Die()
-	PetitionFrameSignButton:SetButtonTemplate()
-	PetitionFrameRequestButton:SetButtonTemplate()
-	PetitionFrameRenameButton:SetButtonTemplate()
-	PetitionFrameCancelButton:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(PetitionFrameCloseButton)
-	PetitionFrameCharterTitle:SetTextColor(1, 1, 0)
-	PetitionFrameCharterName:SetTextColor(1, 1, 1)
-	PetitionFrameMasterTitle:SetTextColor(1, 1, 0)
-	PetitionFrameMasterName:SetTextColor(1, 1, 1)
-	PetitionFrameMemberTitle:SetTextColor(1, 1, 0)
-	for g = 1, 9 do
-		_G["PetitionFrameMemberName"..g]:SetTextColor(1, 1, 1)
-	end
-	PetitionFrameInstructions:SetTextColor(1, 1, 1)
-	PetitionFrameRenameButton:Point("LEFT", PetitionFrameRequestButton, "RIGHT", 3, 0)
-	PetitionFrameRenameButton:Point("RIGHT", PetitionFrameCancelButton, "LEFT", -3, 0)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(PetitionFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/petjournal.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/petjournal.lua
deleted file mode 100644
index 0cd1609..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/petjournal.lua
+++ /dev/null
@@ -1,274 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local function PetJournal_UpdateMounts()
-	for b = 1, #MountJournal.ListScrollFrame.buttons do
-		local d = _G["MountJournalListScrollFrameButton"..b]
-		local e = _G["MountJournalListScrollFrameButton"..b.."Name"]
-		if d.selectedTexture:IsShown() then
-			e:SetTextColor(1, 1, 0)
-			if d.Panel then
-				d:SetBackdropBorderColor(1, 1, 0)
-			end
-			if d.IconShadow then
-				d.IconShadow:SetBackdropBorderColor(1, 1, 0)
-			end
-		else
-			e:SetTextColor(1, 1, 1)
-			if d.Panel then
-				d:SetBackdropBorderColor(0,0,0,1)
-			end
-			if d.IconShadow then
-				d.IconShadow:SetBackdropBorderColor(0,0,0,1)
-			end
-		end
-	end
-end
-
-local function PetJournal_UpdatePets()
-	local u = PetJournal.listScroll.buttons;
-	local isWild = PetJournal.isWild;
-	for b = 1, #u do
-		local v = u[b].index;
-		if not v then
-			break
-		end
-		local d = _G["PetJournalListScrollFrameButton"..b]
-		local e = _G["PetJournalListScrollFrameButton"..b.."Name"]
-		local w, x, y, z, level, favorite, A, B, C, D, E, F, G, H, I = C_PetJournal.GetPetInfoByIndex(v, isWild)
-		if w ~= nil then
-			local J, K, L, M, N = C_PetJournal.GetPetStats(w)
-			if d.selectedTexture:IsShown() then
-				e:SetTextColor(1, 1, 0)
-			else
-				e:SetTextColor(1, 1, 1)
-			end
-			if N then
-				local color = ITEM_QUALITY_COLORS[N-1]
-				if d.Panel then
-					d.Panel:SetBackdropBorderColor(color.r, color.g, color.b)
-				end
-				if d.IconShadow then
-					d.IconShadow:SetBackdropBorderColor(color.r, color.g, color.b)
-				end
-			else
-				if d.Panel then
-					d.Panel:SetBackdropBorderColor(1, 1, 0, 0.5)
-				end
-				if d.IconShadow then
-					d.IconShadow:SetBackdropBorderColor(1, 1, 0, 0.5)
-				end
-			end
-		end
-	end
-end
---[[
-##########################################################
-FRAME STYLER
-##########################################################
-]]--
-local function PetJournalStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.mounts ~= true then return end
-
-	STYLE:ApplyWindowStyle(PetJournalParent)
-
-	PetJournalParentPortrait:Hide()
-	STYLE:ApplyTabStyle(PetJournalParentTab1)
-	STYLE:ApplyTabStyle(PetJournalParentTab2)
-	STYLE:ApplyCloseButtonStyle(PetJournalParentCloseButton)
-
-	MountJournal:RemoveTextures()
-	MountJournal.LeftInset:RemoveTextures()
-	MountJournal.RightInset:RemoveTextures()
-	MountJournal.MountDisplay:RemoveTextures()
-	MountJournal.MountDisplay.ShadowOverlay:RemoveTextures()
-	MountJournal.MountCount:RemoveTextures()
-	MountJournalListScrollFrame:RemoveTextures()
-	MountJournalMountButton:SetButtonTemplate()
-	MountJournalSearchBox:SetEditboxTemplate()
-
-	STYLE:ApplyScrollFrameStyle(MountJournalListScrollFrameScrollBar)
-	MountJournal.MountDisplay:SetFixedPanelTemplate("ModelComic")
-
-	for i = 1, #MountJournal.ListScrollFrame.buttons do
-		local button = _G["MountJournalListScrollFrameButton"..i]
-		if(button) then
-			STYLE:ApplyItemButtonStyle(button, nil, true, true)
-			local bar = _G["SVUI_MountSelectBar"..i]
-			if(bar) then bar:SetParent(button.Panel) end
-		end
-	end
-
-	hooksecurefunc("MountJournal_UpdateMountList", PetJournal_UpdateMounts)
-	MountJournalListScrollFrame:HookScript("OnVerticalScroll", PetJournal_UpdateMounts)
-	MountJournalListScrollFrame:HookScript("OnMouseWheel", PetJournal_UpdateMounts)
-	PetJournalSummonButton:RemoveTextures()
-	PetJournalFindBattle:RemoveTextures()
-	PetJournalSummonButton:SetButtonTemplate()
-	PetJournalFindBattle:SetButtonTemplate()
-	PetJournalRightInset:RemoveTextures()
-	PetJournalLeftInset:RemoveTextures()
-
-	for i = 1, 3 do
-		local button = _G["PetJournalLoadoutPet" .. i .. "HelpFrame"]
-		button:RemoveTextures()
-	end
-
-	PetJournalTutorialButton:Die()
-	PetJournal.PetCount:RemoveTextures()
-	PetJournalSearchBox:SetEditboxTemplate()
-	PetJournalFilterButton:RemoveTextures(true)
-	PetJournalFilterButton:SetButtonTemplate()
-	PetJournalListScrollFrame:RemoveTextures()
-	STYLE:ApplyScrollFrameStyle(PetJournalListScrollFrameScrollBar)
-
-	for i = 1, #PetJournal.listScroll.buttons do
-		local button = _G["PetJournalListScrollFrameButton" .. i]
-		local favorite = _G["PetJournalListScrollFrameButton" .. i .. "Favorite"]
-		STYLE:ApplyItemButtonStyle(button, false, true)
-		if(favorite) then
-			local fg = CreateFrame("Frame", nil, button)
-			fg:SetSize(40,40)
-			fg:SetPoint("TOPLEFT", button, "TOPLEFT", -1, 1)
-			fg:SetFrameLevel(button:GetFrameLevel() + 30)
-			favorite:SetParent(fg)
-			button.dragButton.favorite:SetParent(fg)
-		end
-
-		button.dragButton.levelBG:SetAlpha(0)
-		button.dragButton.level:SetParent(button)
-		button.petTypeIcon:SetParent(button.Panel)
-	end
-
-	hooksecurefunc('PetJournal_UpdatePetList', PetJournal_UpdatePets)
-	PetJournalListScrollFrame:HookScript("OnVerticalScroll", PetJournal_UpdatePets)
-	PetJournalListScrollFrame:HookScript("OnMouseWheel", PetJournal_UpdatePets)
-	PetJournalAchievementStatus:DisableDrawLayer('BACKGROUND')
-	STYLE:ApplyItemButtonStyle(PetJournalHealPetButton, true)
-	PetJournalHealPetButton.texture:SetTexture([[Interface\Icons\spell_magic_polymorphrabbit]])
-	PetJournalLoadoutBorder:RemoveTextures()
-
-	for b = 1, 3 do
-		local pjPet = _G['PetJournalLoadoutPet'..b]
-		pjPet:RemoveTextures()
-		pjPet.petTypeIcon:SetPoint('BOTTOMLEFT', 2, 2)
-		pjPet.dragButton:WrapOuter(_G['PetJournalLoadoutPet'..b..'Icon'])
-		pjPet.hover = true;
-		pjPet.pushed = true;
-		pjPet.checked = true;
-		STYLE:ApplyItemButtonStyle(pjPet, nil, nil, true)
-		pjPet.setButton:RemoveTextures()
-		_G['PetJournalLoadoutPet'..b..'HealthFrame'].healthBar:RemoveTextures()
-		_G['PetJournalLoadoutPet'..b..'HealthFrame'].healthBar:SetPanelTemplate('Default')
-		_G['PetJournalLoadoutPet'..b..'HealthFrame'].healthBar:SetStatusBarTexture(SV.Media.bar.default)
-		_G['PetJournalLoadoutPet'..b..'XPBar']:RemoveTextures()
-		_G['PetJournalLoadoutPet'..b..'XPBar']:SetPanelTemplate('Default')
-		_G['PetJournalLoadoutPet'..b..'XPBar']:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-		_G['PetJournalLoadoutPet'..b..'XPBar']:SetFrameLevel(_G['PetJournalLoadoutPet'..b..'XPBar']:GetFrameLevel()+2)
-		for v = 1, 3 do
-			local s = _G['PetJournalLoadoutPet'..b..'Spell'..v]
-			STYLE:ApplyItemButtonStyle(s)
-			s.FlyoutArrow:SetTexture([[Interface\Buttons\ActionBarFlyoutButton]])
-			_G['PetJournalLoadoutPet'..b..'Spell'..v..'Icon']:FillInner(s)
-			s.Panel:SetFrameLevel(s:GetFrameLevel() + 1)
-			_G['PetJournalLoadoutPet'..b..'Spell'..v..'Icon']:SetParent(s.Panel)
-		end
-	end
-
-	PetJournalSpellSelect:RemoveTextures()
-
-	for b = 1, 2 do
-		local Q = _G['PetJournalSpellSelectSpell'..b]
-		STYLE:ApplyItemButtonStyle(Q)
-		_G['PetJournalSpellSelectSpell'..b..'Icon']:FillInner(Q)
-		_G['PetJournalSpellSelectSpell'..b..'Icon']:SetDrawLayer('BORDER')
-	end
-
-	PetJournalPetCard:RemoveTextures()
-	STYLE:ApplyItemButtonStyle(PetJournalPetCard, nil, nil, true)
-	PetJournalPetCardInset:RemoveTextures()
-	PetJournalPetCardPetInfo.levelBG:SetAlpha(0)
-	PetJournalPetCardPetInfoIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	STYLE:ApplyItemButtonStyle(PetJournalPetCardPetInfo, nil, true, true)
-	local fg = CreateFrame("Frame", nil, PetJournalPetCardPetInfo)
-	fg:SetSize(40,40)
-	fg:SetPoint("TOPLEFT", PetJournalPetCardPetInfo, "TOPLEFT", -1, 1)
-	fg:SetFrameLevel(PetJournalPetCardPetInfo:GetFrameLevel() + 30)
-	PetJournalPetCardPetInfo.favorite:SetParent(fg)
-	PetJournalPetCardPetInfo.Panel:WrapOuter(PetJournalPetCardPetInfoIcon)
-	PetJournalPetCardPetInfoIcon:SetParent(PetJournalPetCardPetInfo.Panel)
-	PetJournalPetCardPetInfo.level:SetParent(PetJournalPetCardPetInfo.Panel)
-	local R = PetJournalPrimaryAbilityTooltip;R.Background:SetTexture(0,0,0,0)
-	if R.Delimiter1 then
-		R.Delimiter1:SetTexture(0,0,0,0)
-		R.Delimiter2:SetTexture(0,0,0,0)
-	end
-	R.BorderTop:SetTexture(0,0,0,0)
-	R.BorderTopLeft:SetTexture(0,0,0,0)
-	R.BorderTopRight:SetTexture(0,0,0,0)
-	R.BorderLeft:SetTexture(0,0,0,0)
-	R.BorderRight:SetTexture(0,0,0,0)
-	R.BorderBottom:SetTexture(0,0,0,0)
-	R.BorderBottomRight:SetTexture(0,0,0,0)
-	R.BorderBottomLeft:SetTexture(0,0,0,0)
-	R:SetFixedPanelTemplate("Transparent", true)
-	for b = 1, 6 do
-		local S = _G['PetJournalPetCardSpell'..b]
-		S:SetFrameLevel(S:GetFrameLevel() + 2)
-		S:DisableDrawLayer('BACKGROUND')
-		S:SetPanelTemplate('Transparent')
-		S.Panel:SetAllPoints()
-		S.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		S.icon:FillInner(S.Panel)
-	end
-	PetJournalPetCardHealthFrame.healthBar:RemoveTextures()
-	PetJournalPetCardHealthFrame.healthBar:SetPanelTemplate('Default')
-	PetJournalPetCardHealthFrame.healthBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	PetJournalPetCardXPBar:RemoveTextures()
-	PetJournalPetCardXPBar:SetPanelTemplate('Default')
-	PetJournalPetCardXPBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-
-	if(SV.___interface >= 60000) then
-		STYLE:ApplyTabStyle(PetJournalParentTab3)
-		ToyBox:RemoveTextures()
-		ToyBoxProgressBar:SetPanelTemplate("Bar", true)
-		ToyBoxSearchBox:SetEditboxTemplate()
-		ToyBoxFilterButton:SetButtonTemplate()
-		STYLE:ApplyDropdownStyle(ToyBoxFilterDropDown)
-		ToyBoxIconsFrame:SetBasicPanel()
-
-		for i = 1, 18 do
-			local gName = ("ToySpellButton%d"):format(i)
-			local button = _G[gName]
-			if(button) then
-				button:SetButtonTemplate()
-			end
-		end
-	end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_PetJournal", PetJournalStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/petstable.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/petstable.lua
deleted file mode 100644
index ab6ef17..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/petstable.lua
+++ /dev/null
@@ -1,50 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-PETSTABLE STYLER
-##########################################################
-]]--
-local function PetStableStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.stable ~= true then return end
-	PetStableFrame:RemoveTextures()
-	PetStableFrameInset:RemoveTextures()
-	PetStableLeftInset:RemoveTextures()
-	PetStableBottomInset:RemoveTextures()
-	PetStableFrame:SetPanelTemplate("Halftone")
-	PetStableFrameInset:SetFixedPanelTemplate('Inset')
-	STYLE:ApplyCloseButtonStyle(PetStableFrameCloseButton)
-	PetStablePrevPageButton:SetButtonTemplate()
-	PetStableNextPageButton:SetButtonTemplate()
-	STYLE:ApplyPaginationStyle(PetStablePrevPageButton)
-	STYLE:ApplyPaginationStyle(PetStableNextPageButton)
-	for j = 1, NUM_PET_ACTIVE_SLOTS do
-		 STYLE:ApplyItemButtonStyle(_G['PetStableActivePet'..j], true)
-	end
-	for j = 1, NUM_PET_STABLE_SLOTS do
-		 STYLE:ApplyItemButtonStyle(_G['PetStableStabledPet'..j], true)
-	end
-	PetStableSelectedPetIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(PetStableStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/pvp.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/pvp.lua
deleted file mode 100644
index ea8accb..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/pvp.lua
+++ /dev/null
@@ -1,163 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-PVP STYLER
-##########################################################
-]]--
--- LoadAddOn("Blizzard_PVPUI")
-
-local function PVPFrameStyle()
-	if (SV.db.SVStyle and (SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.pvp ~= true)) then
-		return
-	end
-
-	STYLE:ApplyWindowStyle(PVPUIFrame, true)
-
-	STYLE:ApplyCloseButtonStyle(PVPUIFrameCloseButton)
-
-	for g = 1, 2 do
-		STYLE:ApplyTabStyle(_G["PVPUIFrameTab"..g])
-	end
-
-	for i = 1, 3 do
-		local btn = _G["PVPQueueFrameCategoryButton"..i]
-		if(btn) then
-			btn.Background:Die()
-			btn.Ring:Die()
-			btn:SetButtonTemplate()
-			btn.Icon:Size(45)
-			btn.Icon:SetTexCoord(.15, .85, .15, .85)
-			btn.Icon:SetDrawLayer("OVERLAY", nil, 7)
-			btn.Panel:WrapOuter(btn.Icon)
-		end
-	end
-
-	STYLE:ApplyDropdownStyle(HonorFrameTypeDropDown)
-	HonorFrame.Inset:RemoveTextures()
-	HonorFrame.Inset:SetFixedPanelTemplate("Inset")
-	STYLE:ApplyScrollFrameStyle(HonorFrameSpecificFrameScrollBar)
-	HonorFrameSoloQueueButton:RemoveTextures()
-	HonorFrameGroupQueueButton:RemoveTextures()
-	HonorFrameSoloQueueButton:SetButtonTemplate()
-	HonorFrameGroupQueueButton:SetButtonTemplate()
-	HonorFrame.BonusFrame:RemoveTextures()
-	HonorFrame.BonusFrame.ShadowOverlay:RemoveTextures()
-	HonorFrame.BonusFrame.RandomBGButton:RemoveTextures()
-	HonorFrame.BonusFrame.RandomBGButton:SetFixedPanelTemplate("Button")
-	HonorFrame.BonusFrame.RandomBGButton:SetButtonTemplate()
-	HonorFrame.BonusFrame.RandomBGButton.SelectedTexture:FillInner()
-	HonorFrame.BonusFrame.RandomBGButton.SelectedTexture:SetTexture(1, 1, 0, 0.1)
-
-	if(SV.___interface < 60000) then
-		PVPUIFrame.Shadows:RemoveTextures()
-		HonorFrame.BonusFrame.CallToArmsButton:RemoveTextures()
-		HonorFrame.BonusFrame.CallToArmsButton:SetFixedPanelTemplate("Button")
-		HonorFrame.BonusFrame.CallToArmsButton:SetButtonTemplate()
-		HonorFrame.BonusFrame.CallToArmsButton.SelectedTexture:FillInner()
-		HonorFrame.BonusFrame.CallToArmsButton.SelectedTexture:SetTexture(1, 1, 0, 0.1)
-		for g = 1, 2 do
-			local I = HonorFrame.BonusFrame["WorldPVP"..g.."Button"]
-			I:RemoveTextures()
-			I:SetFixedPanelTemplate("Button", true)
-			I:SetButtonTemplate()
-			I.SelectedTexture:FillInner()
-			I.SelectedTexture:SetTexture(1, 1, 0, 0.1)
-		end
-		PVPUIFrame.LeftInset:RemoveTextures()
-	end
-
-	HonorFrame.BonusFrame.DiceButton:DisableDrawLayer("ARTWORK")
-	HonorFrame.BonusFrame.DiceButton:SetHighlightTexture("")
-	HonorFrame.RoleInset:RemoveTextures()
-	HonorFrame.RoleInset.DPSIcon.checkButton:SetCheckboxTemplate(true)
-	HonorFrame.RoleInset.TankIcon.checkButton:SetCheckboxTemplate(true)
-	HonorFrame.RoleInset.HealerIcon.checkButton:SetCheckboxTemplate(true)
-	HonorFrame.RoleInset.TankIcon:DisableDrawLayer("OVERLAY")
-	HonorFrame.RoleInset.TankIcon:DisableDrawLayer("BACKGROUND")
-	HonorFrame.RoleInset.HealerIcon:DisableDrawLayer("OVERLAY")
-	HonorFrame.RoleInset.HealerIcon:DisableDrawLayer("BACKGROUND")
-	HonorFrame.RoleInset.DPSIcon:DisableDrawLayer("OVERLAY")
-	HonorFrame.RoleInset.DPSIcon:DisableDrawLayer("BACKGROUND")
-	hooksecurefunc("LFG_PermanentlyDisableRoleButton", function(n)
-		if n.bg then
-			n.bg:SetDesaturated(true)
-		end
-	end)
-
-	ConquestFrame.Inset:RemoveTextures()
-	ConquestPointsBarLeft:Die()
-	ConquestPointsBarRight:Die()
-	ConquestPointsBarMiddle:Die()
-	ConquestPointsBarBG:Die()
-	ConquestPointsBarShadow:Die()
-	ConquestPointsBar.progress:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	ConquestPointsBar:SetFixedPanelTemplate('Inset')
-	ConquestPointsBar.Panel:WrapOuter(ConquestPointsBar, nil, -2)
-	ConquestFrame:RemoveTextures()
-	ConquestFrame.ShadowOverlay:RemoveTextures()
-	ConquestJoinButton:RemoveTextures()
-	ConquestJoinButton:SetButtonTemplate()
-	ConquestFrame.RatedBG:RemoveTextures()
-	ConquestFrame.RatedBG:SetFixedPanelTemplate("Inset")
-	ConquestFrame.RatedBG:SetButtonTemplate()
-	ConquestFrame.RatedBG.SelectedTexture:FillInner()
-	ConquestFrame.RatedBG.SelectedTexture:SetTexture(1, 1, 0, 0.1)
-	WarGamesFrame:RemoveTextures()
-	WarGamesFrame.RightInset:RemoveTextures()
-	WarGamesFrameInfoScrollFrame:RemoveTextures()
-	WarGamesFrameInfoScrollFrameScrollBar:RemoveTextures()
-	WarGameStartButton:RemoveTextures()
-	WarGameStartButton:SetButtonTemplate()
-	STYLE:ApplyScrollFrameStyle(WarGamesFrameScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(WarGamesFrameInfoScrollFrameScrollBar)
-	WarGamesFrame.HorizontalBar:RemoveTextures()
-
-	PVPReadyDialog:RemoveTextures()
-	PVPReadyDialog:SetPanelTemplate("Pattern")
-	PVPReadyDialogEnterBattleButton:SetButtonTemplate()
-	PVPReadyDialogLeaveQueueButton:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(PVPReadyDialogCloseButton)
-	PVPReadyDialogRoleIcon.texture:SetTexture("Interface\\LFGFrame\\UI-LFG-ICONS-ROLEBACKGROUNDS")
-	PVPReadyDialogRoleIcon.texture:SetAlpha(0.5)
-
-	ConquestFrame.Inset:SetFixedPanelTemplate("Inset")
-	WarGamesFrameScrollFrame:SetPanelTemplate("Inset",false,2,2,6)
-
-	hooksecurefunc("PVPReadyDialog_Display", function(self, l, N, O, P, Q, R)
-		if R == "DAMAGER" then
-			PVPReadyDialogRoleIcon.texture:SetTexCoord(LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
-		elseif R == "TANK" then
-			PVPReadyDialogRoleIcon.texture:SetTexCoord(LFDQueueFrameRoleButtonTank.background:GetTexCoord())
-		elseif R == "HEALER" then
-			PVPReadyDialogRoleIcon.texture:SetTexCoord(LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
-		end
-		if P == "ARENA" then
-			self:SetHeight(100)
-		end
-	end)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle('Blizzard_PVPUI', PVPFrameStyle, true)
-
--- /script StaticPopupSpecial_Show(PVPReadyDialog)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/quest.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/quest.lua
deleted file mode 100644
index fadb29a..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/quest.lua
+++ /dev/null
@@ -1,278 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-credit: Elv.                      original logic from ElvUI. Adapted to SVUI #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local QuestFrameList = {
-	"QuestLogFrameAbandonButton",
-	"QuestLogFramePushQuestButton",
-	"QuestLogFrameTrackButton",
-	"QuestLogFrameCancelButton",
-	"QuestLogFrameCompleteButton"
-};
-
-local function QuestScrollHelper(b, c, d, e)
-	b:SetPanelTemplate("Inset")
-	b.spellTex = b:CreateTexture(nil, 'ARTWORK')
-	b.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
-	if e then
-		 b.spellTex:SetPoint("TOPLEFT", 2, -2)
-	else
-		 b.spellTex:SetPoint("TOPLEFT")
-	end
-	b.spellTex:Size(c or 506, d or 615)
-	b.spellTex:SetTexCoord(0, 1, 0.02, 1)
-end
-
-local function QueuedWatchFrameItems()
-	for i=1, WATCHFRAME_NUM_ITEMS do
-		local button = _G["WatchFrameItem"..i]
-		local point, relativeTo, relativePoint, xOffset, yOffset = button:GetPoint(1)
-		button:SetFrameStrata("LOW")
-		button:SetPoint("TOPRIGHT", relativeTo, "TOPLEFT", -30, -2);
-		if not button.styled then
-			button:SetSlotTemplate()
-			button:SetBackdropColor(0,0,0,0)
-			_G["WatchFrameItem"..i.."NormalTexture"]:SetAlpha(0)
-			_G["WatchFrameItem"..i.."IconTexture"]:FillInner()
-			_G["WatchFrameItem"..i.."IconTexture"]:SetTexCoord(0.1,0.9,0.1,0.9)
-			SV.Timers:AddCooldown(_G["WatchFrameItem"..i.."Cooldown"])
-			button.styled = true
-		end
-	end
-end
-
-local QuestRewardScrollFrame_OnShow = function(self)
-	if(not self.Panel) then
-		self:SetPanelTemplate("Default")
-		QuestScrollHelper(self, 509, 630, false)
-		self:Height(self:GetHeight() - 2)
-	end
-	if(self.spellTex) then
-		self.spellTex:Height(self:GetHeight() + 217)
-	end
-end
-
-local Hook_QuestInfo_Display = function(self, ...)
-	for i = 1, MAX_NUM_ITEMS do
-		local name = ("QuestInfoItem%d"):format(i)
-		local item = _G[name]
-		if(item and item:IsShown()) then
-			local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = item:GetPoint()
-			if(i == 1) then
-				item:Point(initialAnchor, anchorParent, relativeAnchor, 0, yPosition)
-			elseif(relativeAnchor == "BOTTOMLEFT") then
-				item:Point(initialAnchor, anchorParent, relativeAnchor, 0, -4)
-			else
-				item:Point(initialAnchor, anchorParent, relativeAnchor, 4, 0)
-			end
-		end
-	end
-end
-
-local Hook_QuestInfoItem_OnClick = function(self)
-	QuestInfoItemHighlight:ClearAllPoints()
-	QuestInfoItemHighlight:SetAllPoints(self)
-end
-
-local Hook_QuestNPCModel = function(self, _, _, _, x, y)
-	QuestNPCModel:ClearAllPoints()
-	QuestNPCModel:SetPoint("TOPLEFT", self, "TOPRIGHT", x + 18, y)
-end
---[[
-##########################################################
-QUEST STYLERS
-##########################################################
-]]--
-local function QuestGreetingStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.greeting ~= true then
-		return
-	end
-
-	QuestFrameGreetingPanel:HookScript("OnShow", function()
-		QuestFrameGreetingPanel:RemoveTextures()
-		QuestFrameGreetingGoodbyeButton:SetButtonTemplate()
-		QuestGreetingFrameHorizontalBreak:Die()
-	end)
-end
-
-local function QuestFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.quest ~= true then return end
-
-	STYLE:ApplyWindowStyle(QuestFrame, true, true)
-
-	--[[ THIS SECTION NOT WORKING IN WOD ]]--
-	if(SV.___interface < 60000) then
-		QuestLogScrollFrame:RemoveTextures()
-		QuestLogCount:RemoveTextures()
-		EmptyQuestLogFrame:RemoveTextures()
-		QuestProgressScrollFrame:RemoveTextures()
-		QuestLogFrameShowMapButton:RemoveTextures()
-		QuestLogFrameCompleteButton:RemoveTextures()
-
-		STYLE:ApplyWindowStyle(QuestLogFrame)
-		QuestLogCount:SetFixedPanelTemplate("Default")
-
-		QuestLogDetailFrameInset:Die()
-		QuestLogFrameInset:Die()
-
-		QuestLogFrameShowMapButton:SetButtonTemplate()
-		QuestLogFrameShowMapButton.text:ClearAllPoints()
-		QuestLogFrameShowMapButton.text:SetPoint("CENTER")
-
-		for _,i in pairs(QuestFrameList)do
-			_G[i]:SetButtonTemplate()
-			_G[i]:SetFrameLevel(_G[i]:GetFrameLevel() + 2)
-		end
-
-		QuestLogFramePushQuestButton:Point("LEFT", QuestLogFrameAbandonButton, "RIGHT", 2, 0)
-		QuestLogFramePushQuestButton:Point("RIGHT", QuestLogFrameTrackButton, "LEFT", -2, 0)
-
-		QuestLogDetailScrollFrame:HookScript('OnShow', function(k)
-			if not QuestLogDetailScrollFrame.Panel then
-				QuestLogDetailScrollFrame:SetPanelTemplate("Default")
-				QuestScrollHelper(QuestLogDetailScrollFrame, 509, 630, false)
-				QuestLogDetailScrollFrame:Height(k:GetHeight() - 2)
-			end
-			QuestLogDetailScrollFrame.spellTex:Height(k:GetHeight() + 217)
-		end)
-
-		QuestLogFrame:HookScript("OnShow", function()
-			if not QuestLogScrollFrame.spellTex then
-				QuestLogScrollFrame:SetFixedPanelTemplate("Default")
-				QuestLogScrollFrame.spellTex = QuestLogScrollFrame:CreateTexture(nil, 'ARTWORK')
-				QuestLogScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBookBG]])
-				QuestLogScrollFrame.spellTex:SetPoint("TOPLEFT", 2, -2)
-				QuestLogScrollFrame.spellTex:Size(514, 616)
-				QuestLogScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
-				QuestLogScrollFrame.spellTex2 = QuestLogScrollFrame:CreateTexture(nil, 'BORDER')
-				QuestLogScrollFrame.spellTex2:SetTexture([[Interface\FrameGeneral\UI-Background-Rock]])
-				QuestLogScrollFrame.spellTex2:FillInner()
-			end
-		end)
-	end
-	--[[ ############################### ]]--
-
-	STYLE:ApplyCloseButtonStyle(QuestLogFrameCloseButton)
-	STYLE:ApplyScrollFrameStyle(QuestLogDetailScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(QuestLogScrollFrameScrollBar, 5)
-	STYLE:ApplyScrollFrameStyle(QuestProgressScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(QuestRewardScrollFrameScrollBar)
-
-	QuestGreetingScrollFrame:RemoveTextures()
-	STYLE:ApplyScrollFrameStyle(QuestGreetingScrollFrameScrollBar)
-
-	for i = 1, MAX_NUM_ITEMS do
-		local item = _G["QuestInfoItem"..i]
-		if(item) then
-			local cLvl = item:GetFrameLevel() + 1
-			item:RemoveTextures()
-			item:Width(item:GetWidth() - 4)
-			item:SetFrameLevel(cLvl)
-
-			local tex = _G["QuestInfoItem"..i.."IconTexture"]
-			if(tex) then
-				tex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				tex:SetDrawLayer("OVERLAY",1)
-				tex:SetPoint("TOPLEFT", 2, -2)
-				tex:Size(tex:GetWidth() - 2, tex:GetHeight() - 2)
-			end
-			STYLE:ApplyItemButtonStyle(item)
-		end
-	end
-
-	QuestInfoSkillPointFrame:RemoveTextures()
-	QuestInfoSkillPointFrame:Width(QuestInfoSkillPointFrame:GetWidth() - 4)
-
-	local curLvl = QuestInfoSkillPointFrame:GetFrameLevel() + 1
-	QuestInfoSkillPointFrame:SetFrameLevel(curLvl)
-	QuestInfoSkillPointFrame:SetFixedPanelTemplate("Slot")
-	QuestInfoSkillPointFrame:SetBackdropColor(1, 1, 0, 0.5)
-	QuestInfoSkillPointFrameIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	QuestInfoSkillPointFrameIconTexture:SetDrawLayer("OVERLAY")
-	QuestInfoSkillPointFrameIconTexture:Point("TOPLEFT", 2, -2)
-	QuestInfoSkillPointFrameIconTexture:Size(QuestInfoSkillPointFrameIconTexture:GetWidth()-2, QuestInfoSkillPointFrameIconTexture:GetHeight()-2)
-	QuestInfoSkillPointFrameCount:SetDrawLayer("OVERLAY")
-	QuestInfoItemHighlight:RemoveTextures()
-	QuestInfoItemHighlight:SetFixedPanelTemplate("Slot")
-	QuestInfoItemHighlight:SetBackdropBorderColor(1, 1, 0)
-	QuestInfoItemHighlight:SetBackdropColor(0, 0, 0, 0)
-	QuestInfoItemHighlight:Size(142, 40)
-
-	hooksecurefunc("QuestInfoItem_OnClick", Hook_QuestInfoItem_OnClick)
-	hooksecurefunc("QuestInfo_Display", Hook_QuestInfo_Display)
-
-	QuestRewardScrollFrame:HookScript("OnShow", QuestRewardScrollFrame_OnShow)
-
-	QuestFrameInset:Die()
-	QuestFrameDetailPanel:RemoveTextures(true)
-	QuestDetailScrollFrame:RemoveTextures(true)
-	QuestScrollHelper(QuestDetailScrollFrame, 506, 615, true)
-	QuestProgressScrollFrame:SetFixedPanelTemplate()
-	QuestScrollHelper(QuestProgressScrollFrame, 506, 615, true)
-	QuestGreetingScrollFrame:SetFixedPanelTemplate()
-	QuestScrollHelper(QuestGreetingScrollFrame, 506, 615, true)
-	QuestDetailScrollChildFrame:RemoveTextures(true)
-	QuestRewardScrollFrame:RemoveTextures(true)
-	QuestRewardScrollChildFrame:RemoveTextures(true)
-	QuestFrameProgressPanel:RemoveTextures(true)
-	QuestFrameRewardPanel:RemoveTextures(true)
-
-	QuestFrameAcceptButton:SetButtonTemplate()
-	QuestFrameDeclineButton:SetButtonTemplate()
-	QuestFrameCompleteButton:SetButtonTemplate()
-	QuestFrameGoodbyeButton:SetButtonTemplate()
-	QuestFrameCompleteQuestButton:SetButtonTemplate()
-
-	STYLE:ApplyCloseButtonStyle(QuestFrameCloseButton, QuestFrame.Panel)
-
-	for j = 1, 6 do
-		local i = _G["QuestProgressItem"..j]
-		local texture = _G["QuestProgressItem"..j.."IconTexture"]
-		i:RemoveTextures()
-		i:SetFixedPanelTemplate("Inset")
-		i:Width(_G["QuestProgressItem"..j]:GetWidth() - 4)
-		texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		texture:SetDrawLayer("OVERLAY")
-		texture:Point("TOPLEFT", 2, -2)
-		texture:Size(texture:GetWidth() - 2, texture:GetHeight() - 2)
-		_G["QuestProgressItem"..j.."Count"]:SetDrawLayer("OVERLAY")
-	end
-
-	QuestNPCModel:RemoveTextures()
-	QuestNPCModel:SetPanelTemplate("Comic")
-
-	QuestNPCModelTextFrame:RemoveTextures()
-	QuestNPCModelTextFrame:SetPanelTemplate("Default")
-	QuestNPCModelTextFrame.Panel:Point("TOPLEFT", QuestNPCModel.Panel, "BOTTOMLEFT", 0, -2)
-
-	hooksecurefunc("QuestFrame_ShowQuestPortrait", Hook_QuestNPCModel)
-
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(QuestFrameStyle)
-STYLE:SaveCustomStyle(QuestGreetingStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/raid.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/raid.lua
deleted file mode 100644
index 106a4b4..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/raid.lua
+++ /dev/null
@@ -1,95 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local RaidGroupList = {
-	"RaidGroup1",
-	"RaidGroup2",
-	"RaidGroup3",
-	"RaidGroup4",
-	"RaidGroup5",
-	"RaidGroup6",
-	"RaidGroup7",
-	"RaidGroup8"
-};
-
-local RaidInfoFrameList = {
-	"RaidFrameConvertToRaidButton",
-	"RaidFrameRaidInfoButton",
-	"RaidFrameNotInRaidRaidBrowserButton",
-	"RaidInfoExtendButton",
-	"RaidInfoCancelButton"
-};
---[[
-##########################################################
-RAID STYLERS
-##########################################################
-]]--
-local function RaidUIStyle()
-	if InCombatLockdown() then return end
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.raid ~= true then return end
-	for _,group in pairs(RaidGroupList)do
-		if not _G[group] then print(group) end
-		if _G[group] then
-			_G[group]:RemoveTextures()
-		end
-	end
-	for e = 1, 8 do
-		for f = 1, 5 do
-			_G["RaidGroup"..e.."Slot"..f]:RemoveTextures()
-			_G["RaidGroup"..e.."Slot"..f]:SetFixedPanelTemplate("Transparent", true)
-		end
-	end
-end
-
-local function RaidInfoStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.nonraid ~= true then
-		return
-	end
-	_G["RaidInfoFrame"]:RemoveTextures()
-	_G["RaidInfoInstanceLabel"]:RemoveTextures()
-	_G["RaidInfoIDLabel"]:RemoveTextures()
-	_G["RaidInfoScrollFrameScrollBarBG"]:Die()
-	_G["RaidInfoScrollFrameScrollBarTop"]:Die()
-	_G["RaidInfoScrollFrameScrollBarBottom"]:Die()
-	_G["RaidInfoScrollFrameScrollBarMiddle"]:Die()
-	for g = 1, #RaidInfoFrameList do
-		if _G[RaidInfoFrameList[g]] then
-			_G[RaidInfoFrameList[g]]:SetButtonTemplate()
-		end
-	end
-	RaidInfoScrollFrame:RemoveTextures()
-	RaidInfoFrame:SetBasicPanel()
-	RaidInfoFrame.Panel:Point("TOPLEFT", RaidInfoFrame, "TOPLEFT")
-	RaidInfoFrame.Panel:Point("BOTTOMRIGHT", RaidInfoFrame, "BOTTOMRIGHT")
-	STYLE:ApplyCloseButtonStyle(RaidInfoCloseButton, RaidInfoFrame)
-	STYLE:ApplyScrollFrameStyle(RaidInfoScrollFrameScrollBar)
-	RaidFrameRaidBrowserButton:SetButtonTemplate()
-	RaidFrameAllAssistCheckButton:SetCheckboxTemplate(true)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_RaidUI",RaidUIStyle)
-STYLE:SaveCustomStyle(RaidInfoStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/reforging.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/reforging.lua
deleted file mode 100644
index 8854ce0..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/reforging.lua
+++ /dev/null
@@ -1,58 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-REFORGING STYLER
-##########################################################
-]]--
-local function ReforgingStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.reforge ~= true then return end
-
-	STYLE:ApplyWindowStyle(ReforgingFrame, true)
-
-	ReforgingFrame.ButtonFrame:RemoveTextures()
-	ReforgingFrameReforgeButton:ClearAllPoints()
-	ReforgingFrameReforgeButton:Point("LEFT", ReforgingFrameRestoreButton, "RIGHT", 2, 0)
-	ReforgingFrameReforgeButton:Point("BOTTOMRIGHT", -3, 3)
-	ReforgingFrame.RestoreMessage:SetTextColor(1, 1, 1)
-
-	ReforgingFrameRestoreButton:RemoveTextures()
-	ReforgingFrameReforgeButton:RemoveTextures()
-	ReforgingFrameRestoreButton:SetButtonTemplate()
-	ReforgingFrameReforgeButton:SetButtonTemplate()
-
-	ReforgingFrame.ItemButton:RemoveTextures()
-	ReforgingFrame.ItemButton:SetSlotTemplate(true)
-	ReforgingFrame.ItemButton.IconTexture:FillInner()
-	hooksecurefunc("ReforgingFrame_Update", function(k)
-		local w, x, u, y, z, A = GetReforgeItemInfo()
-		if x then
-			 ReforgingFrame.ItemButton.IconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		else
-			 ReforgingFrame.ItemButton.IconTexture:SetTexture(0,0,0,0)
-		end
-	end)
-	STYLE:ApplyCloseButtonStyle(ReforgingFrameCloseButton)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_ReforgingUI",ReforgingStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/spellbook.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/spellbook.lua
deleted file mode 100644
index f1a263f..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/spellbook.lua
+++ /dev/null
@@ -1,329 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain
---[[
-##########################################################
-FRAME LISTS
-##########################################################
-]]--
-local bookFrames = {
-	"SpellBookFrame",
-	"SpellBookFrameInset",
-	"SpellBookSpellIconsFrame",
-	"SpellBookSideTabsFrame",
-	"SpellBookPageNavigationFrame"
-}
-local proButtons = {
-	"PrimaryProfession1SpellButtonTop",
-	"PrimaryProfession1SpellButtonBottom",
-	"PrimaryProfession2SpellButtonTop",
-	"PrimaryProfession2SpellButtonBottom",
-	"SecondaryProfession1SpellButtonLeft",
-	"SecondaryProfession1SpellButtonRight",
-	"SecondaryProfession2SpellButtonLeft",
-	"SecondaryProfession2SpellButtonRight",
-	"SecondaryProfession3SpellButtonLeft",
-	"SecondaryProfession3SpellButtonRight",
-	"SecondaryProfession4SpellButtonLeft",
-	"SecondaryProfession4SpellButtonRight"
-}
-
-local proFrames = {
-	"PrimaryProfession1",
-	"PrimaryProfession2",
-	"SecondaryProfession1",
-	"SecondaryProfession2",
-	"SecondaryProfession3",
-	"SecondaryProfession4"
-}
-local proBars = {
-	"PrimaryProfession1StatusBar",
-	"PrimaryProfession2StatusBar",
-	"SecondaryProfession1StatusBar",
-	"SecondaryProfession2StatusBar",
-	"SecondaryProfession3StatusBar",
-	"SecondaryProfession4StatusBar"
-}
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local function Tab_OnEnter(this)
-	this.backdrop:SetBackdropColor(unpack(SV.Media.color.highlight))
-	this.backdrop:SetBackdropBorderColor(unpack(SV.Media.color.highlight))
-end
-
-local function Tab_OnLeave(this)
-	this.backdrop:SetBackdropColor(0,0,0,1)
-	this.backdrop:SetBackdropBorderColor(0,0,0,1)
-end
-
-local function ChangeTabHelper(this)
-	this:RemoveTextures()
-	local nTex = this:GetNormalTexture()
-	if(nTex) then
-		nTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		nTex:FillInner()
-	end
-
-	this.pushed = true;
-
-	this.backdrop = CreateFrame("Frame", nil, this)
-	this.backdrop:WrapOuter(this,1,1)
-	this.backdrop:SetFrameLevel(0)
-	this.backdrop:SetBackdrop({
-		bgFile = [[Interface\BUTTONS\WHITE8X8]],
-        tile = false,
-        tileSize = 0,
-        edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
-        edgeSize = 3,
-        insets = {
-            left = 0,
-            right = 0,
-            top = 0,
-            bottom = 0
-        }
-    });
-    this.backdrop:SetBackdropColor(0,0,0,1)
-	this.backdrop:SetBackdropBorderColor(0,0,0,1)
-	this:SetScript("OnEnter", Tab_OnEnter)
-	this:SetScript("OnLeave", Tab_OnLeave)
-
-	local a,b,c,d,e = this:GetPoint()
-	this:Point(a,b,c,1,e)
-end
-
-local function GetSpecTabHelper(index)
-	local tab = SpellBookCoreAbilitiesFrame.SpecTabs[index]
-	if(not tab) then return end
-	ChangeTabHelper(tab)
-	if index > 1 then
-		local o, Y, Z, h, s = tab:GetPoint()
-		tab:ClearAllPoints()
-		tab:SetPoint(o, Y, Z, 0, s)
-	end
-end
-
-local function SkillTabUpdateHelper()
-	for j = 1, MAX_SKILLLINE_TABS do
-		local S = _G["SpellBookSkillLineTab"..j]
-		local h, h, h, h, a0 = GetSpellTabInfo(j)
-		if a0 then
-			S:GetNormalTexture():FillInner()
-			S:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		end
-	end
-end
-
-local function AbilityButtonHelper(j)
-	local i = SpellBookCoreAbilitiesFrame.Abilities[j]
-	if i.styled then return end
-		local x = i.iconTexture;
-		if not InCombatLockdown() then
-			if not i.properFrameLevel then
-			 	i.properFrameLevel = i:GetFrameLevel() + 1
-			end
-			i:SetFrameLevel(i.properFrameLevel)
-		end
-		if not i.styled then
-		for j = 1, i:GetNumRegions()do
-			local N = select(j, i:GetRegions())
-			if N:GetObjectType() == "Texture"then
-				if N:GetTexture() ~= "Interface\\Buttons\\ActionBarFlyoutButton" then
-				 	N:SetTexture(0,0,0,0)
-				end
-			end
-		end
-		if i.highlightTexture then
-			hooksecurefunc(i.highlightTexture, "SetTexture", function(k, P, Q, R)
-				if P == [[Interface\Buttons\ButtonHilight-Square]] then
-					 i.highlightTexture:SetTexture(1, 1, 1, 0.3)
-				end
-			end)
-		end
-		i.styled = true
-
-		if x then
-			x:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			x:ClearAllPoints()
-			x:SetAllPoints()
-			if not i.Panel then
-				 i:SetPanelTemplate("Inset", false, 3, 3, 3)
-			end
-		end
-
-		if(i.Name) then i.Name:SetFontObject(NumberFont_Outline_Large) i.Name:SetTextColor(1,1,0) end
-		if(i.InfoText) then i.InfoText:SetFontObject(NumberFont_Shadow_Small) i.InfoText:SetTextColor(0.9,0.9,0.9) end
-	end
-	i.styled = true
-end
-
-local function ButtonUpdateHelper(self, strip)
-	for j=1, SPELLS_PER_PAGE do
-		local name = "SpellButton"..j
-		local i = _G[name]
-		local x = _G[name.."IconTexture"]
-		local spellString = _G[name.."SpellName"];
-    	local subSpellString = _G[name.."SubSpellName"];
-		if not InCombatLockdown() then
-			 i:SetFrameLevel(SpellBookFrame:GetFrameLevel() + 5)
-		end
-		if strip then
-			for j = 1, i:GetNumRegions()do
-				local N = select(j, i:GetRegions())
-				if N:GetObjectType() == "Texture"then
-					if N ~= i.FlyoutArrow then
-						N:SetTexture(0,0,0,0)
-					end
-				end
-			end
-		end
-		if _G[name.."Highlight"] then
-			_G[name.."Highlight"]:SetTexture(1, 1, 1, 0.3)
-			_G[name.."Highlight"]:ClearAllPoints()
-			_G[name.."Highlight"]:SetAllPoints(x)
-		end
-		if i.shine then
-			i.shine:ClearAllPoints()
-			i.shine:SetPoint('TOPLEFT', i, 'TOPLEFT', -3, 3)
-			i.shine:SetPoint('BOTTOMRIGHT', i, 'BOTTOMRIGHT', 3, -3)
-		end
-		if x then
-			x:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			x:ClearAllPoints()
-			x:SetAllPoints()
-			if not i.Panel then
-				i:SetPanelTemplate("Slot")
-			end
-		end
-		if(spellString) then spellString:SetFontObject(NumberFontNormal) spellString:SetTextColor(1,1,0) end
-		if(subSpellString) then subSpellString:SetFontObject(NumberFont_Shadow_Small) subSpellString:SetTextColor(0.9,0.9,0.9) end
-	end
-end
---[[
-##########################################################
-SPELLBOOK STYLER
-##########################################################
-]]--
-local function SpellBookStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.spellbook ~= true then return end
-
-	STYLE:ApplyWindowStyle(SpellBookFrame)
-	STYLE:ApplyCloseButtonStyle(SpellBookFrameCloseButton)
-
-	for _, gName in pairs(bookFrames) do
-		local frame = _G[gName]
-		if(frame) then
-			frame:RemoveTextures()
-		end
-	end
-
-	-- SpellBookFrameInset:ClearAllPoints()
-	-- SpellBookFrameInset:Point("TOPLEFT", SpellBookFrame, "TOPLEFT", 20, -46)
-	-- SpellBookFrameInset:Point("BOTTOMRIGHT", SpellBookFrame, "BOTTOMRIGHT", -20, 20)
-	SpellBookFrameInset:SetFixedPanelTemplate("Blackout")
-
-	_G["SpellBookFrameTutorialButton"]:Die()
-
-	for i = 1, 2 do
-		local frame = _G[("SpellBookPage%d"):format(i)]
-		if(frame) then
-			frame:SetDrawLayer('BORDER', 3)
-		end
-	end
-
-	STYLE:ApplyPaginationStyle(SpellBookPrevPageButton)
-	STYLE:ApplyPaginationStyle(SpellBookNextPageButton)
-
-	ButtonUpdateHelper(nil, true)
-
-	hooksecurefunc("SpellButton_UpdateButton", ButtonUpdateHelper)
-	hooksecurefunc("SpellBook_GetCoreAbilityButton", AbilityButtonHelper)
-
-	for i = 1, MAX_SKILLLINE_TABS do
-		local tabName = ("SpellBookSkillLineTab%d"):format(i)
-		local tab = _G[tabName]
-		local tabFlash = _G[("%sFlash"):format(tabName)]
-		if(tabFlash) then tabFlash:Die() end
-		if(tab) then ChangeTabHelper(tab) end
-	end
-
-	hooksecurefunc('SpellBook_GetCoreAbilitySpecTab', GetSpecTabHelper)
-	hooksecurefunc("SpellBookFrame_UpdateSkillLineTabs", SkillTabUpdateHelper)
-
-	for _, gName in pairs(proFrames)do
-		local frame = _G[gName]
-		local frameMissing = _G[("%sMissing"):format(gName)]
-		if(frame and frame.missingText) then frame.missingText:SetTextColor(0, 0, 0) end
-		if(frameMissing) then frameMissing:SetTextColor(1, 1, 0) end
-    	--frame.skillName
-    	if(frame.missingHeader) then frame.missingHeader:SetFontObject(NumberFont_Outline_Large) frame.missingHeader:SetTextColor(1,1,0) end
-    	if(frame.missingText) then frame.missingText:SetFontObject(NumberFont_Shadow_Small) frame.missingText:SetTextColor(0.9,0.9,0.9) end
-    	if(frame.rank) then frame.rank:SetFontObject(NumberFontNormal) frame.rank:SetTextColor(0.9,0.9,0.9) end
-    	if(frame.professionName) then frame.professionName:SetFontObject(NumberFont_Outline_Large) frame.professionName:SetTextColor(1,1,0) end
-	end
-
-	for _, gName in pairs(proButtons)do
-		local button = _G[gName]
-		local buttonTex = _G[("%sIconTexture"):format(gName)]
-		if(button) then
-			button:RemoveTextures()
-			if(buttonTex) then
-				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				buttonTex:FillInner()
-				button:SetFrameLevel(button:GetFrameLevel() + 2)
-				if not button.Panel then
-					button:SetPanelTemplate("Inset", false, 3, 3, 3)
-					button.Panel:SetAllPoints()
-				end
-			end
-			if(button.spellString) then button.spellString:SetFontObject(NumberFontNormal) button.spellString:SetTextColor(1,1,0) end
-			if(button.subSpellString) then button.subSpellString:SetFontObject(NumberFont_Shadow_Small) button.subSpellString:SetTextColor(0.9,0.9,0.9) end
-		end
-	end
-
-	for _, gName in pairs(proBars) do
-		local bar = _G[gName]
-		if(bar) then
-			bar:RemoveTextures()
-			bar:SetHeight(12)
-			bar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
-			bar:SetStatusBarColor(0, 220/255, 0)
-			bar:SetPanelTemplate("Default")
-			bar.rankText:ClearAllPoints()
-			bar.rankText:SetPoint("CENTER")
-		end
-	end
-
-	for i = 1, 5 do
-		local frame = _G[("SpellBookFrameTabButton%d"):format(i)]
-		if(frame) then
-			STYLE:ApplyTabStyle(frame)
-		end
-	end
-
-	SpellBookFrameTabButton1:ClearAllPoints()
-	SpellBookFrameTabButton1:SetPoint('TOPLEFT', SpellBookFrame, 'BOTTOMLEFT', 0, 2)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(SpellBookStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/store.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/store.lua
deleted file mode 100644
index 54f252b..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/store.lua
+++ /dev/null
@@ -1,37 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TAXIFRAME STYLER
-##########################################################
-]]--
-local function StoreStyle()
-	-- if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.store ~= true then
-	-- 	 return
-	-- end
-
-	--STYLE:ApplyWindowStyle(StoreFrame)
-	STYLE:ApplyTooltipStyle(StoreTooltip)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_StoreUI", StoreStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/supervillain.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/supervillain.lua
deleted file mode 100644
index 69c9e02..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/supervillain.lua
+++ /dev/null
@@ -1,305 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local externaltest = false;
-
-local ProxyLSMType = {
-	["LSM30_Font"] = true,
-	["LSM30_Sound"] = true,
-	["LSM30_Border"] = true,
-	["LSM30_Background"] = true,
-	["LSM30_Statusbar"] = true
-}
-
-local ProxyType = {
-	["InlineGroup"] = true,
-	["TreeGroup"] = true,
-	["TabGroup"] = true,
-	["SimpleGroup"] = true,
-	["Frame"] = true,
-	["DropdownGroup"] = true
-}
-
-local function Widget_OnEnter(b)
-	b:SetBackdropBorderColor(unpack(SV.Media.color.highlight))
-end
-
-local function Widget_OnLeave(b)
-	b:SetBackdropBorderColor(0,0,0,1)
-end
-
-local function Widget_ScrollStyle(frame, arg)
-	return STYLE:ApplyScrollFrameStyle(frame)
-end
-
-local function Widget_ButtonStyle(frame, strip, bypass)
-	if frame.Left then frame.Left:SetAlpha(0) end
-	if frame.Middle then frame.Middle:SetAlpha(0) end
-	if frame.Right then frame.Right:SetAlpha(0) end
-	if frame.SetNormalTexture then frame:SetNormalTexture("") end
-	if frame.SetHighlightTexture then frame:SetHighlightTexture(0,0,0,0) end
-	if frame.SetPushedTexture then frame:SetPushedTexture(0,0,0,0) end
-	if frame.SetDisabledTexture then frame:SetDisabledTexture("") end
-	if strip then frame:RemoveTextures() end
-	if not frame.Panel and not bypass then frame:SetButtonTemplate() end
-	frame:HookScript("OnEnter", Widget_OnEnter)
-	frame:HookScript("OnLeave", Widget_OnLeave)
-end
-
-local function Widget_PaginationStyle(...)
-	STYLE:ApplyPaginationStyle(...)
-end
-
-local NOOP = SV.fubar
-
-local WidgetButton_OnClick = function(self)
-	local obj = self.obj;
-	if(obj and obj.pullout and obj.pullout.frame and (not obj.pullout.frame.Panel)) then
-		obj.pullout.frame:SetFixedPanelTemplate("Default")
-	end
-end
-
-local WidgetDropButton_OnClick = function(self)
-	local obj = self.obj;
-	local widgetFrame = obj.dropdown
-	if(widgetFrame and not widgetFrame.Panel) then
-		widgetFrame:SetBasicPanel()
-		widgetFrame.Panel:SetPoint("TOPLEFT", widgetFrame, "TOPLEFT", 20, -2)
-		widgetFrame.Panel:SetPoint("BOTTOMRIGHT", widgetFrame, "BOTTOMRIGHT", -20, 2)
-	end
-end
---[[
-##########################################################
-AceGUI STYLE
-##########################################################
-]]--
-local function StyleAceGUI(event, addon)
-	assert((LibStub("AceGUI-3.0") and (addon == "SVUI_ConfigOMatic")), "Addon Not Loaded")
-	local AceGUI = LibStub("AceGUI-3.0")
-
-	local regWidget = AceGUI.RegisterAsWidget;
-	local regContainer = AceGUI.RegisterAsContainer;
-
-	AceGUI.RegisterAsWidget = function(self, widget)
-
-		local widgetType = widget.type;
-
-		if(widgetType == "MultiLineEditBox") then
-			local widgetFrame = widget.frame;
-			widgetFrame:SetFixedPanelTemplate("Default")
-			if not widget.scrollBG.Panel then
-				widget.scrollBG:SetBasicPanel()
-			end
-			Widget_ButtonStyle(widget.button)
-			STYLE:ApplyScrollFrameStyle(widget.scrollBar)
-			widget.scrollBar:SetPoint("RIGHT", widgetFrame, "RIGHT", -4)
-			widget.scrollBG:SetPoint("TOPRIGHT", widget.scrollBar, "TOPLEFT", -2, 19)
-			widget.scrollBG:SetPoint("BOTTOMLEFT", widget.button, "TOPLEFT")
-			widget.scrollFrame:SetPoint("BOTTOMRIGHT", widget.scrollBG, "BOTTOMRIGHT", -4, 8)
-
-		elseif(widgetType == "CheckBox") then
-			widget.checkbg:Die()
-			widget.highlight:Die()
-			if not widget.styledCheckBG then
-				widget.styledCheckBG = CreateFrame("Frame", nil, widget.frame)
-				widget.styledCheckBG:FillInner(widget.check)
-				widget.styledCheckBG:SetFixedPanelTemplate("Inset")
-			end
-			widget.check:SetParent(widget.styledCheckBG)
-
-		elseif(widgetType == "Dropdown") then
-			local widgetDropdown = widget.dropdown;
-			local widgetButton = widget.button;
-
-			widgetDropdown:RemoveTextures()
-			widgetButton:ClearAllPoints()
-			widgetButton:Point("RIGHT", widgetDropdown, "RIGHT", -20, 0)
-			widgetButton:SetFrameLevel(widgetButton:GetFrameLevel() + 1)
-			Widget_PaginationStyle(widgetButton, true)
-
-			if(not widgetDropdown.Panel) then
-				widgetDropdown:SetBasicPanel()
-				widgetDropdown.Panel:Point("TOPLEFT", widgetDropdown, "TOPLEFT", 20, -2)
-				widgetDropdown.Panel:Point("BOTTOMRIGHT", widgetDropdown, "BOTTOMRIGHT", -20, 2)
-			end
-
-			widgetButton:SetParent(widgetDropdown.Panel)
-			widget.text:SetParent(widgetDropdown.Panel)
-			widgetButton:HookScript("OnClick", WidgetButton_OnClick)
-
-		elseif(widgetType == "EditBox") then
-			local widgetEditbox = widget.editbox;
-			local boxName = widgetEditbox:GetName()
-
-			if(_G[boxName.."Left"]) then
-				_G[boxName.."Left"]:Die()
-			end
-
-			if(_G[boxName.."Middle"]) then
-				_G[boxName.."Middle"]:Die()
-			end
-
-			if(_G[boxName.."Right"]) then
-				_G[boxName.."Right"]:Die()
-			end
-
-			widgetEditbox:Height(17)
-			--widgetEditbox:SetFixedPanelTemplate("Default")
-			Widget_ButtonStyle(widget.button)
-
-		elseif(widgetType == "Button") then
-			local widgetFrame = widget.frame;
-			Widget_ButtonStyle(widgetFrame, nil, true)
-
-			if(not widgetFrame.Panel) then
-				widgetFrame:RemoveTextures()
-				widgetFrame:SetFixedPanelTemplate("Button", true)
-			end
-			widget.text:SetParent(widgetFrame.Panel)
-
-		elseif(widgetType == "Slider") then
-			local widgetSlider = widget.slider;
-			local widgetEditbox = widget.editbox;
-
-			if(not widgetSlider.Panel) then
-				widgetSlider:RemoveTextures()
-				widgetSlider:SetFixedPanelTemplate("Bar")
-			end
-
-			widgetSlider:Height(20)
-			widgetSlider:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob")
-			widgetSlider:GetThumbTexture():SetVertexColor(0.8, 0.8, 0.8)
-
-			widgetEditbox:Height(15)
-			widgetEditbox:SetPoint("TOP", widgetSlider, "BOTTOM", 0, -1)
-
-			-- if(not widgetEditbox.Panel) then
-			-- 	widgetEditbox:SetFixedPanelTemplate("Default")
-			-- end
-
-			widget.lowtext:SetPoint("TOPLEFT", widgetSlider, "BOTTOMLEFT", 2, -2)
-			widget.hightext:SetPoint("TOPRIGHT", widgetSlider, "BOTTOMRIGHT", -2, -2)
-
-		elseif(ProxyLSMType[widgetType]) then
-			local widgetFrame = widget.frame;
-			local dropButton = widgetFrame.dropButton;
-
-			widgetFrame:RemoveTextures()
-			Widget_PaginationStyle(dropButton, true)
-			widgetFrame.text:ClearAllPoints()
-			widgetFrame.text:Point("RIGHT", dropButton, "LEFT", -2, 0)
-			dropButton:ClearAllPoints()
-			dropButton:Point("RIGHT", widgetFrame, "RIGHT", -10, -6)
-			if(not widgetFrame.Panel) then
-				widgetFrame:SetBasicPanel()
-				if(widgetType == "LSM30_Font") then
-					widgetFrame.Panel:Point("TOPLEFT", 20, -17)
-				elseif(widgetType == "LSM30_Sound") then
-					widgetFrame.Panel:Point("TOPLEFT", 20, -17)
-					widget.soundbutton:SetParent(widgetFrame.Panel)
-					widget.soundbutton:ClearAllPoints()
-					widget.soundbutton:Point("LEFT", widgetFrame.Panel, "LEFT", 2, 0)
-				elseif(widgetType == "LSM30_Statusbar") then
-					widgetFrame.Panel:Point("TOPLEFT", 20, -17)
-					widget.bar:SetParent(widgetFrame.Panel)
-					widget.bar:FillInner()
-				elseif(widgetType == "LSM30_Border" or widgetType == "LSM30_Background") then
-					widgetFrame.Panel:Point("TOPLEFT", 42, -16)
-				end
-				widgetFrame.Panel:Point("BOTTOMRIGHT", dropButton, "BOTTOMRIGHT", 2, -2)
-			end
-			dropButton:SetParent(widgetFrame.Panel)
-			widgetFrame.text:SetParent(widgetFrame.Panel)
-			dropButton:HookScript("OnClick", WidgetDropButton_OnClick)
-		end
-		return regWidget(self, widget)
-	end
-
-	AceGUI.RegisterAsContainer = function(self, widget)
-		local widgetType = widget.type;
-		local widgetParent = widget.content:GetParent()
-		if widgetType == "ScrollFrame" then
-			STYLE:ApplyScrollFrameStyle(widget.scrollBar)
-		elseif widgetType == "Window" then
-			widgetParent:SetPanelTemplate("Halftone")
-		elseif(ProxyType[widgetType]) then
-			if widgetType == "Frame" then
-				widgetParent:RemoveTextures()
-				for i = 1, widgetParent:GetNumChildren()do
-					local childFrame = select(i, widgetParent:GetChildren())
-					if childFrame:GetObjectType() == "Button" and childFrame:GetText() then
-						Widget_ButtonStyle(childFrame)
-					else
-						childFrame:RemoveTextures()
-					end
-				end
-			end
-
-			if widget.treeframe then
-				widget.treeframe:SetBasicPanel()
-				widgetParent:SetPoint("TOPLEFT", widget.treeframe, "TOPRIGHT", 1, 0)
-				local oldFunc = widget.CreateButton;
-				widget.CreateButton = function(self)
-					local newButton = oldFunc(self)
-					newButton.toggle:RemoveTextures()
-					newButton.toggle.SetNormalTexture = NOOP;
-					newButton.toggle.SetPushedTexture = NOOP;
-					newButton.toggle:SetButtonTemplate()
-					newButton.toggleText = newButton.toggle:CreateFontString(nil, "OVERLAY")
-					newButton.toggleText:SetFont([[Interface\AddOns\SVUI\assets\fonts\Roboto.ttf]], 19)
-					newButton.toggleText:SetPoint("CENTER")
-					newButton.toggleText:SetText("*")
-					return newButton
-				end
-			else
-				if not externaltest then
-					widgetParent:SetPanelTemplate("Halftone")
-					widgetParent.Panel:SetFrameLevel(0)
-					externaltest = true
-				else
-					widgetParent:SetFixedPanelTemplate("Default")
-				end
-			end
-
-			if(widgetType == "TabGroup") then
-				local oldFunc = widget.CreateTab;
-				widget.CreateTab = function(self, arg)
-					local newTab = oldFunc(self, arg)
-					newTab:RemoveTextures()
-					return newTab
-				end
-			end
-
-			if widget.scrollbar then
-				STYLE:ApplyScrollFrameStyle(widget.scrollBar)
-			end
-		end
-		return regContainer(self, widget)
-	end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveAddonStyle("ConfigOMatic", StyleAceGUI, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/system.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/system.lua
deleted file mode 100644
index ce85baa..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/system.lua
+++ /dev/null
@@ -1,725 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
-local ceil = math.ceil
---[[
-##########################################################
-MASSIVE LIST OF LISTS
-##########################################################
-]]--
-local SystemPopList = {
-	"StaticPopup1",
-	"StaticPopup2",
-	"StaticPopup3"
-};
-local SystemDropDownList = {
-	"DropDownList1MenuBackdrop",
-	"DropDownList2MenuBackdrop",
-	"DropDownList1Backdrop",
-	"DropDownList2Backdrop",
-};
-local SystemFrameList1 = {
-	"GameMenuFrame",
-	"TicketStatusFrameButton",
-	"AutoCompleteBox",
-	"ConsolidatedBuffsTooltip",
-	"ReadyCheckFrame",
-	"StackSplitFrame",
-	"QueueStatusFrame",
-	"InterfaceOptionsFrame",
-	"VideoOptionsFrame",
-	"AudioOptionsFrame",
-};
-local SystemFrameList4 = {
-	"Options",
-	"Store",
-	"SoundOptions",
-	"UIOptions",
-	"Keybindings",
-	"Macros",
-	"Ratings",
-	"AddOns",
-	"Logout",
-	"Quit",
-	"Continue",
-	"MacOptions",
-	"Help",
-	"WhatsNew",
-	"Addons"
-};
-local SystemFrameList5 = {
-	"GameMenuFrame",
-	"InterfaceOptionsFrame",
-	"AudioOptionsFrame",
-	"VideoOptionsFrame",
-};
-local SystemFrameList6 = {
-	"VideoOptionsFrameOkay",
-	"VideoOptionsFrameCancel",
-	"VideoOptionsFrameDefaults",
-	"VideoOptionsFrameApply",
-	"AudioOptionsFrameOkay",
-	"AudioOptionsFrameCancel",
-	"AudioOptionsFrameDefaults",
-	"InterfaceOptionsFrameDefaults",
-	"InterfaceOptionsFrameOkay",
-	"InterfaceOptionsFrameCancel",
-	"ReadyCheckFrameYesButton",
-	"ReadyCheckFrameNoButton",
-	"StackSplitOkayButton",
-	"StackSplitCancelButton",
-	"RolePollPopupAcceptButton"
-};
-
-local SystemFrameList13 = {
-	"VideoOptionsFrameCategoryFrame",
-	"VideoOptionsFramePanelContainer",
-	"InterfaceOptionsFrameCategories",
-	"InterfaceOptionsFramePanelContainer",
-	"InterfaceOptionsFrameAddOns",
-	"AudioOptionsSoundPanelPlayback",
-	"AudioOptionsSoundPanelVolume",
-	"AudioOptionsSoundPanelHardware",
-	"AudioOptionsVoicePanelTalking",
-	"AudioOptionsVoicePanelBinding",
-	"AudioOptionsVoicePanelListening",
-};
-local SystemFrameList14 = {
-	"InterfaceOptionsFrameTab1",
-	"InterfaceOptionsFrameTab2",
-};
-local SystemFrameList15 = {
-	"ControlsPanelBlockChatChannelInvites",
-	"ControlsPanelStickyTargeting",
-	"ControlsPanelAutoDismount",
-	"ControlsPanelAutoClearAFK",
-	"ControlsPanelBlockTrades",
-	"ControlsPanelBlockGuildInvites",
-	"ControlsPanelLootAtMouse",
-	"ControlsPanelAutoLootCorpse",
-	"ControlsPanelInteractOnLeftClick",
-	"ControlsPanelAutoOpenLootHistory",
-	"CombatPanelEnemyCastBarsOnOnlyTargetNameplates",
-	"CombatPanelEnemyCastBarsNameplateSpellNames",
-	"CombatPanelAttackOnAssist",
-	"CombatPanelStopAutoAttack",
-	"CombatPanelNameplateClassColors",
-	"CombatPanelTargetOfTarget",
-	"CombatPanelShowSpellAlerts",
-	"CombatPanelReducedLagTolerance",
-	"CombatPanelActionButtonUseKeyDown",
-	"CombatPanelEnemyCastBarsOnPortrait",
-	"CombatPanelEnemyCastBarsOnNameplates",
-	"CombatPanelAutoSelfCast",
-	"CombatPanelLossOfControl",
-	"DisplayPanelShowCloak",
-	"DisplayPanelShowHelm",
-	"DisplayPanelShowAggroPercentage",
-	"DisplayPanelPlayAggroSounds",
-	"DisplayPanelDetailedLootInfo",
-	"DisplayPanelShowSpellPointsAvg",
-	"DisplayPanelemphasizeMySpellEffects",
-	"DisplayPanelShowFreeBagSpace",
-	"DisplayPanelCinematicSubtitles",
-	"DisplayPanelRotateMinimap",
-	"DisplayPanelScreenEdgeFlash",
-	"DisplayPanelShowAccountAchievments",
-	"ObjectivesPanelAutoQuestTracking",
-	"ObjectivesPanelAutoQuestProgress",
-	"ObjectivesPanelMapQuestDifficulty",
-	"ObjectivesPanelAdvancedWorldMap",
-	"ObjectivesPanelWatchFrameWidth",
-	"SocialPanelProfanityFilter",
-	"SocialPanelSpamFilter",
-	"SocialPanelChatBubbles",
-	"SocialPanelPartyChat",
-	"SocialPanelChatHoverDelay",
-	"SocialPanelGuildMemberAlert",
-	"SocialPanelChatMouseScroll",
-	"ActionBarsPanelLockActionBars",
-	"ActionBarsPanelSecureAbilityToggle",
-	"ActionBarsPanelAlwaysShowActionBars",
-	"ActionBarsPanelBottomLeft",
-	"ActionBarsPanelBottomRight",
-	"ActionBarsPanelRight",
-	"ActionBarsPanelRightTwo",
-	"NamesPanelMyName",
-	"NamesPanelFriendlyPlayerNames",
-	"NamesPanelFriendlyPets",
-	"NamesPanelFriendlyGuardians",
-	"NamesPanelFriendlyTotems",
-	"NamesPanelUnitNameplatesFriends",
-	"NamesPanelUnitNameplatesFriendlyGuardians",
-	"NamesPanelUnitNameplatesFriendlyPets",
-	"NamesPanelUnitNameplatesFriendlyTotems",
-	"NamesPanelGuilds",
-	"NamesPanelGuildTitles",
-	"NamesPanelTitles",
-	"NamesPanelNonCombatCreature",
-	"NamesPanelEnemyPlayerNames",
-	"NamesPanelEnemyPets",
-	"NamesPanelEnemyGuardians",
-	"NamesPanelEnemyTotems",
-	"NamesPanelUnitNameplatesEnemyPets",
-	"NamesPanelUnitNameplatesEnemies",
-	"NamesPanelUnitNameplatesEnemyGuardians",
-	"NamesPanelUnitNameplatesEnemyTotems",
-	"CombatTextPanelTargetDamage",
-	"CombatTextPanelPeriodicDamage",
-	"CombatTextPanelPetDamage",
-	"CombatTextPanelHealing",
-	"CombatTextPanelHealingAbsorbTarget",
-	"CombatTextPanelHealingAbsorbSelf",
-	"CombatTextPanelTargetEffects",
-	"CombatTextPanelOtherTargetEffects",
-	"CombatTextPanelEnableFCT",
-	"CombatTextPanelDodgeParryMiss",
-	"CombatTextPanelDamageReduction",
-	"CombatTextPanelRepChanges",
-	"CombatTextPanelReactiveAbilities",
-	"CombatTextPanelFriendlyHealerNames",
-	"CombatTextPanelCombatState",
-	"CombatTextPanelComboPoints",
-	"CombatTextPanelLowManaHealth",
-	"CombatTextPanelEnergyGains",
-	"CombatTextPanelPeriodicEnergyGains",
-	"CombatTextPanelHonorGains",
-	"CombatTextPanelAuras",
-	"BuffsPanelBuffDurations",
-	"BuffsPanelDispellableDebuffs",
-	"BuffsPanelCastableBuffs",
-	"BuffsPanelConsolidateBuffs",
-	"BuffsPanelShowAllEnemyDebuffs",
-	"CameraPanelFollowTerrain",
-	"CameraPanelHeadBob",
-	"CameraPanelWaterCollision",
-	"CameraPanelSmartPivot",
-	"MousePanelInvertMouse",
-	"MousePanelClickToMove",
-	"MousePanelWoWMouse",
-	"HelpPanelShowTutorials",
-	"HelpPanelLoadingScreenTips",
-	"HelpPanelEnhancedTooltips",
-	"HelpPanelBeginnerTooltips",
-	"HelpPanelShowLuaErrors",
-	"HelpPanelColorblindMode",
-	"HelpPanelMovePad",
-	"BattlenetPanelOnlineFriends",
-	"BattlenetPanelOfflineFriends",
-	"BattlenetPanelBroadcasts",
-	"BattlenetPanelFriendRequests",
-	"BattlenetPanelConversations",
-	"BattlenetPanelShowToastWindow",
-	"StatusTextPanelPlayer",
-	"StatusTextPanelPet",
-	"StatusTextPanelParty",
-	"StatusTextPanelTarget",
-	"StatusTextPanelAlternateResource",
-	"StatusTextPanelPercentages",
-	"StatusTextPanelXP",
-	"UnitFramePanelPartyBackground",
-	"UnitFramePanelPartyPets",
-	"UnitFramePanelArenaEnemyFrames",
-	"UnitFramePanelArenaEnemyCastBar",
-	"UnitFramePanelArenaEnemyPets",
-	"UnitFramePanelFullSizeFocusFrame",
-	"NamesPanelUnitNameplatesNameplateClassColors",
-};
-local SystemFrameList16 ={
-	"ControlsPanelAutoLootKeyDropDown",
-	"CombatPanelTOTDropDown",
-	"CombatPanelFocusCastKeyDropDown",
-	"CombatPanelSelfCastKeyDropDown",
-	"CombatPanelLossOfControlFullDropDown",
-	"CombatPanelLossOfControlSilenceDropDown",
-	"CombatPanelLossOfControlInterruptDropDown",
-	"CombatPanelLossOfControlDisarmDropDown",
-	"CombatPanelLossOfControlRootDropDown",
-	"DisplayPanelAggroWarningDisplay",
-	"DisplayPanelWorldPVPObjectiveDisplay",
-	"SocialPanelChatStyle",
-	"SocialPanelWhisperMode",
-	"SocialPanelTimestamps",
-	"SocialPanelBnWhisperMode",
-	"SocialPanelConversationMode",
-	"ActionBarsPanelPickupActionKeyDropDown",
-	"NamesPanelNPCNamesDropDown",
-	"NamesPanelUnitNameplatesMotionDropDown",
-	"CombatTextPanelFCTDropDown",
-	"CameraPanelStyleDropDown",
-	"MousePanelClickMoveStyleDropDown",
-	"LanguagesPanelLocaleDropDown",
-	"StatusTextPanelDisplayDropDown"
-};
-local SystemFrameList17 = {
-	"Advanced_MaxFPSCheckBox",
-	"Advanced_MaxFPSBKCheckBox",
-	"Advanced_UseUIScale",
-	"AudioOptionsSoundPanelEnableSound",
-	"AudioOptionsSoundPanelSoundEffects",
-	"AudioOptionsSoundPanelErrorSpeech",
-	"AudioOptionsSoundPanelEmoteSounds",
-	"AudioOptionsSoundPanelPetSounds",
-	"AudioOptionsSoundPanelMusic",
-	"AudioOptionsSoundPanelLoopMusic",
-	"AudioOptionsSoundPanelAmbientSounds",
-	"AudioOptionsSoundPanelSoundInBG",
-	"AudioOptionsSoundPanelReverb",
-	"AudioOptionsSoundPanelHRTF",
-	"AudioOptionsSoundPanelEnableDSPs",
-	"AudioOptionsSoundPanelUseHardware",
-	"AudioOptionsVoicePanelEnableVoice",
-	"AudioOptionsVoicePanelEnableMicrophone",
-	"AudioOptionsVoicePanelPushToTalkSound",
-	"AudioOptionsSoundPanelPetBattleMusic",
-	"NetworkOptionsPanelOptimizeSpeed",
-	"NetworkOptionsPanelUseIPv6",
-	"NetworkOptionsPanelAdvancedCombatLogging"
-};
-local SystemFrameList18 = {
-	"Graphics_DisplayModeDropDown",
-	"Graphics_ResolutionDropDown",
-	"Graphics_RefreshDropDown",
-	"Graphics_PrimaryMonitorDropDown",
-	"Graphics_MultiSampleDropDown",
-	"Graphics_VerticalSyncDropDown",
-	"Graphics_TextureResolutionDropDown",
-	"Graphics_FilteringDropDown",
-	"Graphics_ProjectedTexturesDropDown",
-	"Graphics_ViewDistanceDropDown",
-	"Graphics_EnvironmentalDetailDropDown",
-	"Graphics_GroundClutterDropDown",
-	"Graphics_ShadowsDropDown",
-	"Graphics_LiquidDetailDropDown",
-	"Graphics_SunshaftsDropDown",
-	"Graphics_ParticleDensityDropDown",
-	"Graphics_SSAODropDown",
-	"Advanced_BufferingDropDown",
-	"Advanced_LagDropDown",
-	"Advanced_HardwareCursorDropDown",
-	"Advanced_GraphicsAPIDropDown",
-	"AudioOptionsSoundPanelHardwareDropDown",
-	"AudioOptionsSoundPanelSoundChannelsDropDown",
-	"AudioOptionsVoicePanelInputDeviceDropDown",
-	"AudioOptionsVoicePanelChatModeDropDown",
-	"AudioOptionsVoicePanelOutputDeviceDropDown",
-	"CompactUnitFrameProfilesProfileSelector",
-	"CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdown",
-	"CompactUnitFrameProfilesGeneralOptionsFrameSortByDropdown",
-};
-local SystemFrameList19 = {
-	"RecordLoopbackSoundButton",
-	"PlayLoopbackSoundButton",
-	"AudioOptionsVoicePanelChatMode1KeyBindingButton",
-	"CompactUnitFrameProfilesSaveButton",
-	"CompactUnitFrameProfilesDeleteButton",
-};
-local SystemFrameList20 = {
-	"KeepGroupsTogether",
-	"DisplayIncomingHeals",
-	"DisplayPowerBar",
-	"DisplayAggroHighlight",
-	"UseClassColors",
-	"DisplayPets",
-	"DisplayMainTankAndAssist",
-	"DisplayBorder",
-	"ShowDebuffs",
-	"DisplayOnlyDispellableDebuffs",
-	"AutoActivate2Players",
-	"AutoActivate3Players",
-	"AutoActivate5Players",
-	"AutoActivate10Players",
-	"AutoActivate15Players",
-	"AutoActivate25Players",
-	"AutoActivate40Players",
-	"AutoActivateSpec1",
-	"AutoActivateSpec2",
-	"AutoActivatePvP",
-	"AutoActivatePvE",
-};
-local SystemFrameList21 = {
-	"Graphics_Quality",
-	"Advanced_UIScaleSlider",
-	"Advanced_MaxFPSSlider",
-	"Advanced_MaxFPSBKSlider",
-	"AudioOptionsSoundPanelSoundQuality",
-	"AudioOptionsSoundPanelMasterVolume",
-	"AudioOptionsSoundPanelSoundVolume",
-	"AudioOptionsSoundPanelMusicVolume",
-	"AudioOptionsSoundPanelAmbienceVolume",
-	"AudioOptionsVoicePanelMicrophoneVolume",
-	"AudioOptionsVoicePanelSpeakerVolume",
-	"AudioOptionsVoicePanelSoundFade",
-	"AudioOptionsVoicePanelMusicFade",
-	"AudioOptionsVoicePanelAmbienceFade",
-	"InterfaceOptionsCombatPanelSpellAlertOpacitySlider",
-	"InterfaceOptionsCombatPanelMaxSpellStartRecoveryOffset",
-	"InterfaceOptionsBattlenetPanelToastDurationSlider",
-	"InterfaceOptionsCameraPanelMaxDistanceSlider",
-	"InterfaceOptionsCameraPanelFollowSpeedSlider",
-	"InterfaceOptionsMousePanelMouseSensitivitySlider",
-	"InterfaceOptionsMousePanelMouseLookSpeedSlider",
-	"OpacityFrameSlider",
-};
---[[
-##########################################################
-HELPER FUNCTIONS
-##########################################################
-]]--
-local function forceBackdropColor(self, r, g, b, a)
-	if r ~= 0 or g ~= 0 or b ~= 0 or a ~= 0 then
-		GhostFrame:SetBackdropColor(0,0,0,0)
-		GhostFrame:SetBackdropBorderColor(0,0,0,0)
-	end
-end
---[[
-##########################################################
-SYSTEM WIDGET STYLERS
-##########################################################
-]]--
-local function SystemPanelQue()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.misc ~= true then return end
-
-	QueueStatusFrame:RemoveTextures()
-
-	for i = 1, #SystemPopList do
-		local this = _G[SystemPopList[i]]
-		if(this) then
-			this:RemoveTextures()
-			STYLE:ApplyAlertStyle(this)
-			this:SetBackdropColor(0.8, 0.2, 0.2)
-		end
-	end
-	for i = 1, #SystemDropDownList do
-		local this = _G[SystemDropDownList[i]]
-		if(this) then
-			this:RemoveTextures()
-			this:SetPanelTemplate("FramedTop")
-		end
-	end
-	for i = 1, #SystemFrameList1 do
-		local this = _G[SystemFrameList1[i]]
-		if(this) then
-			STYLE:ApplyWindowStyle(this)
-		end
-	end
-
-	LFDRoleCheckPopup:RemoveTextures()
-	LFDRoleCheckPopup:SetFixedPanelTemplate()
-	LFDRoleCheckPopupAcceptButton:SetButtonTemplate()
-	LFDRoleCheckPopupDeclineButton:SetButtonTemplate()
-	LFDRoleCheckPopupRoleButtonTank.checkButton:SetCheckboxTemplate(true)
-	LFDRoleCheckPopupRoleButtonDPS.checkButton:SetCheckboxTemplate(true)
-	LFDRoleCheckPopupRoleButtonHealer.checkButton:SetCheckboxTemplate(true)
-	LFDRoleCheckPopupRoleButtonTank.checkButton:SetFrameLevel(LFDRoleCheckPopupRoleButtonTank.checkButton:GetFrameLevel() + 1)
-	LFDRoleCheckPopupRoleButtonDPS.checkButton:SetFrameLevel(LFDRoleCheckPopupRoleButtonDPS.checkButton:GetFrameLevel() + 1)
-	LFDRoleCheckPopupRoleButtonHealer.checkButton:SetFrameLevel(LFDRoleCheckPopupRoleButtonHealer.checkButton:GetFrameLevel() + 1)
-	for i = 1, 3 do
-		for j = 1, 3 do
-			_G["StaticPopup"..i.."Button"..j]:SetButtonTemplate()
-			_G["StaticPopup"..i.."EditBox"]:SetEditboxTemplate()
-			_G["StaticPopup"..i.."MoneyInputFrameGold"]:SetEditboxTemplate()
-			_G["StaticPopup"..i.."MoneyInputFrameSilver"]:SetEditboxTemplate()
-			_G["StaticPopup"..i.."MoneyInputFrameCopper"]:SetEditboxTemplate()
-			_G["StaticPopup"..i.."EditBox"].Panel:Point("TOPLEFT", -2, -4)
-			_G["StaticPopup"..i.."EditBox"].Panel:Point("BOTTOMRIGHT", 2, 4)
-			_G["StaticPopup"..i.."ItemFrameNameFrame"]:Die()
-			_G["StaticPopup"..i.."ItemFrame"]:GetNormalTexture():Die()
-			_G["StaticPopup"..i.."ItemFrame"]:SetFixedPanelTemplate("Default")
-			_G["StaticPopup"..i.."ItemFrame"]:SetButtonTemplate()
-			_G["StaticPopup"..i.."ItemFrameIconTexture"]:SetTexCoord(0.1,0.9,0.1,0.9 )
-			_G["StaticPopup"..i.."ItemFrameIconTexture"]:FillInner()
-		end
-	end
-	for i = 1, #SystemFrameList4 do
-		local this = _G["GameMenuButton"..SystemFrameList4[i]]
-		if(this) then
-			this:SetButtonTemplate()
-		end
-	end
-	if IsAddOnLoaded("OptionHouse") then
-		GameMenuButtonOptionHouse:SetButtonTemplate()
-	end
-	do
-		GhostFrame:SetButtonTemplate()
-		GhostFrame:SetBackdropColor(0,0,0,0)
-		GhostFrame:SetBackdropBorderColor(0,0,0,0)
-		hooksecurefunc(GhostFrame, "SetBackdropColor", forceBackdropColor)
-		hooksecurefunc(GhostFrame, "SetBackdropBorderColor", forceBackdropColor)
-		GhostFrame:ClearAllPoints()
-		GhostFrame:SetPoint("TOP", SV.UIParent, "TOP", 0, -150)
-		GhostFrameContentsFrame:SetButtonTemplate()
-		GhostFrameContentsFrameIcon:SetTexture(0,0,0,0)
-		local x = CreateFrame("Frame", nil, GhostFrame)
-		x:SetFrameStrata("MEDIUM")
-		x:SetFixedPanelTemplate("Default")
-		x:WrapOuter(GhostFrameContentsFrameIcon)
-		local tex = x:CreateTexture(nil, "OVERLAY")
-		tex:SetTexture("Interface\\Icons\\spell_holy_guardianspirit")
-		tex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		tex:FillInner()
-	end
-	for i = 1, #SystemFrameList5 do
-		local this = _G[SystemFrameList5[i].."Header"]
-		if(this) then
-			this:SetTexture(0,0,0,0)
-			this:ClearAllPoints()
-			if this == _G["GameMenuFrameHeader"] then
-				this:SetPoint("TOP", GameMenuFrame, 0, 7)
-			else
-				this:SetPoint("TOP", SystemFrameList5[i], 0, 0)
-			end
-		end
-	end
-	for i = 1, #SystemFrameList6 do
-		local this = _G[SystemFrameList6[i]]
-		if(this) then
-			this:SetButtonTemplate()
-		end
-	end
-	VideoOptionsFrameCancel:ClearAllPoints()
-	VideoOptionsFrameCancel:SetPoint("RIGHT",VideoOptionsFrameApply,"LEFT",-4,0)
-	VideoOptionsFrameOkay:ClearAllPoints()
-	VideoOptionsFrameOkay:SetPoint("RIGHT",VideoOptionsFrameCancel,"LEFT",-4,0)
-	AudioOptionsFrameOkay:ClearAllPoints()
-	AudioOptionsFrameOkay:SetPoint("RIGHT",AudioOptionsFrameCancel,"LEFT",-4,0)
-	InterfaceOptionsFrameOkay:ClearAllPoints()
-	InterfaceOptionsFrameOkay:SetPoint("RIGHT",InterfaceOptionsFrameCancel,"LEFT", -4,0)
-	ReadyCheckFrameYesButton:SetParent(ReadyCheckFrame)
-	ReadyCheckFrameNoButton:SetParent(ReadyCheckFrame)
-	ReadyCheckFrameYesButton:SetPoint("RIGHT", ReadyCheckFrame, "CENTER", -1, 0)
-	ReadyCheckFrameNoButton:SetPoint("LEFT", ReadyCheckFrameYesButton, "RIGHT", 3, 0)
-	ReadyCheckFrameText:SetParent(ReadyCheckFrame)
-	ReadyCheckFrameText:ClearAllPoints()
-	ReadyCheckFrameText:SetPoint("TOP", 0, -12)
-	ReadyCheckListenerFrame:SetAlpha(0)
-	ReadyCheckFrame:HookScript("OnShow", function(self) if UnitIsUnit("player", self.initiator) then self:Hide() end end)
-	StackSplitFrame:GetRegions():Hide()
-	RolePollPopup:SetFixedPanelTemplate("Transparent", true)
-	InterfaceOptionsFrame:SetClampedToScreen(true)
-	InterfaceOptionsFrame:SetMovable(true)
-	InterfaceOptionsFrame:EnableMouse(true)
-	InterfaceOptionsFrame:RegisterForDrag("LeftButton", "RightButton")
-	InterfaceOptionsFrame:SetScript("OnDragStart", function(self)
-		if InCombatLockdown() then return end
-		if IsShiftKeyDown() then
-			self:StartMoving()
-		end
-	end)
-	InterfaceOptionsFrame:SetScript("OnDragStop", function(self)
-		self:StopMovingOrSizing()
-	end)
-	if IsMacClient() then
-		MacOptionsFrame:SetFixedPanelTemplate("Default")
-		MacOptionsFrameHeader:SetTexture(0,0,0,0)
-		MacOptionsFrameHeader:ClearAllPoints()
-		MacOptionsFrameHeader:SetPoint("TOP", MacOptionsFrame, 0, 0)
-		MacOptionsFrameMovieRecording:SetFixedPanelTemplate("Default")
-		MacOptionsITunesRemote:SetFixedPanelTemplate("Default")
-		MacOptionsFrameCancel:SetButtonTemplate()
-		MacOptionsFrameOkay:SetButtonTemplate()
-		MacOptionsButtonKeybindings:SetButtonTemplate()
-		MacOptionsFrameDefaults:SetButtonTemplate()
-		MacOptionsButtonCompress:SetButtonTemplate()
-		local tPoint, tRTo, tRP, tX, tY = MacOptionsButtonCompress:GetPoint()
-		MacOptionsButtonCompress:SetWidth(136)
-		MacOptionsButtonCompress:ClearAllPoints()
-		MacOptionsButtonCompress:Point(tPoint, tRTo, tRP, 4, tY)
-		MacOptionsFrameCancel:SetWidth(96)
-		MacOptionsFrameCancel:SetHeight(22)
-		tPoint, tRTo, tRP, tX, tY = MacOptionsFrameCancel:GetPoint()
-		MacOptionsFrameCancel:ClearAllPoints()
-		MacOptionsFrameCancel:Point(tPoint, tRTo, tRP, -14, tY)
-		MacOptionsFrameOkay:ClearAllPoints()
-		MacOptionsFrameOkay:SetWidth(96)
-		MacOptionsFrameOkay:SetHeight(22)
-		MacOptionsFrameOkay:Point("LEFT",MacOptionsFrameCancel, -99,0)
-		MacOptionsButtonKeybindings:ClearAllPoints()
-		MacOptionsButtonKeybindings:SetWidth(96)
-		MacOptionsButtonKeybindings:SetHeight(22)
-		MacOptionsButtonKeybindings:Point("LEFT",MacOptionsFrameOkay, -99,0)
-		MacOptionsFrameDefaults:SetWidth(96)
-		MacOptionsFrameDefaults:SetHeight(22)
-	end
-	OpacityFrame:RemoveTextures()
-	OpacityFrame:SetFixedPanelTemplate("Transparent", true)
-
-	hooksecurefunc("UIDropDownMenu_InitializeHelper", function(self)
-		for i = 1, UIDROPDOWNMENU_MAXLEVELS do
-			local name = ("DropDownList%d"):format(i)
-			local bg = _G[("%sBackdrop"):format(name)]
-			bg:SetBasicPanel()
-			local menu = _G[("%sMenuBackdrop"):format(name)]
-			menu:SetBasicPanel()
-		end
-	end)
-
-	if(SV.___interface < 60000) then
-		GuildInviteFrame:RemoveTextures()
-		GuildInviteFrame:SetFixedPanelTemplate('Transparent')
-		GuildInviteFrameLevel:RemoveTextures()
-		GuildInviteFrameLevel:ClearAllPoints()
-		GuildInviteFrameLevel:SetPoint('TOP', GuildInviteFrame, 'CENTER', -15, -25)
-		GuildInviteFrameJoinButton:SetButtonTemplate()
-		GuildInviteFrameDeclineButton:SetButtonTemplate()
-		GuildInviteFrame:Height(225)
-		GuildInviteFrame:HookScript("OnEvent", function()
-			GuildInviteFrame:Height(225)
-		end)
-
-		GuildInviteFrameWarningText:Die()
-		BattleTagInviteFrame:RemoveTextures()
-		BattleTagInviteFrame:SetFixedPanelTemplate('Transparent')
-	end
-	--BattleTagInviteFrameScrollFrame:SetEditboxTemplate()
-
-	for i=1, BattleTagInviteFrame:GetNumChildren() do
-		local child = select(i, BattleTagInviteFrame:GetChildren())
-		if child:GetObjectType() == 'Button' then
-			child:SetButtonTemplate()
-		end
-	end
-
-	for i = 1, #SystemFrameList13 do
-		local frame = _G[SystemFrameList13[i]]
-		if(frame) then
-			frame:RemoveTextures()
-			frame:SetBasicPanel()
-		end
-	end
-
-	for i = 1, #SystemFrameList14 do
-		local this = _G[SystemFrameList14[i]]
-		if(this) then
-			this:RemoveTextures()
-			STYLE:ApplyTabStyle(this)
-		end
-	end
-
-	InterfaceOptionsFrameTab1:ClearAllPoints()
-	InterfaceOptionsFrameTab1:SetPoint("BOTTOMLEFT",InterfaceOptionsFrameCategories,"TOPLEFT",-11,-2)
-	VideoOptionsFrameDefaults:ClearAllPoints()
-	InterfaceOptionsFrameDefaults:ClearAllPoints()
-	InterfaceOptionsFrameCancel:ClearAllPoints()
-	VideoOptionsFrameDefaults:SetPoint("TOPLEFT",VideoOptionsFrameCategoryFrame,"BOTTOMLEFT",-1,-5)
-	InterfaceOptionsFrameDefaults:SetPoint("TOPLEFT",InterfaceOptionsFrameCategories,"BOTTOMLEFT",-1,-5)
-	InterfaceOptionsFrameCancel:SetPoint("TOPRIGHT",InterfaceOptionsFramePanelContainer,"BOTTOMRIGHT",0,-6)
-	for i = 1, #SystemFrameList15 do
-		local this = _G["InterfaceOptions"..SystemFrameList15[i]]
-		if(this) then
-			this:SetCheckboxTemplate(true)
-		end
-	end
-	for i = 1, #SystemFrameList16 do
-		local this = _G["InterfaceOptions"..SystemFrameList16[i]]
-		if(this) then
-			STYLE:ApplyDropdownStyle(this)
-		end
-	end
-	InterfaceOptionsHelpPanelResetTutorials:SetButtonTemplate()
-	for i = 1, #SystemFrameList17 do
-		local this = _G[SystemFrameList17[i]]
-		if(this) then
-			this:SetCheckboxTemplate(true)
-		end
-	end
-	for i = 1, #SystemFrameList18 do
-		local this = _G[SystemFrameList18[i]]
-		if(this) then
-			STYLE:ApplyDropdownStyle(this, 165)
-		end
-	end
-	for i = 1, #SystemFrameList19 do
-		local this = _G[SystemFrameList19[i]]
-		if(this) then
-			this:SetButtonTemplate()
-		end
-	end
-	AudioOptionsVoicePanelChatMode1KeyBindingButton:ClearAllPoints()
-	AudioOptionsVoicePanelChatMode1KeyBindingButton:Point("CENTER", AudioOptionsVoicePanelBinding, "CENTER", 0, -10)
-	CompactUnitFrameProfilesRaidStylePartyFrames:SetCheckboxTemplate(true)
-	CompactUnitFrameProfilesGeneralOptionsFrameResetPositionButton:SetButtonTemplate()
-
-	for i = 1, #SystemFrameList20 do
-		local this = _G["CompactUnitFrameProfilesGeneralOptionsFrame"..SystemFrameList20[i]]
-		if(this) then
-			this:SetCheckboxTemplate(true)
-			this:SetFrameLevel(40)
-		end
-	end
-
-	for i = 1, #SystemFrameList21 do
-		local this = _G[SystemFrameList21[i]]
-		if(this) then
-			STYLE:ApplyScrollBarStyle(this)
-		end
-	end
-	Graphics_RightQuality:SetBackdrop(nil)
-	Graphics_RightQuality:Die()
-
-	MacOptionsFrame:RemoveTextures()
-	MacOptionsFrame:SetFixedPanelTemplate()
-	MacOptionsButtonCompress:SetButtonTemplate()
-	MacOptionsButtonKeybindings:SetButtonTemplate()
-	MacOptionsFrameDefaults:SetButtonTemplate()
-	MacOptionsFrameOkay:SetButtonTemplate()
-	MacOptionsFrameCancel:SetButtonTemplate()
-	MacOptionsFrameMovieRecording:RemoveTextures()
-	MacOptionsITunesRemote:RemoveTextures()
-	MacOptionsFrameMisc:RemoveTextures()
-	STYLE:ApplyDropdownStyle(MacOptionsFrameResolutionDropDown)
-	STYLE:ApplyDropdownStyle(MacOptionsFrameFramerateDropDown)
-	STYLE:ApplyDropdownStyle(MacOptionsFrameCodecDropDown)
-	STYLE:ApplyScrollBarStyle(MacOptionsFrameQualitySlider)
-	for i = 1, 11 do
-		local this = _G["MacOptionsFrameCheckButton"..i]
-		if(this) then
-			this:SetCheckboxTemplate(true)
-		end
-	end
-	MacOptionsButtonKeybindings:ClearAllPoints()
-	MacOptionsButtonKeybindings:SetPoint("LEFT", MacOptionsFrameDefaults, "RIGHT", 2, 0)
-	MacOptionsFrameOkay:ClearAllPoints()
-	MacOptionsFrameOkay:SetPoint("LEFT", MacOptionsButtonKeybindings, "RIGHT", 2, 0)
-	MacOptionsFrameCancel:ClearAllPoints()
-	MacOptionsFrameCancel:SetPoint("LEFT", MacOptionsFrameOkay, "RIGHT", 2, 0)
-	MacOptionsFrameCancel:SetWidth(MacOptionsFrameCancel:GetWidth() - 6)
-	ReportCheatingDialog:RemoveTextures()
-	ReportCheatingDialogCommentFrame:RemoveTextures()
-	ReportCheatingDialogReportButton:SetButtonTemplate()
-	ReportCheatingDialogCancelButton:SetButtonTemplate()
-	ReportCheatingDialog:SetFixedPanelTemplate("Transparent", true)
-	ReportCheatingDialogCommentFrameEditBox:SetEditboxTemplate()
-	ReportPlayerNameDialog:RemoveTextures()
-	ReportPlayerNameDialogCommentFrame:RemoveTextures()
-	ReportPlayerNameDialogCommentFrameEditBox:SetEditboxTemplate()
-	ReportPlayerNameDialog:SetFixedPanelTemplate("Transparent", true)
-	ReportPlayerNameDialogReportButton:SetButtonTemplate()
-	ReportPlayerNameDialogCancelButton:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(SideDressUpModelCloseButton)
-	SideDressUpFrame:RemoveTextures()
-	SideDressUpFrame.BGTopLeft:Hide()
-	SideDressUpFrame.BGBottomLeft:Hide()
-	SideDressUpModelResetButton:SetButtonTemplate()
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(SystemPanelQue)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/tabard.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/tabard.lua
deleted file mode 100644
index eb8d558..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/tabard.lua
+++ /dev/null
@@ -1,92 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local function cleanT(a,b)
-	for c=1,a:GetNumRegions()do
-		local d=select(c,a:GetRegions())
-		if d and d:GetObjectType()=="Texture"then
-			local n=d:GetName();
-			if n=='TabardFrameEmblemTopRight' or n=='TabardFrameEmblemTopLeft' or n=='TabardFrameEmblemBottomRight' or n=='TabardFrameEmblemBottomLeft' then return end
-			if b and type(b)=='boolean'then
-				d:Die()
-			elseif d:GetDrawLayer()==b then
-				d:SetTexture(0,0,0,0)
-			elseif b and type(b)=='string'and d:GetTexture()~=b then
-				d:SetTexture(0,0,0,0)
-			else
-				d:SetTexture(0,0,0,0)
-			end
-		end
-	end
-end
---[[
-##########################################################
-TABARDFRAME STYLER
-##########################################################
-]]--
-local function TabardFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.tabard ~= true then
-		 return
-	end
-	cleanT(TabardFrame, true)
-	TabardFrame:SetPanelTemplate("Action", false)
-	TabardModel:SetFixedPanelTemplate("Transparent")
-	TabardFrameCancelButton:SetButtonTemplate()
-	TabardFrameAcceptButton:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(TabardFrameCloseButton)
-	TabardFrameCostFrame:RemoveTextures()
-	TabardFrameCustomizationFrame:RemoveTextures()
-	TabardFrameInset:Die()
-	TabardFrameMoneyInset:Die()
-	TabardFrameMoneyBg:RemoveTextures()
-	for b = 1, 5 do
-		local c = "TabardFrameCustomization"..b;_G[c]:RemoveTextures()
-		STYLE:ApplyPaginationStyle(_G[c.."LeftButton"])
-		STYLE:ApplyPaginationStyle(_G[c.."RightButton"])
-		if b>1 then
-			 _G[c]:ClearAllPoints()
-			_G[c]:Point("TOP", _G["TabardFrameCustomization"..b-1], "BOTTOM", 0, -6)
-		else
-			local d, e, f, g, h = _G[c]:GetPoint()
-			_G[c]:Point(d, e, f, g, h+4)
-		end
-	end
-	TabardCharacterModelRotateLeftButton:Point("BOTTOMLEFT", 4, 4)
-	TabardCharacterModelRotateRightButton:Point("TOPLEFT", TabardCharacterModelRotateLeftButton, "TOPRIGHT", 4, 0)
-	hooksecurefunc(TabardCharacterModelRotateLeftButton, "SetPoint", function(i, d, j, k, l, m)
-		if d ~= "BOTTOMLEFT"or l ~= 4 or m ~= 4 then
-			 i:Point("BOTTOMLEFT", 4, 4)
-		end
-	end)
-	hooksecurefunc(TabardCharacterModelRotateRightButton, "SetPoint", function(i, d, j, k, l, m)
-		if d ~= "TOPLEFT"or l ~= 4 or m ~= 0 then
-			 i:Point("TOPLEFT", TabardCharacterModelRotateLeftButton, "TOPRIGHT", 4, 0)
-		end
-	end)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(TabardFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/talents.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/talents.lua
deleted file mode 100644
index b9c7fc5..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/talents.lua
+++ /dev/null
@@ -1,385 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local borderTex = [[Interface\Addons\SVUI\assets\artwork\Template\ROUND]]
-
-local SpecButtonList = {
-	"PlayerTalentFrameSpecializationLearnButton",
-	"PlayerTalentFrameTalentsLearnButton",
-	"PlayerTalentFramePetSpecializationLearnButton"
-};
-
-local function Tab_OnEnter(this)
-	this.backdrop:SetPanelColor("highlight")
-	this.backdrop:SetBackdropBorderColor(unpack(SV.Media.color.highlight))
-end
-
-local function Tab_OnLeave(this)
-	this.backdrop:SetPanelColor("dark")
-	this.backdrop:SetBackdropBorderColor(0,0,0,1)
-end
-
-local function ChangeTabHelper(this)
-	this:RemoveTextures()
-	local nTex = this:GetNormalTexture()
-	if(nTex) then
-		nTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		nTex:FillInner()
-	end
-
-	this.pushed = true;
-
-	this.backdrop = CreateFrame("Frame", nil, this)
-	this.backdrop:WrapOuter(this,1,1)
-	this.backdrop:SetFrameLevel(0)
-	this.backdrop:SetBackdrop({
-		bgFile = [[Interface\BUTTONS\WHITE8X8]],
-        tile = false,
-        tileSize = 0,
-        edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
-        edgeSize = 3,
-        insets = {
-            left = 0,
-            right = 0,
-            top = 0,
-            bottom = 0
-        }
-    });
-    this.backdrop:SetBackdropColor(0,0,0,1)
-	this.backdrop:SetBackdropBorderColor(0,0,0,1)
-	this:SetScript("OnEnter", Tab_OnEnter)
-	this:SetScript("OnLeave", Tab_OnLeave)
-end
-
-local function StyleGlyphHolder(holder, offset)
-    if holder.styled then return end
-
-    local outer = holder:CreateTexture(nil, "OVERLAY")
-    outer:WrapOuter(holder, offset, offset)
-    outer:SetTexture(borderTex)
-    outer:SetGradient(unpack(SV.Media.gradient.class))
-
-    local hover = holder:CreateTexture(nil, "HIGHLIGHT")
-    hover:WrapOuter(holder, offset, offset)
-    hover:SetTexture(borderTex)
-    hover:SetGradient(unpack(SV.Media.gradient.yellow))
-    holder.hover = hover
-
-    if holder.SetDisabledTexture then
-        local disabled = holder:CreateTexture(nil, "BORDER")
-        disabled:WrapOuter(holder, offset, offset)
-        disabled:SetTexture(borderTex)
-        disabled:SetGradient(unpack(SV.Media.gradient.default))
-        holder:SetDisabledTexture(disabled)
-    end
-
-    local cd = holder:GetName() and _G[holder:GetName().."Cooldown"]
-    if cd then
-        cd:ClearAllPoints()
-        cd:FillInner()
-    end
-    holder.styled = true
-end
---[[
-##########################################################
-TALENTFRAME STYLER
-##########################################################
-]]--
-local function TalentFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.talent ~= true then return end
-
-	STYLE:ApplyWindowStyle(PlayerTalentFrame)
-
-	PlayerTalentFrameInset:RemoveTextures()
-	PlayerTalentFrameTalents:RemoveTextures()
-	PlayerTalentFrameTalentsClearInfoFrame:RemoveTextures()
-
-	PlayerTalentFrame.Panel:Point("BOTTOMRIGHT", PlayerTalentFrame, "BOTTOMRIGHT", 0, -5)
-	PlayerTalentFrameSpecializationTutorialButton:Die()
-	PlayerTalentFrameTalentsTutorialButton:Die()
-	PlayerTalentFramePetSpecializationTutorialButton:Die()
-	STYLE:ApplyCloseButtonStyle(PlayerTalentFrameCloseButton)
-	PlayerTalentFrameActivateButton:SetButtonTemplate()
-
-	for _,name in pairs(SpecButtonList)do
-		local button = _G[name];
-		if(button) then
-			button:RemoveTextures()
-			button:SetButtonTemplate()
-			local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = button:GetPoint()
-			button:SetPoint(initialAnchor, anchorParent, relativeAnchor, xPosition, -28)
-		end
-	end
-
-	PlayerTalentFrameTalents:SetFixedPanelTemplate("Inset")
-	PlayerTalentFrameTalentsClearInfoFrame.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	PlayerTalentFrameTalentsClearInfoFrame:Width(PlayerTalentFrameTalentsClearInfoFrame:GetWidth()-2)
-	PlayerTalentFrameTalentsClearInfoFrame:Height(PlayerTalentFrameTalentsClearInfoFrame:GetHeight()-2)
-	PlayerTalentFrameTalentsClearInfoFrame.icon:Size(PlayerTalentFrameTalentsClearInfoFrame:GetSize())
-	PlayerTalentFrameTalentsClearInfoFrame:Point('TOPLEFT', PlayerTalentFrameTalents, 'BOTTOMLEFT', 8, -8)
-
-	for i = 1, 4 do
-		STYLE:ApplyTabStyle(_G["PlayerTalentFrameTab"..i])
-		if i == 1 then
-			local d, e, k, g = _G["PlayerTalentFrameTab"..i]:GetPoint()
-			_G["PlayerTalentFrameTab"..i]:Point(d, e, k, g, -4)
-		end
-	end
-
-	hooksecurefunc("PlayerTalentFrame_UpdateTabs", function()
-		for i = 1, 4 do
-			local d, e, k, g = _G["PlayerTalentFrameTab"..i]:GetPoint()
-			_G["PlayerTalentFrameTab"..i]:Point(d, e, k, g, -4)
-		end
-	end)
-
-	PlayerTalentFrameSpecializationSpellScrollFrameScrollChild.Seperator:SetTexture(1, 1, 1)
-	PlayerTalentFrameSpecializationSpellScrollFrameScrollChild.Seperator:SetAlpha(0.2)
-
-	for i = 1, 2 do
-		local v = _G["PlayerSpecTab"..i]
-		_G["PlayerSpecTab"..i.."Background"]:Die()
-		ChangeTabHelper(v)
-	end
-
-	hooksecurefunc("PlayerTalentFrame_UpdateSpecs", function()
-		local d, x, f, g, h = PlayerSpecTab1:GetPoint()
-		PlayerSpecTab1:Point(d, x, f, -1, h)
-	end)
-
-	for i = 1, MAX_NUM_TALENT_TIERS do
-		local gName = ("PlayerTalentFrameTalentsTalentRow%d"):format(i)
-		local rowFrame = _G[gName]
-		if(rowFrame) then
-			local bgFrame = _G[("%sBg"):format(gName)]
-			if(bgFrame) then bgFrame:Hide() end
-
-			rowFrame:DisableDrawLayer("BORDER")
-			rowFrame:RemoveTextures()
-			rowFrame.TopLine:Point("TOP", 0, 4)
-			rowFrame.BottomLine:Point("BOTTOM", 0, -4)
-
-			for z = 1, NUM_TALENT_COLUMNS do
-				local talentItem = _G[("%sTalent%d"):format(gName, z)]
-				if(talentItem) then
-					STYLE:ApplyItemButtonStyle(talentItem, false, true)
-				end
-			end
-		end
-	end
-
-	hooksecurefunc("TalentFrame_Update", function()
-		for i = 1, MAX_NUM_TALENT_TIERS do
-			local gName = ("PlayerTalentFrameTalentsTalentRow%d"):format(i)
-
-			for z = 1, NUM_TALENT_COLUMNS do
-				local talentItem = _G[("%sTalent%d"):format(gName, z)]
-				if(talentItem) then
-					if talentItem.knownSelection:IsShown() then
-						talentItem:SetBackdropBorderColor(0, 1, 0)
-					else
-			 			talentItem:SetBackdropBorderColor(0, 0, 0)
-					end
-					if talentItem.learnSelection:IsShown() then
-			 			talentItem:SetBackdropBorderColor(1, 1, 0)
-					end
-				end
-			end
-		end
-	end)
-
-	for b = 1, 5 do
-		 select(b, PlayerTalentFrameSpecializationSpellScrollFrameScrollChild:GetRegions()):Hide()
-	end
-
-	local C = _G["PlayerTalentFrameSpecializationSpellScrollFrameScrollChild"]
-	C.ring:Hide()
-	C:SetFixedPanelTemplate("Transparent")
-	C.Panel:WrapOuter(C.specIcon)
-	C.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-
-	local D = _G["PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild"]
-	D.ring:Hide()
-	D:SetFixedPanelTemplate("Transparent")
-	D.Panel:WrapOuter(D.specIcon)
-	D.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-
-	hooksecurefunc("PlayerTalentFrame_UpdateSpecFrame", function(i, E)
-		local F = GetSpecialization(nil, i.isPet, PlayerSpecTab2:GetChecked() and 2 or 1)
-		local G = E or F or 1;
-		local H, p, p, icon = GetSpecializationInfo(G, nil, i.isPet)
-		local I = i.spellsScroll.child;
-		I.specIcon:SetTexture(icon)
-		local J = 1;
-		local K;
-		if i.isPet then
-			K = { GetSpecializationSpells(G, nil, i.isPet) }
-		else
-			 K = SPEC_SPELLS_DISPLAY[H]
-		end
-		for b = 1, #K, 2 do
-			local L = I["abilityButton"..J]
-			local p, icon = GetSpellTexture(K[b])
-			L.icon:SetTexture(icon)
-			if not L.restyled then
-				L.restyled = true;L:Size(30, 30)
-				L.ring:Hide()
-				L:SetFixedPanelTemplate("Transparent")
-				L.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-				L.icon:FillInner()
-			end
-			J = J+1
-		end
-		for b = 1, GetNumSpecializations(nil, i.isPet)do
-			local A = i["specButton"..b]
-			A.SelectedTexture:FillInner(A.Panel)
-			if A.selected then
-				 A.SelectedTexture:Show()
-			else
-				 A.SelectedTexture:Hide()
-			end
-		end
-	end)
-
-	for b = 1, GetNumSpecializations(false, nil)do
-		local button = PlayerTalentFrameSpecialization["specButton"..b]
-		if(button) then
-			local _, _, _, icon = GetSpecializationInfo(b, false, nil)
-			button.ring:Hide()
-			button.specIcon:SetTexture(icon)
-			button.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			button.specIcon:SetSize(50, 50)
-			button.specIcon:Point("LEFT", button, "LEFT", 15, 0)
-			button.SelectedTexture = button:CreateTexture(nil, 'ARTWORK')
-			button.SelectedTexture:SetTexture(1, 1, 0, 0.1)
-		end
-	end
-
-	local btnList = {
-		"PlayerTalentFrameSpecializationSpecButton", "PlayerTalentFramePetSpecializationSpecButton"
-	}
-
-	for _, gName in pairs(btnList)do
-		for b = 1, 4 do
-			local button = _G[gName..b]
-			if(button) then
-				if(_G[gName..b.."Glow"]) then _G[gName..b.."Glow"]:Die() end
-				local bTex = button:CreateTexture(nil, 'ARTWORK')
-				bTex:SetTexture(1, 1, 1, 0.1)
-				button:SetHighlightTexture(bTex)
-				button.bg:SetAlpha(0)
-				button.learnedTex:SetAlpha(0)
-				button.selectedTex:SetAlpha(0)
-				button:SetFixedPanelTemplate("Button")
-				button:GetHighlightTexture():FillInner(button.Panel)
-			end
-		end
-	end
-
-	if SV.class == "HUNTER" then
-		for b = 1, 6 do
-			 select(b, PlayerTalentFramePetSpecialization:GetRegions()):Hide()
-		end
-		for b = 1, PlayerTalentFramePetSpecialization:GetNumChildren()do
-			local O = select(b, PlayerTalentFramePetSpecialization:GetChildren())
-			if O and not O:GetName() then
-				 O:DisableDrawLayer("OVERLAY")
-			end
-		end
-		for b = 1, 5 do
-			 select(b, PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild:GetRegions()):Hide()
-		end
-		for b = 1, GetNumSpecializations(false, true)do
-			local A = PlayerTalentFramePetSpecialization["specButton"..b]
-			local p, p, p, icon = GetSpecializationInfo(b, false, true)
-			A.ring:Hide()
-			A.specIcon:SetTexture(icon)
-			A.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			A.specIcon:SetSize(50, 50)
-			A.specIcon:Point("LEFT", A, "LEFT", 15, 0)
-			A.SelectedTexture = A:CreateTexture(nil, 'ARTWORK')
-			A.SelectedTexture:SetTexture(1, 1, 0, 0.1)
-		end
-		PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild.Seperator:SetTexture(1, 1, 1)
-		PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild.Seperator:SetAlpha(0.2)
-	end
-
-	PlayerTalentFrameSpecialization:DisableDrawLayer('ARTWORK')
-	PlayerTalentFrameSpecialization:DisableDrawLayer('BORDER')
-
-	for b = 1, PlayerTalentFrameSpecialization:GetNumChildren()do
-		local O = select(b, PlayerTalentFrameSpecialization:GetChildren())
-		if O and not O:GetName() then
-			 O:DisableDrawLayer("OVERLAY")
-		end
-	end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_TalentUI", TalentFrameStyle)
-
-local function GlyphStyle()
-	GlyphFrame:RemoveTextures()
-	--GlyphFrame.background:ClearAllPoints()
-	--GlyphFrame.background:SetAllPoints(PlayerTalentFrameInset)
-	GlyphFrame:SetFixedPanelTemplate("Comic", false, 0, 3, 3)
-	GlyphFrameSideInset:RemoveTextures()
-	GlyphFrameClearInfoFrame:RemoveTextures()
-	GlyphFrameClearInfoFrame.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9 )
-	GlyphFrameClearInfoFrame:Width(GlyphFrameClearInfoFrame:GetWidth()-2)
-	GlyphFrameClearInfoFrame:Height(GlyphFrameClearInfoFrame:GetHeight()-2)
-	GlyphFrameClearInfoFrame.icon:Size(GlyphFrameClearInfoFrame:GetSize())
-	GlyphFrameClearInfoFrame:Point("TOPLEFT", GlyphFrame, "BOTTOMLEFT", 6, -10)
-	STYLE:ApplyDropdownStyle(GlyphFrameFilterDropDown, 212)
-	GlyphFrameSearchBox:SetEditboxTemplate()
-	STYLE:ApplyScrollFrameStyle(GlyphFrameScrollFrameScrollBar, 5)
-
-	for b = 1, 10 do
-		local e = _G["GlyphFrameScrollFrameButton"..b]
-		local icon = _G["GlyphFrameScrollFrameButton"..b.."Icon"]
-		e:RemoveTextures()
-		STYLE:ApplyItemButtonStyle(e)
-		icon:SetTexCoord(0.1, 0.9, 0.1, 0.9 )
-	end
-
-	for b = 1, 6 do
-		local glyphHolder = _G["GlyphFrameGlyph"..b]
-		if glyphHolder then
-			glyphHolder:RemoveTextures()
-			if(b % 2 == 0) then
-				StyleGlyphHolder(glyphHolder, 4)
-			else
-				StyleGlyphHolder(glyphHolder, 1)
-			end
-		end
-	end
-
-	GlyphFrameHeader1:RemoveTextures()
-	GlyphFrameHeader2:RemoveTextures()
-	GlyphFrameScrollFrame:SetPanelTemplate("Inset", false, 3, 2, 2)
-end
-
-STYLE:SaveBlizzardStyle("Blizzard_GlyphUI", GlyphStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/taxi.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/taxi.lua
deleted file mode 100644
index 2c935e2..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/taxi.lua
+++ /dev/null
@@ -1,41 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TAXIFRAME STYLER
-##########################################################
-]]--
-local function TaxiStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.taxi ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(TaxiFrame)
-
-	TaxiRouteMap:SetPanelTemplate("Blackout")
-	--TaxiRouteMap.Panel:WrapOuter(TaxiRouteMap, 4, 4)
-
-	STYLE:ApplyCloseButtonStyle(TaxiFrame.CloseButton)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(TaxiStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/ACP.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/ACP.lua
deleted file mode 100644
index e91177e..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/ACP.lua
+++ /dev/null
@@ -1,104 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ACP
-##########################################################
-]]--
-local function cbResize(self,elapsed)
-	self.timeLapse = self.timeLapse + elapsed
-	if(self.timeLapse < 2) then
-		return
-	else
-		self.timeLapse = 0
-	end
-	for i=1,20,1 do
-		local d=_G["ACP_AddonListEntry"..i.."Enabled"]
-		local e=_G["ACP_AddonListEntry"..i.."Collapse"]
-		local f=_G["ACP_AddonListEntry"..i.."Security"]
-		local g=""
-		if g=="" then
-			d:SetPoint("LEFT",5,0)
-			if e:IsShown()then
-				d:SetWidth(26)
-				d:SetHeight(26)
-			else
-				d:SetPoint("LEFT",15,0)
-				d:SetWidth(20)
-				d:SetHeight(20)
-			end
-		end
-		if f:IsShown()then
-			d:SetPoint("LEFT",5,0)
-			d:SetWidth(26)
-			d:SetHeight(26)
-		end
-	end
-end
-
-local function StyleACP()
-	assert(ACP_AddonList, "AddOn Not Loaded")
-
-	STYLE:ApplyFrameStyle(ACP_AddonList)
-	STYLE:ApplyFrameStyle(ACP_AddonList_ScrollFrame)
-	local h={"ACP_AddonListSetButton","ACP_AddonListDisableAll","ACP_AddonListEnableAll","ACP_AddonList_ReloadUI","ACP_AddonListBottomClose"}
-	for i,j in pairs(h)do _G[j]:SetButtonTemplate()end
-	for c=1,20 do _G["ACP_AddonListEntry"..c.."LoadNow"]:SetButtonTemplate()end
-	STYLE:ApplyCloseButtonStyle(ACP_AddonListCloseButton)
-	for c=1,20,1 do
-		local k=_G["ACP_AddonList"]
-		k.timeLapse = 0
-		k:SetScript("OnUpdate",cbResize)
-	end
-	for c=1,20 do _G["ACP_AddonListEntry"..c.."Enabled"]:SetCheckboxTemplate(true)end
-	ACP_AddonList_NoRecurse:SetCheckboxTemplate(true)
-	STYLE:ApplyScrollFrameStyle(ACP_AddonList_ScrollFrameScrollBar)
-	STYLE:ApplyDropdownStyle(ACP_AddonListSortDropDown)
-	ACP_AddonListSortDropDown:Width(130)
-	ACP_AddonList_ScrollFrame:SetWidth(590)
-	ACP_AddonList_ScrollFrame:SetHeight(412)
-	ACP_AddonList:SetHeight(502)
-	ACP_AddonListEntry1:Point("TOPLEFT",ACP_AddonList,"TOPLEFT",47,-62)
-	ACP_AddonList_ScrollFrame:Point("TOPLEFT",ACP_AddonList,"TOPLEFT",20,-53)
-	ACP_AddonListCloseButton:Point("TOPRIGHT",ACP_AddonList,"TOPRIGHT",4,5)
-	ACP_AddonListSetButton:Point("BOTTOMLEFT",ACP_AddonList,"BOTTOMLEFT",20,8)
-	ACP_AddonListSetButton:SetHeight(25)
-	ACP_AddonListDisableAll:Point("BOTTOMLEFT",ACP_AddonList,"BOTTOMLEFT",90,8)
-	ACP_AddonListDisableAll:SetHeight(25)
-	ACP_AddonListEnableAll:Point("BOTTOMLEFT",ACP_AddonList,"BOTTOMLEFT",175,8)
-	ACP_AddonListEnableAll:SetHeight(25)
-	ACP_AddonList_ReloadUI:Point("BOTTOMRIGHT",ACP_AddonList,"BOTTOMRIGHT",-160,8)
-	ACP_AddonListBottomClose:Point("BOTTOMRIGHT",ACP_AddonList,"BOTTOMRIGHT",-50,8)
-	ACP_AddonListBottomClose:SetHeight(25)ACP_AddonList:SetParent(UIParent)
-end
-
-STYLE:SaveAddonStyle("ACP", StyleACP)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AdiBags.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AdiBags.lua
deleted file mode 100644
index e72fe0e..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AdiBags.lua
+++ /dev/null
@@ -1,73 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ADIBAGS
-##########################################################
-]]--
-local function StyleAdiBags(event)
-	local AdiBags = LibStub('AceAddon-3.0'):GetAddon('AdiBags')
-	assert(AdiBags, "AddOn Not Loaded")
-	--hooksecurefunc(AdiBags, 'HookBagFrameCreation', function(self) print(self) end)
-
-	local function SkinFrame(frame)
-		local region = frame.HeaderRightRegion
-		frame:SetBasicPanel()
-		_G[frame:GetName()..'Bags']:SetPanelTemplate("Default")
-		for i = 1, 3 do
-			region.widgets[i].widget:SetButtonTemplate()
-		end
-	end
-
-	if event == 'PLAYER_ENTERING_WORLD' then
-		SV.Timers:ExecuteTimer(function()
-			if not AdiBagsContainer1 then ToggleBackpack() ToggleBackpack() end
-			if AdiBagsContainer1 then
-				SkinFrame(AdiBagsContainer1)
-				AdiBagsContainer1SearchBox:SetEditboxTemplate()
-				AdiBagsContainer1SearchBox:Point('TOPRIGHT', AdiBagsSimpleLayeredRegion2, 'TOPRIGHT', -75, -1)
-			end
-		end, 1)
-	elseif event == 'BANKFRAME_OPENED' then
-		SV.Timers:ExecuteTimer(function()
-			if AdiBagsContainer2 then
-				SkinFrame(AdiBagsContainer2)
-				STYLE:SafeEventRemoval("AdiBags", event)
-			end
-		end, 1)
-	end
-end
-
-STYLE:SaveAddonStyle("AdiBags", StyleAdiBags, nil, nil, 'BANKFRAME_OPENED')
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Altoholic.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Altoholic.lua
deleted file mode 100644
index b25d7df..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Altoholic.lua
+++ /dev/null
@@ -1,281 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ALTOHOLIC
-##########################################################
-]]--
-local function ColorAltoBorder(self)
-	if self.border then
-		local r, g, b = self.border:GetVertexColor()
-		local Backdrop = self.backdrop or self.Backdrop
-		Backdrop:SetBackdropBorderColor(r, g, b, 1)
-	end
-end
-
-local function StyleAltoholic(event, addon)
-	assert(AltoholicFrame, "AddOn Not Loaded")
-
-	if event == "PLAYER_ENTERING_WORLD" then
-		STYLE:ApplyTooltipStyle(AltoTooltip)
-
-		AltoholicFramePortrait:Die()
-
-		STYLE:ApplyFrameStyle(AltoholicFrame, "Action", false, true)
-		STYLE:ApplyFrameStyle(AltoMsgBox)
-		STYLE:ApplyButtonStyle(AltoMsgBoxYesButton)
-		STYLE:ApplyButtonStyle(AltoMsgBoxNoButton)
-		STYLE:ApplyCloseButtonStyle(AltoholicFrameCloseButton)
-		STYLE:ApplyEditBoxStyle(AltoholicFrame_SearchEditBox, 175, 15)
-		STYLE:ApplyButtonStyle(AltoholicFrame_ResetButton)
-		STYLE:ApplyButtonStyle(AltoholicFrame_SearchButton)
-
-		AltoholicFrameTab1:Point("TOPLEFT", AltoholicFrame, "BOTTOMLEFT", -5, 2)
-		AltoholicFrame_ResetButton:Point("TOPLEFT", AltoholicFrame, "TOPLEFT", 25, -77)
-		AltoholicFrame_SearchEditBox:Point("TOPLEFT", AltoholicFrame, "TOPLEFT", 37, -56)
-		AltoholicFrame_ResetButton:Size(85, 24)
-		AltoholicFrame_SearchButton:Size(85, 24)
-	end
-
-	if addon == "Altoholic_Summary" then
-		STYLE:ApplyFrameStyle(AltoholicFrameSummary)
-		STYLE:ApplyFrameStyle(AltoholicFrameBagUsage)
-		STYLE:ApplyFrameStyle(AltoholicFrameSkills)
-		STYLE:ApplyFrameStyle(AltoholicFrameActivity)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameSummaryScrollFrameScrollBar)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameBagUsageScrollFrameScrollBar)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameSkillsScrollFrameScrollBar)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameActivityScrollFrameScrollBar)
-		STYLE:ApplyDropdownStyle(AltoholicTabSummary_SelectLocation, 200)
-
-		if(AltoholicFrameSummaryScrollFrame) then
-			AltoholicFrameSummaryScrollFrame:RemoveTextures(true)
-		end
-
-		if(AltoholicFrameBagUsageScrollFrame) then
-			AltoholicFrameBagUsageScrollFrame:RemoveTextures(true)
-		end
-
-		if(AltoholicFrameSkillsScrollFrame) then
-			AltoholicFrameSkillsScrollFrame:RemoveTextures(true)
-		end
-
-		if(AltoholicFrameActivityScrollFrame) then
-			AltoholicFrameActivityScrollFrame:RemoveTextures(true)
-		end
-
-		STYLE:ApplyButtonStyle(AltoholicTabSummary_RequestSharing)
-		STYLE:ApplyTextureStyle(AltoholicTabSummary_RequestSharingIconTexture)
-		STYLE:ApplyButtonStyle(AltoholicTabSummary_Options)
-		STYLE:ApplyTextureStyle(AltoholicTabSummary_OptionsIconTexture)
-		STYLE:ApplyButtonStyle(AltoholicTabSummary_OptionsDataStore)
-		STYLE:ApplyTextureStyle(AltoholicTabSummary_OptionsDataStoreIconTexture)
-
-		for i = 1, 5 do
-			STYLE:ApplyButtonStyle(_G["AltoholicTabSummaryMenuItem"..i], true)
-		end
-		for i = 1, 8 do
-			STYLE:ApplyButtonStyle(_G["AltoholicTabSummary_Sort"..i], true)
-		end
-		for i = 1, 7 do
-			STYLE:ApplyTabStyle(_G["AltoholicFrameTab"..i], true)
-		end
-	end
-
-	if IsAddOnLoaded("Altoholic_Characters") or addon == "Altoholic_Characters" then
-		STYLE:ApplyFrameStyle(AltoholicFrameContainers)
-		STYLE:ApplyFrameStyle(AltoholicFrameRecipes)
-		STYLE:ApplyFrameStyle(AltoholicFrameQuests)
-		STYLE:ApplyFrameStyle(AltoholicFrameGlyphs)
-		STYLE:ApplyFrameStyle(AltoholicFrameMail)
-		STYLE:ApplyFrameStyle(AltoholicFrameSpellbook)
-		STYLE:ApplyFrameStyle(AltoholicFramePets)
-		STYLE:ApplyFrameStyle(AltoholicFrameAuctions)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameContainersScrollFrameScrollBar)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameQuestsScrollFrameScrollBar)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameRecipesScrollFrameScrollBar)
-		STYLE:ApplyDropdownStyle(AltoholicFrameTalents_SelectMember)
-		STYLE:ApplyDropdownStyle(AltoholicTabCharacters_SelectRealm)
-		STYLE:ApplyPaginationStyle(AltoholicFrameSpellbookPrevPage)
-		STYLE:ApplyPaginationStyle(AltoholicFrameSpellbookNextPage)
-		STYLE:ApplyPaginationStyle(AltoholicFramePetsNormalPrevPage)
-		STYLE:ApplyPaginationStyle(AltoholicFramePetsNormalNextPage)
-		STYLE:ApplyRotateStyle(AltoholicFramePetsNormal_ModelFrameRotateLeftButton)
-		STYLE:ApplyRotateStyle(AltoholicFramePetsNormal_ModelFrameRotateRightButton)
-		STYLE:ApplyButtonStyle(AltoholicTabCharacters_Sort1)
-		STYLE:ApplyButtonStyle(AltoholicTabCharacters_Sort2)
-		STYLE:ApplyButtonStyle(AltoholicTabCharacters_Sort3)
-		AltoholicFrameContainersScrollFrame:RemoveTextures(true)
-		AltoholicFrameQuestsScrollFrame:RemoveTextures(true)
-		AltoholicFrameRecipesScrollFrame:RemoveTextures(true)
-
-		local Buttons = {
-			'AltoholicTabCharacters_Characters',
-			'AltoholicTabCharacters_CharactersIcon',
-			'AltoholicTabCharacters_BagsIcon',
-			'AltoholicTabCharacters_QuestsIcon',
-			'AltoholicTabCharacters_TalentsIcon',
-			'AltoholicTabCharacters_AuctionIcon',
-			'AltoholicTabCharacters_MailIcon',
-			'AltoholicTabCharacters_SpellbookIcon',
-			'AltoholicTabCharacters_ProfessionsIcon',
-		}
-
-		for _, object in pairs(Buttons) do
-			STYLE:ApplyTextureStyle(_G[object..'IconTexture'])
-			STYLE:ApplyTextureStyle(_G[object])
-		end
-
-		for i = 1, 7 do
-			for j = 1, 14 do
-				STYLE:ApplyItemButtonStyle(_G["AltoholicFrameContainersEntry"..i.."Item"..j])
-				_G["AltoholicFrameContainersEntry"..i.."Item"..j]:HookScript('OnShow', ColorAltoBorder)
-			end
-		end
-	end
-
-	if IsAddOnLoaded("Altoholic_Achievements") or addon == "Altoholic_Achievements" then
-		STYLE:ApplyUnderlayStyle(AltoholicFrameAchievements)
-		AltoholicFrameAchievementsScrollFrame:RemoveTextures(true)
-		AltoholicAchievementsMenuScrollFrame:RemoveTextures(true)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameAchievementsScrollFrameScrollBar)
-		STYLE:ApplyScrollBarStyle(AltoholicAchievementsMenuScrollFrameScrollBar)
-		STYLE:ApplyDropdownStyle(AltoholicTabAchievements_SelectRealm)
-		AltoholicTabAchievements_SelectRealm:Point("TOPLEFT", AltoholicFrame, "TOPLEFT", 205, -57)
-
-		for i = 1, 15 do
-			STYLE:ApplyButtonStyle(_G["AltoholicTabAchievementsMenuItem"..i], true)
-		end
-
-		for i = 1, 8 do
-			for j = 1, 10 do
-				STYLE:ApplyUnderlayStyle(_G["AltoholicFrameAchievementsEntry"..i.."Item"..j])
-				local Backdrop = _G["AltoholicFrameAchievementsEntry"..i.."Item"..j].backdrop or _G["AltoholicFrameAchievementsEntry"..i.."Item"..j].Backdrop
-				STYLE:ApplyTextureStyle(_G["AltoholicFrameAchievementsEntry"..i.."Item"..j..'_Background'])
-				_G["AltoholicFrameAchievementsEntry"..i.."Item"..j..'_Background']:SetInside(Backdrop)
-			end
-		end
-	end
-
-	if IsAddOnLoaded("Altoholic_Agenda") or addon == "Altoholic_Agenda" then
-		STYLE:ApplyFrameStyle(AltoholicFrameCalendarScrollFrame)
-		STYLE:ApplyFrameStyle(AltoholicTabAgendaMenuItem1)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameCalendarScrollFrameScrollBar)
-		STYLE:ApplyPaginationStyle(AltoholicFrameCalendar_NextMonth)
-		STYLE:ApplyPaginationStyle(AltoholicFrameCalendar_PrevMonth)
-		STYLE:ApplyButtonStyle(AltoholicTabAgendaMenuItem1, true)
-
-		for i = 1, 14 do
-			STYLE:ApplyFrameStyle(_G["AltoholicFrameCalendarEntry"..i])
-		end
-	end
-
-	if IsAddOnLoaded("Altoholic_Grids") or addon == "Altoholic_Grids" then
-		AltoholicFrameGridsScrollFrame:RemoveTextures(true)
-		STYLE:ApplyUnderlayStyle(AltoholicFrameGrids)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameGridsScrollFrameScrollBar)
-		STYLE:ApplyDropdownStyle(AltoholicTabGrids_SelectRealm)
-		STYLE:ApplyDropdownStyle(AltoholicTabGrids_SelectView)
-
-		for i = 1, 8 do
-			for j = 1, 10 do
-				STYLE:ApplyUnderlayStyle(_G["AltoholicFrameGridsEntry"..i.."Item"..j], nil, nil, nil, true)
-				_G["AltoholicFrameGridsEntry"..i.."Item"..j]:HookScript('OnShow', ColorAltoBorder)
-			end
-		end
-
-		AltoholicFrameGrids:HookScript('OnUpdate', function()
-			for i = 1, 10 do
-				for j = 1, 10 do
-					if _G["AltoholicFrameGridsEntry"..i.."Item"..j.."_Background"] then
-						_G["AltoholicFrameGridsEntry"..i.."Item"..j.."_Background"]:SetTexCoord(.08, .92, .08, .82)
-					end
-				end
-			end
-		end)
-
-	end
-
-	if IsAddOnLoaded("Altoholic_Guild") or addon == "Altoholic_Guild" then
-		STYLE:ApplyFrameStyle(AltoholicFrameGuildMembers)
-		STYLE:ApplyFrameStyle(AltoholicFrameGuildBank)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameGuildMembersScrollFrameScrollBar)
-		AltoholicFrameGuildMembersScrollFrame:RemoveTextures(true)
-
-		for i = 1, 2 do
-			STYLE:ApplyButtonStyle(_G["AltoholicTabGuildMenuItem"..i])
-		end
-
-		for i = 1, 7 do
-			for j = 1, 14 do
-				STYLE:ApplyItemButtonStyle(_G["AltoholicFrameGuildBankEntry"..i.."Item"..j])
-			end
-		end
-
-		for i = 1, 19 do
-			STYLE:ApplyItemButtonStyle(_G["AltoholicFrameGuildMembersItem"..i])
-		end
-
-		for i = 1, 5 do
-			STYLE:ApplyButtonStyle(_G["AltoholicTabGuild_Sort"..i])
-		end
-	end
-
-	if IsAddOnLoaded("Altoholic_Search") or addon == "Altoholic_Search" then
-		STYLE:ApplyUnderlayStyle(AltoholicFrameSearch, true)
-		AltoholicFrameSearchScrollFrame:RemoveTextures(true)
-		AltoholicSearchMenuScrollFrame:RemoveTextures(true)
-		STYLE:ApplyScrollBarStyle(AltoholicFrameSearchScrollFrameScrollBar)
-		STYLE:ApplyScrollBarStyle(AltoholicSearchMenuScrollFrameScrollBar)
-		STYLE:ApplyDropdownStyle(AltoholicTabSearch_SelectRarity)
-		STYLE:ApplyDropdownStyle(AltoholicTabSearch_SelectSlot)
-		STYLE:ApplyDropdownStyle(AltoholicTabSearch_SelectLocation)
-		AltoholicTabSearch_SelectRarity:Size(125, 32)
-		AltoholicTabSearch_SelectSlot:Size(125, 32)
-		AltoholicTabSearch_SelectLocation:Size(175, 32)
-		STYLE:ApplyEditBoxStyle(_G["AltoholicTabSearch_MinLevel"])
-		STYLE:ApplyEditBoxStyle(_G["AltoholicTabSearch_MaxLevel"])
-
-		for i = 1, 15 do
-			STYLE:ApplyButtonStyle(_G["AltoholicTabSearchMenuItem"..i])
-		end
-
-		for i = 1, 8 do
-			STYLE:ApplyButtonStyle(_G["AltoholicTabSearch_Sort"..i])
-		end
-	end
-end
-
-STYLE:SaveAddonStyle("Altoholic", StyleAltoholic, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AtlasLoot.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AtlasLoot.lua
deleted file mode 100644
index 1752b3c..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AtlasLoot.lua
+++ /dev/null
@@ -1,224 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ATLASLOOT
-##########################################################
-]]--
-local timeLapse = 0;
-local nineisthere = {"AtlasLootCompareFrameSortButton_7","AtlasLootCompareFrameSortButton_8","AtlasLootCompareFrameSortButton_9"}
-local StripAllTextures = {"AtlasLootDefaultFrame","AtlasLootDefaultFrame_ScrollFrame","AtlasLootItemsFrame","AtlasLootPanel","AtlasLootCompareFrame","AtlasLootCompareFrame_ScrollFrameMainFilterScrollChildFrame","AtlasLootCompareFrame_ScrollFrameItemFrame","AtlasLootCompareFrame_ScrollFrameMainFilter","AtlasLootCompareFrameSortButton_Name","AtlasLootCompareFrameSortButton_Rarity","AtlasLootCompareFrameSortButton_1","AtlasLootCompareFrameSortButton_2","AtlasLootCompareFrameSortButton_3","AtlasLootCompareFrameSortButton_4","AtlasLootCompareFrameSortButton_5","AtlasLootCompareFrameSortButton_6"}
-
-local SetTemplateDefault = {"AtlasLootCompareFrameSortButton_Name","AtlasLootCompareFrameSortButton_Rarity","AtlasLootCompareFrameSortButton_1","AtlasLootCompareFrameSortButton_2","AtlasLootCompareFrameSortButton_3","AtlasLootCompareFrameSortButton_4","AtlasLootCompareFrameSortButton_5","AtlasLootCompareFrameSortButton_6"}
-
-local buttons = {"AtlasLoot_AtlasInfoFrame_ToggleALButton","AtlasLootPanelSearch_SearchButton","AtlasLootDefaultFrame_CompareFrame","AtlasLootPanelSearch_ClearButton","AtlasLootPanelSearch_LastResultButton","AtlasLoot10Man25ManSwitch","AtlasLootItemsFrame_BACK","AtlasLootCompareFrameSearch_ClearButton","AtlasLootCompareFrameSearch_SearchButton","AtlasLootCompareFrame_WishlistButton","AtlasLootCompareFrame_CloseButton2"}
-
-local function AL_OnShow(self, event, ...)
-	AtlasLootPanel:Point("TOP", AtlasLootDefaultFrame, "BOTTOM", 0, -1)
-	AtlasLootQuickLooksButton:Point("BOTTOM", AtlasLootItemsFrame, "BOTTOM", 53, 33)
-	AtlasLootPanelSearch_Box:ClearAllPoints()
-	AtlasLootPanelSearch_Box:Point("TOP", AtlasLoot_PanelButton_7, "BOTTOM", 80, -10)
-	AtlasLootPanelSearch_SearchButton:Point("LEFT", AtlasLootPanelSearch_Box, "RIGHT", 5, 0)
-	AtlasLootPanelSearch_SelectModuel:Point("LEFT", AtlasLootPanelSearch_SearchButton, "RIGHT", 5, 0)
-	AtlasLootPanelSearch_ClearButton:Point("LEFT", AtlasLootPanelSearch_SelectModuel, "RIGHT", 5, 0)
-	AtlasLootPanelSearch_LastResultButton:Point("LEFT", AtlasLootPanelSearch_ClearButton, "RIGHT", 5, 0)
-	AtlasLoot10Man25ManSwitch:Point("BOTTOM", AtlasLootItemsFrame, "BOTTOM", -130, 4)
-	if AtlasLoot_PanelButton_2 then AtlasLoot_PanelButton_2:Point("LEFT", AtlasLoot_PanelButton_1, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_3 then AtlasLoot_PanelButton_3:Point("LEFT", AtlasLoot_PanelButton_2, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_4 then AtlasLoot_PanelButton_4:Point("LEFT", AtlasLoot_PanelButton_3, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_5 then AtlasLoot_PanelButton_5:Point("LEFT", AtlasLoot_PanelButton_4, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_6 then AtlasLoot_PanelButton_6:Point("LEFT", AtlasLoot_PanelButton_5, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_8 then AtlasLoot_PanelButton_8:Point("LEFT", AtlasLoot_PanelButton_7, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_9 then AtlasLoot_PanelButton_9:Point("LEFT", AtlasLoot_PanelButton_8, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_10 then AtlasLoot_PanelButton_10:Point("LEFT", AtlasLoot_PanelButton_9, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_11 then AtlasLoot_PanelButton_11:Point("LEFT", AtlasLoot_PanelButton_10, "RIGHT", 1, 0) end
-	if AtlasLoot_PanelButton_12 then AtlasLoot_PanelButton_12:Point("LEFT", AtlasLoot_PanelButton_11, "RIGHT", 1, 0) end
-	AtlasLootCompareFrameSortButton_Rarity:Point("LEFT", AtlasLootCompareFrameSortButton_Name, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_Rarity:Width(80)
-	AtlasLootCompareFrameSortButton_Name:Width(80)
-	AtlasLootCompareFrameSortButton_1:Point("LEFT", AtlasLootCompareFrameSortButton_Rarity, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_2:Point("LEFT", AtlasLootCompareFrameSortButton_1, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_3:Point("LEFT", AtlasLootCompareFrameSortButton_2, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_4:Point("LEFT", AtlasLootCompareFrameSortButton_3, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_5:Point("LEFT", AtlasLootCompareFrameSortButton_4, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_6:Point("LEFT", AtlasLootCompareFrameSortButton_5, "RIGHT", 1, 0)
-	AtlasLootCompareFrame_CloseButton2:Point("BOTTOMRIGHT", AtlasLootCompareFrame, "BOTTOMRIGHT", -7, 10)
-	AtlasLootCompareFrame_WishlistButton:Point("RIGHT", AtlasLootCompareFrame_CloseButton2, "LEFT", -1, 0)
-	AtlasLootCompareFrameSearch_SearchButton:Point("LEFT", AtlasLootCompareFrameSearch_Box, "RIGHT", 5, 0)
-	AtlasLootCompareFrameSearch_SelectModuel:Point("LEFT", AtlasLootCompareFrameSearch_SearchButton, "RIGHT", 5, 0)
-	AtlasLootDefaultFrame_CloseButton:ClearAllPoints()
-	AtlasLootDefaultFrame_CloseButton:SetPoint("TOPRIGHT", AtlasLootDefaultFrame, "TOPRIGHT", -5 -2)
-	AtlasLootDefaultFrame:SetFrameLevel(0)
-	AtlasLootItemsFrame:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
-	for i = 1, 30 do if _G["AtlasLootDefaultFrame_ScrollLine"..i] then _G["AtlasLootDefaultFrame_ScrollLine"..i]:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)end end
-
-	if(AtlasLootDefaultFrame_PackageSelect) then
-		AtlasLootDefaultFrame_PackageSelect:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
-	end
-	AtlasLootDefaultFrame_InstanceSelect:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
-	AtlasLoot_AtlasInfoFrame_ToggleALButton:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
-	AtlasLootDefaultFrame_CompareFrame:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
-	AtlasLootPanelSearch_Box:SetHeight(16)
-	AtlasLootPanel:SetWidth(921)
-end
-
-local function Nine_IsThere(self, elapsed)
-	self.timeLapse = self.timeLapse + elapsed
-	if(self.timeLapse < 2) then
-		return
-	else
-		self.timeLapse = 0
-	end
-	for i = 1, 9 do local f = _G["AtlasLootCompareFrameSortButton_"..i]f:SetWidth(44.44)end
-	for _, object in pairs(nineisthere) do STYLE:ApplyFrameStyle(_G[object]) end
-	AtlasLootCompareFrameSortButton_7:Point("LEFT", AtlasLootCompareFrameSortButton_6, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_8:Point("LEFT", AtlasLootCompareFrameSortButton_7, "RIGHT", 1, 0)
-	AtlasLootCompareFrameSortButton_9:Point("LEFT", AtlasLootCompareFrameSortButton_8, "RIGHT", 1, 0)
-end
-
-local function Compare_OnShow(self, event, ...)
-	for i = 1, 6 do _G["AtlasLootCompareFrameSortButton_"..i]:SetWidth(40)end
-	local Nine = AtlasLootCompareFrameSortButton_9
-	if Nine ~= nil then
-		Nine.timeLapse = 0
-		Nine:SetScript("OnUpdate", Nine_IsThere)
-	end
-end
-
-local _hook_ALPanel = function(self,_,parent,_,_,_,breaker)
-	if not breaker then
-		self:ClearAllPoints()
-		self:SetPoint("TOP",parent,"BOTTOM",0,-1,true)
-	end
-end
-
-local _hook_OnUpdate = function(self, elapsed)
-	self.timeLapse = self.timeLapse + elapsed
-	if(self.timeLapse < 2) then
-		return
-	else
-		self.timeLapse = 0
-	end
-	self:SetWidth(AtlasLootDefaultFrame:GetWidth())
-end
-
-
-local function StyleAtlasLoot(event, addon)
-	assert(AtlasLootPanel, "AddOn Not Loaded")
-
-	for _, object in pairs(StripAllTextures) do _G[object]:RemoveTextures()end
-	for _, object in pairs(SetTemplateDefault) do STYLE:ApplyFrameStyle(_G[object], "Default")end
-	for _, button in pairs(buttons) do _G[button]:SetButtonTemplate()end
-
-	-- Manipulate the main frames
-	STYLE:ApplyFrameStyle(_G["AtlasLootDefaultFrame"], "Action");
-	STYLE:ApplyUnderlayStyle(_G["AtlasLootItemsFrame"], "Inset");
-	STYLE:ApplyFrameStyle(_G["AtlasLootPanel"], "Default");
-	hooksecurefunc(_G["AtlasLootPanel"], "SetPoint", _hook_ALPanel);
-
-	_G["AtlasLootPanel"]:SetPoint("TOP",_G["AtlasLootDefaultFrame"],"BOTTOM",0,-1);
-	-- Back to the rest
-	STYLE:ApplyFrameStyle(_G["AtlasLootCompareFrame"], "Transparent");
-	if AtlasLoot_PanelButton_1 then AtlasLoot_PanelButton_1:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_2 then AtlasLoot_PanelButton_2:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_3 then AtlasLoot_PanelButton_3:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_4 then AtlasLoot_PanelButton_4:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_5 then AtlasLoot_PanelButton_5:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_6 then AtlasLoot_PanelButton_6:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_7 then AtlasLoot_PanelButton_7:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_8 then AtlasLoot_PanelButton_8:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_9 then AtlasLoot_PanelButton_9:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_10 then AtlasLoot_PanelButton_10:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_11 then AtlasLoot_PanelButton_11:SetButtonTemplate() end
-	if AtlasLoot_PanelButton_12 then AtlasLoot_PanelButton_12:SetButtonTemplate() end
-
-	for i = 1, 15 do local f = _G["AtlasLootCompareFrameMainFilterButton"..i]f:RemoveTextures() end
-
-	STYLE:ApplyCloseButtonStyle(AtlasLootDefaultFrame_CloseButton)
-	STYLE:ApplyCloseButtonStyle(AtlasLootCompareFrame_CloseButton)
-	STYLE:ApplyCloseButtonStyle(AtlasLootCompareFrame_CloseButton_Wishlist)
-	STYLE:ApplyPaginationStyle(AtlasLootQuickLooksButton)
-	STYLE:ApplyPaginationStyle(AtlasLootItemsFrame_NEXT)
-	AtlasLootItemsFrame_NEXT:SetWidth(25)
-	AtlasLootItemsFrame_NEXT:SetHeight(25)
-	STYLE:ApplyPaginationStyle(AtlasLootItemsFrame_PREV)
-	AtlasLootItemsFrame_PREV:SetWidth(25)
-	AtlasLootItemsFrame_PREV:SetHeight(25)
-	STYLE:ApplyPaginationStyle(AtlasLootPanelSearch_SelectModuel)
-	STYLE:ApplyPaginationStyle(AtlasLootCompareFrameSearch_SelectModuel)
-
-	if(AtlasLootDefaultFrame_PackageSelect) then
-		STYLE:ApplyDropdownStyle(AtlasLootDefaultFrame_PackageSelect)
-		AtlasLootDefaultFrame_PackageSelect:SetWidth(240)
-		AtlasLootDefaultFrame_PackageSelect:SetPoint("TOPLEFT", AtlasLootDefaultFrame, "TOPLEFT", 50, -50)
-	end
-
-	STYLE:ApplyDropdownStyle(AtlasLootDefaultFrame_ModuleSelect,240)
-	STYLE:ApplyDropdownStyle(AtlasLootDefaultFrame_InstanceSelect,240)
-
-	STYLE:ApplyDropdownStyle(AtlasLootCompareFrameSearch_StatsListDropDown)
-	AtlasLootCompareFrameSearch_StatsListDropDown:SetWidth(240)
-	STYLE:ApplyDropdownStyle(AtlasLootCompareFrame_WishlistDropDown)
-	AtlasLootCompareFrame_WishlistDropDown:SetWidth(240)
-	AtlasLootPanelSearch_Box:SetEditboxTemplate()
-	AtlasLootCompareFrameSearch_Box:SetEditboxTemplate()
-
-	if AtlasLootFilterCheck then
-		AtlasLootFilterCheck:SetCheckboxTemplate(true)
-	end
-	if AtlasLootItemsFrame_Heroic then
-		AtlasLootItemsFrame_Heroic:SetCheckboxTemplate(true)
-	end
-	if AtlasLootCompareFrameSearch_FilterCheck then AtlasLootCompareFrameSearch_FilterCheck:SetCheckboxTemplate(true)
-	end
-	if AtlasLootItemsFrame_RaidFinder then
-		AtlasLootItemsFrame_RaidFinder:SetCheckboxTemplate(true)
-	end
-	if AtlasLootItemsFrame_Thunderforged then
-		AtlasLootItemsFrame_Thunderforged:SetCheckboxTemplate(true)
-	end
-
-	AtlasLootPanel.Titel:SetTextColor(23/255, 132/255, 209/255)
-	AtlasLootPanel.Titel:SetPoint("BOTTOM", AtlasLootPanel.TitelBg, "BOTTOM", 0, 40)
-	STYLE:ApplyScrollFrameStyle(AtlasLootCompareFrame_ScrollFrameItemFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(AtlasLootCompareFrame_WishlistScrollFrameScrollBar)
-	AtlasLootDefaultFrame:HookScript("OnShow", AL_OnShow)
-	AtlasLootCompareFrame:HookScript("OnShow", Compare_OnShow)
-	AtlasLootPanel.timeLapse = 0;
-
-	--AtlasLootPanel:HookScript("OnUpdate", _hook_OnUpdate)
-
-	if(AtlasLootTooltip:GetName() ~= "GameTooltip") then
-		STYLE:ApplyTooltipStyle(AtlasLootTooltip)
-	end
-end
-STYLE:SaveAddonStyle("AtlasLoot", StyleAtlasLoot, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AuctionLite.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AuctionLite.lua
deleted file mode 100644
index 82ab2c2..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/AuctionLite.lua
+++ /dev/null
@@ -1,87 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain
---[[
-##########################################################
-AUCTIONLITE
-##########################################################
-]]--
-local function BGHelper(parent)
-  parent.bg = CreateFrame("Frame", nil, parent)
-  parent.bg:SetFixedPanelTemplate("Inset")
-  parent.bg:Point("TOPLEFT", parent, "TOPLEFT", 16, -103)
-  parent.bg:Point("BOTTOMRIGHT", AuctionFrame, "BOTTOMRIGHT", -8, 36)
-  parent.bg:SetFrameLevel(parent.bg:GetFrameLevel() - 1)
-end
-
-local function StyleAuctionLite(event, ...)
-  assert(AuctionFrameTab4, "AddOn Not Loaded")
-  if(not event or (event and event == 'PLAYER_ENTERING_WORLD')) then return; end
-
-  BuyName:SetEditboxTemplate()
-  BuyQuantity:SetEditboxTemplate()
-  SellStacks:SetEditboxTemplate()
-  SellSize:SetEditboxTemplate()
-  SellBidPriceGold:SetEditboxTemplate()
-  SellBidPriceSilver:SetEditboxTemplate()
-  SellBidPriceCopper:SetEditboxTemplate()
-  SellBuyoutPriceGold:SetEditboxTemplate()
-  SellBuyoutPriceSilver:SetEditboxTemplate()
-  SellBuyoutPriceCopper:SetEditboxTemplate()
-
-  BuySearchButton:SetButtonTemplate()
-  BuyBidButton:SetButtonTemplate()
-  BuyBuyoutButton:SetButtonTemplate()
-  BuyCancelSearchButton:SetButtonTemplate()
-  BuyCancelAuctionButton:SetButtonTemplate()
-  BuyScanButton:SetButtonTemplate()
-  SellCreateAuctionButton:SetButtonTemplate()
-
-  STYLE:ApplyPaginationStyle(BuyAdvancedButton)
-  STYLE:ApplyPaginationStyle(SellRememberButton)
-
-  STYLE:ApplyTabStyle(AuctionFrameTab4)
-  STYLE:ApplyTabStyle(AuctionFrameTab5)
-
-  if(_G["AuctionFrameBuy"]) then
-    BGHelper(_G["AuctionFrameBuy"])
-  end
-  if(_G["AuctionFrameSell"]) then
-    BGHelper(_G["AuctionFrameSell"])
-  end
-
-  STYLE:SafeEventRemoval("AuctionLite", event)
-end
-
-STYLE:SaveAddonStyle("AuctionLite", StyleAuctionLite, nil, nil, "AUCTION_HOUSE_SHOW")
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/BigWigs.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/BigWigs.lua
deleted file mode 100644
index 504ec57..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/BigWigs.lua
+++ /dev/null
@@ -1,145 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain
---[[
-##########################################################
-BIGWIGS
-##########################################################
-]]--
-local FreeBG
-local BigWigsLoaded
-
-local function freestyle(bar)
-	if not FreeBG then FreeBG = {} end
-	local bg = bar:Get("bigwigs:elvui:barbg")
-	if bg then
-		bg:ClearAllPoints()
-		bg:SetParent(SVUI.UIParent)
-		bg:Hide()
-		FreeBG[#FreeBG + 1] = bg
-	end
-
-	local ibg = bar:Get("bigwigs:elvui:iconbg")
-	if ibg then
-		ibg:ClearAllPoints()
-		ibg:SetParent(SVUI.UIParent)
-		ibg:Hide()
-		FreeBG[#FreeBG + 1] = ibg
-	end
-	bar.candyBarIconFrame.SetWidth = bar.candyBarIconFrame.OldSetWidth
-	bar.candyBarBar.SetPoint = bar.candyBarBar.OldSetPoint
-	bar.candyBarIconFrame:ClearAllPoints()
-	bar.candyBarIconFrame:SetPoint("TOPLEFT")
-	bar.candyBarIconFrame:SetPoint("BOTTOMLEFT")
-	bar.candyBarIconFrame:SetTexCoord(0.1,0.9,0.1,0.9)
-	bar.candyBarBar:ClearAllPoints()
-	bar.candyBarBar:SetPoint("TOPRIGHT")
-	bar.candyBarBar:SetPoint("BOTTOMRIGHT")
-	bar.candyBarBackground:SetAllPoints()
-	bar.candyBarDuration:ClearAllPoints()
-	bar.candyBarDuration:SetPoint("RIGHT", bar.candyBarBar, "RIGHT", -2, 0)
-	bar.candyBarLabel:ClearAllPoints()
-	bar.candyBarLabel:SetPoint("LEFT", bar.candyBarBar, "LEFT", 2, 0)
-	bar.candyBarLabel:SetPoint("RIGHT", bar.candyBarBar, "RIGHT", -2, 0)
-end
-
-local function applystyle(bar)
-	if not FreeBG then FreeBG = {} end
-	bar:Height(20)
-	local bg = nil
-	if #FreeBG > 0 then
-		bg = tremove(FreeBG)
-	else
-		bg = CreateFrame("Frame")
-	end
-	bg:SetFixedPanelTemplate('Transparent', true)
-	bg:SetParent(bar)
-	bg:WrapOuter(bar)
-	bg:SetFrameLevel(bar:GetFrameLevel() - 1)
-	bg:SetFrameStrata(bar:GetFrameStrata())
-	bg:Show()
-	bar:Set("bigwigs:elvui:barbg", bg)
-	local ibg = nil
-	if bar.candyBarIconFrame:GetTexture() then
-		if #FreeBG > 0 then
-			ibg = tremove(FreeBG)
-		else
-			ibg = CreateFrame("Frame")
-		end
-		ibg:SetParent(bar)
-		ibg:SetFixedPanelTemplate('Transparent', true)
-		ibg:SetBackdropColor(0, 0, 0, 0)
-		ibg:WrapOuter(bar.candyBarIconFrame)
-		ibg:SetFrameLevel(bar:GetFrameLevel() - 1)
-		ibg:SetFrameStrata(bar:GetFrameStrata())
-		ibg:Show()
-		bar:Set("bigwigs:elvui:iconbg", ibg)
-	end
-	bar.candyBarLabel:SetJustifyH("LEFT")
-	bar.candyBarLabel:ClearAllPoints()
-	bar.candyBarDuration:SetJustifyH("RIGHT")
-	bar.candyBarDuration:ClearAllPoints()
-	bar.candyBarLabel:Point("LEFT", bar, "LEFT", 4, 0)
-	bar.candyBarDuration:Point("RIGHT", bar, "RIGHT", -4, 0)
-	bar.candyBarBar:ClearAllPoints()
-	bar.candyBarBar:SetAllPoints(bar)
-	bar.candyBarBar.OldSetPoint = bar.candyBarBar.SetPoint
-	bar.candyBarBar.SetPoint = SV.fubar
-	bar.candyBarIconFrame.OldSetWidth = bar.candyBarIconFrame.SetWidth
-	bar.candyBarIconFrame.SetWidth = SV.fubar
-	bar.candyBarIconFrame:ClearAllPoints()
-	bar.candyBarIconFrame:Point("BOTTOMRIGHT", bar, "BOTTOMLEFT", -1, 0)
-	bar.candyBarIconFrame:SetSize(20, 20)
-	bar.candyBarIconFrame:SetTexCoord(0.1,0.9,0.1,0.9)
-end
-
-local function StyleBigWigs(event, addon)
-	assert(BigWigs, "AddOn Not Loaded")
-	if (IsAddOnLoaded('BigWigs_Plugins') or event == "ADDON_LOADED" and addon == 'BigWigs_Plugins') then
-		local BigWigsBars = BigWigs:GetPlugin('Bars')
-		if BigWigsLoaded then return end
-		BigWigsLoaded = true
-		BigWigsBars:RegisterBarStyle("SVUI", {
-			apiVersion = 1,
-			version = 1,
-			GetSpacing = function(bar)
-				return 4
-			end,
-			ApplyStyle = applystyle,
-			BarStopped = freestyle,
-			GetStyleName = function() return "SVUI" end,
-		})
-		BigWigsBars:SetBarStyle("SVUI")
-		STYLE:SafeEventRemoval("BigWigs", "ADDON_LOADED")
-		STYLE:SafeEventRemoval("BigWigs", "PLAYER_ENTERING_WORLD")
-	end
-end
-
-STYLE:SaveAddonStyle("BigWigs", StyleBigWigs, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Bugsack.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Bugsack.lua
deleted file mode 100644
index c4a5fed..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Bugsack.lua
+++ /dev/null
@@ -1,57 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-BUGSACK
-##########################################################
-]]--
-local function StyleBugSack(event, addon)
-	assert(BugSack, "AddOn Not Loaded")
-	hooksecurefunc(BugSack, "OpenSack", function()
-		if BugSackFrame.Panel then return end
-		BugSackFrame:RemoveTextures()
-		BugSackFrame:SetBasicPanel()
-		STYLE:ApplyTabStyle(BugSackTabAll)
-		BugSackTabAll:SetPoint("TOPLEFT", BugSackFrame, "BOTTOMLEFT", 0, 1)
-		STYLE:ApplyTabStyle(BugSackTabSession)
-		STYLE:ApplyTabStyle(BugSackTabLast)
-		BugSackNextButton:SetButtonTemplate()
-		BugSackSendButton:SetButtonTemplate()
-		BugSackPrevButton:SetButtonTemplate()
-		STYLE:ApplyScrollBarStyle(BugSackScrollScrollBar)
-	end)
-end
-
-STYLE:SaveAddonStyle("Bugsack", StyleBugSack)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Clique.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Clique.lua
deleted file mode 100644
index eb578f3..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Clique.lua
+++ /dev/null
@@ -1,151 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-CLIQUE
-##########################################################
-]]--
-local CliqueFrames = {
-	"CliqueDialog",
-	"CliqueConfig",
-	"CliqueConfigPage1",
-	"CliqueConfigPage2",
-	"CliqueClickGrabber",
-	"CliqueScrollFrame"
-}
-
-local CliqueButtons = {
-	"CliqueConfigPage1ButtonSpell",
-	"CliqueConfigPage1ButtonOther",
-	"CliqueConfigPage1ButtonOptions",
-	"CliqueConfigPage2ButtonBinding",
-	"CliqueDialogButtonAccept",
-	"CliqueDialogButtonBinding",
-	"CliqueConfigPage2ButtonSave",
-	"CliqueConfigPage2ButtonCancel",
-	"CliqueSpellTab",
-}
-
-local CliqueStripped = {
-	"CliqueConfigPage1Column1",
-	"CliqueConfigPage1Column2",
-	"CliqueConfigPage1_VSlider",
-	"CliqueSpellTab",
-	"CliqueConfigPage1ButtonSpell",
-	"CliqueConfigPage1ButtonOther",
-	"CliqueConfigPage1ButtonOptions",
-	"CliqueConfigPage2ButtonBinding",
-	"CliqueDialogButtonAccept",
-	"CliqueDialogButtonBinding",
-	"CliqueConfigPage2ButtonSave",
-	"CliqueConfigPage2ButtonCancel",
-}
-
-local CliqueConfigPage1_OnShow = function(self)
-	for i = 1, 12 do
-		if _G["CliqueRow"..i] then
-			_G["CliqueRow"..i.."Icon"]:SetTexCoord(0.1,0.9,0.1,0.9);
-			_G["CliqueRow"..i.."Bind"]:ClearAllPoints()
-			if _G["CliqueRow"..i] == CliqueRow1 then
-				_G["CliqueRow"..i.."Bind"]:SetPoint("RIGHT", _G["CliqueRow"..i], 8,0)
-			else
-				_G["CliqueRow"..i.."Bind"]:SetPoint("RIGHT", _G["CliqueRow"..i], -9,0)
-			end
-			_G["CliqueRow"..i]:GetHighlightTexture():SetDesaturated(1)
-		end
-	end
-	CliqueRow1:ClearAllPoints()
-	CliqueRow1:SetPoint("TOPLEFT",5,-(CliqueConfigPage1Column1:GetHeight() +3))
-end
-
-local function StyleClique()
-	assert(CliqueDialog, "AddOn Not Loaded")
-
-	for _, gName in pairs(CliqueFrames) do
-		local frame = _G[gName]
-		if(frame) then
-			STYLE:ApplyFrameStyle(frame, "Transparent")
-			if(gName == "CliqueConfig") then
-				frame.Panel:SetPoint("TOPLEFT",0,0)
-				frame.Panel:SetPoint("BOTTOMRIGHT",0,-5)
-			elseif(gName == "CliqueClickGrabber" or gName == "CliqueScrollFrame") then
-				frame.Panel:SetPoint("TOPLEFT",4,0)
-				frame.Panel:SetPoint("BOTTOMRIGHT",-2,4)
-			else
-				frame.Panel:SetPoint("TOPLEFT",0,0)
-				frame.Panel:SetPoint("BOTTOMRIGHT",2,0)
-			end
-		end
-	end
-
-	for _, gName in pairs(CliqueStripped) do
-		local frame = _G[gName]
-		if(frame) then
-			frame:RemoveTextures(true)
-		end
-	end
-
-	for _, gName in pairs(CliqueButtons) do
-		local button = _G[gName]
-		if(button) then
-			button:SetButtonTemplate()
-		end
-	end
-
-	STYLE:ApplyCloseButtonStyle(CliqueDialog.CloseButton)
-
-	CliqueConfigPage1:SetScript("OnShow", CliqueConfigPage1_OnShow)
-
-	CliqueDialog:SetSize(CliqueDialog:GetWidth()-1, CliqueDialog:GetHeight()-1)
-
-	CliqueConfigPage1ButtonSpell:ClearAllPoints()
-	CliqueConfigPage1ButtonSpell:SetPoint("TOPLEFT", CliqueConfigPage1,"BOTTOMLEFT",0,-4)
-
-	CliqueConfigPage1ButtonOptions:ClearAllPoints()
-	CliqueConfigPage1ButtonOptions:SetPoint("TOPRIGHT", CliqueConfigPage1,"BOTTOMRIGHT",2,-4)
-
-	CliqueConfigPage2ButtonSave:ClearAllPoints()
-	CliqueConfigPage2ButtonSave:SetPoint("TOPLEFT", CliqueConfigPage2,"BOTTOMLEFT",0,-4)
-
-	CliqueConfigPage2ButtonCancel:ClearAllPoints()
-	CliqueConfigPage2ButtonCancel:SetPoint("TOPRIGHT", CliqueConfigPage2,"BOTTOMRIGHT",2,-4)
-
-	CliqueSpellTab:GetRegions():SetSize(.1,.1)
-	CliqueSpellTab:GetNormalTexture():SetTexCoord(0.1,0.9,0.1,0.9)
-	CliqueSpellTab:GetNormalTexture():ClearAllPoints()
-	CliqueSpellTab:GetNormalTexture():FillInner()
-end
-
-STYLE:SaveAddonStyle("Clique", StyleClique)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Cooline.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Cooline.lua
deleted file mode 100644
index 330ac1f..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Cooline.lua
+++ /dev/null
@@ -1,57 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-COOLINE
-##########################################################
-]]--
-local function StyleCoolLine()
-	assert(CoolLineDB, "AddOn Not Loaded")
-
-	CoolLineDB.bgcolor = { r = 0, g = 0, b = 0, a = 0, }
-	CoolLineDB.border = "None"
-	CoolLine.updatelook()
-	STYLE:ApplyFrameStyle(CoolLine,"Transparent")
-	CoolLine.Panel:SetAllPoints(CoolLine)
-	SV:AddToDisplayAudit(CoolLine)
-
-	if STYLE:IsAddonReady("DockletCoolLine") then
-		if not CoolLineDB.vertical then
-			CoolLine:SetPoint('BOTTOMRIGHT', SVUI_ActionBar1, 'TOPRIGHT', 0, 4)
-			CoolLine:SetPoint("BOTTOMLEFT", SVUI_ActionBar1, "TOPLEFT", 0, 4)
-		end
-	end
-end
-STYLE:SaveAddonStyle("CoolLine", StyleCoolLine)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DBM.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DBM.lua
deleted file mode 100644
index 2d3d5ea..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DBM.lua
+++ /dev/null
@@ -1,211 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-DBM
-##########################################################
-]]--
-local function StyleBars(self)
-	for bar in self:GetBarIterator() do
-		if not bar.injected then
-			bar.ApplyStyle = function()
-				local frame = bar.frame
-				local tbar = _G[frame:GetName()..'Bar']
-				local spark = _G[frame:GetName()..'BarSpark']
-				local texture = _G[frame:GetName()..'BarTexture']
-				local icon1 = _G[frame:GetName()..'BarIcon1']
-				local icon2 = _G[frame:GetName()..'BarIcon2']
-				local name = _G[frame:GetName()..'BarName']
-				local timer = _G[frame:GetName()..'BarTimer']
-				if not icon1.overlay then
-					icon1.overlay = CreateFrame('Frame', '$parentIcon1Overlay', tbar)
-					icon1.overlay:Size(22)
-					icon1.overlay:SetPanelTemplate("Button")
-					icon1.overlay:SetFrameLevel(0)
-					icon1.overlay:Point('BOTTOMRIGHT', frame, 'BOTTOMLEFT', -2, 0)
-				end
-				if not icon2.overlay then
-					icon2.overlay = CreateFrame('Frame', '$parentIcon2Overlay', tbar)
-					icon2.overlay:Size(22)
-					icon2.overlay:SetPanelTemplate("Button")
-					icon2.overlay:SetFrameLevel(0)
-					icon2.overlay:Point('BOTTOMLEFT', frame, 'BOTTOMRIGHT', 2, 0)
-				end
-				if bar.color then
-					tbar:SetStatusBarColor(bar.color.r, bar.color.g, bar.color.b)
-				else
-					tbar:SetStatusBarColor(bar.owner.options.StartColorR, bar.owner.options.StartColorG, bar.owner.options.StartColorB)
-				end
-				if bar.enlarged then
-					frame:SetWidth(bar.owner.options.HugeWidth)
-					tbar:SetWidth(bar.owner.options.HugeWidth)
-					frame:SetScale(bar.owner.options.HugeScale)
-				else
-					frame:SetWidth(bar.owner.options.Width)
-					tbar:SetWidth(bar.owner.options.Width)
-					frame:SetScale(bar.owner.options.Scale)
-				end
-				spark:SetAlpha(0)
-				spark:SetTexture(0,0,0,0)
-				icon1:SetTexCoord(0.1,0.9,0.1,0.9)
-				icon1:ClearAllPoints()
-				icon1:SetAllPoints(icon1.overlay)
-				icon2:SetTexCoord(0.1,0.9,0.1,0.9)
-				icon2:ClearAllPoints()
-				icon2:SetAllPoints(icon2.overlay)
-				texture:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-				tbar:SetAllPoints(frame)
-				frame:SetPanelTemplate("Bar")
-				name:ClearAllPoints()
-				name:SetWidth(165)
-				name:SetHeight(8)
-				name:SetJustifyH('LEFT')
-				name:SetShadowColor(0, 0, 0, 0)
-				timer:ClearAllPoints()
-				timer:SetJustifyH('RIGHT')
-				timer:SetShadowColor(0, 0, 0, 0)
-				frame:SetHeight(22)
-				name:Point('LEFT', frame, 'LEFT', 4, 0)
-				timer:Point('RIGHT', frame, 'RIGHT', -4, 0)
-				name:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
-				timer:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
-				name:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
-				timer:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
-				if bar.owner.options.IconLeft then icon1:Show() icon1.overlay:Show() else icon1:Hide() icon1.overlay:Hide() end
-				if bar.owner.options.IconRight then icon2:Show() icon2.overlay:Show() else icon2:Hide() icon2.overlay:Hide() end
-				tbar:SetAlpha(1)
-				frame:SetAlpha(1)
-				texture:SetAlpha(1)
-				frame:Show()
-				bar:Update(0)
-				bar.injected = true
-			end
-			bar:ApplyStyle()
-		end
-	end
-end
-
-local StyleBossTitle = function()
-	local anchor = DBMBossHealthDropdown:GetParent()
-	if not anchor.styled then
-		local header = {anchor:GetRegions()}
-		if header[1]:IsObjectType('FontString') then
-			header[1]:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
-			header[1]:SetTextColor(1, 1, 1)
-			header[1]:SetShadowColor(0, 0, 0, 0)
-			anchor.styled = true
-		end
-		header = nil
-	end
-	anchor = nil
-end
-
-local StyleBoss = function()
-	local count = 1
-	while _G[format('DBM_BossHealth_Bar_%d', count)] do
-		local bar = _G[format('DBM_BossHealth_Bar_%d', count)]
-		local background = _G[bar:GetName()..'BarBorder']
-		local progress = _G[bar:GetName()..'Bar']
-		local name = _G[bar:GetName()..'BarName']
-		local timer = _G[bar:GetName()..'BarTimer']
-		local prev = _G[format('DBM_BossHealth_Bar_%d', count-1)]
-		local _, anch, _ ,_, _ = bar:GetPoint()
-		bar:ClearAllPoints()
-		if count == 1 then
-			if DBM_SavedOptions.HealthFrameGrowUp then
-				bar:Point('BOTTOM', anch, 'TOP' , 0 , 12)
-			else
-				bar:Point('TOP', anch, 'BOTTOM' , 0, -22)
-			end
-		else
-			if DBM_SavedOptions.HealthFrameGrowUp then
-				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, 22 + 4)
-			else
-				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, -(22 + 4))
-			end
-		end
-		bar:SetFixedPanelTemplate('Transparent')
-		background:SetNormalTexture(nil)
-		progress:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-		progress:ClearAllPoints()
-		progress:FillInner(bar)
-		name:ClearAllPoints()
-		name:SetJustifyH('LEFT')
-		name:SetShadowColor(0, 0, 0, 0)
-		timer:ClearAllPoints()
-		timer:SetJustifyH('RIGHT')
-		timer:SetShadowColor(0, 0, 0, 0)
-		bar:SetHeight(22)
-		name:Point('LEFT', bar, 'LEFT', 4, 0)
-		timer:Point('RIGHT', bar, 'RIGHT', -4, 0)
-		name:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
-		timer:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
-		count = count + 1
-	end
-end
-
-local function StyleDBM(event, addon)
-	assert(DBM, "AddOn Not Loaded")
-
-	hooksecurefunc(DBT, 'CreateBar', StyleBars)
-	hooksecurefunc(DBM.BossHealth, 'Show', StyleBossTitle)
-	hooksecurefunc(DBM.BossHealth, 'AddBoss', StyleBoss)
-	hooksecurefunc(DBM.BossHealth, 'UpdateSettings', StyleBoss)
-
-	if not DBM_SavedOptions['DontShowRangeFrame'] then
-		DBM.RangeCheck:Show()
-		DBM.RangeCheck:Hide()
-		DBMRangeCheck:HookScript('OnShow', function(self) self:SetFixedPanelTemplate('Transparent') end)
-		DBMRangeCheckRadar:SetFixedPanelTemplate('Transparent')
-	end
-
-	if not DBM_SavedOptions['DontShowInfoFrame'] then
-		DBM.InfoFrame:Show(5, 'test')
-		DBM.InfoFrame:Hide()
-		DBMInfoFrame:HookScript('OnShow', function(self) self:SetFixedPanelTemplate('Transparent') end)
-	end
-
-	local RaidNotice_AddMessage_ = RaidNotice_AddMessage
-	RaidNotice_AddMessage = function(noticeFrame, textString, colorInfo)
-		if textString:find(' |T') then
-			textString = gsub(textString,'(:12:12)',':18:18:0:0:64:64:5:59:5:59')
-		end
-		return RaidNotice_AddMessage_(noticeFrame, textString, colorInfo)
-	end
-
-	STYLE:SafeEventRemoval("DBM", event)
-end
-
-STYLE:SaveAddonStyle("DBM", StyleDBM, false, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DXE.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DXE.lua
deleted file mode 100644
index 8b6e35f..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/DXE.lua
+++ /dev/null
@@ -1,134 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
-local playerName = UnitName("player");
-local playerRealm = GetRealmName();
-local playerKey = ("%s - %s"):format(playerName, playerRealm)
---[[
-##########################################################
-DXE
-##########################################################
-]]--
-local function StyleDXEBar(bar)
-	bar:SetFixedPanelTemplate("Transparent")
-	bar.bg:SetTexture(0,0,0,0)
-	bar.border.Show = SV.fubar
-	bar.border:Hide()
-	bar.statusbar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	bar.statusbar:ClearAllPoints()
-	bar.statusbar:FillInner()
-	bar.righticon:SetFixedPanelTemplate("Default")
-	bar.righticon.border.Show = SV.fubar
-	bar.righticon.border:Hide()
-	bar.righticon:ClearAllPoints()
-	bar.righticon:SetPoint("LEFT", bar, "RIGHT", 2, 0)
-	bar.righticon.t:SetTexCoord(0.1,0.9,0.1,0.9)
-	bar.righticon.t:ClearAllPoints()
-	bar.righticon.t:FillInner()
-	bar.righticon.t:SetDrawLayer("ARTWORK")
-	bar.lefticon:SetFixedPanelTemplate("Default")
-	bar.lefticon.border.Show = SV.fubar
-	bar.lefticon.border:Hide()
-	bar.lefticon:ClearAllPoints()
-	bar.lefticon:SetPoint("RIGHT", bar, "LEFT", -2, 0)
-	bar.lefticon.t:SetTexCoord(0.1,0.9,0.1,0.9)
-	bar.lefticon.t:ClearAllPoints()
-	bar.lefticon.t:FillInner()
-	bar.lefticon.t:SetDrawLayer("ARTWORK")
-end
-
-local function RefreshDXEBars(frame)
-	if frame.refreshing then return end
-	frame.refreshing = true
-	local i = 1
-	while _G["DXEAlertBar"..i] do
-		local bar = _G["DXEAlertBar"..i]
-		if not bar.styled then
-			bar:SetScale(1)
-			bar.SetScale = SV.fubar
-			StyleDXEBar(bar)
-			bar.styled = true
-		end
-		i = i + 1
-	end
-	frame.refreshing = false
-end
-
-LoadAddOn("DXE")
-
-local function StyleDXE()
-	assert(DXE, "AddOn Not Loaded")
-
-	DXE.LayoutHealthWatchers_ = DXE.LayoutHealthWatchers
-	DXE.LayoutHealthWatchers = function(frame)
-		DXE:LayoutHealthWatchers_()
-		for i,hw in ipairs(frame.HW) do
-			if hw:IsShown() then
-				hw:SetFixedPanelTemplate("Transparent")
-				hw.border.Show = SV.fubar
-				hw.border:Hide()
-				hw.healthbar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-			end
-		end
-	end
-
-	local DXEAlerts = DXE:GetModule("Alerts")
-	local frame = CreateFrame("Frame")
-
-	frame.elapsed = 1
-	frame:SetScript("OnUpdate", function(frame,elapsed)
-		frame.elapsed = frame.elapsed + elapsed
-		if(frame.elapsed >= 1) then
-			RefreshDXEBars(DXEAlerts)
-			frame.elapsed = 0
-		end
-	end)
-
-	hooksecurefunc(DXEAlerts, "Simple", RefreshDXEBars)
-	hooksecurefunc(DXEAlerts, "RefreshBars", RefreshDXEBars)
-	DXE:LayoutHealthWatchers()
-	DXE.Alerts:RefreshBars()
-
-	if not DXEDB then DXEDB = {} end
-	if not DXEDB["profiles"] then DXEDB["profiles"] = {} end
-	if not DXEDB["profiles"][playerKey] then DXEDB["profiles"][playerKey] = {} end
-	if not DXEDB["profiles"][playerKey]["Globals"] then DXEDB["profiles"][playerKey]["Globals"] = {} end
-
-	DXEDB["profiles"][playerKey]["Globals"]["BackgroundTexture"] = [[Interface\BUTTONS\WHITE8X8]]
-	DXEDB["profiles"][playerKey]["Globals"]["BarTexture"] = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]]
-	DXEDB["profiles"][playerKey]["Globals"]["Border"] = "None"
-	DXEDB["profiles"][playerKey]["Globals"]["Font"] = SV.Media.font.default
-	DXEDB["profiles"][playerKey]["Globals"]["TimerFont"] = SV.Media.font.default
-end
-STYLE:SaveAddonStyle("DXE", StyleDXE)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/LightHeaded.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/LightHeaded.lua
deleted file mode 100644
index b468e1e..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/LightHeaded.lua
+++ /dev/null
@@ -1,103 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-LIGHTHEADED
-##########################################################
-]]--
-local timeLapse = 0;
-
-local function DoDis(self, elapsed)
-	self.timeLapse = self.timeLapse + elapsed
-	if(self.timeLapse < 2) then
-		return
-	else
-		self.timeLapse = 0
-	end
-	QuestNPCModel:ClearAllPoints()
-	QuestNPCModel:SetPoint("TOPLEFT", LightHeadedFrame, "TOPRIGHT", 5, -10)
-	QuestNPCModel:SetAlpha(0.85)
-	LightHeadedFrame:SetPoint("LEFT", QuestLogFrame, "RIGHT", 2, 0)
-end
-
-local function StyleLightHeaded()
-	assert(LightHeadedFrame, "AddOn Not Loaded")
-
-	local lhframe 	= _G["LightHeadedFrame"]
-	local lhsub 	= _G["LightHeadedFrameSub"]
-	local lhopts 	= _G["LightHeaded_Panel"]
-
-	STYLE:ApplyFrameStyle(LightHeadedFrame)
-	STYLE:ApplyFrameStyle(LightHeadedFrameSub)
-	STYLE:ApplyFrameStyle(LightHeadedSearchBox)
-	STYLE:ApplyTooltipStyle(LightHeadedTooltip)
-	LightHeadedScrollFrame:RemoveTextures()
-
-	lhframe.close:Hide()
-	STYLE:ApplyCloseButtonStyle(lhframe.close)
-	lhframe.handle:Hide()
-
-	STYLE:ApplyPaginationStyle(lhsub.prev)
-	STYLE:ApplyPaginationStyle(lhsub.next)
-	lhsub.prev:SetWidth(16)
-	lhsub.prev:SetHeight(16)
-	lhsub.next:SetWidth(16)
-	lhsub.next:SetHeight(16)
-	lhsub.prev:SetPoint("RIGHT", lhsub.page, "LEFT", -25, 0)
-	lhsub.next:SetPoint("LEFT", lhsub.page, "RIGHT", 25, 0)
-	STYLE:ApplyScrollFrameStyle(LightHeadedScrollFrameScrollBar, 5)
-	lhsub.title:SetTextColor(23/255, 132/255, 209/255)
-
-	lhframe.timeLapse = 0;
-	lhframe:SetScript("OnUpdate", DoDis)
-
-	if lhopts:IsVisible() then
-		for i = 1, 9 do
-			local cbox = _G["LightHeaded_Panel_Toggle"..i]
-			cbox:SetCheckboxTemplate(true)
-		end
-		local buttons = {
-			"LightHeaded_Panel_Button1",
-			"LightHeaded_Panel_Button2",
-		}
-
-		for _, button in pairs(buttons) do
-			_G[button]:SetButtonTemplate()
-		end
-
-		LightHeaded_Panel_Button2:Disable()
-	end
-end
-STYLE:SaveAddonStyle("Lightheaded", StyleLightHeaded)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Mogit.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Mogit.lua
deleted file mode 100644
index 480a472..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Mogit.lua
+++ /dev/null
@@ -1,88 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-MOGIT
-##########################################################
-]]--
-local function StyleMogItPreview()
-	for i = 1, 99 do
-		local MogItGearSlots = {
-			"HeadSlot",
-			"ShoulderSlot",
-			"BackSlot",
-			"ChestSlot",
-			"ShirtSlot",
-			"TabardSlot",
-			"WristSlot",
-			"HandsSlot",
-			"WaistSlot",
-			"LegsSlot",
-			"FeetSlot",
-			"MainHandSlot",
-			"SecondaryHandSlot",
-		}
-		for _, object in pairs(MogItGearSlots) do
-			if _G["MogItPreview"..i..object] then
-				STYLE:ApplyItemButtonStyle(_G["MogItPreview"..i..object])
-				_G["MogItPreview"..i..object]:SetPushedTexture(nil)
-				_G["MogItPreview"..i..object]:SetHighlightTexture(nil)
-			end
-		end
-		if _G["MogItPreview"..i] then STYLE:ApplyFrameStyle(_G["MogItPreview"..i]) end
-		if _G["MogItPreview"..i.."CloseButton"] then STYLE:ApplyCloseButtonStyle(_G["MogItPreview"..i.."CloseButton"]) end
-		if _G["MogItPreview"..i.."Inset"] then _G["MogItPreview"..i.."Inset"]:RemoveTextures(true) end
-		if _G["MogItPreview"..i.."Activate"] then _G["MogItPreview"..i.."Activate"]:SetButtonTemplate() end
-	end
-end
-
-local function StyleMogIt()
-	assert(MogItFrame, "AddOn Not Loaded")
-
-	STYLE:ApplyFrameStyle(MogItFrame)
-	MogItFrameInset:RemoveTextures(true)
-	STYLE:ApplyFrameStyle(MogItFilters)
-	MogItFiltersInset:RemoveTextures(true)
-
-	hooksecurefunc(MogIt, "CreatePreview", StyleMogItPreview)
-	STYLE:ApplyTooltipStyle(MogItTooltip)
-	STYLE:ApplyCloseButtonStyle(MogItFrameCloseButton)
-	STYLE:ApplyCloseButtonStyle(MogItFiltersCloseButton)
-	MogItFrameFiltersDefaults:RemoveTextures(true)
-	MogItFrameFiltersDefaults:SetButtonTemplate()
-	STYLE:ApplyScrollFrameStyle(MogItScroll)
-	STYLE:ApplyScrollFrameStyle(MogItFiltersScrollScrollBar)
-end
-STYLE:SaveAddonStyle("MogIt", StyleMogIt)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Omen.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Omen.lua
deleted file mode 100644
index ba75fb1..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Omen.lua
+++ /dev/null
@@ -1,97 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-OMEN
-##########################################################
-]]--
-local function StyleOmen()
-  assert(Omen, "AddOn Not Loaded")
-
-  Omen.db.profile.Scale = 1
-  Omen.db.profile.Bar.Spacing = 1
-  Omen.db.profile.Background.EdgeSize = 2
-  Omen.db.profile.Background.BarInset = 2
-  Omen.db.profile.TitleBar.UseSameBG = true
-
-  hooksecurefunc(Omen, 'UpdateBackdrop', function(self)
-    if not SV.CurrentlyDocked["OmenAnchor"] then
-      STYLE:ApplyFrameStyle(self.BarList, 'Transparent')
-      self.Title:RemoveTextures()
-      self.Title:SetPanelTemplate("Default")
-      self.Title:SetPanelColor("class")
-    end
-    self.BarList:SetPoint('TOPLEFT', self.Title, 'BOTTOMLEFT', 0, 1)
-  end)
-
-  hooksecurefunc(Omen, 'Toggle', function(self)
-    if InCombatLockdown() then return end
-    if not SV.CurrentlyDocked["OmenAnchor"] then return end
-    if self.Anchor:IsShown() then
-      SuperDockWindow:Show()
-    else
-      SuperDockWindow:Hide()
-    end
-  end)
-
-  Omen:UpdateBackdrop()
-  Omen:ReAnchorBars()
-  Omen:ResizeBars()
-end
-STYLE:SaveAddonStyle("Omen", StyleOmen)
-
-function STYLE:Docklet_Omen(parent)
-  if not Omen then return end
-  local db=Omen.db;
-  db.profile.Scale=1;
-  db.profile.Bar.Spacing=1;
-  db.profile.Background.EdgeSize=2;
-  db.profile.Background.BarInset=2;
-  db.profile.TitleBar.UseSameBG=true;
-  db.profile.ShowWith.UseShowWith=false;
-  db.profile.Locked=true;
-  db.profile.TitleBar.ShowTitleBar=true;
-  db.profile.FrameStrata='2-LOW'
-  Omen:OnProfileChanged(nil,db)
-  OmenTitle:RemoveTextures()
-  OmenTitle.Panel = nil
-  OmenTitle:SetPanelTemplate("Default")
-  OmenTitle:SetPanelColor("class")
-  OmenBarList:RemoveTextures()
-  OmenBarList.Panel = nil
-  OmenBarList:SetFixedPanelTemplate('Transparent')
-  OmenAnchor:ClearAllPoints()
-  OmenAnchor:SetAllPoints(parent)
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Outfitter.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Outfitter.lua
deleted file mode 100644
index 68b7416..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Outfitter.lua
+++ /dev/null
@@ -1,118 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-OUTFITTER
-##########################################################
-]]--
-local function StyleOutfitter()
-	assert(OutfitterFrame, "AddOn Not Loaded")
-
-	CharacterFrame:HookScript("OnShow", function(self) PaperDollSidebarTabs:SetPoint("BOTTOMRIGHT", CharacterFrameInsetRight, "TOPRIGHT", -14, 0) end)
-	OutfitterFrame:HookScript("OnShow", function(self)
-		STYLE:ApplyFrameStyle(OutfitterFrame)
-		OutfitterFrameTab1:Size(60, 25)
-		OutfitterFrameTab2:Size(60, 25)
-		OutfitterFrameTab3:Size(60, 25)
-		OutfitterMainFrame:RemoveTextures(true)
-		for i = 0, 13 do
-			if _G["OutfitterItem"..i.."OutfitSelected"] then
-				_G["OutfitterItem"..i.."OutfitSelected"]:SetButtonTemplate()
-				_G["OutfitterItem"..i.."OutfitSelected"]:ClearAllPoints()
-				_G["OutfitterItem"..i.."OutfitSelected"]:Size(16)
-				_G["OutfitterItem"..i.."OutfitSelected"]:Point("LEFT", _G["OutfitterItem"..i.."Outfit"], "LEFT", 8, 0)
-			end
-		end
-	end)
-	OutfitterMainFrameScrollbarTrench:RemoveTextures(true)
-	OutfitterFrameTab1:ClearAllPoints()
-	OutfitterFrameTab2:ClearAllPoints()
-	OutfitterFrameTab3:ClearAllPoints()
-	OutfitterFrameTab1:Point("TOPLEFT", OutfitterFrame, "BOTTOMRIGHT", -65, -2)
-	OutfitterFrameTab2:Point("LEFT", OutfitterFrameTab1, "LEFT", -65, 0)
-	OutfitterFrameTab3:Point("LEFT", OutfitterFrameTab2, "LEFT", -65, 0)
-	OutfitterFrameTab1:SetButtonTemplate()
-	OutfitterFrameTab2:SetButtonTemplate()
-	OutfitterFrameTab3:SetButtonTemplate()
-	STYLE:ApplyScrollFrameStyle(OutfitterMainFrameScrollFrameScrollBar)
-	STYLE:ApplyCloseButtonStyle(OutfitterCloseButton)
-	OutfitterNewButton:SetButtonTemplate()
-	OutfitterEnableNone:SetButtonTemplate()
-	OutfitterEnableAll:SetButtonTemplate()
-	OutfitterButton:ClearAllPoints()
-	OutfitterButton:SetPoint("RIGHT", PaperDollSidebarTabs, "RIGHT", 26, -2)
-	OutfitterButton:SetHighlightTexture(nil)
-	OutfitterSlotEnables:SetFrameStrata("HIGH")
-	OutfitterEnableHeadSlot:SetCheckboxTemplate(true)
-	OutfitterEnableNeckSlot:SetCheckboxTemplate(true)
-	OutfitterEnableShoulderSlot:SetCheckboxTemplate(true)
-	OutfitterEnableBackSlot:SetCheckboxTemplate(true)
-	OutfitterEnableChestSlot:SetCheckboxTemplate(true)
-	OutfitterEnableShirtSlot:SetCheckboxTemplate(true)
-	OutfitterEnableTabardSlot:SetCheckboxTemplate(true)
-	OutfitterEnableWristSlot:SetCheckboxTemplate(true)
-	OutfitterEnableMainHandSlot:SetCheckboxTemplate(true)
-	OutfitterEnableSecondaryHandSlot:SetCheckboxTemplate(true)
-	OutfitterEnableHandsSlot:SetCheckboxTemplate(true)
-	OutfitterEnableWaistSlot:SetCheckboxTemplate(true)
-	OutfitterEnableLegsSlot:SetCheckboxTemplate(true)
-	OutfitterEnableFeetSlot:SetCheckboxTemplate(true)
-	OutfitterEnableFinger0Slot:SetCheckboxTemplate(true)
-	OutfitterEnableFinger1Slot:SetCheckboxTemplate(true)
-	OutfitterEnableTrinket0Slot:SetCheckboxTemplate(true)
-	OutfitterEnableTrinket1Slot:SetCheckboxTemplate(true)
-	OutfitterItemComparisons:SetButtonTemplate()
-	OutfitterTooltipInfo:SetButtonTemplate()
-	OutfitterShowHotkeyMessages:SetButtonTemplate()
-	OutfitterShowMinimapButton:SetButtonTemplate()
-	OutfitterShowOutfitBar:SetButtonTemplate()
-	OutfitterAutoSwitch:SetButtonTemplate()
-	OutfitterItemComparisons:Size(20)
-	OutfitterTooltipInfo:Size(20)
-	OutfitterShowHotkeyMessages:Size(20)
-	OutfitterShowMinimapButton:Size(20)
-	OutfitterShowOutfitBar:Size(20)
-	OutfitterAutoSwitch:Size(20)
-	OutfitterShowOutfitBar:Point("TOPLEFT", OutfitterAutoSwitch, "BOTTOMLEFT", 0, -5)
-	OutfitterEditScriptDialogDoneButton:SetButtonTemplate()
-	OutfitterEditScriptDialogCancelButton:SetButtonTemplate()
-	STYLE:ApplyScrollFrameStyle(OutfitterEditScriptDialogSourceScriptScrollBar)
-	STYLE:ApplyFrameStyle(OutfitterEditScriptDialogSourceScript,"Transparent")
-	STYLE:ApplyFrameStyle(OutfitterEditScriptDialog)
-	STYLE:ApplyCloseButtonStyle(OutfitterEditScriptDialog.CloseButton)
-	STYLE:ApplyTabStyle(OutfitterEditScriptDialogTab1)
-	STYLE:ApplyTabStyle(OutfitterEditScriptDialogTab2)
-end
-STYLE:SaveAddonStyle("Outfitter", StyleOutfitter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Postal.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Postal.lua
deleted file mode 100644
index 7b986be..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Postal.lua
+++ /dev/null
@@ -1,88 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-POSTAL
-##########################################################
-]]--
-local function StylePostal()
-	assert(PostalOpenAllButton, "AddOn Not Loaded")
-
-	InboxPrevPageButton:Point("CENTER", InboxFrame, "BOTTOMLEFT", 45, 112)
-	InboxNextPageButton:Point("CENTER", InboxFrame, "BOTTOMLEFT", 295, 112)
-
-	for i = 1, INBOXITEMS_TO_DISPLAY do
-		local b = _G["MailItem"..i.."ExpireTime"]
-		b:SetPoint("TOPRIGHT", "MailItem"..i, "TOPRIGHT", -5, -10)
-		if b.returnicon then
-			b.returnicon:SetPoint("TOPRIGHT", b, "TOPRIGHT", 20, 0)
-		end
-		if _G['PostalInboxCB'..i] and not _G['PostalInboxCB'..i].handled then
-			_G['PostalInboxCB'..i]:SetCheckboxTemplate(true)
-			_G['PostalInboxCB'..i].handled = true
-		end
-	end
-	if PostalSelectOpenButton and not PostalSelectOpenButton.handled then
-		PostalSelectOpenButton:SetButtonTemplate()
-		PostalSelectOpenButton.handled = true
-		PostalSelectOpenButton:Point("RIGHT", InboxFrame, "TOP", -41, -48)
-	end
-	if Postal_OpenAllMenuButton and not Postal_OpenAllMenuButton.handled then
-		STYLE:ApplyPaginationStyle(Postal_OpenAllMenuButton, true)
-		Postal_OpenAllMenuButton:SetPoint('LEFT', PostalOpenAllButton, 'RIGHT', 5, 0)
-		Postal_OpenAllMenuButton.handled = true
-	end
-	if PostalOpenAllButton and not PostalOpenAllButton.handled then
-		PostalOpenAllButton:SetButtonTemplate()
-		PostalOpenAllButton.handled = true
-		PostalOpenAllButton:Point("CENTER", InboxFrame, "TOP", -34, -400)
-	end
-	if PostalSelectReturnButton and not PostalSelectReturnButton.handled then
-		PostalSelectReturnButton:SetButtonTemplate()
-		PostalSelectReturnButton.handled = true
-		PostalSelectReturnButton:Point("LEFT", InboxFrame, "TOP", -5, -48)
-	end
-	if Postal_PackageMenuButton and not Postal_PackageMenuButton.handled then
-		STYLE:ApplyPaginationStyle(Postal_PackageMenuButton, true)
-		Postal_PackageMenuButton.handled = true
-		Postal_PackageMenuButton:SetPoint('TOPRIGHT', MailFrame, -53, -6)
-	end
-	if Postal_BlackBookButton and not Postal_BlackBookButton.handled then
-		STYLE:ApplyPaginationStyle(Postal_BlackBookButton, true)
-		Postal_BlackBookButton.handled = true
-		Postal_BlackBookButton:SetPoint('LEFT', SendMailNameEditBox, 'RIGHT', 5, 2)
-	end
-end
-STYLE:SaveAddonStyle("Postal", StylePostal, nil, nil, 'MAIL_SHOW')
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Quartz.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Quartz.lua
deleted file mode 100644
index 40001ad..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Quartz.lua
+++ /dev/null
@@ -1,77 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-QUARTZ
-##########################################################
-]]--
-local function StyleQuartz()
-	local AceAddon = LibStub("AceAddon-3.0")
-	if(not AceAddon) then return end
-	local Quartz3 = AceAddon:GetAddon("Quartz3", true)
-
-	assert(Quartz3, "AddOn Not Loaded")
-
-	local GCD = Quartz3:GetModule("GCD")
-	local CastBar = Quartz3.CastBarTemplate.template
-	local function StyleQuartzBar(self)
-		if not self.isStyled then
-			self.IconBorder = CreateFrame("Frame", nil, self)
-			STYLE:ApplyFrameStyle(self.IconBorder,"Transparent")
-			self.IconBorder:SetFrameLevel(0)
-			self.IconBorder:WrapOuter(self.Icon)
-			STYLE:ApplyFrameStyle(self.Bar,"Transparent",true)
-			self.isStyled = true
-		end
- 		if self.config.hideicon then
- 			self.IconBorder:Hide()
- 		else
- 			self.IconBorder:Show()
- 		end
-	end
-
-	hooksecurefunc(CastBar, 'ApplySettings', StyleQuartzBar)
-	hooksecurefunc(CastBar, 'UNIT_SPELLCAST_START', StyleQuartzBar)
-	hooksecurefunc(CastBar, 'UNIT_SPELLCAST_CHANNEL_START', StyleQuartzBar)
-
-	if GCD then
-		hooksecurefunc(GCD, 'CheckGCD', function()
-			if not Quartz3GCDBar.backdrop then
-				STYLE:ApplyFrameStyle(Quartz3GCDBar,"Transparent",true)
-			end
-		end)
-	end
-end
-STYLE:SaveAddonStyle("Quartz", StyleQuartz)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Recount.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Recount.lua
deleted file mode 100644
index 66a07f6..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Recount.lua
+++ /dev/null
@@ -1,143 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-RECOUNT
-##########################################################
-]]--
-local function NoColor(a)
-  for p=1,a:GetNumRegions()do
-    local q=select(p,a:GetRegions())
-    if q:GetObjectType()=='Texture'then
-      q:SetDesaturated(true)
-      if q:GetTexture()=='Interface\\DialogFrame\\UI-DialogBox-Corner'then
-        q:SetTexture(0,0,0,0)
-        q:Die()
-      end
-    end
-  end
-end
-
-local function StyleRecount()
-  assert(Recount, "AddOn Not Loaded")
-
-  function Recount:ShowReset()
-    STYLE:LoadAlert(L['Reset Recount?'], function(self) Recount:ResetData() self:GetParent():Hide() end)
-  end
-
-  local function StyleFrame(frame)
-    STYLE:ApplyFrameStyle(frame,"Transparent")
-    frame.Panel:SetAllPoints()
-    frame.Panel:SetPoint('TOPLEFT', frame, 'TOPLEFT', 0, -6)
-    frame.CloseButton:SetPoint('TOPRIGHT', frame, 'TOPRIGHT', -1, -9)
-    frame:SetBackdrop(nil)
-
-    frame.TitleBackground = CreateFrame('Frame', nil, frame)
-    frame.TitleBackground:SetFixedPanelTemplate("Default")
-    frame.TitleBackground:SetPanelColor("class")
-    frame.TitleBackground:SetPoint('TOP', frame, 'TOP', 0, -8)
-    frame.TitleBackground.timeLapse = 0
-    frame.TitleBackground:SetScript('OnUpdate', function(self,elapsed)
-      self.timeLapse = self.timeLapse + elapsed
-      if(self.timeLapse < 0.2) then
-        return
-      else
-        self.timeLapse = 0
-      end
-      self:SetSize(frame:GetWidth() - 4, 22)
-    end)
-    frame.TitleBackground:SetFrameLevel(frame:GetFrameLevel())
-    frame.Title:SetPoint('TOPLEFT', frame, 'TOPLEFT', 6, -12)
-    NoColor(frame.CloseButton)
-    if frame.ConfigButton then NoColor(frame.ConfigButton) end
-    if frame.FileButton then NoColor(frame.FileButton) end
-    if frame.LeftButton then NoColor(frame.LeftButton) end
-    if frame.ResetButton then NoColor(frame.ResetButton) end
-    if frame.RightButton then NoColor(frame.RightButton) end
-    if frame.ReportButton then NoColor(frame.ReportButton) end
-    if frame.SummaryButton then NoColor(frame.SummaryButton) end
-  end
-
-  local RecountFrames = {
-    Recount.MainWindow,
-    Recount.ConfigWindow,
-    Recount.GraphWindow,
-    Recount.DetailWindow,
-  }
-
-  for _, frame in pairs(RecountFrames) do
-    if frame then
-      StyleFrame(frame)
-    end
-  end
-
-  STYLE:ApplyScrollFrameStyle(Recount_MainWindow_ScrollBarScrollBar)
-
-  Recount_MainWindow:HookScript('OnShow', function(self) if InCombatLockdown() then return end if SV.CurrentlyDocked["Recount_MainWindow"] then SuperDockWindowRight:Show() end end)
-  Recount.MainWindow.FileButton:HookScript('OnClick', function(self) if LibDropdownFrame0 then STYLE:ApplyFrameStyle(LibDropdownFrame0) end end)
-
-  hooksecurefunc(Recount, 'ShowScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Show() end)
-  hooksecurefunc(Recount, 'HideScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Hide() end)
-  hooksecurefunc(Recount, 'CreateFrame', function(self, frame) StyleFrame(_G[frame]) end)
-
-  hooksecurefunc(Recount, 'ShowReport', function(self)
-    if Recount_ReportWindow.isStyled then return end
-    Recount_ReportWindow.isStyled = true
-    STYLE:ApplyFrameStyle(Recount_ReportWindow.Whisper)
-    Recount_ReportWindow.ReportButton:SetButtonTemplate()
-    STYLE:ApplyScrollBarStyle(Recount_ReportWindow_Slider)
-    Recount_ReportWindow_Slider:GetThumbTexture():Size(6,6)
-  end)
-end
-STYLE:SaveAddonStyle("Recount", StyleRecount)
-
-function STYLE:Docklet_Recount(parent)
-  if not Recount then return end
-  local n=Recount.MainWindow.Panel;
-  if n and not n.Panel then
-    n:Show()
-    n:SetFixedPanelTemplate('Transparent',true)
-  end
-  Recount.db.profile.Locked=true;
-  Recount.db.profile.Scaling=1;
-  Recount.db.profile.ClampToScreen=true;
-  Recount.db.profile.FrameStrata='2-LOW'
-  Recount.MainWindow:ClearAllPoints()
-  Recount.MainWindow:SetAllPoints(parent)
-  Recount:SetStrataAndClamp()
-  Recount:LockWindows(true)
-  Recount:ResizeMainWindow()
-  Recount_MainWindow_ScrollBar:Hide()
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/SexyCooldown.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/SexyCooldown.lua
deleted file mode 100644
index 7cb9125..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/SexyCooldown.lua
+++ /dev/null
@@ -1,104 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-SEXYCOOLDOWN
-##########################################################
-]]--
-local function SCDStripStyleSettings(bar)
-	bar.optionsTable.args.icon.args.borderheader = nil
-	bar.optionsTable.args.icon.args.border = nil
-	bar.optionsTable.args.icon.args.borderColor = nil
-	bar.optionsTable.args.icon.args.borderSize = nil
-	bar.optionsTable.args.icon.args.borderInset = nil
-	bar.optionsTable.args.bar.args.bnbheader = nil
-	bar.optionsTable.args.bar.args.texture = nil
-	bar.optionsTable.args.bar.args.backgroundColor = nil
-	bar.optionsTable.args.bar.args.border = nil
-	bar.optionsTable.args.bar.args.borderColor = nil
-	bar.optionsTable.args.bar.args.borderSize = nil
-	bar.optionsTable.args.bar.args.borderInset = nil
-end
-
-local function StyleSexyCooldownBar(bar)
-	SCDStripStyleSettings(bar)
-	STYLE:ApplyFrameStyle(bar)
-	SV:AddToDisplayAudit(bar)
-	if STYLE:IsAddonReady("DockletSexyCooldown") then
-		bar:ClearAllPoints()
-		bar:Point('BOTTOMRIGHT', SVUI_ActionBar1, 'TOPRIGHT', 0, 2)
-		bar:Point("BOTTOMLEFT", SVUI_ActionBar1, "TOPLEFT", 0, 2)
-		bar:SetHeight(SVUI_ActionBar1Button1:GetHeight())
-	end
-end
-
-local function StyleSexyCooldownIcon(bar, icon)
-	if not icon.styled then
-		STYLE:ApplyFrameStyle(icon, false, true)
-		STYLE:ApplyFrameStyle(icon.overlay,"Transparent",true)
-		icon.styled = true
-	end
-	icon.overlay.tex:SetTexCoord(0.1,0.9,0.1,0.9)
-	icon.tex:SetTexCoord(0.1,0.9,0.1,0.9)
-end
-
-local function StyleSexyCooldownBackdrop(bar)
-	bar:SetFixedPanelTemplate("Transparent")
-end
-
-local function HookSCDBar(bar)
-	if bar.hooked then return end
-	hooksecurefunc(bar, "UpdateBarLook", StyleSexyCooldownBar)
-	hooksecurefunc(bar, "UpdateSingleIconLook", StyleSexyCooldownIcon)
-	hooksecurefunc(bar, "UpdateBarBackdrop", StyleSexyCooldownBackdrop)
-	bar.settings.icon.borderInset = 0
-	bar.hooked = true
-end
-
-local function StyleSexyCooldown()
-	assert(SexyCooldown2, "AddOn Not Loaded")
-
-	for _, bar in ipairs(SexyCooldown2.bars) do
-		HookSCDBar(bar)
-		bar:UpdateBarLook()
-	end
-	hooksecurefunc(SexyCooldown2, 'CreateBar', function(self)
-		for _, bar in ipairs(self.bars) do
-			HookSCDBar(bar)
-			bar:UpdateBarLook()
-		end
-	end)
-end
-STYLE:SaveAddonStyle("SexyCooldown", StyleSexyCooldown)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Skada.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Skada.lua
deleted file mode 100644
index 9120889..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/Skada.lua
+++ /dev/null
@@ -1,173 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
-local twipe = table.wipe;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
-local activePanels = {};
---[[
-##########################################################
-SKADA
-##########################################################
-]]--
-local function Skada_ShowPopup(self)
-  STYLE:LoadAlert(L['Do you want to reset Skada?'], function(self) Skada:Reset() self:GetParent():Hide() end)
-end
-
-local function skada_panel_loader(holder, window, parent)
-  if not window then return end
-
-  local bars = Skada.displays['bar']
-
-  holder:SetParent(parent)
-  holder:SetAllPoints()
-
-  local width,height = holder:GetSize()
-
-  window.db.barspacing = 1;
-  window.db.barwidth = width - 4;
-  window.db.background.height = height - (window.db.enabletitle and window.db.title.height or 0) - 1;
-  window.db.spark=false;
-  window.db.barslocked = true;
-  window.bargroup:ClearAllPoints()
-  window.bargroup:SetPoint('BOTTOMLEFT',holder,'BOTTOMLEFT',0,0)
-  window.bargroup:SetParent(holder)
-  window.bargroup:SetFrameStrata('LOW')
-
-  local bgroup = window.bargroup.backdrop;
-  if bgroup and not bgroup.Panel then
-    bgroup:Show()
-    bgroup:SetFixedPanelTemplate('Transparent',true)
-  end
-
-  bars.ApplySettings(bars, window)
-end
-
-local function StyleSkada()
-  assert(Skada, "AddOn Not Loaded")
-
-  if(not SkadaHolder) then
-    local SkadaHolder = CreateFrame("Frame", "SkadaHolder", UIParent)
-  end
-  if(not SkadaHolder2) then
-    local SkadaHolder2 = CreateFrame("Frame", "SkadaHolder2", UIParent)
-  end
-  Skada.ShowPopup = Skada_ShowPopup
-
-  local SkadaDisplayBar = Skada.displays['bar']
-
-  hooksecurefunc(SkadaDisplayBar, 'AddDisplayOptions', function(self, window, options)
-    options.baroptions.args.barspacing = nil
-    options.titleoptions.args.texture = nil
-    options.titleoptions.args.bordertexture = nil
-    options.titleoptions.args.thickness = nil
-    options.titleoptions.args.margin = nil
-    options.titleoptions.args.color = nil
-    options.windowoptions = nil
-  end)
-
-  hooksecurefunc(SkadaDisplayBar, 'ApplySettings', function(self, window)
-    local skada = window.bargroup
-    skada:SetSpacing(1)
-    skada:SetFrameLevel(5)
-    skada:SetBackdrop(nil)
-
-    if(window.db.enabletitle) then
-      skada.button:SetHeight(18)
-      skada.button:SetButtonTemplate()
-      skada.button:GetFontString():SetFont(SV.Media.font.names, 15, "OUTLINE")
-    end
-
-    if(not skada.Panel) then
-      STYLE:ApplyWindowHolder(skada, true)
-      skada.Panel:ClearAllPoints()
-      skada.Panel:Point('TOPLEFT', window.db.enabletitle and skada.button or skada, 'TOPLEFT', -2, 2)
-      skada.Panel:Point('BOTTOMRIGHT', skada, 'BOTTOMRIGHT', 2, -2)
-    else
-      skada.Panel:ClearAllPoints()
-      skada.Panel:Point('TOPLEFT', window.db.enabletitle and skada.button or skada, 'TOPLEFT', -2, 2)
-      skada.Panel:Point('BOTTOMRIGHT', skada, 'BOTTOMRIGHT', 2, -2)
-    end
-  end)
-
-  hooksecurefunc(Skada, 'ToggleWindow', function()
-    if InCombatLockdown() then return end
-    if not SV.CurrentlyDocked["SkadaHolder"] or not SV.CurrentlyDocked["SkadaHolder2"] then return end
-    for index, window in ipairs(Skada:GetWindows()) do
-      if window:IsShown() then
-        SuperDockWindowRight:Show()
-      else
-        SuperDockWindowRight:Hide()
-      end
-    end
-  end)
-
-  hooksecurefunc(Skada, 'CreateWindow', function()
-    if SV.CurrentlyDocked["SkadaHolder"] or SV.CurrentlyDocked["SkadaHolder2"] then
-      STYLE:Docklet_Skada()
-    end
-  end)
-
-  hooksecurefunc(Skada, 'DeleteWindow', function()
-    if SV.CurrentlyDocked["SkadaHolder"] or SV.CurrentlyDocked["SkadaHolder2"] then
-      STYLE:Docklet_Skada()
-    end
-  end)
-
-  hooksecurefunc(Skada, 'UpdateDisplay', function()
-    if SV.CurrentlyDocked["SkadaHolder"] or SV.CurrentlyDocked["SkadaHolder2"] then
-      STYLE:Docklet_Skada()
-    end
-  end)
-end
-
-function STYLE:Docklet_Skada()
-  if not Skada then return end
-  if(not SkadaHolder) then
-    local SkadaHolder = CreateFrame("Frame", "SkadaHolder", UIParent)
-  end
-  if(not SkadaHolder2) then
-    local SkadaHolder2 = CreateFrame("Frame", "SkadaHolder2", UIParent)
-  end
-  for index,window in pairs(Skada:GetWindows()) do
-    local key = "Skada"..window.db.name
-    if(SV.db.SVDock.docklets.DockletMain == key)then
-      skada_panel_loader(SkadaHolder, window, SuperDockletMain)
-    elseif(SV.db.SVDock.docklets.enableExtra and SV.db.SVDock.docklets.DockletExtra == key) then
-      skada_panel_loader(SkadaHolder2, window, SuperDockletExtra)
-    else
-      window.db.barslocked = false;
-    end
-  end
-end
-
-STYLE:SaveAddonStyle("Skada", StyleSkada)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TinyDPS.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TinyDPS.lua
deleted file mode 100644
index 151e4f2..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TinyDPS.lua
+++ /dev/null
@@ -1,73 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-	______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-	 _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-	  __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-	   _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-		___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TINYDPS
-##########################################################
-]]--
-local function StyleTinyDPS()
-	assert(tdpsFrame, "AddOn Not Loaded")
-
-	STYLE:ApplyFrameStyle(tdpsFrame)
-
-	tdpsFrame:HookScript("OnShow", function()
-		if InCombatLockdown() then return end
-		if SV.CurrentlyDocked["tdpsFrame"] then
-			SuperDockWindowRight:Show()
-		end
-	end)
-
-	if tdpsStatusBar then
-		tdpsStatusBar:SetBackdrop({bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]], edgeFile = S.Blank, tile = false, tileSize = 0, edgeSize = 1})
-		tdpsStatusBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-	end
-
-	tdpsRefresh()
-end
-
-STYLE:SaveAddonStyle("TinyDPS", StyleTinyDPS)
-
-function STYLE:Docklet_TinyDPS(parent)
-	if not tdpsFrame then return end
-	tdpsFrame:SetFixedPanelTemplate("Transparent", true)
-	tdpsFrame:SetFrameStrata("LOW")
-	tdps.hideOOC = false;
-	tdps.hideIC = false;
-	tdps.hideSolo = false;
-	tdps.hidePvP = false;
-	tdpsFrame:ClearAllPoints()
-	tdpsFrame:SetAllPoints(parent)
-	tdpsRefresh()
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TomTom.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TomTom.lua
deleted file mode 100644
index 690e0ef..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TomTom.lua
+++ /dev/null
@@ -1,44 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TOMTOM
-##########################################################
-]]--
-local function StyleTomTom()
-  assert(TomTomBlock, "AddOn Not Loaded")
-  STYLE:ApplyFrameStyle(TomTomBlock)
-end
-STYLE:SaveAddonStyle("TomTom", StyleTomTom)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TradeSkillDW.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TradeSkillDW.lua
deleted file mode 100644
index f41d2c6..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/TradeSkillDW.lua
+++ /dev/null
@@ -1,143 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TSDW
-##########################################################
-]]--
-local function StyleTradeSkillDW()
-	assert(TradeSkillDW_QueueFrame, "AddOn Not Loaded")
-
-	TradeSkillFrame:SetPanelTemplate("Action")
-	TradeSkillListScrollFrame:RemoveTextures(true)
-	TradeSkillDetailScrollFrame:RemoveTextures(true)
-	TradeSkillFrameInset:RemoveTextures(true)
-	TradeSkillExpandButtonFrame:RemoveTextures(true)
-	TradeSkillDetailScrollChildFrame:RemoveTextures(true)
-	TradeSkillListScrollFrame:RemoveTextures(true)
-	STYLE:ApplyFrameStyle(TradeSkillGuildFrame,"Transparent")
-	STYLE:ApplyFrameStyle(TradeSkillGuildFrameContainer,"Transparent")
-	TradeSkillGuildFrame:Point("BOTTOMLEFT", TradeSkillFrame, "BOTTOMRIGHT", 3, 19)
-	STYLE:ApplyCloseButtonStyle(TradeSkillGuildFrameCloseButton)
-
-	TradeSkillFrame:HookScript("OnShow", function()
-		STYLE:ApplyFrameStyle(TradeSkillFrame)
-		TradeSkillListScrollFrame:RemoveTextures()
-		if not TradeSkillDWExpandButton then return end
-		if not TradeSkillDWExpandButton.styled then
-			STYLE:ApplyPaginationStyle(TradeSkillDWExpandButton)
-			TradeSkillDWExpandButton.styled = true
-		end
-	end)
-
-	TradeSkillFrame:Height(TradeSkillFrame:GetHeight() + 12)
-	TradeSkillRankFrame:SetBasicPanel()
-	TradeSkillRankFrame:SetStatusBarTexture(SV.Media.bar.default)
-	TradeSkillCreateButton:SetButtonTemplate()
-	TradeSkillCancelButton:SetButtonTemplate()
-	TradeSkillFilterButton:SetButtonTemplate()
-	TradeSkillCreateAllButton:SetButtonTemplate()
-	TradeSkillViewGuildCraftersButton:SetButtonTemplate()
-	TradeSkillLinkButton:GetNormalTexture():SetTexCoord(0.25, 0.7, 0.37, 0.75)
-	TradeSkillLinkButton:GetPushedTexture():SetTexCoord(0.25, 0.7, 0.45, 0.8)
-	TradeSkillLinkButton:GetHighlightTexture():Die()
-	STYLE:ApplyFrameStyle(TradeSkillLinkButton,"Transparent")
-	TradeSkillLinkButton:Size(17, 14)
-	TradeSkillLinkButton:Point("LEFT", TradeSkillLinkFrame, "LEFT", 5, -1)
-	TradeSkillFrameSearchBox:SetEditboxTemplate()
-	TradeSkillInputBox:SetEditboxTemplate()
-	TradeSkillIncrementButton:Point("RIGHT", TradeSkillCreateButton, "LEFT", -13, 0)
-	STYLE:ApplyCloseButtonStyle(TradeSkillFrameCloseButton)
-	STYLE:ApplyScrollFrameStyle(TradeSkillDetailScrollFrameScrollBar)
-	local once = false
-	hooksecurefunc("TradeSkillFrame_SetSelection", function(id)
-		TradeSkillSkillIcon:SetButtonTemplate()
-
-		if TradeSkillSkillIcon:GetNormalTexture() then
-			TradeSkillSkillIcon:GetNormalTexture():SetTexCoord(0.1,0.9,0.1,0.9)
-			TradeSkillSkillIcon:GetNormalTexture():ClearAllPoints()
-			TradeSkillSkillIcon:GetNormalTexture():Point("TOPLEFT", 2, -2)
-			TradeSkillSkillIcon:GetNormalTexture():Point("BOTTOMRIGHT", -2, 2)
-		end
-
-		for i = 1, MAX_TRADE_SKILL_REAGENTS do
-			local button = _G["TradeSkillReagent"..i]
-			local icon = _G["TradeSkillReagent"..i.."IconTexture"]
-			local count = _G["TradeSkillReagent"..i.."Count"]
-			icon:SetTexCoord(0.1,0.9,0.1,0.9)
-			icon:SetDrawLayer("OVERLAY")
-			if not icon.backdrop then
-				icon.backdrop = CreateFrame("Frame", nil, button)
-				icon.backdrop:SetFrameLevel(button:GetFrameLevel() - 1)
-				STYLE:ApplyFrameStyle(icon.backdrop,"Transparent")
-				icon.backdrop:Point("TOPLEFT", icon, "TOPLEFT", -2, 2)
-				icon.backdrop:Point("BOTTOMRIGHT", icon, "BOTTOMRIGHT", 2, -2)
-			end
-			icon:SetParent(icon.backdrop)
-			count:SetParent(icon.backdrop)
-			count:SetDrawLayer("OVERLAY")
-			if i > 2 and once == false then
-				local point, anchoredto, point2, x, y = button:GetPoint()
-				button:ClearAllPoints()
-				button:Point(point, anchoredto, point2, x, y - 3)
-				once = true
-			end
-			_G["TradeSkillReagent"..i.."NameFrame"]:Die()
-		end
-	end)
-
-	TradeSkillDW_QueueFrame:HookScript("OnShow", function() STYLE:ApplyFrameStyle(TradeSkillDW_QueueFrame,"Transparent") end)
-
-	STYLE:ApplyCloseButtonStyle(TradeSkillDW_QueueFrameCloseButton)
-
-	TradeSkillDW_QueueFrameInset:RemoveTextures()
-	TradeSkillDW_QueueFrameClear:SetButtonTemplate()
-	TradeSkillDW_QueueFrameDown:SetButtonTemplate()
-	TradeSkillDW_QueueFrameUp:SetButtonTemplate()
-	TradeSkillDW_QueueFrameDo:SetButtonTemplate()
-	TradeSkillDW_QueueFrameDetailScrollFrame:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrame:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent1:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent2:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent3:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent4:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent5:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent6:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent7:RemoveTextures()
-	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent8:RemoveTextures()
-	STYLE:ApplyScrollFrameStyle(TradeSkillDW_QueueFrameDetailScrollFrameScrollBar)
-	TradeSkillListScrollFrame:RemoveTextures()
-end
-STYLE:SaveAddonStyle("TradeSkillDW", StyleTradeSkillDW)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/VEM.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/VEM.lua
deleted file mode 100644
index 4f0acdc..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/VEM.lua
+++ /dev/null
@@ -1,249 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-VEM
-##########################################################
-]]--
-local RaidNotice_AddMessage_ = RaidNotice_AddMessage
-local NewHook = hooksecurefunc
-
-local function StyleBars(self)
-	for bar in self:GetBarIterator() do
-		if not bar.injected then
-			bar.ApplyStyle = function()
-				local frame = bar.frame
-				local tbar = _G[frame:GetName()..'Bar']
-				local spark = _G[frame:GetName()..'BarSpark']
-				local texture = _G[frame:GetName()..'BarTexture']
-				local icon1 = _G[frame:GetName()..'BarIcon1']
-				local icon2 = _G[frame:GetName()..'BarIcon2']
-				local name = _G[frame:GetName()..'BarName']
-				local timer = _G[frame:GetName()..'BarTimer']
-
-				if not icon1.overlay then
-					icon1.overlay = CreateFrame('Frame', '$parentIcon1Overlay', tbar)
-					icon1.overlay:SetFixedPanelTemplate()
-					icon1.overlay:SetFrameLevel(0)
-					icon1.overlay:Size(22)
-					icon1.overlay:Point('BOTTOMRIGHT', frame, 'BOTTOMLEFT', -2, 0)
-				end
-				if not icon2.overlay then
-					icon2.overlay = CreateFrame('Frame', '$parentIcon2Overlay', tbar)
-					icon2.overlay:SetFixedPanelTemplate()
-					icon2.overlay:SetFrameLevel(0)
-					icon2.overlay:Size(22)
-					icon2.overlay:Point('BOTTOMLEFT', frame, 'BOTTOMRIGHT', 2, 0)
-				end
-
-				if bar.color then
-					tbar:SetStatusBarColor(bar.color.r, bar.color.g, bar.color.b)
-				else
-					tbar:SetStatusBarColor(bar.owner.options.StartColorR, bar.owner.options.StartColorG, bar.owner.options.StartColorB)
-				end
-
-				if bar.enlarged then
-					frame:SetWidth(bar.owner.options.HugeWidth)
-					tbar:SetWidth(bar.owner.options.HugeWidth)
-					frame:SetScale(bar.owner.options.HugeScale)
-				else
-					frame:SetWidth(bar.owner.options.Width)
-					tbar:SetWidth(bar.owner.options.Width)
-					frame:SetScale(bar.owner.options.Scale)
-				end
-
-				spark:SetAlpha(0)
-				spark:SetTexture(0,0,0,0)
-
-				icon1:SetTexCoord(0.1,0.9,0.1,0.9)
-				icon1:ClearAllPoints()
-				icon1:FillInner(icon1.overlay)
-
-				icon2:SetTexCoord(0.1,0.9,0.1,0.9)
-				icon2:ClearAllPoints()
-				icon2:FillInner(icon2.overlay)
-
-				texture:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-				tbar:FillInner(frame)
-
-				frame:SetFixedPanelTemplate()
-
-				name:ClearAllPoints()
-				name:SetWidth(165)
-				name:SetHeight(8)
-				name:SetJustifyH('LEFT')
-				name:SetShadowColor(0, 0, 0, 0)
-				timer:ClearAllPoints()
-				timer:SetJustifyH('RIGHT')
-				timer:SetShadowColor(0, 0, 0, 0)
-
-				frame:SetHeight(22)
-				name:Point('LEFT', frame, 'LEFT', 4, 0)
-				timer:Point('RIGHT', frame, 'RIGHT', -4, 0)
-
-				name:SetFont(SV.Media.font.default, 12, 'OUTLINE')
-				timer:SetFont(SV.Media.font.default, 12, 'OUTLINE')
-
-				name:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
-				timer:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
-
-				if bar.owner.options.IconLeft then icon1:Show() icon1.overlay:Show() else icon1:Hide() icon1.overlay:Hide() end
-				if bar.owner.options.IconRight then icon2:Show() icon2.overlay:Show() else icon2:Hide() icon2.overlay:Hide() end
-
-				tbar:SetAlpha(1)
-				frame:SetAlpha(1)
-				texture:SetAlpha(1)
-				frame:Show()
-				bar:Update(0)
-				bar.injected = true
-			end
-			bar:ApplyStyle()
-		end
-	end
-end
-
-local StyleBossTitle = function()
-	local anchor = VEMBossHealthDropdown:GetParent()
-	if not anchor.styled then
-		local header = {anchor:GetRegions()}
-		if header[1]:IsObjectType('FontString') then
-			header[1]:SetFont(SV.Media.font.default, 12, 'OUTLINE')
-			header[1]:SetTextColor(1, 1, 1)
-			header[1]:SetShadowColor(0, 0, 0, 0)
-			anchor.styled = true
-		end
-		header = nil
-	end
-	anchor = nil
-end
-
-local StyleBoss = function()
-	local count = 1
-	while _G[format('VEM_BossHealth_Bar_%d', count)] do
-		local bar = _G[format('VEM_BossHealth_Bar_%d', count)]
-		local background = _G[bar:GetName()..'BarBorder']
-		local progress = _G[bar:GetName()..'Bar']
-		local name = _G[bar:GetName()..'BarName']
-		local timer = _G[bar:GetName()..'BarTimer']
-		local prev = _G[format('VEM_BossHealth_Bar_%d', count-1)]
-		local _, anch, _ ,_, _ = bar:GetPoint()
-		bar:ClearAllPoints()
-		if count == 1 then
-			if VEM_SavedOptions.HealthFrameGrowUp then
-				bar:Point('BOTTOM', anch, 'TOP' , 0 , 12)
-			else
-				bar:Point('TOP', anch, 'BOTTOM' , 0, -22)
-			end
-		else
-			if VEM_SavedOptions.HealthFrameGrowUp then
-				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, 26)
-			else
-				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, -26)
-			end
-		end
-		bar:SetFixedPanelTemplate('Transparent')
-		background:SetNormalTexture(nil)
-		progress:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
-		progress:ClearAllPoints()
-		progress:FillInner(bar)
-		name:ClearAllPoints()
-		name:SetJustifyH('LEFT')
-		name:SetShadowColor(0, 0, 0, 0)
-		timer:ClearAllPoints()
-		timer:SetJustifyH('RIGHT')
-		timer:SetShadowColor(0, 0, 0, 0)
-
-		bar:SetHeight(22)
-		name:Point('LEFT', bar, 'LEFT', 4, 0)
-		timer:Point('RIGHT', bar, 'RIGHT', -4, 0)
-
-		name:SetFont(SV.Media.font.default, 12, 'OUTLINE')
-		timer:SetFont(SV.Media.font.default, 12, 'OUTLINE')
-		count = count + 1
-	end
-end
-
-local _hook_OnShow = function(self)
-	if(not self.Panel) then
-		self:SetFixedPanelTemplate('Transparent')
-	end
-end
-
-local function StyleVEM(event, addon)
-	assert(VEM, "AddOn Not Loaded")
-
-	if event == 'PLAYER_ENTERING_WORLD' then
-		NewHook(DBT, 'CreateBar', StyleBars)
-		NewHook(VEM.BossHealth, 'Show', StyleBossTitle)
-		NewHook(VEM.BossHealth, 'AddBoss', StyleBoss)
-		NewHook(VEM.BossHealth, 'UpdateSettings', StyleBoss)
-
-		if not VEM_SavedOptions['DontShowRangeFrame'] then
-			VEM.RangeCheck:Show()
-			VEM.RangeCheck:Hide()
-			VEMRangeCheck:HookScript('OnShow', _hook_OnShow)
-			VEMRangeCheckRadar:SetFixedPanelTemplate('Transparent')
-		end
-
-		if not VEM_SavedOptions['DontShowInfoFrame'] then
-			VEM.InfoFrame:Show(5, 'test')
-			VEM.InfoFrame:Hide()
-			VEMInfoFrame:HookScript('OnShow', _hook_OnShow)
-		end
-
-		RaidNotice_AddMessage = function(noticeFrame, textString, colorInfo)
-			if textString:find(' |T') then
-				textString = gsub(textString,'(:12:12)',':18:18:0:0:64:64:5:59:5:59')
-			end
-			return RaidNotice_AddMessage_(noticeFrame, textString, colorInfo)
-		end
-	end
-
-	if addon == 'VEM-GUI' then
-		VEM_GUI_OptionsFrame:HookScript('OnShow', function()
-			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFrame)
-			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFrameBossMods)
-			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFrameVEMOptions)
-			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFramePanelContainer, 'Transparent', true)
-		end)
-		STYLE:ApplyTabStyle(VEM_GUI_OptionsFrameTab1)
-		STYLE:ApplyTabStyle(VEM_GUI_OptionsFrameTab2)
-		VEM_GUI_OptionsFrameOkay:SetButtonTemplate()
-		VEM_GUI_OptionsFrameWebsiteButton:SetButtonTemplate()
-		STYLE:ApplyScrollFrameStyle(VEM_GUI_OptionsFramePanelContainerFOVScrollBar)
-		STYLE:SafeEventRemoval("VEM", event)
-	end
-end
-STYLE:SaveAddonStyle("VEM", StyleVEM, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/_load.xml b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/_load.xml
deleted file mode 100644
index 2e19d58..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/_load.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-	<Script file='ACP.lua'/>
-	<Script file='AdiBags.lua'/>
-	<Script file='Altoholic.lua'/>
-	<Script file='AtlasLoot.lua'/>
-	<Script file='AuctionLite.lua'/>
-	<Script file='alDamageMeter.lua'/>
-	<Script file='BigWigs.lua'/>
-	<Script file='Bugsack.lua'/>
-	<Script file='Clique.lua'/>
-	<Script file='Cooline.lua'/>
-	<Script file='DBM.lua'/>
-	<Script file='DXE.lua'/>
-	<Script file='LightHeaded.lua'/>
-	<Script file='Mogit.lua'/>
-	<Script file='Omen.lua'/>
-	<Script file='Outfitter.lua'/>
-	<Script file='Postal.lua'/>
-	<Script file='Quartz.lua'/>
-	<Script file='Recount.lua'/>
-	<Script file='SexyCooldown.lua'/>
-	<Script file='Skada.lua'/>
-	<Script file='TinyDPS.lua'/>
-	<Script file='TomTom.lua'/>
-	<Script file='TradeSkillDW.lua'/>
-	<Script file='VEM.lua'/>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/alDamageMeter.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/alDamageMeter.lua
deleted file mode 100644
index 75f73c1..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/thirdparty/alDamageMeter.lua
+++ /dev/null
@@ -1,64 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local string 	= _G.string;
---[[ STRING METHODS ]]--
-local format = string.format;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-ALDAMAGEMETER
-##########################################################
-]]--
-local function StyleALDamageMeter()
-  assert(_G['alDamagerMeterFrame'], "AddOn Not Loaded")
-
-  alDamageMeterFrame.bg:Die()
-  STYLE:ApplyFrameStyle(alDamageMeterFrame)
-  alDamageMeterFrame:HookScript('OnShow', function()
-    if InCombatLockdown() then return end
-    if SV.CurrentlyDocked["alDamagerMeterFrame"] then
-      SuperDockWindow:Show()
-    end
-  end)
-end
-STYLE:SaveAddonStyle("alDamageMeter", StyleALDamageMeter)
-
-function STYLE:Docklet_alDamageMeter(parent)
-  if not _G['alDamagerMeterFrame'] then return end
-  local parentFrame=_G['alDamagerMeterFrame']:GetParent();
-  dmconf.barheight=floor(parentFrame:GetHeight()/dmconf.maxbars-dmconf.spacing)
-  dmconf.width=parentFrame:GetWidth()
-  alDamageMeterFrame:ClearAllPoints()
-  alDamageMeterFrame:SetAllPoints(parent)
-  alDamageMeterFrame.backdrop:SetFixedPanelTemplate('Transparent',true)
-  alDamageMeterFrame.bg:Die()
-  alDamageMeterFrame:SetFrameStrata('LOW')
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/timemanager.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/timemanager.lua
deleted file mode 100644
index b7ca7e0..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/timemanager.lua
+++ /dev/null
@@ -1,68 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TIMEMANAGER STYLER
-##########################################################
-]]--
-local function TimeManagerStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.timemanager ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(TimeManagerFrame, true)
-
-	STYLE:ApplyCloseButtonStyle(TimeManagerFrameCloseButton)
-	TimeManagerFrameInset:Die()
-	STYLE:ApplyDropdownStyle(TimeManagerAlarmHourDropDown, 80)
-	STYLE:ApplyDropdownStyle(TimeManagerAlarmMinuteDropDown, 80)
-	STYLE:ApplyDropdownStyle(TimeManagerAlarmAMPMDropDown, 80)
-	TimeManagerAlarmMessageEditBox:SetEditboxTemplate()
-	TimeManagerAlarmEnabledButton:SetCheckboxTemplate(true)
-	TimeManagerMilitaryTimeCheck:SetCheckboxTemplate(true)
-	TimeManagerLocalTimeCheck:SetCheckboxTemplate(true)
-	TimeManagerStopwatchFrame:RemoveTextures()
-	TimeManagerStopwatchCheck:SetFixedPanelTemplate("Default")
-	TimeManagerStopwatchCheck:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	TimeManagerStopwatchCheck:GetNormalTexture():FillInner()
-	local sWatch = TimeManagerStopwatchCheck:CreateTexture(nil, "OVERLAY")
-	sWatch:SetTexture(1, 1, 1, 0.3)
-	sWatch:Point("TOPLEFT", TimeManagerStopwatchCheck, 2, -2)
-	sWatch:Point("BOTTOMRIGHT", TimeManagerStopwatchCheck, -2, 2)
-	TimeManagerStopwatchCheck:SetHighlightTexture(sWatch)
-
-	StopwatchFrame:RemoveTextures()
-	StopwatchFrame:SetBasicPanel()
-	StopwatchFrame.Panel:Point("TOPLEFT", 0, -17)
-	StopwatchFrame.Panel:Point("BOTTOMRIGHT", 0, 2)
-
-	StopwatchTabFrame:RemoveTextures()
-
-	STYLE:ApplyCloseButtonStyle(StopwatchCloseButton)
-	STYLE:ApplyPaginationStyle(StopwatchPlayPauseButton)
-	STYLE:ApplyPaginationStyle(StopwatchResetButton)
-	StopwatchPlayPauseButton:Point("RIGHT", StopwatchResetButton, "LEFT", -4, 0)
-	StopwatchResetButton:Point("BOTTOMRIGHT", StopwatchFrame, "BOTTOMRIGHT", -4, 6)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_TimeManager",TimeManagerStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/trade.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/trade.lua
deleted file mode 100644
index e6b5019..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/trade.lua
+++ /dev/null
@@ -1,111 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TRADEFRAME STYLER
-##########################################################
-]]--
-local function TradeFrameStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.trade ~= true then
-		 return
-	end
-
-	STYLE:ApplyWindowStyle(TradeFrame, true)
-
-	TradeFrameInset:Die()
-	TradeFrameTradeButton:SetButtonTemplate()
-	TradeFrameCancelButton:SetButtonTemplate()
-	STYLE:ApplyCloseButtonStyle(TradeFrameCloseButton, TradeFrame.Panel)
-	TradePlayerInputMoneyFrameGold:SetEditboxTemplate()
-	TradePlayerInputMoneyFrameSilver:SetEditboxTemplate()
-	TradePlayerInputMoneyFrameCopper:SetEditboxTemplate()
-	TradeRecipientItemsInset:Die()
-	TradePlayerItemsInset:Die()
-	TradePlayerInputMoneyInset:Die()
-	TradePlayerEnchantInset:Die()
-	TradeRecipientEnchantInset:Die()
-	TradeRecipientMoneyInset:Die()
-	TradeRecipientMoneyBg:Die()
-	local inputs = {
-		"TradePlayerInputMoneyFrameSilver",
-		"TradePlayerInputMoneyFrameCopper"
-	}
-	for _,frame in pairs(inputs)do
-		_G[frame]:SetEditboxTemplate()
-		_G[frame].Panel:Point("TOPLEFT", -2, 1)
-		_G[frame].Panel:Point("BOTTOMRIGHT", -12, -1)
-		_G[frame]:SetTextInsets(-1, -1, -2, -2)
-	end
-	for i = 1, 7 do
-		local W = _G["TradePlayerItem"..i]
-		local X = _G["TradeRecipientItem"..i]
-		local Y = _G["TradePlayerItem"..i.."ItemButton"]
-		local Z = _G["TradeRecipientItem"..i.."ItemButton"]
-		local b = _G["TradePlayerItem"..i.."ItemButtonIconTexture"]
-		local z = _G["TradeRecipientItem"..i.."ItemButtonIconTexture"]
-		if Y and Z then
-			W:RemoveTextures()
-			X:RemoveTextures()
-			Y:RemoveTextures()
-			Z:RemoveTextures()
-			b:FillInner(Y)
-			b:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			Y:SetFixedPanelTemplate("Button", true)
-			Y:SetButtonTemplate()
-			Y.bg = CreateFrame("Frame", nil, Y)
-			Y.bg:SetPanelTemplate("Inset")
-			Y.bg:SetPoint("TOPLEFT", Y, "TOPRIGHT", 4, 0)
-			Y.bg:SetPoint("BOTTOMRIGHT", _G["TradePlayerItem"..i.."NameFrame"], "BOTTOMRIGHT", 0, 14)
-			Y.bg:SetFrameLevel(Y:GetFrameLevel()-3)
-			Y:SetFrameLevel(Y:GetFrameLevel()-1)
-			z:FillInner(Z)
-			z:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			Z:SetFixedPanelTemplate("Button", true)
-			Z:SetButtonTemplate()
-			Z.bg = CreateFrame("Frame", nil, Z)
-			Z.bg:SetPanelTemplate("Inset")
-			Z.bg:SetPoint("TOPLEFT", Z, "TOPRIGHT", 4, 0)
-			Z.bg:SetPoint("BOTTOMRIGHT", _G["TradeRecipientItem"..i.."NameFrame"], "BOTTOMRIGHT", 0, 14)
-			Z.bg:SetFrameLevel(Z:GetFrameLevel()-3)
-			Z:SetFrameLevel(Z:GetFrameLevel()-1)
-		end
-	end
-	TradeHighlightPlayerTop:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightPlayerBottom:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightPlayerMiddle:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightPlayer:SetFrameStrata("HIGH")
-	TradeHighlightPlayerEnchantTop:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightPlayerEnchantBottom:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightPlayerEnchantMiddle:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightPlayerEnchant:SetFrameStrata("HIGH")
-	TradeHighlightRecipientTop:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightRecipientBottom:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightRecipientMiddle:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightRecipient:SetFrameStrata("HIGH")
-	TradeHighlightRecipientEnchantTop:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightRecipientEnchantBottom:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightRecipientEnchantMiddle:SetTexture(0, 1, 0, 0.2)
-	TradeHighlightRecipientEnchant:SetFrameStrata("HIGH")
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(TradeFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/tradeskill.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/tradeskill.lua
deleted file mode 100644
index 1c339f4..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/tradeskill.lua
+++ /dev/null
@@ -1,120 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-TRADESKILL STYLER
-##########################################################
-]]--
-local function TradeSkillStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.tradeskill ~= true then
-		 return
-	end
-
-	TradeSkillListScrollFrame:RemoveTextures()
-	TradeSkillDetailScrollFrame:RemoveTextures()
-	TradeSkillFrameInset:RemoveTextures()
-	TradeSkillExpandButtonFrame:RemoveTextures()
-	TradeSkillDetailScrollChildFrame:RemoveTextures()
-	TradeSkillRankFrame:RemoveTextures()
-	TradeSkillCreateButton:RemoveTextures(true)
-	TradeSkillCancelButton:RemoveTextures(true)
-	TradeSkillFilterButton:RemoveTextures(true)
-	TradeSkillCreateAllButton:RemoveTextures(true)
-	TradeSkillViewGuildCraftersButton:RemoveTextures(true)
-
-	STYLE:ApplyWindowStyle(TradeSkillFrame, true, true)
-	STYLE:ApplyWindowStyle(TradeSkillGuildFrame)
-
-	TradeSkillGuildFrame:Point("BOTTOMLEFT", TradeSkillFrame, "BOTTOMRIGHT", 3, 19)
-	TradeSkillGuildFrameContainer:RemoveTextures()
-	TradeSkillGuildFrameContainer:SetPanelTemplate("Inset")
-	STYLE:ApplyCloseButtonStyle(TradeSkillGuildFrameCloseButton)
-
-	TradeSkillRankFrame:SetPanelTemplate("Bar", true)
-	TradeSkillRankFrame:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
-	TradeSkillListScrollFrame:SetPanelTemplate("Inset")
-	TradeSkillDetailScrollFrame:SetPanelTemplate("Inset")
-
-	TradeSkillCreateButton:SetButtonTemplate()
-	TradeSkillCancelButton:SetButtonTemplate()
-	TradeSkillFilterButton:SetButtonTemplate()
-	TradeSkillCreateAllButton:SetButtonTemplate()
-	TradeSkillViewGuildCraftersButton:SetButtonTemplate()
-
-	STYLE:ApplyScrollFrameStyle(TradeSkillListScrollFrameScrollBar)
-	STYLE:ApplyScrollFrameStyle(TradeSkillDetailScrollFrameScrollBar)
-
-	TradeSkillLinkButton:Size(17, 14)
-	TradeSkillLinkButton:Point("LEFT", TradeSkillLinkFrame, "LEFT", 5, -1)
-	TradeSkillLinkButton:SetButtonTemplate(nil, nil, nil, nil, true)
-	TradeSkillLinkButton:GetNormalTexture():SetTexCoord(0.25, 0.7, 0.45, 0.8)
-
-	TradeSkillFrameSearchBox:SetEditboxTemplate()
-	TradeSkillInputBox:SetEditboxTemplate()
-
-	STYLE:ApplyPaginationStyle(TradeSkillDecrementButton)
-	STYLE:ApplyPaginationStyle(TradeSkillIncrementButton)
-
-	TradeSkillIncrementButton:Point("RIGHT", TradeSkillCreateButton, "LEFT", -13, 0)
-	STYLE:ApplyCloseButtonStyle(TradeSkillFrameCloseButton)
-
-	local internalTest = false;
-
-	hooksecurefunc("TradeSkillFrame_SetSelection", function(_)
-		if TradeSkillSkillIcon:GetNormalTexture() then
-			TradeSkillSkillIcon:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			TradeSkillSkillIcon:GetNormalTexture():FillInner()
-			TradeSkillSkillIcon:SetSlotTemplate()
-		end
-		for i=1, MAX_TRADE_SKILL_REAGENTS do
-			local u = _G["TradeSkillReagent"..i]
-			local icon = _G["TradeSkillReagent"..i.."IconTexture"]
-			local a1 = _G["TradeSkillReagent"..i.."Count"]
-			icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			icon:SetDrawLayer("OVERLAY")
-			if not icon.backdrop then
-				local a2 = CreateFrame("Frame", nil, u)
-				if u:GetFrameLevel()-1 >= 0 then
-					 a2:SetFrameLevel(u:GetFrameLevel()-1)
-				else
-					 a2:SetFrameLevel(0)
-				end
-				a2:WrapOuter(icon)
-				a2:SetFixedPanelTemplate("Slot")
-				icon:SetParent(a2)
-				icon.backdrop = a2
-			end
-			a1:SetParent(icon.backdrop)
-			a1:SetDrawLayer("OVERLAY")
-			if i > 2 and internalTest == false then
-				local d, a3, f, g, h = u:GetPoint()
-				u:ClearAllPoints()
-				u:Point(d, a3, f, g, h-3)
-				internalTest = true
-			end
-			_G["TradeSkillReagent"..i.."NameFrame"]:Die()
-		end
-	end)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_TradeSkillUI",TradeSkillStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/trainer.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/trainer.lua
deleted file mode 100644
index f0f264d..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/trainer.lua
+++ /dev/null
@@ -1,92 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local ClassTrainerFrameList = {
-	"ClassTrainerFrame",
-	"ClassTrainerScrollFrameScrollChild",
-	"ClassTrainerFrameSkillStepButton",
-	"ClassTrainerFrameBottomInset"
-};
-local ClassTrainerTextureList = {
-	"ClassTrainerFrameInset",
-	"ClassTrainerFramePortrait",
-	"ClassTrainerScrollFrameScrollBarBG",
-	"ClassTrainerScrollFrameScrollBarTop",
-	"ClassTrainerScrollFrameScrollBarBottom",
-	"ClassTrainerScrollFrameScrollBarMiddle"
-};
---[[
-##########################################################
-TRAINER STYLER
-##########################################################
-]]--
-local function TrainerStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.trainer ~= true then return end
-
-	ClassTrainerFrame:SetHeight(ClassTrainerFrame:GetHeight() + 42)
-	STYLE:ApplyWindowStyle(ClassTrainerFrame)
-
-	for i=1, 8 do
-		_G["ClassTrainerScrollFrameButton"..i]:RemoveTextures()
-		_G["ClassTrainerScrollFrameButton"..i]:SetFixedPanelTemplate()
-		_G["ClassTrainerScrollFrameButton"..i]:SetButtonTemplate()
-		_G["ClassTrainerScrollFrameButton"..i.."Icon"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-		_G["ClassTrainerScrollFrameButton"..i].Panel:WrapOuter(_G["ClassTrainerScrollFrameButton"..i.."Icon"])
-		_G["ClassTrainerScrollFrameButton"..i.."Icon"]:SetParent(_G["ClassTrainerScrollFrameButton"..i].Panel)
-		_G["ClassTrainerScrollFrameButton"..i].selectedTex:SetTexture(1, 1, 1, 0.3)
-		_G["ClassTrainerScrollFrameButton"..i].selectedTex:FillInner()
-	end
-
-	STYLE:ApplyScrollFrameStyle(ClassTrainerScrollFrameScrollBar, 5)
-
-	for _,frame in pairs(ClassTrainerFrameList)do
-		_G[frame]:RemoveTextures()
-	end
-
-	for _,texture in pairs(ClassTrainerTextureList)do
-		_G[texture]:Die()
-	end
-
-	_G["ClassTrainerTrainButton"]:RemoveTextures()
-	_G["ClassTrainerTrainButton"]:SetButtonTemplate()
-	STYLE:ApplyDropdownStyle(ClassTrainerFrameFilterDropDown, 155)
-	ClassTrainerScrollFrame:SetFixedPanelTemplate("Inset")
-	STYLE:ApplyCloseButtonStyle(ClassTrainerFrameCloseButton, ClassTrainerFrame)
-	ClassTrainerFrameSkillStepButton.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	ClassTrainerFrameSkillStepButton:SetFixedPanelTemplate("Button", true)
-	--ClassTrainerFrameSkillStepButton.Panel:WrapOuter(ClassTrainerFrameSkillStepButton.icon)
-	--ClassTrainerFrameSkillStepButton.icon:SetParent(ClassTrainerFrameSkillStepButton.Panel)
-	ClassTrainerFrameSkillStepButtonHighlight:SetTexture(1, 1, 1, 0.3)
-	ClassTrainerFrameSkillStepButton.selectedTex:SetTexture(1, 1, 1, 0.3)
-	ClassTrainerStatusBar:RemoveTextures()
-	ClassTrainerStatusBar:SetStatusBarTexture(SV.Media.bar.default)
-	ClassTrainerStatusBar:SetPanelTemplate("Slot", true, 1, 2, 2)
-	ClassTrainerStatusBar.rankText:ClearAllPoints()
-	ClassTrainerStatusBar.rankText:SetPoint("CENTER", ClassTrainerStatusBar, "CENTER")
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_TrainerUI",TrainerStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/transmog.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/transmog.lua
deleted file mode 100644
index 6e6b602..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/transmog.lua
+++ /dev/null
@@ -1,98 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local TransmogFrameList = {
-	"TransmogrifyModelFrameLines",
-	"TransmogrifyModelFrameMarbleBg",
-	"TransmogrifyFrameButtonFrameButtonBorder",
-	"TransmogrifyFrameButtonFrameButtonBottomBorder",
-	"TransmogrifyFrameButtonFrameMoneyLeft",
-	"TransmogrifyFrameButtonFrameMoneyRight",
-	"TransmogrifyFrameButtonFrameMoneyMiddle"
-};
-local TransmogSlotList = {
-	"Head",
-	"Shoulder",
-	"Chest",
-	"Waist",
-	"Legs",
-	"Feet",
-	"Wrist",
-	"Hands",
-	"Back",
-	"MainHand",
-	"SecondaryHand"
-};
---[[
-##########################################################
-TRANSMOG STYLER
-##########################################################
-]]--
-local function TransmogStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.transmogrify ~= true then return end
-
-	STYLE:ApplyWindowStyle(TransmogrifyFrame, true)
-
-	for p, texture in pairs(TransmogFrameList)do
-		 _G[texture]:Die()
-	end
-
-	select(2, TransmogrifyModelFrame:GetRegions()):Die()
-
-	TransmogrifyModelFrame:SetFixedPanelTemplate("ModelComic")
-	TransmogrifyFrameButtonFrame:GetRegions():Die()
-	TransmogrifyApplyButton:RemoveTextures()
-	TransmogrifyApplyButton:SetButtonTemplate()
-	TransmogrifyApplyButton:Point("BOTTOMRIGHT", TransmogrifyFrame, "BOTTOMRIGHT", -4, 4)
-	STYLE:ApplyCloseButtonStyle(TransmogrifyArtFrameCloseButton)
-	TransmogrifyArtFrame:RemoveTextures()
-
-	for p, a9 in pairs(TransmogSlotList)do
-		local icon = _G["TransmogrifyFrame"..a9 .."SlotIconTexture"]
-		local a9 = _G["TransmogrifyFrame"..a9 .."Slot"]
-		if a9 then
-			a9:RemoveTextures()
-			a9:SetSlotTemplate(true)
-			a9:SetFrameLevel(a9:GetFrameLevel()+2)
-
-			a9.Panel:SetAllPoints()
-			icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			icon:ClearAllPoints()
-			icon:FillInner()
-		end
-	end
-
-	TransmogrifyConfirmationPopup:SetParent(UIParent)
-	TransmogrifyConfirmationPopup:RemoveTextures()
-	TransmogrifyConfirmationPopup:SetPanelTemplate("Pattern")
-	TransmogrifyConfirmationPopup.Button1:SetButtonTemplate()
-	TransmogrifyConfirmationPopup.Button2:SetButtonTemplate()
-	STYLE:ApplyItemButtonStyle(TransmogrifyConfirmationPopupItemFrame1, true)
-	STYLE:ApplyItemButtonStyle(TransmogrifyConfirmationPopupItemFrame2, true)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_ItemAlterationUI", TransmogStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/voidstorage.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/voidstorage.lua
deleted file mode 100644
index 909a377..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/voidstorage.lua
+++ /dev/null
@@ -1,93 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local VoidStorageList = {
-  "VoidStorageBorderFrame",
-  "VoidStorageDepositFrame",
-  "VoidStorageWithdrawFrame",
-  "VoidStorageCostFrame",
-  "VoidStorageStorageFrame",
-  "VoidStoragePurchaseFrame",
-  "VoidItemSearchBox"
-};
---[[
-##########################################################
-VOIDSTORAGE STYLER
-##########################################################
-]]--
-local function VoidStorageStyle()
-  if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.voidstorage ~= true then
-     return
-  end
-
-  STYLE:ApplyWindowStyle(VoidStorageFrame, true)
-
-  for _,frame in pairs(VoidStorageList)do
-    _G[frame]:RemoveTextures()
-  end
-
-  VoidStoragePurchaseFrame:SetFrameStrata('DIALOG')
-  VoidStoragePurchaseFrame:SetFixedPanelTemplate("Button", true)
-  VoidStorageFrameMarbleBg:Die()
-  VoidStorageFrameLines:Die()
-
-  select(2, VoidStorageFrame:GetRegions()):Die()
-
-  VoidStoragePurchaseButton:SetButtonTemplate()
-  VoidStorageHelpBoxButton:SetButtonTemplate()
-  VoidStorageTransferButton:SetButtonTemplate()
-  STYLE:ApplyCloseButtonStyle(VoidStorageBorderFrame.CloseButton)
-  VoidItemSearchBox:SetPanelTemplate("Inset")
-  VoidItemSearchBox.Panel:Point("TOPLEFT", 10, -1)
-  VoidItemSearchBox.Panel:Point("BOTTOMRIGHT", 4, 1)
-
-  for e = 1, 9 do
-    local f = _G["VoidStorageDepositButton"..e]
-    local g = _G["VoidStorageWithdrawButton"..e]
-    local h = _G["VoidStorageDepositButton"..e.."IconTexture"]
-    local i = _G["VoidStorageWithdrawButton"..e.."IconTexture"]
-    _G["VoidStorageDepositButton"..e.."Bg"]:Hide()
-    _G["VoidStorageWithdrawButton"..e.."Bg"]:Hide()
-    f:SetSlotTemplate(true)
-    g:SetSlotTemplate(true)
-    h:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-    h:FillInner()
-    i:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-    i:FillInner()
-  end
-
-  for e = 1, 80 do
-    local j = _G["VoidStorageStorageButton"..e]
-    local k = _G["VoidStorageStorageButton"..e.."IconTexture"]
-    _G["VoidStorageStorageButton"..e.."Bg"]:Hide()
-    j:SetSlotTemplate(true)
-    k:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-    k:FillInner()
-  end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveBlizzardStyle("Blizzard_VoidStorageUI", VoidStorageStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/worldmap.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/worldmap.lua
deleted file mode 100644
index e96e03e..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/worldmap.lua
+++ /dev/null
@@ -1,240 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-HELPERS
-##########################################################
-]]--
-local function AdjustMapLevel()
-  if InCombatLockdown()then return end
-    WorldMapFrame:SetFrameLevel(4)
-    WorldMapDetailFrame:SetFrameLevel(6)
-    WorldMapFrame:SetFrameStrata('HIGH')
-    WorldMapArchaeologyDigSites:SetFrameLevel(8)
-    WorldMapArchaeologyDigSites:SetFrameStrata('DIALOG')
-end
-
-local function WorldMap_SmallView()
-  WorldMapFrame.Panel:ClearAllPoints()
-  WorldMapFrame.Panel:WrapOuter(WorldMapFrame, 4, 4)
-  WorldMapFrame.Panel.Panel:WrapOuter(WorldMapFrame.Panel)
-end
-
-local function WorldMap_FullView()
-  WorldMapFrame.Panel:ClearAllPoints()
-
-  if(SV.___interface >= 60000) then
-    WorldMapFrame.Panel:Point("TOPLEFT", WorldMapDetailFrame, "TOPLEFT", -12, 74)
-    WorldMapFrame.Panel:Point("BOTTOMRIGHT", WorldMapDetailFrame, "BOTTOMRIGHT", 12, -24)
-  else
-    WorldMapFrame.Panel:Point("TOPLEFT", WorldMapDetailFrame, "TOPLEFT", -12, 74)
-    WorldMapFrame.Panel:Point("BOTTOMRIGHT", WorldMapShowDropDown, "BOTTOMRIGHT", 4, -4)
-  end
-  WorldMapFrame.Panel.Panel:SetAllPoints(SV.UIParent)
-end
-
-local function WorldMap_QuestView()
-  WorldMap_FullView()
-  if not WorldMapQuestDetailScrollFrame.Panel then
-    WorldMapQuestDetailScrollFrame:SetFixedPanelTemplate("Inset")
-    WorldMapQuestDetailScrollFrame.Panel:Point("TOPLEFT", -22, 2)
-    WorldMapQuestDetailScrollFrame.Panel:Point("BOTTOMRIGHT", WorldMapShowDropDown, 4, -4)
-    WorldMapQuestDetailScrollFrame.spellTex = WorldMapQuestDetailScrollFrame:CreateTexture(nil, 'ARTWORK')
-    WorldMapQuestDetailScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
-    WorldMapQuestDetailScrollFrame.spellTex:SetPoint("TOPLEFT", WorldMapQuestDetailScrollFrame.Panel, 'TOPLEFT', 2, -2)
-    WorldMapQuestDetailScrollFrame.spellTex:Size(586, 310)
-    WorldMapQuestDetailScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
-  end
-  if not WorldMapQuestRewardScrollFrame.Panel then
-    WorldMapQuestRewardScrollFrame:SetPanelTemplate("Inset")
-    WorldMapQuestRewardScrollFrame.Panel:Point("BOTTOMRIGHT", 22, -4)
-    WorldMapQuestRewardScrollFrame.spellTex = WorldMapQuestRewardScrollFrame:CreateTexture(nil, 'ARTWORK')
-    WorldMapQuestRewardScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
-    WorldMapQuestRewardScrollFrame.spellTex:SetPoint("TOPLEFT", WorldMapQuestRewardScrollFrame.Panel, 'TOPLEFT', 2, -2)
-    WorldMapQuestRewardScrollFrame.spellTex:Size(585, 310)
-    WorldMapQuestRewardScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
-  end
-  if not WorldMapQuestScrollFrame.Panel then
-    WorldMapQuestScrollFrame:SetPanelTemplate("Inset")
-    WorldMapQuestScrollFrame.Panel:Point("TOPLEFT", 0, 2)
-    WorldMapQuestScrollFrame.Panel:Point("BOTTOMRIGHT", 25, -3)
-    WorldMapQuestScrollFrame.spellTex = WorldMapQuestScrollFrame:CreateTexture(nil, 'ARTWORK')
-    WorldMapQuestScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
-    WorldMapQuestScrollFrame.spellTex:SetPoint("TOPLEFT", WorldMapQuestScrollFrame.Panel, 'TOPLEFT', 2, -2)
-    WorldMapQuestScrollFrame.spellTex:Size(520, 1033)
-    WorldMapQuestScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
-  end
-end
-
-local function StripQuestMapFrame()
-  WorldMapFrame.BorderFrame:RemoveTextures(true)
-  WorldMapFrame.BorderFrame.ButtonFrameEdge:SetTexture(0,0,0,0)
-  WorldMapFrame.BorderFrame.InsetBorderTop:SetTexture(0,0,0,0)
-  WorldMapFrame.BorderFrame.Inset:RemoveTextures(true)
-  WorldMapTitleButton:RemoveTextures(true)
-  WorldMapFrameNavBar:RemoveTextures(true)
-  WorldMapFrameNavBarOverlay:RemoveTextures(true)
-  QuestMapFrame:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame:RemoveTextures(true)
-
-  QuestMapFrame.DetailsFrame:SetPanelTemplate("Paper")
-
-  QuestMapFrame.DetailsFrame.CompleteQuestFrame:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame.CompleteQuestFrame.CompleteButton:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame.CompleteQuestFrame.CompleteButton:SetButtonTemplate()
-
-  QuestMapFrame.DetailsFrame.BackButton:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame.BackButton:SetButtonTemplate()
-
-  QuestMapFrame.DetailsFrame.AbandonButton:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame.AbandonButton:SetButtonTemplate()
-
-  QuestMapFrame.DetailsFrame.ShareButton:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame.ShareButton:SetButtonTemplate()
-
-  QuestMapFrame.DetailsFrame.TrackButton:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame.TrackButton:SetButtonTemplate()
-
-  QuestMapFrame.DetailsFrame.RewardsFrame:RemoveTextures(true)
-  QuestMapFrame.DetailsFrame.RewardsFrame:SetPanelTemplate("Paper")
-  QuestMapFrame.DetailsFrame.RewardsFrame:SetPanelColor("dark")
-
-  QuestScrollFrame:RemoveTextures(true)
-
-  local w,h = WorldMapFrame.UIElementsFrame:GetSize()
-  local underlay = CreateFrame("Frame", nil, WorldMapFrame)
-  underlay:Size(w,h)
-  underlay:SetAllPoints(WorldMapFrame.UIElementsFrame)
-  underlay:SetPanelTemplate("Blackout")
-
-  WorldMapFrame.UIElementsFrame:SetParent(underlay)
-
-  local detailWidth = QuestMapFrame.DetailsFrame.RewardsFrame:GetWidth()
-  QuestMapFrame.DetailsFrame:ClearAllPoints()
-  QuestMapFrame.DetailsFrame:SetPoint("TOPLEFT", underlay, "TOPRIGHT", 2, 0)
-  QuestMapFrame.DetailsFrame:SetWidth(detailWidth)
-
-  WorldMapFrameNavBar:ClearAllPoints()
-  WorldMapFrameNavBar:Point("TOPLEFT", WorldMapFrame.Panel, "TOPLEFT", 12, -22)
-  WorldMapFrameNavBar:SetPanelTemplate("Blackout")
-end
-
-local function WorldMap_OnShow()
-
-  if(SV.___interface >= 60000) then
-    --StripQuestMapFrame()
-    if WORLDMAP_SETTINGS.size == WORLDMAP_FULLMAP_SIZE then
-      WorldMap_FullView()
-    elseif WORLDMAP_SETTINGS.size == WORLDMAP_WINDOWED_SIZE then
-      WorldMap_SmallView()
-    end
-  else
-    WorldMapFrame:RemoveTextures()
-    if WORLDMAP_SETTINGS.size == WORLDMAP_FULLMAP_SIZE then
-      WorldMap_FullView()
-    elseif WORLDMAP_SETTINGS.size == WORLDMAP_WINDOWED_SIZE then
-      WorldMap_SmallView()
-    elseif WORLDMAP_SETTINGS.size == WORLDMAP_QUESTLIST_SIZE then
-      WorldMap_QuestView()
-    end
-  end
-
-  if not SV.db.SVMap.tinyWorldMap then
-    BlackoutWorld:SetTexture(0, 0, 0, 1)
-  else
-    BlackoutWorld:SetTexture(0,0,0,0)
-  end
-
-  WorldMapFrameAreaLabel:SetFontTemplate(nil, 50, "OUTLINE")
-  WorldMapFrameAreaLabel:SetShadowOffset(2, -2)
-  WorldMapFrameAreaLabel:SetTextColor(0.90, 0.8294, 0.6407)
-  WorldMapFrameAreaDescription:SetFontTemplate(nil, 40, "OUTLINE")
-  WorldMapFrameAreaDescription:SetShadowOffset(2, -2)
-  WorldMapFrameAreaPetLevels:SetFontTemplate(nil, 25, 'OUTLINE')
-  WorldMapZoneInfo:SetFontTemplate(nil, 27, "OUTLINE")
-  WorldMapZoneInfo:SetShadowOffset(2, -2)
-
-  if InCombatLockdown() then return end
-  AdjustMapLevel()
-end
---[[
-##########################################################
-WORLDMAP STYLER
-##########################################################
-]]--
-local function WorldMapStyle()
-  if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.worldmap ~= true then return end
-
-  WorldMapFrame:SetFrameLevel(4)
-  STYLE:ApplyWindowStyle(WorldMapFrame, true, true)
-  WorldMapFrame.Panel:SetPanelTemplate("Blackout")
-
-  STYLE:ApplyScrollFrameStyle(WorldMapQuestScrollFrameScrollBar)
-  STYLE:ApplyScrollFrameStyle(WorldMapQuestDetailScrollFrameScrollBar, 4)
-  STYLE:ApplyScrollFrameStyle(WorldMapQuestRewardScrollFrameScrollBar, 4)
-
-  WorldMapDetailFrame:SetFrameLevel(6)
-  WorldMapDetailFrame:SetPanelTemplate("Blackout")
-
-  WorldMapArchaeologyDigSites:SetFrameLevel(8)
-
-  WorldMapFrameSizeDownButton:SetFrameLevel(999)
-  WorldMapFrameSizeUpButton:SetFrameLevel(999)
-  WorldMapFrameCloseButton:SetFrameLevel(999)
-
-  STYLE:ApplyCloseButtonStyle(WorldMapFrameCloseButton)
-  STYLE:ApplyCloseButtonStyle(WorldMapFrameSizeDownButton)
-  STYLE:ApplyCloseButtonStyle(WorldMapFrameSizeUpButton)
-
-  STYLE:ApplyDropdownStyle(WorldMapLevelDropDown)
-  STYLE:ApplyDropdownStyle(WorldMapZoneMinimapDropDown)
-  STYLE:ApplyDropdownStyle(WorldMapContinentDropDown)
-  STYLE:ApplyDropdownStyle(WorldMapZoneDropDown)
-  STYLE:ApplyDropdownStyle(WorldMapShowDropDown)
-
-  if(SV.___interface < 60000) then
-    WorldMapZoomOutButton:SetButtonTemplate()
-    WorldMapTrackQuest:SetCheckboxTemplate(true)
-    hooksecurefunc("WorldMapFrame_SetFullMapView", WorldMap_FullView)
-    hooksecurefunc("WorldMapFrame_SetQuestMapView", WorldMap_QuestView)
-  else
-    StripQuestMapFrame()
-  end
-
-  WorldMapFrame:HookScript("OnShow", WorldMap_OnShow)
-  hooksecurefunc("WorldMap_ToggleSizeUp", WorldMap_OnShow)
-  BlackoutWorld:SetParent(WorldMapFrame.Panel.Panel)
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(WorldMapStyle)
-
---[[
-function ArchaeologyDigSiteFrame_OnUpdate()
-    WorldMapArchaeologyDigSites:DrawNone();
-    local numEntries = ArchaeologyMapUpdateAll();
-    for i = 1, numEntries do
-        local blobID = ArcheologyGetVisibleBlobID(i);
-        WorldMapArchaeologyDigSites:DrawBlob(blobID, true);
-    end
-end
-]]
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/addons/worldstate.lua b/Interface/AddOns/SVUI_StyleOMatic/addons/worldstate.lua
deleted file mode 100644
index d4f2c44..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/addons/worldstate.lua
+++ /dev/null
@@ -1,42 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
---]]
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
---[[
-##########################################################
-WORLDSTATE STYLER
-##########################################################
-]]--
-local function WorldStateStyle()
-	if SV.db.SVStyle.blizzard.enable ~= true or SV.db.SVStyle.blizzard.bgscore ~= true then return end
-	WorldStateScoreScrollFrame:RemoveTextures()
-	WorldStateScoreFrame:RemoveTextures()
-	WorldStateScoreFrame:SetPanelTemplate("Halftone")
-	STYLE:ApplyCloseButtonStyle(WorldStateScoreFrameCloseButton)
-	STYLE:ApplyScrollFrameStyle(WorldStateScoreScrollFrameScrollBar)
-	WorldStateScoreFrameInset:SetAlpha(0)
-	WorldStateScoreFrameLeaveButton:SetButtonTemplate()
-	for b = 1, 3 do
-		STYLE:ApplyTabStyle(_G["WorldStateScoreFrameTab"..b])
-	end
-end
---[[
-##########################################################
-STYLE LOADING
-##########################################################
-]]--
-STYLE:SaveCustomStyle(WorldStateStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/common/methods.lua b/Interface/AddOns/SVUI_StyleOMatic/common/methods.lua
deleted file mode 100644
index 02607b8..0000000
--- a/Interface/AddOns/SVUI_StyleOMatic/common/methods.lua
+++ /dev/null
@@ -1,662 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack 	= _G.unpack;
-local select 	= _G.select;
-local pairs 	= _G.pairs;
-local error 	= _G.error;
-local pcall 	= _G.pcall;
-local tinsert 	= _G.tinsert;
-local string 	= _G.string;
-local table 	= _G.table;
---[[ STRING METHODS ]]--
-local lower, upper, find = string.lower, string.upper, string.find;
---[[ TABLE METHODS ]]--
-local twipe = table.wipe;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SV = _G.SVUI;
-local L = LibLocale();
-local STYLE = _G.StyleVillain;
-local LSM = LibStub("LibSharedMedia-3.0")
-local NewHook = hooksecurefunc;
---[[
-##########################################################
- /$$$$$$$$/$$$$$$$   /$$$$$$  /$$      /$$ /$$$$$$$$
-| $$_____/ $$__  $$ /$$__  $$| $$$    /$$$| $$_____/
-| $$     | $$  \ $$| $$  \ $$| $$$$  /$$$$| $$
-| $$$$$  | $$$$$$$/| $$$$$$$$| $$ $$/$$ $$| $$$$$
-| $$__/  | $$__  $$| $$__  $$| $$  $$$| $$| $$__/
-| $$     | $$  \ $$| $$  | $$| $$\  $ | $$| $$
-| $$     | $$  | $$| $$  | $$| $$ \/  | $$| $$$$$$$$
-|__/     |__/  |__/|__/  |__/|__/     |__/|________/
-##########################################################
-]]--
-local levelDiff = 2
-
-local _hook_WindowLevel = function(self, level)
-	local adjustment = level - levelDiff;
-	if(adjustment < 0) then adjustment = 0 end
-	self.Panel:SetFrameLevel(adjustment)
-end
-
-function STYLE:ApplyFrameStyle(this, template, noStripping, fullStripping)
-	if(not this or (this and this.Panel)) then return end
-	if not noStripping then this:RemoveTextures(fullStripping) end
-	template = template or "Transparent"
-	this:SetPanelTemplate(template)
-end
-
-function STYLE:ApplyUnderlayStyle(this, template, noStripping, fullStripping)
-	if(not this or (this and this.Panel)) then return end
-	if not noStripping then this:RemoveTextures(fullStripping) end
-	template = template or "Transparent"
-    this:SetFixedPanelTemplate(template)
-end
-
-function STYLE:ApplyWindowStyle(this, action, fullStrip)
-	if(not this or (this and this.Panel)) then return end
-	local template = action and "Action" or "Halftone"
-	local baselevel = this:GetFrameLevel()
-	if(baselevel < 1) then
-		this:SetFrameLevel(1)
-	end
-
-	this:RemoveTextures(fullStrip)
-	this:SetPanelTemplate(template)
-end
-
-function STYLE:ApplyWindowHolder(this, fullStrip)
-	if(not this or (this and this.Panel)) then return end
-	local baselevel = this:GetFrameLevel()
-	if(baselevel < 1) then
-		this:SetFrameLevel(1)
-	end
-
-	this:RemoveTextures(fullStrip)
-	this:SetPanelTemplate("Blackout")
-end
---[[
-##########################################################
- /$$$$$$$  /$$   /$$ /$$$$$$$$/$$$$$$$$/$$$$$$  /$$   /$$
-| $$__  $$| $$  | $$|__  $$__/__  $$__/$$__  $$| $$$ | $$
-| $$  \ $$| $$  | $$   | $$     | $$ | $$  \ $$| $$$$| $$
-| $$$$$$$ | $$  | $$   | $$     | $$ | $$  | $$| $$ $$ $$
-| $$__  $$| $$  | $$   | $$     | $$ | $$  | $$| $$  $$$$
-| $$  \ $$| $$  | $$   | $$     | $$ | $$  | $$| $$\  $$$
-| $$$$$$$/|  $$$$$$/   | $$     | $$ |  $$$$$$/| $$ \  $$
-|_______/  \______/    |__/     |__/  \______/ |__/  \__/
-##########################################################
-]]--
-local Button_OnEnter = function(self)
-    self:SetBackdropColor(unpack(SV.Media.color.highlight))
-end
-
-local Button_OnLeave = function(self)
-    self:SetBackdropColor(unpack(SV.Media.color.default))
-end
-
-function STYLE:ApplyButtonStyle(this)
-	if not this then return end
-    this:SetButtonTemplate()
-end
-
---[[ CLOSE BUTTON ]]--
-local CloseButton_OnEnter = function(self)
-    self:SetBackdropBorderColor(unpack(SV.Media.color.highlight))
-end
-
-local CloseButton_OnLeave = function(self)
-    self:SetBackdropBorderColor(0,0,0,1)
-end
-
-function STYLE:ApplyCloseButtonStyle(this, anchor)
-	if not this then return end
-	this:RemoveTextures()
-	this:SetButtonTemplate(nil, 1, -7, -7, nil, "red")
-	this:SetFrameLevel(this:GetFrameLevel() + 4)
-	this:SetNormalTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\CLOSE-BUTTON]])
-    if not this.hookedColors then
-        this:HookScript("OnEnter", CloseButton_OnEnter)
-        this:HookScript("OnLeave", CloseButton_OnLeave)
-        this.hookedColors = true
-    end
-    if anchor then
-    	this:SetPoint("TOPRIGHT", anchor, "TOPRIGHT", 2, 2)
-    end
-end
-
---[[ ITEM BUTTON ]]--
-
-function STYLE:ApplyItemButtonStyle(frame, adjust, shrink, noScript)
-	if(not frame or (frame and frame.StyleHooked)) then return end
-
-	local link = frame:GetName()
-
-	frame:RemoveTextures()
-
-	if(not frame.Panel) then
-		if shrink then
-			frame:SetPanelTemplate("Button", true, 1, -2, -2)
-		else
-			frame:SetFixedPanelTemplate("Button")
-		end
-	end
-
-	if(link) then
-		local nameObject = _G[("%sName"):format(link)]
-		local subNameObject = _G[("%sSubName"):format(link)]
-		local arrowObject = _G[("%sFlyoutArrow"):format(link)]
-		local levelObject = _G[("%sLevel"):format(link)]
-		local iconObject = _G[("%sIcon"):format(link)] or _G[("%sIconTexture"):format(link)]
-		local countObject = _G[("%sCount"):format(link)]
-
-		if(iconObject and not frame.IconShadow) then
-			iconObject:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-
-			if adjust then
-				iconObject:FillInner(frame, 2, 2)
-			end
-
-			frame.IconShadow = CreateFrame("Frame", nil, frame)
-			frame.IconShadow:WrapOuter(iconObject)
-			frame.IconShadow:SetBasicPanel(0,0,0,0,true)
-
-			--iconObject:SetParent(frame.IconShadow)
-		end
-
-		if(not frame.Riser) then
-			local fg = CreateFrame("Frame", nil, frame)
-			fg:SetSize(120, 22)
-			fg:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", 0, -11)
-			fg:SetFrameLevel(frame:GetFrameLevel() + 1)
-			frame.Riser = fg
-		end
-
-		if(countObject) then
-			countObject:SetParent(frame.Riser)
-			countObject:SetAllPoints(frame.Riser)
-			countObject:SetFont(LSM:Fetch("font", SV.db.media.fonts.number), SV.db.media.fonts.size, "OUTLINE")
-			countObject:SetDrawLayer("ARTWORK", 7)
-		end
-
-		if(nameObject) then nameObject:SetParent(frame.Riser) end
-		if(subNameObject) then subNameObject:SetParent(frame.Riser) end
-		if(arrowObject) then arrowObject:SetParent(frame.Riser) end
-
-		if(levelObject) then
-			levelObject:SetParent(frame.Riser)
-			levelObject:SetFont(LSM:Fetch("font", SV.db.media.fonts.number), SV.db.media.fonts.size, "OUTLINE")
-			levelObject:SetDrawLayer("ARTWORK", 7)
-		end
-
-		if(not noScript) then
-			frame:HookScript("OnEnter", Button_OnEnter)
-    		frame:HookScript("OnLeave", Button_OnLeave)
-    	end
-	end
-
-	frame.StyleHooked = true
-end
---[[
-##########################################################
-  /$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$  /$$       /$$
- /$$__  $$ /$$__  $$| $$__  $$ /$$__  $$| $$      | $$
-| $$  \__/| $$  \__/| $$  \ $$| $$  \ $$| $$      | $$
-|  $$$$$$ | $$      | $$$$$$$/| $$  | $$| $$      | $$
- \____  $$| $$      | $$__  $$| $$  | $$| $$      | $$
- /$$  \ $$| $$    $$| $$  \ $$| $$  | $$| $$      | $$
-|  $$$$$$/|  $$$$$$/| $$  | $$|  $$$$$$/| $$$$$$$$| $$$$$$$$
- \______/  \______/ |__/  |__/ \______/ |________/|________/
-##########################################################
---]]
-function STYLE:ApplyScrollFrameStyle(this, scale, yOffset)
-	if(not this or (this and this.StyleHooked)) then return end
-
-	scale = scale or 5
-	local scrollName = this:GetName()
-	local bg, track, top, bottom, mid, upButton, downButton
-
-
-	bg = _G[("%sBG"):format(scrollName)]
-	if(bg) then bg:SetTexture(0,0,0,0) end
-
-	track = _G[("%sTrack"):format(scrollName)]
-	if(track) then track:SetTexture(0,0,0,0) end
-
-	top = _G[("%sTop"):format(scrollName)]
-	if(top) then top:SetTexture(0,0,0,0) end
-
-	bottom = _G[("%sBottom"):format(scrollName)]
-	if(bottom) then bottom:SetTexture(0,0,0,0) end
-
-	mid = _G[("%sMiddle"):format(scrollName)]
-	if(mid) then mid:SetTexture(0,0,0,0) end
-
-	upButton = _G[("%sScrollUpButton"):format(scrollName)]
-	downButton = _G[("%sScrollDownButton"):format(scrollName)]
-
-	if(upButton and downButton) then
-		upButton:RemoveTextures()
-		if(not upButton.icon) then
-			local upW, upH = upButton:GetSize()
-			STYLE:ApplyPaginationStyle(upButton)
-			SquareButton_SetIcon(upButton, "UP")
-			upButton:Size(upW + scale, upH + scale)
-			if(yOffset) then
-				local anchor, parent, relative, xBase, yBase = upButton:GetPoint()
-				local yAdjust = (yOffset or 0) + yBase
-				upButton:ClearAllPoints()
-				upButton:SetPoint(anchor, parent, relative, xBase, yAdjust)
-			end
-		end
-
-		downButton:RemoveTextures()
-		if(not downButton.icon) then
-			local dnW, dnH = downButton:GetSize()
-			STYLE:ApplyPaginationStyle(downButton)
-			SquareButton_SetIcon(downButton, "DOWN")
-			downButton:Size(dnW + scale, dnH + scale)
-			if(yOffset) then
-				local anchor, parent, relative, xBase, yBase = downButton:GetPoint()
-				local yAdjust = ((yOffset or 0) * -1) + yBase
-				downButton:ClearAllPoints()
-				downButton:SetPoint(anchor, parent, relative, xBase, yAdjust)
-			end
-		end
-
-		if(not this.ScrollBG) then
-			this.ScrollBG = CreateFrame("Frame", nil, this)
-			this.ScrollBG:SetPoint("TOPLEFT", upButton, "BOTTOMLEFT", 0, -1)
-			this.ScrollBG:SetPoint("BOTTOMRIGHT", downButton, "TOPRIGHT", 0, 1)
-			this.ScrollBG:SetBasicPanel()
-		end
-
-		if(this:GetThumbTexture()) then
-			this:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob")
-		end
-	end
-
-	this.StyleHooked = true
-end
-
-function STYLE:ApplyScrollBarStyle(this)
-	if(not this or (this and not this.GetOrientation)) then return end
-
-	if(this:GetOrientation() == "VERTICAL") then
-		this:SetWidth(12)
-	else
-		this:SetHeight(12)
-		for i=1, this:GetNumRegions() do
-			local child = select(i, this:GetRegions())
-			if(child and child:GetObjectType() == "FontString") then
-				local anchor, parent, relative, x, y = child:GetPoint()
-				if relative:find("BOTTOM") then
-					child:SetPoint(anchor, parent, relative, x, y - 4)
-				end
-			end
-		end
-	end
-
-	this:RemoveTextures()
-	this:SetBackdrop(nil)
-	this:SetFixedPanelTemplate("Component")
-    this.Panel:SetBackdropBorderColor(0.2,0.2,0.2)
-	this:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob")
-
-	this.StyleHooked = true
-end
---[[
-##########################################################
- /$$$$$$$$/$$$$$$  /$$$$$$$   /$$$$$$
-|__  $$__/$$__  $$| $$__  $$ /$$__  $$
-   | $$ | $$  \ $$| $$  \ $$| $$  \__/
-   | $$ | $$$$$$$$| $$$$$$$ |  $$$$$$
-   | $$ | $$__  $$| $$__  $$ \____  $$
-   | $$ | $$  | $$| $$  \ $$ /$$  \ $$
-   | $$ | $$  | $$| $$$$$$$/|  $$$$$$/
-   |__/ |__/  |__/|_______/  \______/
-##########################################################
---]]
-local Tab_OnEnter = function(self)
-	self.backdrop:SetPanelColor("highlight")
-	self.backdrop:SetBackdropBorderColor(unpack(SV.Media.color.highlight))
-end
-
-local Tab_OnLeave = function(self)
-	self.backdrop:SetPanelColor("dark")
-	self.backdrop:SetBackdropBorderColor(0,0,0,1)
-end
-
-function STYLE:ApplyTabStyle(this, addBackground)
-	if(not this or (this and this.StyleHooked)) then return end
-
-	local tab = this:GetName();
-
-	if _G[tab.."Left"] then _G[tab.."Left"]:SetTexture(0,0,0,0) end
-	if _G[tab.."LeftDisabled"] then _G[tab.."LeftDisabled"]:SetTexture(0,0,0,0) end
-	if _G[tab.."Right"] then _G[tab.."Right"]:SetTexture(0,0,0,0) end
-	if _G[tab.."RightDisabled"] then _G[tab.."RightDisabled"]:SetTexture(0,0,0,0) end
-	if _G[tab.."Middle"] then _G[tab.."Middle"]:SetTexture(0,0,0,0) end
-	if _G[tab.."MiddleDisabled"] then _G[tab.."MiddleDisabled"]:SetTexture(0,0,0,0) end
-
-	if(this.GetHighlightTexture and this:GetHighlightTexture()) then
-		this:GetHighlightTexture():SetTexture(0,0,0,0)
-	end
-
-	this:RemoveTextures()
-
-	if(addBackground) then
-		local nTex = this:GetNormalTexture()
-
-		if(nTex) then
-			nTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-			nTex:FillInner()
-		end
-
-		this.pushed = true;
-		this.backdrop = CreateFrame("Frame", nil, this)
-		this.backdrop:WrapOuter(this,1,1)
-		this.backdrop:SetFrameLevel(0)
-		this.backdrop:SetBackdrop({
-			bgFile = [[Interface\BUTTONS\WHITE8X8]],
-	        tile = false,
-	        tileSize = 0,
-	        edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
-	        edgeSize = 3,
-	        insets = {
-	            left = 0,
-	            right = 0,
-	            top = 0,
-	            bottom = 0
-	        }
-	    });
-	    this.backdrop:SetBackdropColor(0,0,0,1)
-		this.backdrop:SetBackdropBorderColor(0,0,0,1)
-
-		local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = this:GetPoint()
-		this:Point(initialAnchor, anchorParent, relativeAnchor, 1, yPosition)
-	else
-		this.backdrop = CreateFrame("Frame", nil, this)
-		this.backdrop:FillInner(this, 10, 3)
-		this.backdrop:SetFixedPanelTemplate("Component", true)
-		this.backdrop:SetPanelColor("dark")
-
-		if(this:GetFrameLevel() > 0) then
-			this.backdrop:SetFrameLevel(this:GetFrameLevel() - 1)
-		end
-	end
-
-	this:HookScript("OnEnter", Tab_OnEnter)
-	this:HookScript("OnLeave", Tab_OnLeave)
-
-    this.StyleHooked = true
-end
---[[
-##########################################################
- /$$$$$$$   /$$$$$$   /$$$$$$  /$$$$$$$$
-| $$__  $$ /$$__  $$ /$$__  $$| $$_____/
-| $$  \ $$| $$  \ $$| $$  \__/| $$
-| $$$$$$$/| $$$$$$$$| $$ /$$$$| $$$$$
-| $$____/ | $$__  $$| $$|_  $$| $$__/
-| $$      | $$  | $$| $$  \ $$| $$
-| $$      | $$  | $$|  $$$$$$/| $$$$$$$$
-|__/      |__/  |__/ \______/ |________/
-##########################################################
---]]
-function STYLE:ApplyPaginationStyle(button, isVertical)
-	if(not button or (button and not button:GetName()) or (button and button.StyleHooked)) then return end
-
-	local bName = button:GetName()
-	local testName = bName:lower()
-	local leftDown = ((bName and testName:find('left')) or testName:find('prev') or testName:find('decrement')) or false
-
-	button:RemoveTextures()
-	button:SetNormalTexture("")
-	button:SetPushedTexture(0,0,0,0)
-	button:SetHighlightTexture(0,0,0,0)
-	button:SetDisabledTexture("")
-
-	button:SetButtonTemplate()
-	button:Size((button:GetWidth() - 7), (button:GetHeight() - 7))
-
-	if not button.icon then
-		button.icon = button:CreateTexture(nil,'ARTWORK')
-		button.icon:Size(13)
-		button.icon:SetPoint('CENTER')
-		button.icon:SetTexture([[Interface\Buttons\SquareButtonTextures]])
-		button.icon:SetTexCoord(0.02, 0.2, 0.02, 0.2)
-
-		button:SetScript('OnMouseDown',function(self)
-			if self:IsEnabled() then
-				self.icon:SetPoint("CENTER",-1,-1)
-			end
-		end)
-
-		button:SetScript('OnMouseUp',function(self)
-			self.icon:SetPoint("CENTER",0,0)
-		end)
-
-		button:SetScript('OnDisable',function(self)
-			SetDesaturation(self.icon, true)
-			self.icon:SetAlpha(0.5)
-		end)
-
-		button:SetScript('OnEnable',function(self)
-			SetDesaturation(self.icon, false)
-			self.icon:SetAlpha(1.0)
-		end)
-
-		if not button:IsEnabled() then
-			button:GetScript('OnDisable')(button)
-		end
-	end
-
-	if isVertical then
-		if leftDown then SquareButton_SetIcon(button,'UP') else SquareButton_SetIcon(button,'DOWN')end
-	else
-		if leftDown then SquareButton_SetIcon(button,'LEFT') else SquareButton_SetIcon(button,'RIGHT')end
-	end
-
-	button.StyleHooked = true
-end
---[[
-##########################################################
- /$$$$$$$  /$$$$$$$   /$$$$$$  /$$$$$$$
-| $$__  $$| $$__  $$ /$$__  $$| $$__  $$
-| $$  \ $$| $$  \ $$| $$  \ $$| $$  \ $$
-| $$  | $$| $$$$$$$/| $$  | $$| $$$$$$$/
-| $$  | $$| $$__  $$| $$  | $$| $$____/
-| $$  | $$| $$  \ $$| $$  | $$| $$
-| $$$$$$$/| $$  | $$|  $$$$$$/| $$
-|_______/ |__/  |__/ \______/ |__/
- /$$$$$$$   /$$$$$$  /$$      /$$ /$$   /$$
-| $$__  $$ /$$__  $$| $$  /$ | $$| $$$ | $$
-| $$  \ $$| $$  \ $$| $$ /$$$| $$| $$$$| $$
-| $$  | $$| $$  | $$| $$/$$ $$ $$| $$ $$ $$
-| $$  | $$| $$  | $$| $$$$_  $$$$| $$  $$$$
-| $$  | $$| $$  | $$| $$$/ \  $$$| $$\  $$$
-| $$$$$$$/|  $$$$$$/| $$/   \  $$| $$ \  $$
-|_______/  \______/ |__/     \__/|__/  \__/
-##########################################################
---]]
-local _hook_DropDownButton_SetPoint = function(self, _, _, _, _, _, breaker)
-	if not breaker then
-		self:Point("RIGHT", self.AnchorParent, "RIGHT", -10, 3, true)
-	end
-end
-
-function STYLE:ApplyDropdownStyle(this, width)
-	if(not this or (this and this.StyleHooked)) then return end
-
-	local ddName = this:GetName();
-	local ddText = _G[("%sText"):format(ddName)]
-	local ddButton = _G[("%sButton"):format(ddName)]
-
-	if not width then width = 155 end
-
-	this:RemoveTextures()
-	this:Width(width)
-
-	if(ddButton) then
-		if(ddText) then
-			ddText:SetPoint("RIGHT", ddButton, "LEFT", 2, 0)
-		end
-
-		ddButton:ClearAllPoints()
-		ddButton:Point("RIGHT", this, "RIGHT", -10, 3)
-		ddButton.AnchorParent = this
-
-		NewHook(ddButton, "SetPoint", _hook_DropDownButton_SetPoint)
-
-		STYLE:ApplyPaginationStyle(ddButton, true)
-
-		local currentLevel = this:GetFrameLevel()
-		if(currentLevel == 0) then
-			currentLevel = 1
-		end
-
-		local bg = CreateFrame("Frame", nil, this)
-		bg:Point("TOPLEFT", this, "TOPLEFT", 18, -2)
-		bg:Point("BOTTOMRIGHT", ddButton, "BOTTOMRIGHT", 2, -2)
-		bg:SetBasicPanel()
-		bg:SetBackdropBorderColor(0.2,0.2,0.2)
-		this.Panel = bg
-	end
-
-	this.StyleHooked = true
-end
---[[
-##########################################################
- /$$$$$$$$/$$$$$$   /$$$$$$  /$$    /$$$$$$$$/$$$$$$ /$$$$$$$
-|__  $$__/$$__  $$ /$$__  $$| $$   |__  $$__/_  $$_/| $$__  $$
-   | $$ | $$  \ $$| $$  \ $$| $$      | $$    | $$  | $$  \ $$
-   | $$ | $$  | $$| $$  | $$| $$      | $$    | $$  | $$$$$$$/
-   | $$ | $$  | $$| $$  | $$| $$      | $$    | $$  | $$____/
-   | $$ | $$  | $$| $$  | $$| $$      | $$    | $$  | $$
-   | $$ |  $$$$$$/|  $$$$$$/| $$$$$$$$| $$   /$$$$$$| $$
-   |__/  \______/  \______/ |________/|__/  |______/|__/
-##########################################################
---]]
-local Tooltip_OnShow = function(self)
-	self:SetBackdrop({
-		bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]],
-		edgeFile = [[Interface\BUTTONS\WHITE8X8]],
-		tile = false,
-		edgeSize=1
-	})
-	self:SetBackdropColor(0,0,0,0.8)
-	self:SetBackdropBorderColor(0,0,0)
-end
-
-function STYLE:ApplyTooltipStyle(frame)
-	if(not frame or (frame and frame.StyleHooked)) then return end
-	frame:HookScript('OnShow', Tooltip_OnShow)
-	frame.StyleHooked = true
-end
---[[
-##########################################################
-  /$$$$$$  /$$       /$$$$$$$$ /$$$$$$$  /$$$$$$$$
- /$$__  $$| $$      | $$_____/| $$__  $$|__  $$__/
-| $$  \ $$| $$      | $$      | $$  \ $$   | $$
-| $$$$$$$$| $$      | $$$$$   | $$$$$$$/   | $$
-| $$__  $$| $$      | $$__/   | $$__  $$   | $$
-| $$  | $$| $$      | $$      | $$  \ $$   | $$
-| $$  | $$| $$$$$$$$| $$$$$$$$| $$  | $$   | $$
-|__/  |__/|________/|________/|__/  |__/   |__/
-##########################################################
---]]
-function STYLE:ApplyAlertStyle(frame)
-	if(not frame or (frame and frame.StyleHooked)) then return end
-
-    local alertpanel = CreateFrame("Frame", nil, frame)
-    alertpanel:SetAllPoints(frame)
-    alertpanel:SetFrameLevel(frame:GetFrameLevel() - 1)
-    alertpanel:SetBackdrop({
-        bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BG]]
-    })
-    alertpanel:SetBackdropColor(0.8, 0.2, 0.2)
-
-    --[[ LEFT ]]--
-    local left = alertpanel:CreateTexture(nil, "BORDER")
-    left:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-LEFT]])
-    left:Point("TOPRIGHT", alertpanel,"TOPLEFT", 0, 0)
-    left:Point("BOTTOMRIGHT", alertpanel, "BOTTOMLEFT", 0, 0)
-    left:Width(frame:GetHeight())
-
-    --[[ RIGHT ]]--
-    local right = alertpanel:CreateTexture(nil, "BORDER")
-    right:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-RIGHT]])
-    right:SetVertexColor(0.8, 0.2, 0.2)
-    right:Point("TOPLEFT", alertpanel,"TOPRIGHT", -1, 0)
-    right:Point("BOTTOMLEFT", alertpanel, "BOTTOMRIGHT", -1, 0)
-    right:Width(frame:GetHeight() * 2)
-
-    --[[ TOP ]]--
-    local top = alertpanel:CreateTexture(nil, "BORDER")
-    top:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-TOP]])
-    top:Point("BOTTOMLEFT", alertpanel,"TOPLEFT", 0, 0)
-    top:Point("BOTTOMRIGHT", alertpanel, "TOPRIGHT", 0, 0)
-    top:Height(frame:GetHeight() * 0.5)
-
-    --[[ BOTTOM ]]--
-    local bottom = alertpanel:CreateTexture(nil, "BORDER")
-    bottom:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BOTTOM]])
-    bottom:Point("TOPLEFT", alertpanel,"BOTTOMLEFT", 0, 0)
-    bottom:Point("TOPRIGHT", alertpanel, "BOTTOMRIGHT", 0, 0)
-    bottom:Width(frame:GetHeight() * 0.5)
-
-    frame.StyleHooked = true
-end
---[[
-##########################################################
- /$$      /$$ /$$$$$$  /$$$$$$   /$$$$$$
-| $$$    /$$$|_  $$_/ /$$__  $$ /$$__  $$
-| $$$$  /$$$$  | $$  | $$  \__/| $$  \__/
-| $$ $$/$$ $$  | $$  |  $$$$$$ | $$
-| $$  $$$| $$  | $$   \____  $$| $$
-| $$\  $ | $$  | $$   /$$  \ $$| $$    $$
-| $$ \/  | $$ /$$$$$$|  $$$$$$/|  $$$$$$/
-|__/     |__/|______/ \______/  \______/
-##########################################################
---]]
-function STYLE:ApplyEditBoxStyle(this, width, height)
-	if not this then return end
-	this:RemoveTextures(true)
-    this:SetEditboxTemplate()
-    if width then this:Width(width) end
-	if height then this:Height(height) end
-end
-
-function STYLE:ApplyTextureStyle(this)
-	if not this then return end
-	this:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-	local parent = this:GetParent()
-	if(parent) then
-		this:FillInner(parent, 1, 1)
-	end
-end
-
-function STYLE:ApplyRotateStyle(this)
-	-- Do stuff
-end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/_load.xml b/Interface/AddOns/SVUI_StyleOMatic/components/_load.xml
new file mode 100644
index 0000000..47dc976
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/_load.xml
@@ -0,0 +1,5 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file="style_methods.lua"/>
+	<Include file='blizzard\_load.xml'/>
+	<Include file='addons\_load.xml'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/ACP.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/ACP.lua
new file mode 100644
index 0000000..63c6fc2
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/ACP.lua
@@ -0,0 +1,105 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ACP
+##########################################################
+]]--
+local function cbResize(self,elapsed)
+	self.timeLapse = self.timeLapse + elapsed
+	if(self.timeLapse < 2) then
+		return
+	else
+		self.timeLapse = 0
+	end
+	for i=1,20,1 do
+		local d=_G["ACP_AddonListEntry"..i.."Enabled"]
+		local e=_G["ACP_AddonListEntry"..i.."Collapse"]
+		local f=_G["ACP_AddonListEntry"..i.."Security"]
+		local g=""
+		if g=="" then
+			d:SetPoint("LEFT",5,0)
+			if e:IsShown()then
+				d:SetWidth(26)
+				d:SetHeight(26)
+			else
+				d:SetPoint("LEFT",15,0)
+				d:SetWidth(20)
+				d:SetHeight(20)
+			end
+		end
+		if f:IsShown()then
+			d:SetPoint("LEFT",5,0)
+			d:SetWidth(26)
+			d:SetHeight(26)
+		end
+	end
+end
+
+local function StyleACP()
+	assert(ACP_AddonList, "AddOn Not Loaded")
+
+	STYLE:ApplyFrameStyle(ACP_AddonList)
+	STYLE:ApplyFrameStyle(ACP_AddonList_ScrollFrame)
+	local h={"ACP_AddonListSetButton","ACP_AddonListDisableAll","ACP_AddonListEnableAll","ACP_AddonList_ReloadUI","ACP_AddonListBottomClose"}
+	for i,j in pairs(h)do _G[j]:SetButtonTemplate()end
+	for c=1,20 do _G["ACP_AddonListEntry"..c.."LoadNow"]:SetButtonTemplate()end
+	STYLE:ApplyCloseButtonStyle(ACP_AddonListCloseButton)
+	for c=1,20,1 do
+		local k=_G["ACP_AddonList"]
+		k.timeLapse = 0
+		k:SetScript("OnUpdate",cbResize)
+	end
+	for c=1,20 do _G["ACP_AddonListEntry"..c.."Enabled"]:SetCheckboxTemplate(true)end
+	ACP_AddonList_NoRecurse:SetCheckboxTemplate(true)
+	STYLE:ApplyScrollFrameStyle(ACP_AddonList_ScrollFrameScrollBar)
+	STYLE:ApplyDropdownStyle(ACP_AddonListSortDropDown)
+	ACP_AddonListSortDropDown:Width(130)
+	ACP_AddonList_ScrollFrame:SetWidth(590)
+	ACP_AddonList_ScrollFrame:SetHeight(412)
+	ACP_AddonList:SetHeight(502)
+	ACP_AddonListEntry1:Point("TOPLEFT",ACP_AddonList,"TOPLEFT",47,-62)
+	ACP_AddonList_ScrollFrame:Point("TOPLEFT",ACP_AddonList,"TOPLEFT",20,-53)
+	ACP_AddonListCloseButton:Point("TOPRIGHT",ACP_AddonList,"TOPRIGHT",4,5)
+	ACP_AddonListSetButton:Point("BOTTOMLEFT",ACP_AddonList,"BOTTOMLEFT",20,8)
+	ACP_AddonListSetButton:SetHeight(25)
+	ACP_AddonListDisableAll:Point("BOTTOMLEFT",ACP_AddonList,"BOTTOMLEFT",90,8)
+	ACP_AddonListDisableAll:SetHeight(25)
+	ACP_AddonListEnableAll:Point("BOTTOMLEFT",ACP_AddonList,"BOTTOMLEFT",175,8)
+	ACP_AddonListEnableAll:SetHeight(25)
+	ACP_AddonList_ReloadUI:Point("BOTTOMRIGHT",ACP_AddonList,"BOTTOMRIGHT",-160,8)
+	ACP_AddonListBottomClose:Point("BOTTOMRIGHT",ACP_AddonList,"BOTTOMRIGHT",-50,8)
+	ACP_AddonListBottomClose:SetHeight(25)ACP_AddonList:SetParent(UIParent)
+end
+
+STYLE:SaveAddonStyle("ACP", StyleACP)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Ace3.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Ace3.lua
new file mode 100644
index 0000000..68fec6b
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Ace3.lua
@@ -0,0 +1,273 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local externaltest = false;
+
+local ProxyLSMType = {
+	["LSM30_Font"] = true,
+	["LSM30_Sound"] = true,
+	["LSM30_Border"] = true,
+	["LSM30_Background"] = true,
+	["LSM30_Statusbar"] = true
+}
+
+local ProxyType = {
+	["InlineGroup"] = true,
+	["TreeGroup"] = true,
+	["TabGroup"] = true,
+	["SimpleGroup"] = true,
+	["DropdownGroup"] = true
+}
+
+local function Widget_OnEnter(b)
+	b:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+
+local function Widget_OnLeave(b)
+	b:SetBackdropBorderColor(0,0,0,1)
+end
+
+local function Widget_ScrollStyle(frame, arg)
+	return STYLE:ApplyScrollFrameStyle(frame)
+end
+
+local function Widget_ButtonStyle(frame, strip, bypass)
+	if frame.Left then frame.Left:SetAlpha(0) end
+	if frame.Middle then frame.Middle:SetAlpha(0) end
+	if frame.Right then frame.Right:SetAlpha(0) end
+	if frame.SetNormalTexture then frame:SetNormalTexture("") end
+	if frame.SetHighlightTexture then frame:SetHighlightTexture(0,0,0,0) end
+	if frame.SetPushedTexture then frame:SetPushedTexture(0,0,0,0) end
+	if frame.SetDisabledTexture then frame:SetDisabledTexture("") end
+	if strip then frame:RemoveTextures() end
+	if not bypass then
+		frame:SetButtonTemplate()
+	end
+end
+
+local function Widget_PaginationStyle(...)
+	STYLE:ApplyPaginationStyle(...)
+end
+
+local NOOP = SV.fubar
+
+local WidgetButton_OnClick = function(self)
+	local obj = self.obj;
+	if(obj and obj.pullout and obj.pullout.frame and (not obj.pullout.frame.Panel)) then
+		obj.pullout.frame:SetFixedPanelTemplate("Default")
+	end
+end
+
+local WidgetDropButton_OnClick = function(self)
+	local obj = self.obj;
+	local widgetFrame = obj.dropdown
+	if(widgetFrame and not widgetFrame.Panel) then
+		widgetFrame:SetBasicPanel()
+		widgetFrame.Panel:SetPoint("TOPLEFT", widgetFrame, "TOPLEFT", 20, -2)
+		widgetFrame.Panel:SetPoint("BOTTOMRIGHT", widgetFrame, "BOTTOMRIGHT", -20, 2)
+	end
+end
+--[[
+##########################################################
+AceGUI STYLE
+##########################################################
+]]--
+local function StyleAceGUI(event, addon)
+	assert((LibStub("AceGUI-3.0")), "Addon Not Loaded")
+
+	local AceGUI = LibStub("AceGUI-3.0")
+
+	local regWidget = AceGUI.RegisterAsWidget;
+	local regContainer = AceGUI.RegisterAsContainer;
+
+	AceGUI.RegisterAsWidget = function(self, widget)
+
+		local widgetType = widget.type;
+		-- print("RegisterAsWidget: " .. widgetType);
+		if(widgetType == "MultiLineEditBox") then
+			local widgetFrame = widget.frame;
+			widgetFrame:SetFixedPanelTemplate("Default")
+			if not widget.scrollBG.Panel then
+				widget.scrollBG:SetBasicPanel()
+			end
+			Widget_ButtonStyle(widget.button)
+			STYLE:ApplyScrollFrameStyle(widget.scrollBar)
+			widget.scrollBar:SetPoint("RIGHT", widgetFrame, "RIGHT", -4)
+			widget.scrollBG:SetPoint("TOPRIGHT", widget.scrollBar, "TOPLEFT", -2, 19)
+			widget.scrollBG:SetPoint("BOTTOMLEFT", widget.button, "TOPLEFT")
+			widget.scrollFrame:SetPoint("BOTTOMRIGHT", widget.scrollBG, "BOTTOMRIGHT", -4, 8)
+
+		elseif(widgetType == "CheckBox") then
+			widget.checkbg:Die()
+			widget.highlight:Die()
+			if not widget.styledCheckBG then
+				widget.styledCheckBG = CreateFrame("Frame", nil, widget.frame)
+				widget.styledCheckBG:FillInner(widget.check)
+				widget.styledCheckBG:SetFixedPanelTemplate("Inset")
+			end
+			widget.check:SetParent(widget.styledCheckBG)
+
+		elseif(widgetType == "Dropdown") then
+			local widgetDropdown = widget.dropdown;
+			local widgetButton = widget.button;
+
+			widgetDropdown:RemoveTextures()
+			widgetButton:ClearAllPoints()
+			widgetButton:Point("RIGHT", widgetDropdown, "RIGHT", -20, 0)
+			widgetButton:SetFrameLevel(widgetButton:GetFrameLevel() + 1)
+			Widget_PaginationStyle(widgetButton, true)
+
+			if(not widgetDropdown.Panel) then
+				widgetDropdown:SetBasicPanel()
+				widgetDropdown.Panel:Point("TOPLEFT", widgetDropdown, "TOPLEFT", 20, -2)
+				widgetDropdown.Panel:Point("BOTTOMRIGHT", widgetDropdown, "BOTTOMRIGHT", -20, 2)
+			end
+
+			widgetButton:SetParent(widgetDropdown.Panel)
+			widget.text:SetParent(widgetDropdown.Panel)
+			widgetButton:HookScript("OnClick", WidgetButton_OnClick)
+
+		elseif(widgetType == "EditBox") then
+			local widgetEditbox = widget.editbox;
+			widgetEditbox:Height(15)
+			widgetEditbox:SetEditboxTemplate(2, -2, false)
+
+		elseif(widgetType == "Button") then
+			local widgetFrame = widget.frame;
+			Widget_ButtonStyle(widgetFrame, true)
+			widget.text:SetParent(widgetFrame.Panel)
+
+		elseif(widgetType == "Slider") then
+			local widgetSlider = widget.slider;
+			local widgetEditbox = widget.editbox;
+
+			widgetSlider:RemoveTextures()
+			widgetSlider:SetFixedPanelTemplate("Bar")
+
+			widgetSlider:Height(20)
+			widgetSlider:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob")
+			widgetSlider:GetThumbTexture():SetVertexColor(0.8, 0.8, 0.8)
+
+			widgetEditbox:Height(15)
+			widgetEditbox:SetPoint("TOP", widgetSlider, "BOTTOM", 0, -1)
+
+			widget.lowtext:SetPoint("TOPLEFT", widgetSlider, "BOTTOMLEFT", 2, -2)
+			widget.hightext:SetPoint("TOPRIGHT", widgetSlider, "BOTTOMRIGHT", -2, -2)
+
+		elseif(ProxyLSMType[widgetType]) then
+			local widgetFrame = widget.frame;
+			local dropButton = widgetFrame.dropButton;
+
+			widgetFrame:RemoveTextures()
+			Widget_PaginationStyle(dropButton, true)
+			widgetFrame.text:ClearAllPoints()
+			widgetFrame.text:Point("RIGHT", dropButton, "LEFT", -2, 0)
+			dropButton:ClearAllPoints()
+			dropButton:Point("RIGHT", widgetFrame, "RIGHT", -10, -6)
+			if(not widgetFrame.Panel) then
+				widgetFrame:SetBasicPanel()
+				if(widgetType == "LSM30_Font") then
+					widgetFrame.Panel:Point("TOPLEFT", 20, -17)
+				elseif(widgetType == "LSM30_Sound") then
+					widgetFrame.Panel:Point("TOPLEFT", 20, -17)
+					widget.soundbutton:SetParent(widgetFrame.Panel)
+					widget.soundbutton:ClearAllPoints()
+					widget.soundbutton:Point("LEFT", widgetFrame.Panel, "LEFT", 2, 0)
+				elseif(widgetType == "LSM30_Statusbar") then
+					widgetFrame.Panel:Point("TOPLEFT", 20, -17)
+					widget.bar:SetParent(widgetFrame.Panel)
+					widget.bar:FillInner()
+				elseif(widgetType == "LSM30_Border" or widgetType == "LSM30_Background") then
+					widgetFrame.Panel:Point("TOPLEFT", 42, -16)
+				end
+				widgetFrame.Panel:Point("BOTTOMRIGHT", dropButton, "BOTTOMRIGHT", 2, -2)
+			end
+			dropButton:SetParent(widgetFrame.Panel)
+			widgetFrame.text:SetParent(widgetFrame.Panel)
+			dropButton:HookScript("OnClick", WidgetDropButton_OnClick)
+		end
+		return regWidget(self, widget)
+	end
+
+	AceGUI.RegisterAsContainer = function(self, widget)
+		local widgetType = widget.type;
+		-- print("RegisterAsContainer: " .. widgetType);
+		local widgetParent = widget.content:GetParent()
+		if widgetType == "ScrollFrame" then
+			STYLE:ApplyScrollFrameStyle(widget.scrollBar)
+		elseif widgetType == "Frame" then
+			widgetParent:RemoveTextures()
+			for i = 1, widgetParent:GetNumChildren()do
+				local childFrame = select(i, widgetParent:GetChildren())
+				if childFrame:GetObjectType() == "Button" and childFrame:GetText() then
+					Widget_ButtonStyle(childFrame)
+				else
+					childFrame:RemoveTextures()
+				end
+			end
+			widgetParent:SetPanelTemplate("Halftone")
+		elseif(ProxyType[widgetType]) then
+
+			if widget.treeframe then
+				widget.treeframe:SetFixedPanelTemplate("Transparent")
+				widgetParent:SetPoint("TOPLEFT", widget.treeframe, "TOPRIGHT", 1, 0)
+				local oldFunc = widget.CreateButton;
+				widget.CreateButton = function(self)
+					local newButton = oldFunc(self)
+					newButton.toggle:RemoveTextures()
+					newButton.toggle.SetNormalTexture = NOOP;
+					newButton.toggle.SetPushedTexture = NOOP;
+					newButton.toggle:SetButtonTemplate()
+					newButton.toggleText = newButton.toggle:CreateFontString(nil, "OVERLAY")
+					newButton.toggleText:SetFont([[Interface\AddOns\SVUI\assets\fonts\Roboto.ttf]], 19)
+					newButton.toggleText:SetPoint("CENTER")
+					newButton.toggleText:SetText("*")
+					return newButton
+				end
+			else
+				widgetParent:SetFixedPanelTemplate("Default")
+			end
+
+			if(widgetType == "TabGroup") then
+				local oldFunc = widget.CreateTab;
+				widget.CreateTab = function(self, arg)
+					local newTab = oldFunc(self, arg)
+					newTab:RemoveTextures()
+					return newTab
+				end
+			end
+
+			if widget.scrollbar then
+				STYLE:ApplyScrollFrameStyle(widget.scrollBar)
+			end
+		end
+		return regContainer(self, widget)
+	end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveAddonStyle("AceGUI", StyleAceGUI, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/AdiBags.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/AdiBags.lua
new file mode 100644
index 0000000..b5c95cd
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/AdiBags.lua
@@ -0,0 +1,74 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ADIBAGS
+##########################################################
+]]--
+local function StyleAdiBags(event)
+	local AdiBags = LibStub('AceAddon-3.0'):GetAddon('AdiBags')
+	assert(AdiBags, "AddOn Not Loaded")
+	--hooksecurefunc(AdiBags, 'HookBagFrameCreation', function(self) print(self) end)
+
+	local function SkinFrame(frame)
+		local region = frame.HeaderRightRegion
+		frame:SetBasicPanel()
+		_G[frame:GetName()..'Bags']:SetPanelTemplate("Default")
+		for i = 1, 3 do
+			region.widgets[i].widget:SetButtonTemplate()
+		end
+	end
+
+	if event == 'PLAYER_ENTERING_WORLD' then
+		SV.Timers:ExecuteTimer(function()
+			if not AdiBagsContainer1 then ToggleBackpack() ToggleBackpack() end
+			if AdiBagsContainer1 then
+				SkinFrame(AdiBagsContainer1)
+				AdiBagsContainer1SearchBox:SetEditboxTemplate()
+				AdiBagsContainer1SearchBox:Point('TOPRIGHT', AdiBagsSimpleLayeredRegion2, 'TOPRIGHT', -75, -1)
+			end
+		end, 1)
+	elseif event == 'BANKFRAME_OPENED' then
+		SV.Timers:ExecuteTimer(function()
+			if AdiBagsContainer2 then
+				SkinFrame(AdiBagsContainer2)
+				STYLE:SafeEventRemoval("AdiBags", event)
+			end
+		end, 1)
+	end
+end
+
+STYLE:SaveAddonStyle("AdiBags", StyleAdiBags, nil, nil, 'BANKFRAME_OPENED')
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Altoholic.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Altoholic.lua
new file mode 100644
index 0000000..a6ca1d9
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Altoholic.lua
@@ -0,0 +1,283 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ALTOHOLIC
+##########################################################
+]]--
+local function ColorAltoBorder(self)
+	if self.border then
+		local Backdrop = self.backdrop or self.Backdrop
+		if not Backdrop then return end
+		local r, g, b = self.border:GetVertexColor()
+		Backdrop:SetBackdropBorderColor(r, g, b, 1)
+	end
+end
+
+local function StyleAltoholic(event, addon)
+	assert(AltoholicFrame, "AddOn Not Loaded")
+
+	if event == "PLAYER_ENTERING_WORLD" then
+		STYLE:ApplyTooltipStyle(AltoTooltip)
+
+		AltoholicFramePortrait:Die()
+
+		STYLE:ApplyFrameStyle(AltoholicFrame, "Action", false, true)
+		STYLE:ApplyFrameStyle(AltoMsgBox)
+		STYLE:ApplyButtonStyle(AltoMsgBoxYesButton)
+		STYLE:ApplyButtonStyle(AltoMsgBoxNoButton)
+		STYLE:ApplyCloseButtonStyle(AltoholicFrameCloseButton)
+		STYLE:ApplyEditBoxStyle(AltoholicFrame_SearchEditBox, 175, 15)
+		STYLE:ApplyButtonStyle(AltoholicFrame_ResetButton)
+		STYLE:ApplyButtonStyle(AltoholicFrame_SearchButton)
+
+		AltoholicFrameTab1:Point("TOPLEFT", AltoholicFrame, "BOTTOMLEFT", -5, 2)
+		AltoholicFrame_ResetButton:Point("TOPLEFT", AltoholicFrame, "TOPLEFT", 25, -77)
+		AltoholicFrame_SearchEditBox:Point("TOPLEFT", AltoholicFrame, "TOPLEFT", 37, -56)
+		AltoholicFrame_ResetButton:Size(85, 24)
+		AltoholicFrame_SearchButton:Size(85, 24)
+	end
+
+	if addon == "Altoholic_Summary" then
+		STYLE:ApplyFrameStyle(AltoholicFrameSummary)
+		STYLE:ApplyFrameStyle(AltoholicFrameBagUsage)
+		STYLE:ApplyFrameStyle(AltoholicFrameSkills)
+		STYLE:ApplyFrameStyle(AltoholicFrameActivity)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameSummaryScrollFrameScrollBar)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameBagUsageScrollFrameScrollBar)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameSkillsScrollFrameScrollBar)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameActivityScrollFrameScrollBar)
+		STYLE:ApplyDropdownStyle(AltoholicTabSummary_SelectLocation, 200)
+
+		if(AltoholicFrameSummaryScrollFrame) then
+			AltoholicFrameSummaryScrollFrame:RemoveTextures(true)
+		end
+
+		if(AltoholicFrameBagUsageScrollFrame) then
+			AltoholicFrameBagUsageScrollFrame:RemoveTextures(true)
+		end
+
+		if(AltoholicFrameSkillsScrollFrame) then
+			AltoholicFrameSkillsScrollFrame:RemoveTextures(true)
+		end
+
+		if(AltoholicFrameActivityScrollFrame) then
+			AltoholicFrameActivityScrollFrame:RemoveTextures(true)
+		end
+
+		STYLE:ApplyButtonStyle(AltoholicTabSummary_RequestSharing)
+		STYLE:ApplyTextureStyle(AltoholicTabSummary_RequestSharingIconTexture)
+		STYLE:ApplyButtonStyle(AltoholicTabSummary_Options)
+		STYLE:ApplyTextureStyle(AltoholicTabSummary_OptionsIconTexture)
+		STYLE:ApplyButtonStyle(AltoholicTabSummary_OptionsDataStore)
+		STYLE:ApplyTextureStyle(AltoholicTabSummary_OptionsDataStoreIconTexture)
+
+		for i = 1, 5 do
+			STYLE:ApplyButtonStyle(_G["AltoholicTabSummaryMenuItem"..i], true)
+		end
+		for i = 1, 8 do
+			STYLE:ApplyButtonStyle(_G["AltoholicTabSummary_Sort"..i], true)
+		end
+		for i = 1, 7 do
+			STYLE:ApplyTabStyle(_G["AltoholicFrameTab"..i], true)
+		end
+	end
+
+	if IsAddOnLoaded("Altoholic_Characters") or addon == "Altoholic_Characters" then
+		STYLE:ApplyFrameStyle(AltoholicFrameContainers)
+		STYLE:ApplyFrameStyle(AltoholicFrameRecipes)
+		STYLE:ApplyFrameStyle(AltoholicFrameQuests)
+		STYLE:ApplyFrameStyle(AltoholicFrameGlyphs)
+		STYLE:ApplyFrameStyle(AltoholicFrameMail)
+		STYLE:ApplyFrameStyle(AltoholicFrameSpellbook)
+		STYLE:ApplyFrameStyle(AltoholicFramePets)
+		STYLE:ApplyFrameStyle(AltoholicFrameAuctions)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameContainersScrollFrameScrollBar)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameQuestsScrollFrameScrollBar)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameRecipesScrollFrameScrollBar)
+		STYLE:ApplyDropdownStyle(AltoholicFrameTalents_SelectMember)
+		STYLE:ApplyDropdownStyle(AltoholicTabCharacters_SelectRealm)
+		STYLE:ApplyPaginationStyle(AltoholicFrameSpellbookPrevPage)
+		STYLE:ApplyPaginationStyle(AltoholicFrameSpellbookNextPage)
+		STYLE:ApplyPaginationStyle(AltoholicFramePetsNormalPrevPage)
+		STYLE:ApplyPaginationStyle(AltoholicFramePetsNormalNextPage)
+		STYLE:ApplyRotateStyle(AltoholicFramePetsNormal_ModelFrameRotateLeftButton)
+		STYLE:ApplyRotateStyle(AltoholicFramePetsNormal_ModelFrameRotateRightButton)
+		STYLE:ApplyButtonStyle(AltoholicTabCharacters_Sort1)
+		STYLE:ApplyButtonStyle(AltoholicTabCharacters_Sort2)
+		STYLE:ApplyButtonStyle(AltoholicTabCharacters_Sort3)
+		AltoholicFrameContainersScrollFrame:RemoveTextures(true)
+		AltoholicFrameQuestsScrollFrame:RemoveTextures(true)
+		AltoholicFrameRecipesScrollFrame:RemoveTextures(true)
+
+		local Buttons = {
+			'AltoholicTabCharacters_Characters',
+			'AltoholicTabCharacters_CharactersIcon',
+			'AltoholicTabCharacters_BagsIcon',
+			'AltoholicTabCharacters_QuestsIcon',
+			'AltoholicTabCharacters_TalentsIcon',
+			'AltoholicTabCharacters_AuctionIcon',
+			'AltoholicTabCharacters_MailIcon',
+			'AltoholicTabCharacters_SpellbookIcon',
+			'AltoholicTabCharacters_ProfessionsIcon',
+		}
+
+		for _, object in pairs(Buttons) do
+			STYLE:ApplyTextureStyle(_G[object..'IconTexture'])
+			STYLE:ApplyTextureStyle(_G[object])
+		end
+
+		for i = 1, 7 do
+			for j = 1, 14 do
+				STYLE:ApplyItemButtonStyle(_G["AltoholicFrameContainersEntry"..i.."Item"..j])
+				_G["AltoholicFrameContainersEntry"..i.."Item"..j]:HookScript('OnShow', ColorAltoBorder)
+			end
+		end
+	end
+
+	if IsAddOnLoaded("Altoholic_Achievements") or addon == "Altoholic_Achievements" then
+		STYLE:ApplyUnderlayStyle(AltoholicFrameAchievements)
+		AltoholicFrameAchievementsScrollFrame:RemoveTextures(true)
+		AltoholicAchievementsMenuScrollFrame:RemoveTextures(true)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameAchievementsScrollFrameScrollBar)
+		STYLE:ApplyScrollBarStyle(AltoholicAchievementsMenuScrollFrameScrollBar)
+		STYLE:ApplyDropdownStyle(AltoholicTabAchievements_SelectRealm)
+		AltoholicTabAchievements_SelectRealm:Point("TOPLEFT", AltoholicFrame, "TOPLEFT", 205, -57)
+
+		for i = 1, 15 do
+			STYLE:ApplyButtonStyle(_G["AltoholicTabAchievementsMenuItem"..i], true)
+		end
+
+		for i = 1, 8 do
+			for j = 1, 10 do
+				STYLE:ApplyUnderlayStyle(_G["AltoholicFrameAchievementsEntry"..i.."Item"..j])
+				local Backdrop = _G["AltoholicFrameAchievementsEntry"..i.."Item"..j].backdrop or _G["AltoholicFrameAchievementsEntry"..i.."Item"..j].Backdrop
+				STYLE:ApplyTextureStyle(_G["AltoholicFrameAchievementsEntry"..i.."Item"..j..'_Background'])
+				_G["AltoholicFrameAchievementsEntry"..i.."Item"..j..'_Background']:SetInside(Backdrop)
+			end
+		end
+	end
+
+	if IsAddOnLoaded("Altoholic_Agenda") or addon == "Altoholic_Agenda" then
+		STYLE:ApplyFrameStyle(AltoholicFrameCalendarScrollFrame)
+		STYLE:ApplyFrameStyle(AltoholicTabAgendaMenuItem1)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameCalendarScrollFrameScrollBar)
+		STYLE:ApplyPaginationStyle(AltoholicFrameCalendar_NextMonth)
+		STYLE:ApplyPaginationStyle(AltoholicFrameCalendar_PrevMonth)
+		STYLE:ApplyButtonStyle(AltoholicTabAgendaMenuItem1, true)
+
+		for i = 1, 14 do
+			STYLE:ApplyFrameStyle(_G["AltoholicFrameCalendarEntry"..i])
+		end
+	end
+
+	if IsAddOnLoaded("Altoholic_Grids") or addon == "Altoholic_Grids" then
+		AltoholicFrameGridsScrollFrame:RemoveTextures(true)
+		STYLE:ApplyUnderlayStyle(AltoholicFrameGrids)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameGridsScrollFrameScrollBar)
+		STYLE:ApplyDropdownStyle(AltoholicTabGrids_SelectRealm)
+		STYLE:ApplyDropdownStyle(AltoholicTabGrids_SelectView)
+
+		for i = 1, 8 do
+			for j = 1, 10 do
+				STYLE:ApplyUnderlayStyle(_G["AltoholicFrameGridsEntry"..i.."Item"..j], nil, nil, nil, true)
+				_G["AltoholicFrameGridsEntry"..i.."Item"..j]:HookScript('OnShow', ColorAltoBorder)
+			end
+		end
+
+		AltoholicFrameGrids:HookScript('OnUpdate', function()
+			for i = 1, 10 do
+				for j = 1, 10 do
+					if _G["AltoholicFrameGridsEntry"..i.."Item"..j.."_Background"] then
+						_G["AltoholicFrameGridsEntry"..i.."Item"..j.."_Background"]:SetTexCoord(.08, .92, .08, .82)
+					end
+				end
+			end
+		end)
+
+	end
+
+	if IsAddOnLoaded("Altoholic_Guild") or addon == "Altoholic_Guild" then
+		STYLE:ApplyFrameStyle(AltoholicFrameGuildMembers)
+		STYLE:ApplyFrameStyle(AltoholicFrameGuildBank)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameGuildMembersScrollFrameScrollBar)
+		AltoholicFrameGuildMembersScrollFrame:RemoveTextures(true)
+
+		for i = 1, 2 do
+			STYLE:ApplyButtonStyle(_G["AltoholicTabGuildMenuItem"..i])
+		end
+
+		for i = 1, 7 do
+			for j = 1, 14 do
+				STYLE:ApplyItemButtonStyle(_G["AltoholicFrameGuildBankEntry"..i.."Item"..j])
+			end
+		end
+
+		for i = 1, 19 do
+			STYLE:ApplyItemButtonStyle(_G["AltoholicFrameGuildMembersItem"..i])
+		end
+
+		for i = 1, 5 do
+			STYLE:ApplyButtonStyle(_G["AltoholicTabGuild_Sort"..i])
+		end
+	end
+
+	if IsAddOnLoaded("Altoholic_Search") or addon == "Altoholic_Search" then
+		STYLE:ApplyUnderlayStyle(AltoholicFrameSearch, true)
+		AltoholicFrameSearchScrollFrame:RemoveTextures(true)
+		AltoholicSearchMenuScrollFrame:RemoveTextures(true)
+		STYLE:ApplyScrollBarStyle(AltoholicFrameSearchScrollFrameScrollBar)
+		STYLE:ApplyScrollBarStyle(AltoholicSearchMenuScrollFrameScrollBar)
+		STYLE:ApplyDropdownStyle(AltoholicTabSearch_SelectRarity)
+		STYLE:ApplyDropdownStyle(AltoholicTabSearch_SelectSlot)
+		STYLE:ApplyDropdownStyle(AltoholicTabSearch_SelectLocation)
+		AltoholicTabSearch_SelectRarity:Size(125, 32)
+		AltoholicTabSearch_SelectSlot:Size(125, 32)
+		AltoholicTabSearch_SelectLocation:Size(175, 32)
+		STYLE:ApplyEditBoxStyle(_G["AltoholicTabSearch_MinLevel"])
+		STYLE:ApplyEditBoxStyle(_G["AltoholicTabSearch_MaxLevel"])
+
+		for i = 1, 15 do
+			STYLE:ApplyButtonStyle(_G["AltoholicTabSearchMenuItem"..i])
+		end
+
+		for i = 1, 8 do
+			STYLE:ApplyButtonStyle(_G["AltoholicTabSearch_Sort"..i])
+		end
+	end
+end
+
+STYLE:SaveAddonStyle("Altoholic", StyleAltoholic, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/AtlasLoot.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/AtlasLoot.lua
new file mode 100644
index 0000000..9ae8e8c
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/AtlasLoot.lua
@@ -0,0 +1,225 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ATLASLOOT
+##########################################################
+]]--
+local timeLapse = 0;
+local nineisthere = {"AtlasLootCompareFrameSortButton_7","AtlasLootCompareFrameSortButton_8","AtlasLootCompareFrameSortButton_9"}
+local StripAllTextures = {"AtlasLootDefaultFrame","AtlasLootDefaultFrame_ScrollFrame","AtlasLootItemsFrame","AtlasLootPanel","AtlasLootCompareFrame","AtlasLootCompareFrame_ScrollFrameMainFilterScrollChildFrame","AtlasLootCompareFrame_ScrollFrameItemFrame","AtlasLootCompareFrame_ScrollFrameMainFilter","AtlasLootCompareFrameSortButton_Name","AtlasLootCompareFrameSortButton_Rarity","AtlasLootCompareFrameSortButton_1","AtlasLootCompareFrameSortButton_2","AtlasLootCompareFrameSortButton_3","AtlasLootCompareFrameSortButton_4","AtlasLootCompareFrameSortButton_5","AtlasLootCompareFrameSortButton_6"}
+
+local SetTemplateDefault = {"AtlasLootCompareFrameSortButton_Name","AtlasLootCompareFrameSortButton_Rarity","AtlasLootCompareFrameSortButton_1","AtlasLootCompareFrameSortButton_2","AtlasLootCompareFrameSortButton_3","AtlasLootCompareFrameSortButton_4","AtlasLootCompareFrameSortButton_5","AtlasLootCompareFrameSortButton_6"}
+
+local buttons = {"AtlasLoot_AtlasInfoFrame_ToggleALButton","AtlasLootPanelSearch_SearchButton","AtlasLootDefaultFrame_CompareFrame","AtlasLootPanelSearch_ClearButton","AtlasLootPanelSearch_LastResultButton","AtlasLoot10Man25ManSwitch","AtlasLootItemsFrame_BACK","AtlasLootCompareFrameSearch_ClearButton","AtlasLootCompareFrameSearch_SearchButton","AtlasLootCompareFrame_WishlistButton","AtlasLootCompareFrame_CloseButton2"}
+
+local function AL_OnShow(self, event, ...)
+	AtlasLootPanel:Point("TOP", AtlasLootDefaultFrame, "BOTTOM", 0, -1)
+	AtlasLootQuickLooksButton:Point("BOTTOM", AtlasLootItemsFrame, "BOTTOM", 53, 33)
+	AtlasLootPanelSearch_Box:ClearAllPoints()
+	AtlasLootPanelSearch_Box:Point("TOP", AtlasLoot_PanelButton_7, "BOTTOM", 80, -10)
+	AtlasLootPanelSearch_SearchButton:Point("LEFT", AtlasLootPanelSearch_Box, "RIGHT", 5, 0)
+	AtlasLootPanelSearch_SelectModuel:Point("LEFT", AtlasLootPanelSearch_SearchButton, "RIGHT", 5, 0)
+	AtlasLootPanelSearch_ClearButton:Point("LEFT", AtlasLootPanelSearch_SelectModuel, "RIGHT", 5, 0)
+	AtlasLootPanelSearch_LastResultButton:Point("LEFT", AtlasLootPanelSearch_ClearButton, "RIGHT", 5, 0)
+	AtlasLoot10Man25ManSwitch:Point("BOTTOM", AtlasLootItemsFrame, "BOTTOM", -130, 4)
+	if AtlasLoot_PanelButton_2 then AtlasLoot_PanelButton_2:Point("LEFT", AtlasLoot_PanelButton_1, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_3 then AtlasLoot_PanelButton_3:Point("LEFT", AtlasLoot_PanelButton_2, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_4 then AtlasLoot_PanelButton_4:Point("LEFT", AtlasLoot_PanelButton_3, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_5 then AtlasLoot_PanelButton_5:Point("LEFT", AtlasLoot_PanelButton_4, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_6 then AtlasLoot_PanelButton_6:Point("LEFT", AtlasLoot_PanelButton_5, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_8 then AtlasLoot_PanelButton_8:Point("LEFT", AtlasLoot_PanelButton_7, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_9 then AtlasLoot_PanelButton_9:Point("LEFT", AtlasLoot_PanelButton_8, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_10 then AtlasLoot_PanelButton_10:Point("LEFT", AtlasLoot_PanelButton_9, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_11 then AtlasLoot_PanelButton_11:Point("LEFT", AtlasLoot_PanelButton_10, "RIGHT", 1, 0) end
+	if AtlasLoot_PanelButton_12 then AtlasLoot_PanelButton_12:Point("LEFT", AtlasLoot_PanelButton_11, "RIGHT", 1, 0) end
+	AtlasLootCompareFrameSortButton_Rarity:Point("LEFT", AtlasLootCompareFrameSortButton_Name, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_Rarity:Width(80)
+	AtlasLootCompareFrameSortButton_Name:Width(80)
+	AtlasLootCompareFrameSortButton_1:Point("LEFT", AtlasLootCompareFrameSortButton_Rarity, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_2:Point("LEFT", AtlasLootCompareFrameSortButton_1, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_3:Point("LEFT", AtlasLootCompareFrameSortButton_2, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_4:Point("LEFT", AtlasLootCompareFrameSortButton_3, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_5:Point("LEFT", AtlasLootCompareFrameSortButton_4, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_6:Point("LEFT", AtlasLootCompareFrameSortButton_5, "RIGHT", 1, 0)
+	AtlasLootCompareFrame_CloseButton2:Point("BOTTOMRIGHT", AtlasLootCompareFrame, "BOTTOMRIGHT", -7, 10)
+	AtlasLootCompareFrame_WishlistButton:Point("RIGHT", AtlasLootCompareFrame_CloseButton2, "LEFT", -1, 0)
+	AtlasLootCompareFrameSearch_SearchButton:Point("LEFT", AtlasLootCompareFrameSearch_Box, "RIGHT", 5, 0)
+	AtlasLootCompareFrameSearch_SelectModuel:Point("LEFT", AtlasLootCompareFrameSearch_SearchButton, "RIGHT", 5, 0)
+	AtlasLootDefaultFrame_CloseButton:ClearAllPoints()
+	AtlasLootDefaultFrame_CloseButton:SetPoint("TOPRIGHT", AtlasLootDefaultFrame, "TOPRIGHT", -5 -2)
+	AtlasLootDefaultFrame:SetFrameLevel(0)
+	AtlasLootItemsFrame:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
+	for i = 1, 30 do if _G["AtlasLootDefaultFrame_ScrollLine"..i] then _G["AtlasLootDefaultFrame_ScrollLine"..i]:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)end end
+
+	if(AtlasLootDefaultFrame_PackageSelect) then
+		AtlasLootDefaultFrame_PackageSelect:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
+	end
+	AtlasLootDefaultFrame_InstanceSelect:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
+	AtlasLoot_AtlasInfoFrame_ToggleALButton:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
+	AtlasLootDefaultFrame_CompareFrame:SetFrameLevel(AtlasLootDefaultFrame:GetFrameLevel()+1)
+	AtlasLootPanelSearch_Box:SetHeight(16)
+	AtlasLootPanel:SetWidth(921)
+end
+
+local function Nine_IsThere(self, elapsed)
+	self.timeLapse = self.timeLapse + elapsed
+	if(self.timeLapse < 2) then
+		return
+	else
+		self.timeLapse = 0
+	end
+	for i = 1, 9 do local f = _G["AtlasLootCompareFrameSortButton_"..i]f:SetWidth(44.44)end
+	for _, object in pairs(nineisthere) do STYLE:ApplyFrameStyle(_G[object]) end
+	AtlasLootCompareFrameSortButton_7:Point("LEFT", AtlasLootCompareFrameSortButton_6, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_8:Point("LEFT", AtlasLootCompareFrameSortButton_7, "RIGHT", 1, 0)
+	AtlasLootCompareFrameSortButton_9:Point("LEFT", AtlasLootCompareFrameSortButton_8, "RIGHT", 1, 0)
+end
+
+local function Compare_OnShow(self, event, ...)
+	for i = 1, 6 do _G["AtlasLootCompareFrameSortButton_"..i]:SetWidth(40)end
+	local Nine = AtlasLootCompareFrameSortButton_9
+	if Nine ~= nil then
+		Nine.timeLapse = 0
+		Nine:SetScript("OnUpdate", Nine_IsThere)
+	end
+end
+
+local _hook_ALPanel = function(self,_,parent,_,_,_,breaker)
+	if not breaker then
+		self:ClearAllPoints()
+		self:SetPoint("TOP",parent,"BOTTOM",0,-1,true)
+	end
+end
+
+local _hook_OnUpdate = function(self, elapsed)
+	self.timeLapse = self.timeLapse + elapsed
+	if(self.timeLapse < 2) then
+		return
+	else
+		self.timeLapse = 0
+	end
+	self:SetWidth(AtlasLootDefaultFrame:GetWidth())
+end
+
+
+local function StyleAtlasLoot(event, addon)
+	assert(AtlasLootPanel, "AddOn Not Loaded")
+
+	for _, object in pairs(StripAllTextures) do _G[object]:RemoveTextures()end
+	for _, object in pairs(SetTemplateDefault) do STYLE:ApplyFrameStyle(_G[object], "Default")end
+	for _, button in pairs(buttons) do _G[button]:SetButtonTemplate()end
+
+	-- Manipulate the main frames
+	STYLE:ApplyFrameStyle(_G["AtlasLootDefaultFrame"], "Action");
+	STYLE:ApplyUnderlayStyle(_G["AtlasLootItemsFrame"], "Inset");
+	STYLE:ApplyFrameStyle(_G["AtlasLootPanel"], "Default");
+	hooksecurefunc(_G["AtlasLootPanel"], "SetPoint", _hook_ALPanel);
+
+	_G["AtlasLootPanel"]:SetPoint("TOP",_G["AtlasLootDefaultFrame"],"BOTTOM",0,-1);
+	-- Back to the rest
+	STYLE:ApplyFrameStyle(_G["AtlasLootCompareFrame"], "Transparent");
+	if AtlasLoot_PanelButton_1 then AtlasLoot_PanelButton_1:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_2 then AtlasLoot_PanelButton_2:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_3 then AtlasLoot_PanelButton_3:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_4 then AtlasLoot_PanelButton_4:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_5 then AtlasLoot_PanelButton_5:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_6 then AtlasLoot_PanelButton_6:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_7 then AtlasLoot_PanelButton_7:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_8 then AtlasLoot_PanelButton_8:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_9 then AtlasLoot_PanelButton_9:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_10 then AtlasLoot_PanelButton_10:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_11 then AtlasLoot_PanelButton_11:SetButtonTemplate() end
+	if AtlasLoot_PanelButton_12 then AtlasLoot_PanelButton_12:SetButtonTemplate() end
+
+	for i = 1, 15 do local f = _G["AtlasLootCompareFrameMainFilterButton"..i]f:RemoveTextures() end
+
+	STYLE:ApplyCloseButtonStyle(AtlasLootDefaultFrame_CloseButton)
+	STYLE:ApplyCloseButtonStyle(AtlasLootCompareFrame_CloseButton)
+	STYLE:ApplyCloseButtonStyle(AtlasLootCompareFrame_CloseButton_Wishlist)
+	STYLE:ApplyPaginationStyle(AtlasLootQuickLooksButton)
+	STYLE:ApplyPaginationStyle(AtlasLootItemsFrame_NEXT)
+	AtlasLootItemsFrame_NEXT:SetWidth(25)
+	AtlasLootItemsFrame_NEXT:SetHeight(25)
+	STYLE:ApplyPaginationStyle(AtlasLootItemsFrame_PREV)
+	AtlasLootItemsFrame_PREV:SetWidth(25)
+	AtlasLootItemsFrame_PREV:SetHeight(25)
+	STYLE:ApplyPaginationStyle(AtlasLootPanelSearch_SelectModuel)
+	STYLE:ApplyPaginationStyle(AtlasLootCompareFrameSearch_SelectModuel)
+
+	if(AtlasLootDefaultFrame_PackageSelect) then
+		STYLE:ApplyDropdownStyle(AtlasLootDefaultFrame_PackageSelect)
+		AtlasLootDefaultFrame_PackageSelect:SetWidth(240)
+		AtlasLootDefaultFrame_PackageSelect:SetPoint("TOPLEFT", AtlasLootDefaultFrame, "TOPLEFT", 50, -50)
+	end
+
+	STYLE:ApplyDropdownStyle(AtlasLootDefaultFrame_ModuleSelect,240)
+	STYLE:ApplyDropdownStyle(AtlasLootDefaultFrame_InstanceSelect,240)
+
+	STYLE:ApplyDropdownStyle(AtlasLootCompareFrameSearch_StatsListDropDown)
+	AtlasLootCompareFrameSearch_StatsListDropDown:SetWidth(240)
+	STYLE:ApplyDropdownStyle(AtlasLootCompareFrame_WishlistDropDown)
+	AtlasLootCompareFrame_WishlistDropDown:SetWidth(240)
+	AtlasLootPanelSearch_Box:SetEditboxTemplate()
+	AtlasLootCompareFrameSearch_Box:SetEditboxTemplate()
+
+	if AtlasLootFilterCheck then
+		AtlasLootFilterCheck:SetCheckboxTemplate(true)
+	end
+	if AtlasLootItemsFrame_Heroic then
+		AtlasLootItemsFrame_Heroic:SetCheckboxTemplate(true)
+	end
+	if AtlasLootCompareFrameSearch_FilterCheck then AtlasLootCompareFrameSearch_FilterCheck:SetCheckboxTemplate(true)
+	end
+	if AtlasLootItemsFrame_RaidFinder then
+		AtlasLootItemsFrame_RaidFinder:SetCheckboxTemplate(true)
+	end
+	if AtlasLootItemsFrame_Thunderforged then
+		AtlasLootItemsFrame_Thunderforged:SetCheckboxTemplate(true)
+	end
+
+	AtlasLootPanel.Titel:SetTextColor(23/255, 132/255, 209/255)
+	AtlasLootPanel.Titel:SetPoint("BOTTOM", AtlasLootPanel.TitelBg, "BOTTOM", 0, 40)
+	STYLE:ApplyScrollFrameStyle(AtlasLootCompareFrame_ScrollFrameItemFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(AtlasLootCompareFrame_WishlistScrollFrameScrollBar)
+	AtlasLootDefaultFrame:HookScript("OnShow", AL_OnShow)
+	AtlasLootCompareFrame:HookScript("OnShow", Compare_OnShow)
+	AtlasLootPanel.timeLapse = 0;
+
+	--AtlasLootPanel:HookScript("OnUpdate", _hook_OnUpdate)
+
+	if(AtlasLootTooltip:GetName() ~= "GameTooltip") then
+		STYLE:ApplyTooltipStyle(AtlasLootTooltip)
+	end
+end
+STYLE:SaveAddonStyle("AtlasLoot", StyleAtlasLoot, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/AuctionLite.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/AuctionLite.lua
new file mode 100644
index 0000000..3fe7bb3
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/AuctionLite.lua
@@ -0,0 +1,88 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+AUCTIONLITE
+##########################################################
+]]--
+local function BGHelper(parent)
+  parent.bg = CreateFrame("Frame", nil, parent)
+  parent.bg:SetFixedPanelTemplate("Inset")
+  parent.bg:Point("TOPLEFT", parent, "TOPLEFT", 16, -103)
+  parent.bg:Point("BOTTOMRIGHT", AuctionFrame, "BOTTOMRIGHT", -8, 36)
+  parent.bg:SetFrameLevel(parent.bg:GetFrameLevel() - 1)
+end
+
+local function StyleAuctionLite(event, ...)
+  assert(AuctionFrameTab4, "AddOn Not Loaded")
+  if(not event or (event and event == 'PLAYER_ENTERING_WORLD')) then return; end
+
+  BuyName:SetEditboxTemplate()
+  BuyQuantity:SetEditboxTemplate()
+  SellStacks:SetEditboxTemplate()
+  SellSize:SetEditboxTemplate()
+  SellBidPriceGold:SetEditboxTemplate()
+  SellBidPriceSilver:SetEditboxTemplate()
+  SellBidPriceCopper:SetEditboxTemplate()
+  SellBuyoutPriceGold:SetEditboxTemplate()
+  SellBuyoutPriceSilver:SetEditboxTemplate()
+  SellBuyoutPriceCopper:SetEditboxTemplate()
+
+  BuySearchButton:SetButtonTemplate()
+  BuyBidButton:SetButtonTemplate()
+  BuyBuyoutButton:SetButtonTemplate()
+  BuyCancelSearchButton:SetButtonTemplate()
+  BuyCancelAuctionButton:SetButtonTemplate()
+  BuyScanButton:SetButtonTemplate()
+  SellCreateAuctionButton:SetButtonTemplate()
+
+  STYLE:ApplyPaginationStyle(BuyAdvancedButton)
+  STYLE:ApplyPaginationStyle(SellRememberButton)
+
+  STYLE:ApplyTabStyle(AuctionFrameTab4)
+  STYLE:ApplyTabStyle(AuctionFrameTab5)
+
+  if(_G["AuctionFrameBuy"]) then
+    BGHelper(_G["AuctionFrameBuy"])
+  end
+  if(_G["AuctionFrameSell"]) then
+    BGHelper(_G["AuctionFrameSell"])
+  end
+
+  STYLE:SafeEventRemoval("AuctionLite", event)
+end
+
+STYLE:SaveAddonStyle("AuctionLite", StyleAuctionLite, nil, nil, "AUCTION_HOUSE_SHOW")
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/BigWigs.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/BigWigs.lua
new file mode 100644
index 0000000..f005058
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/BigWigs.lua
@@ -0,0 +1,147 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G["SVUI"];
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+BIGWIGS
+##########################################################
+]]--
+local FreeBG
+local BigWigsLoaded
+
+local function freestyle(bar)
+	if not FreeBG then FreeBG = {} end
+	local bg = bar:Get("bigwigs:elvui:barbg")
+	if bg then
+		bg:ClearAllPoints()
+		bg:SetParent(SVUI.UIParent)
+		bg:Hide()
+		FreeBG[#FreeBG + 1] = bg
+	end
+
+	local ibg = bar:Get("bigwigs:elvui:iconbg")
+	if ibg then
+		ibg:ClearAllPoints()
+		ibg:SetParent(SVUI.UIParent)
+		ibg:Hide()
+		FreeBG[#FreeBG + 1] = ibg
+	end
+	bar.candyBarIconFrame.SetWidth = bar.candyBarIconFrame.OldSetWidth
+	bar.candyBarBar.SetPoint = bar.candyBarBar.OldSetPoint
+	bar.candyBarIconFrame:ClearAllPoints()
+	bar.candyBarIconFrame:SetPoint("TOPLEFT")
+	bar.candyBarIconFrame:SetPoint("BOTTOMLEFT")
+	bar.candyBarIconFrame:SetTexCoord(0.1,0.9,0.1,0.9)
+	bar.candyBarBar:ClearAllPoints()
+	bar.candyBarBar:SetPoint("TOPRIGHT")
+	bar.candyBarBar:SetPoint("BOTTOMRIGHT")
+	bar.candyBarBackground:SetAllPoints()
+	bar.candyBarDuration:ClearAllPoints()
+	bar.candyBarDuration:SetPoint("RIGHT", bar.candyBarBar, "RIGHT", -2, 0)
+	bar.candyBarLabel:ClearAllPoints()
+	bar.candyBarLabel:SetPoint("LEFT", bar.candyBarBar, "LEFT", 2, 0)
+	bar.candyBarLabel:SetPoint("RIGHT", bar.candyBarBar, "RIGHT", -2, 0)
+end
+
+local function applystyle(bar)
+	if not FreeBG then FreeBG = {} end
+	bar:Height(20)
+	local bg = nil
+	if #FreeBG > 0 then
+		bg = tremove(FreeBG)
+	else
+		bg = CreateFrame("Frame")
+	end
+	bg:SetFixedPanelTemplate('Transparent', true)
+	bg:SetParent(bar)
+	bg:WrapOuter(bar)
+	bg:SetFrameLevel(bar:GetFrameLevel() - 1)
+	bg:SetFrameStrata(bar:GetFrameStrata())
+	bg:Show()
+	bar:Set("bigwigs:elvui:barbg", bg)
+	local ibg = nil
+	if bar.candyBarIconFrame:GetTexture() then
+		if #FreeBG > 0 then
+			ibg = tremove(FreeBG)
+		else
+			ibg = CreateFrame("Frame")
+		end
+		ibg:SetParent(bar)
+		ibg:SetFixedPanelTemplate('Transparent', true)
+		ibg:SetBackdropColor(0, 0, 0, 0)
+		ibg:WrapOuter(bar.candyBarIconFrame)
+		ibg:SetFrameLevel(bar:GetFrameLevel() - 1)
+		ibg:SetFrameStrata(bar:GetFrameStrata())
+		ibg:Show()
+		bar:Set("bigwigs:elvui:iconbg", ibg)
+	end
+	bar.candyBarLabel:SetJustifyH("LEFT")
+	bar.candyBarLabel:ClearAllPoints()
+	bar.candyBarDuration:SetJustifyH("RIGHT")
+	bar.candyBarDuration:ClearAllPoints()
+	bar.candyBarLabel:Point("LEFT", bar, "LEFT", 4, 0)
+	bar.candyBarDuration:Point("RIGHT", bar, "RIGHT", -4, 0)
+	bar.candyBarBar:ClearAllPoints()
+	bar.candyBarBar:SetAllPoints(bar)
+	bar.candyBarBar.OldSetPoint = bar.candyBarBar.SetPoint
+	bar.candyBarBar.SetPoint = SV.fubar
+	bar.candyBarIconFrame.OldSetWidth = bar.candyBarIconFrame.SetWidth
+	bar.candyBarIconFrame.SetWidth = SV.fubar
+	bar.candyBarIconFrame:ClearAllPoints()
+	bar.candyBarIconFrame:Point("BOTTOMRIGHT", bar, "BOTTOMLEFT", -1, 0)
+	bar.candyBarIconFrame:SetSize(20, 20)
+	bar.candyBarIconFrame:SetTexCoord(0.1,0.9,0.1,0.9)
+end
+
+local function StyleBigWigs(event, addon)
+	assert(BigWigs, "AddOn Not Loaded")
+	if (IsAddOnLoaded('BigWigs_Plugins') or event == "ADDON_LOADED" and addon == 'BigWigs_Plugins') then
+		local styleName = SV.NameID
+		local BigWigsBars = BigWigs:GetPlugin('Bars')
+		if BigWigsLoaded then return end
+		BigWigsLoaded = true
+		BigWigsBars:RegisterBarStyle(styleName, {
+			apiVersion = 1,
+			version = 1,
+			GetSpacing = function(bar)
+				return 4
+			end,
+			ApplyStyle = applystyle,
+			BarStopped = freestyle,
+			GetStyleName = function() return styleName end,
+		})
+		BigWigsBars:SetBarStyle(styleName)
+		STYLE:SafeEventRemoval("BigWigs", "ADDON_LOADED")
+		STYLE:SafeEventRemoval("BigWigs", "PLAYER_ENTERING_WORLD")
+	end
+end
+
+STYLE:SaveAddonStyle("BigWigs", StyleBigWigs, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Bugsack.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Bugsack.lua
new file mode 100644
index 0000000..502fb49
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Bugsack.lua
@@ -0,0 +1,58 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+BUGSACK
+##########################################################
+]]--
+local function StyleBugSack(event, addon)
+	assert(BugSack, "AddOn Not Loaded")
+	hooksecurefunc(BugSack, "OpenSack", function()
+		if BugSackFrame.Panel then return end
+		BugSackFrame:RemoveTextures()
+		BugSackFrame:SetBasicPanel()
+		STYLE:ApplyTabStyle(BugSackTabAll)
+		BugSackTabAll:SetPoint("TOPLEFT", BugSackFrame, "BOTTOMLEFT", 0, 1)
+		STYLE:ApplyTabStyle(BugSackTabSession)
+		STYLE:ApplyTabStyle(BugSackTabLast)
+		BugSackNextButton:SetButtonTemplate()
+		BugSackSendButton:SetButtonTemplate()
+		BugSackPrevButton:SetButtonTemplate()
+		STYLE:ApplyScrollBarStyle(BugSackScrollScrollBar)
+	end)
+end
+
+STYLE:SaveAddonStyle("Bugsack", StyleBugSack)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Clique.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Clique.lua
new file mode 100644
index 0000000..ac2eca7
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Clique.lua
@@ -0,0 +1,152 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+CLIQUE
+##########################################################
+]]--
+local CliqueFrames = {
+	"CliqueDialog",
+	"CliqueConfig",
+	"CliqueConfigPage1",
+	"CliqueConfigPage2",
+	"CliqueClickGrabber",
+	"CliqueScrollFrame"
+}
+
+local CliqueButtons = {
+	"CliqueConfigPage1ButtonSpell",
+	"CliqueConfigPage1ButtonOther",
+	"CliqueConfigPage1ButtonOptions",
+	"CliqueConfigPage2ButtonBinding",
+	"CliqueDialogButtonAccept",
+	"CliqueDialogButtonBinding",
+	"CliqueConfigPage2ButtonSave",
+	"CliqueConfigPage2ButtonCancel",
+	"CliqueSpellTab",
+}
+
+local CliqueStripped = {
+	"CliqueConfigPage1Column1",
+	"CliqueConfigPage1Column2",
+	"CliqueConfigPage1_VSlider",
+	"CliqueSpellTab",
+	"CliqueConfigPage1ButtonSpell",
+	"CliqueConfigPage1ButtonOther",
+	"CliqueConfigPage1ButtonOptions",
+	"CliqueConfigPage2ButtonBinding",
+	"CliqueDialogButtonAccept",
+	"CliqueDialogButtonBinding",
+	"CliqueConfigPage2ButtonSave",
+	"CliqueConfigPage2ButtonCancel",
+}
+
+local CliqueConfigPage1_OnShow = function(self)
+	for i = 1, 12 do
+		if _G["CliqueRow"..i] then
+			_G["CliqueRow"..i.."Icon"]:SetTexCoord(0.1,0.9,0.1,0.9);
+			_G["CliqueRow"..i.."Bind"]:ClearAllPoints()
+			if _G["CliqueRow"..i] == CliqueRow1 then
+				_G["CliqueRow"..i.."Bind"]:SetPoint("RIGHT", _G["CliqueRow"..i], 8,0)
+			else
+				_G["CliqueRow"..i.."Bind"]:SetPoint("RIGHT", _G["CliqueRow"..i], -9,0)
+			end
+			_G["CliqueRow"..i]:GetHighlightTexture():SetDesaturated(1)
+		end
+	end
+	CliqueRow1:ClearAllPoints()
+	CliqueRow1:SetPoint("TOPLEFT",5,-(CliqueConfigPage1Column1:GetHeight() +3))
+end
+
+local function StyleClique()
+	assert(CliqueDialog, "AddOn Not Loaded")
+
+	for _, gName in pairs(CliqueFrames) do
+		local frame = _G[gName]
+		if(frame) then
+			STYLE:ApplyFrameStyle(frame, "Transparent")
+			if(gName == "CliqueConfig") then
+				frame.Panel:SetPoint("TOPLEFT",0,0)
+				frame.Panel:SetPoint("BOTTOMRIGHT",0,-5)
+			elseif(gName == "CliqueClickGrabber" or gName == "CliqueScrollFrame") then
+				frame.Panel:SetPoint("TOPLEFT",4,0)
+				frame.Panel:SetPoint("BOTTOMRIGHT",-2,4)
+			else
+				frame.Panel:SetPoint("TOPLEFT",0,0)
+				frame.Panel:SetPoint("BOTTOMRIGHT",2,0)
+			end
+		end
+	end
+
+	for _, gName in pairs(CliqueStripped) do
+		local frame = _G[gName]
+		if(frame) then
+			frame:RemoveTextures(true)
+		end
+	end
+
+	for _, gName in pairs(CliqueButtons) do
+		local button = _G[gName]
+		if(button) then
+			button:SetButtonTemplate()
+		end
+	end
+
+	STYLE:ApplyCloseButtonStyle(CliqueDialog.CloseButton)
+
+	CliqueConfigPage1:SetScript("OnShow", CliqueConfigPage1_OnShow)
+
+	CliqueDialog:SetSize(CliqueDialog:GetWidth()-1, CliqueDialog:GetHeight()-1)
+
+	CliqueConfigPage1ButtonSpell:ClearAllPoints()
+	CliqueConfigPage1ButtonSpell:SetPoint("TOPLEFT", CliqueConfigPage1,"BOTTOMLEFT",0,-4)
+
+	CliqueConfigPage1ButtonOptions:ClearAllPoints()
+	CliqueConfigPage1ButtonOptions:SetPoint("TOPRIGHT", CliqueConfigPage1,"BOTTOMRIGHT",2,-4)
+
+	CliqueConfigPage2ButtonSave:ClearAllPoints()
+	CliqueConfigPage2ButtonSave:SetPoint("TOPLEFT", CliqueConfigPage2,"BOTTOMLEFT",0,-4)
+
+	CliqueConfigPage2ButtonCancel:ClearAllPoints()
+	CliqueConfigPage2ButtonCancel:SetPoint("TOPRIGHT", CliqueConfigPage2,"BOTTOMRIGHT",2,-4)
+
+	CliqueSpellTab:GetRegions():SetSize(.1,.1)
+	CliqueSpellTab:GetNormalTexture():SetTexCoord(0.1,0.9,0.1,0.9)
+	CliqueSpellTab:GetNormalTexture():ClearAllPoints()
+	CliqueSpellTab:GetNormalTexture():FillInner()
+end
+
+STYLE:SaveAddonStyle("Clique", StyleClique)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Cooline.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Cooline.lua
new file mode 100644
index 0000000..807be7f
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Cooline.lua
@@ -0,0 +1,58 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+COOLINE
+##########################################################
+]]--
+local function StyleCoolLine()
+	assert(CoolLineDB, "AddOn Not Loaded")
+
+	CoolLineDB.bgcolor = { r = 0, g = 0, b = 0, a = 0, }
+	CoolLineDB.border = "None"
+	CoolLine.updatelook()
+	STYLE:ApplyFrameStyle(CoolLine,"Transparent")
+	CoolLine.Panel:SetAllPoints(CoolLine)
+	SV:AddToDisplayAudit(CoolLine)
+
+	if STYLE:IsAddonReady("DockletCoolLine") then
+		if not CoolLineDB.vertical then
+			CoolLine:SetPoint('BOTTOMRIGHT', SVUI_ActionBar1, 'TOPRIGHT', 0, 4)
+			CoolLine:SetPoint("BOTTOMLEFT", SVUI_ActionBar1, "TOPLEFT", 0, 4)
+		end
+	end
+end
+STYLE:SaveAddonStyle("CoolLine", StyleCoolLine)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/DBM.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/DBM.lua
new file mode 100644
index 0000000..d89d5fb
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/DBM.lua
@@ -0,0 +1,212 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+DBM
+##########################################################
+]]--
+local function StyleBars(self)
+	for bar in self:GetBarIterator() do
+		if not bar.injected then
+			bar.ApplyStyle = function()
+				local frame = bar.frame
+				local tbar = _G[frame:GetName()..'Bar']
+				local spark = _G[frame:GetName()..'BarSpark']
+				local texture = _G[frame:GetName()..'BarTexture']
+				local icon1 = _G[frame:GetName()..'BarIcon1']
+				local icon2 = _G[frame:GetName()..'BarIcon2']
+				local name = _G[frame:GetName()..'BarName']
+				local timer = _G[frame:GetName()..'BarTimer']
+				if not icon1.overlay then
+					icon1.overlay = CreateFrame('Frame', '$parentIcon1Overlay', tbar)
+					icon1.overlay:Size(22)
+					icon1.overlay:SetPanelTemplate("Button")
+					icon1.overlay:SetFrameLevel(0)
+					icon1.overlay:Point('BOTTOMRIGHT', frame, 'BOTTOMLEFT', -2, 0)
+				end
+				if not icon2.overlay then
+					icon2.overlay = CreateFrame('Frame', '$parentIcon2Overlay', tbar)
+					icon2.overlay:Size(22)
+					icon2.overlay:SetPanelTemplate("Button")
+					icon2.overlay:SetFrameLevel(0)
+					icon2.overlay:Point('BOTTOMLEFT', frame, 'BOTTOMRIGHT', 2, 0)
+				end
+				if bar.color then
+					tbar:SetStatusBarColor(bar.color.r, bar.color.g, bar.color.b)
+				else
+					tbar:SetStatusBarColor(bar.owner.options.StartColorR, bar.owner.options.StartColorG, bar.owner.options.StartColorB)
+				end
+				if bar.enlarged then
+					frame:SetWidth(bar.owner.options.HugeWidth)
+					tbar:SetWidth(bar.owner.options.HugeWidth)
+					frame:SetScale(bar.owner.options.HugeScale)
+				else
+					frame:SetWidth(bar.owner.options.Width)
+					tbar:SetWidth(bar.owner.options.Width)
+					frame:SetScale(bar.owner.options.Scale)
+				end
+				spark:SetAlpha(0)
+				spark:SetTexture(0,0,0,0)
+				icon1:SetTexCoord(0.1,0.9,0.1,0.9)
+				icon1:ClearAllPoints()
+				icon1:SetAllPoints(icon1.overlay)
+				icon2:SetTexCoord(0.1,0.9,0.1,0.9)
+				icon2:ClearAllPoints()
+				icon2:SetAllPoints(icon2.overlay)
+				texture:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+				tbar:SetAllPoints(frame)
+				frame:SetPanelTemplate("Bar")
+				name:ClearAllPoints()
+				name:SetWidth(165)
+				name:SetHeight(8)
+				name:SetJustifyH('LEFT')
+				name:SetShadowColor(0, 0, 0, 0)
+				timer:ClearAllPoints()
+				timer:SetJustifyH('RIGHT')
+				timer:SetShadowColor(0, 0, 0, 0)
+				frame:SetHeight(22)
+				name:Point('LEFT', frame, 'LEFT', 4, 0)
+				timer:Point('RIGHT', frame, 'RIGHT', -4, 0)
+				name:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
+				timer:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
+				name:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
+				timer:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
+				if bar.owner.options.IconLeft then icon1:Show() icon1.overlay:Show() else icon1:Hide() icon1.overlay:Hide() end
+				if bar.owner.options.IconRight then icon2:Show() icon2.overlay:Show() else icon2:Hide() icon2.overlay:Hide() end
+				tbar:SetAlpha(1)
+				frame:SetAlpha(1)
+				texture:SetAlpha(1)
+				frame:Show()
+				bar:Update(0)
+				bar.injected = true
+			end
+			bar:ApplyStyle()
+		end
+	end
+end
+
+local StyleBossTitle = function()
+	local anchor = DBMBossHealthDropdown:GetParent()
+	if not anchor.styled then
+		local header = {anchor:GetRegions()}
+		if header[1]:IsObjectType('FontString') then
+			header[1]:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
+			header[1]:SetTextColor(1, 1, 1)
+			header[1]:SetShadowColor(0, 0, 0, 0)
+			anchor.styled = true
+		end
+		header = nil
+	end
+	anchor = nil
+end
+
+local StyleBoss = function()
+	local count = 1
+	while _G[format('DBM_BossHealth_Bar_%d', count)] do
+		local bar = _G[format('DBM_BossHealth_Bar_%d', count)]
+		local background = _G[bar:GetName()..'BarBorder']
+		local progress = _G[bar:GetName()..'Bar']
+		local name = _G[bar:GetName()..'BarName']
+		local timer = _G[bar:GetName()..'BarTimer']
+		local prev = _G[format('DBM_BossHealth_Bar_%d', count-1)]
+		local _, anch, _ ,_, _ = bar:GetPoint()
+		bar:ClearAllPoints()
+		if count == 1 then
+			if DBM_SavedOptions.HealthFrameGrowUp then
+				bar:Point('BOTTOM', anch, 'TOP' , 0 , 12)
+			else
+				bar:Point('TOP', anch, 'BOTTOM' , 0, -22)
+			end
+		else
+			if DBM_SavedOptions.HealthFrameGrowUp then
+				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, 22 + 4)
+			else
+				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, -(22 + 4))
+			end
+		end
+		bar:SetFixedPanelTemplate('Transparent')
+		background:SetNormalTexture(nil)
+		progress:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+		progress:ClearAllPoints()
+		progress:FillInner(bar)
+		name:ClearAllPoints()
+		name:SetJustifyH('LEFT')
+		name:SetShadowColor(0, 0, 0, 0)
+		timer:ClearAllPoints()
+		timer:SetJustifyH('RIGHT')
+		timer:SetShadowColor(0, 0, 0, 0)
+		bar:SetHeight(22)
+		name:Point('LEFT', bar, 'LEFT', 4, 0)
+		timer:Point('RIGHT', bar, 'RIGHT', -4, 0)
+		name:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
+		timer:SetFontTemplate(SV.Media.font.default, 12, 'OUTLINE')
+		count = count + 1
+	end
+end
+
+local function StyleDBM(event, addon)
+	assert(DBM, "AddOn Not Loaded")
+
+	hooksecurefunc(DBT, 'CreateBar', StyleBars)
+	hooksecurefunc(DBM.BossHealth, 'Show', StyleBossTitle)
+	hooksecurefunc(DBM.BossHealth, 'AddBoss', StyleBoss)
+	hooksecurefunc(DBM.BossHealth, 'UpdateSettings', StyleBoss)
+
+	if not DBM_SavedOptions['DontShowRangeFrame'] then
+		DBM.RangeCheck:Show()
+		DBM.RangeCheck:Hide()
+		DBMRangeCheck:HookScript('OnShow', function(self) self:SetFixedPanelTemplate('Transparent') end)
+		DBMRangeCheckRadar:SetFixedPanelTemplate('Transparent')
+	end
+
+	if not DBM_SavedOptions['DontShowInfoFrame'] then
+		DBM.InfoFrame:Show(5, 'test')
+		DBM.InfoFrame:Hide()
+		DBMInfoFrame:HookScript('OnShow', function(self) self:SetFixedPanelTemplate('Transparent') end)
+	end
+
+	local RaidNotice_AddMessage_ = RaidNotice_AddMessage
+	RaidNotice_AddMessage = function(noticeFrame, textString, colorInfo)
+		if textString:find(' |T') then
+			textString = gsub(textString,'(:12:12)',':18:18:0:0:64:64:5:59:5:59')
+		end
+		return RaidNotice_AddMessage_(noticeFrame, textString, colorInfo)
+	end
+
+	STYLE:SafeEventRemoval("DBM", event)
+end
+
+STYLE:SaveAddonStyle("DBM", StyleDBM, false, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/DXE.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/DXE.lua
new file mode 100644
index 0000000..95a0088
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/DXE.lua
@@ -0,0 +1,135 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+local playerName = UnitName("player");
+local playerRealm = GetRealmName();
+local playerKey = ("%s - %s"):format(playerName, playerRealm)
+--[[
+##########################################################
+DXE
+##########################################################
+]]--
+local function StyleDXEBar(bar)
+	bar:SetFixedPanelTemplate("Transparent")
+	bar.bg:SetTexture(0,0,0,0)
+	bar.border.Show = SV.fubar
+	bar.border:Hide()
+	bar.statusbar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	bar.statusbar:ClearAllPoints()
+	bar.statusbar:FillInner()
+	bar.righticon:SetFixedPanelTemplate("Default")
+	bar.righticon.border.Show = SV.fubar
+	bar.righticon.border:Hide()
+	bar.righticon:ClearAllPoints()
+	bar.righticon:SetPoint("LEFT", bar, "RIGHT", 2, 0)
+	bar.righticon.t:SetTexCoord(0.1,0.9,0.1,0.9)
+	bar.righticon.t:ClearAllPoints()
+	bar.righticon.t:FillInner()
+	bar.righticon.t:SetDrawLayer("ARTWORK")
+	bar.lefticon:SetFixedPanelTemplate("Default")
+	bar.lefticon.border.Show = SV.fubar
+	bar.lefticon.border:Hide()
+	bar.lefticon:ClearAllPoints()
+	bar.lefticon:SetPoint("RIGHT", bar, "LEFT", -2, 0)
+	bar.lefticon.t:SetTexCoord(0.1,0.9,0.1,0.9)
+	bar.lefticon.t:ClearAllPoints()
+	bar.lefticon.t:FillInner()
+	bar.lefticon.t:SetDrawLayer("ARTWORK")
+end
+
+local function RefreshDXEBars(frame)
+	if frame.refreshing then return end
+	frame.refreshing = true
+	local i = 1
+	while _G["DXEAlertBar"..i] do
+		local bar = _G["DXEAlertBar"..i]
+		if not bar.styled then
+			bar:SetScale(1)
+			bar.SetScale = SV.fubar
+			StyleDXEBar(bar)
+			bar.styled = true
+		end
+		i = i + 1
+	end
+	frame.refreshing = false
+end
+
+LoadAddOn("DXE")
+
+local function StyleDXE()
+	assert(DXE, "AddOn Not Loaded")
+
+	DXE.LayoutHealthWatchers_ = DXE.LayoutHealthWatchers
+	DXE.LayoutHealthWatchers = function(frame)
+		DXE:LayoutHealthWatchers_()
+		for i,hw in ipairs(frame.HW) do
+			if hw:IsShown() then
+				hw:SetFixedPanelTemplate("Transparent")
+				hw.border.Show = SV.fubar
+				hw.border:Hide()
+				hw.healthbar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+			end
+		end
+	end
+
+	local DXEAlerts = DXE:GetModule("Alerts")
+	local frame = CreateFrame("Frame")
+
+	frame.elapsed = 1
+	frame:SetScript("OnUpdate", function(frame,elapsed)
+		frame.elapsed = frame.elapsed + elapsed
+		if(frame.elapsed >= 1) then
+			RefreshDXEBars(DXEAlerts)
+			frame.elapsed = 0
+		end
+	end)
+
+	hooksecurefunc(DXEAlerts, "Simple", RefreshDXEBars)
+	hooksecurefunc(DXEAlerts, "RefreshBars", RefreshDXEBars)
+	DXE:LayoutHealthWatchers()
+	DXE.Alerts:RefreshBars()
+
+	if not DXEDB then DXEDB = {} end
+	if not DXEDB["profiles"] then DXEDB["profiles"] = {} end
+	if not DXEDB["profiles"][playerKey] then DXEDB["profiles"][playerKey] = {} end
+	if not DXEDB["profiles"][playerKey]["Globals"] then DXEDB["profiles"][playerKey]["Globals"] = {} end
+
+	DXEDB["profiles"][playerKey]["Globals"]["BackgroundTexture"] = [[Interface\BUTTONS\WHITE8X8]]
+	DXEDB["profiles"][playerKey]["Globals"]["BarTexture"] = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]]
+	DXEDB["profiles"][playerKey]["Globals"]["Border"] = "None"
+	DXEDB["profiles"][playerKey]["Globals"]["Font"] = SV.Media.font.default
+	DXEDB["profiles"][playerKey]["Globals"]["TimerFont"] = SV.Media.font.default
+end
+STYLE:SaveAddonStyle("DXE", StyleDXE)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/LightHeaded.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/LightHeaded.lua
new file mode 100644
index 0000000..24d67c3
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/LightHeaded.lua
@@ -0,0 +1,104 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+LIGHTHEADED
+##########################################################
+]]--
+local timeLapse = 0;
+
+local function DoDis(self, elapsed)
+	self.timeLapse = self.timeLapse + elapsed
+	if(self.timeLapse < 2) then
+		return
+	else
+		self.timeLapse = 0
+	end
+	QuestNPCModel:ClearAllPoints()
+	QuestNPCModel:SetPoint("TOPLEFT", LightHeadedFrame, "TOPRIGHT", 5, -10)
+	QuestNPCModel:SetAlpha(0.85)
+	LightHeadedFrame:SetPoint("LEFT", QuestLogFrame, "RIGHT", 2, 0)
+end
+
+local function StyleLightHeaded()
+	assert(LightHeadedFrame, "AddOn Not Loaded")
+
+	local lhframe 	= _G["LightHeadedFrame"]
+	local lhsub 	= _G["LightHeadedFrameSub"]
+	local lhopts 	= _G["LightHeaded_Panel"]
+
+	STYLE:ApplyFrameStyle(LightHeadedFrame)
+	STYLE:ApplyFrameStyle(LightHeadedFrameSub)
+	STYLE:ApplyFrameStyle(LightHeadedSearchBox)
+	STYLE:ApplyTooltipStyle(LightHeadedTooltip)
+	LightHeadedScrollFrame:RemoveTextures()
+
+	lhframe.close:Hide()
+	STYLE:ApplyCloseButtonStyle(lhframe.close)
+	lhframe.handle:Hide()
+
+	STYLE:ApplyPaginationStyle(lhsub.prev)
+	STYLE:ApplyPaginationStyle(lhsub.next)
+	lhsub.prev:SetWidth(16)
+	lhsub.prev:SetHeight(16)
+	lhsub.next:SetWidth(16)
+	lhsub.next:SetHeight(16)
+	lhsub.prev:SetPoint("RIGHT", lhsub.page, "LEFT", -25, 0)
+	lhsub.next:SetPoint("LEFT", lhsub.page, "RIGHT", 25, 0)
+	STYLE:ApplyScrollFrameStyle(LightHeadedScrollFrameScrollBar, 5)
+	lhsub.title:SetTextColor(23/255, 132/255, 209/255)
+
+	lhframe.timeLapse = 0;
+	lhframe:SetScript("OnUpdate", DoDis)
+
+	if lhopts:IsVisible() then
+		for i = 1, 9 do
+			local cbox = _G["LightHeaded_Panel_Toggle"..i]
+			cbox:SetCheckboxTemplate(true)
+		end
+		local buttons = {
+			"LightHeaded_Panel_Button1",
+			"LightHeaded_Panel_Button2",
+		}
+
+		for _, button in pairs(buttons) do
+			_G[button]:SetButtonTemplate()
+		end
+
+		LightHeaded_Panel_Button2:Disable()
+	end
+end
+STYLE:SaveAddonStyle("Lightheaded", StyleLightHeaded)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Mogit.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Mogit.lua
new file mode 100644
index 0000000..7489024
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Mogit.lua
@@ -0,0 +1,89 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+MOGIT
+##########################################################
+]]--
+local function StyleMogItPreview()
+	for i = 1, 99 do
+		local MogItGearSlots = {
+			"HeadSlot",
+			"ShoulderSlot",
+			"BackSlot",
+			"ChestSlot",
+			"ShirtSlot",
+			"TabardSlot",
+			"WristSlot",
+			"HandsSlot",
+			"WaistSlot",
+			"LegsSlot",
+			"FeetSlot",
+			"MainHandSlot",
+			"SecondaryHandSlot",
+		}
+		for _, object in pairs(MogItGearSlots) do
+			if _G["MogItPreview"..i..object] then
+				STYLE:ApplyItemButtonStyle(_G["MogItPreview"..i..object])
+				_G["MogItPreview"..i..object]:SetPushedTexture(nil)
+				_G["MogItPreview"..i..object]:SetHighlightTexture(nil)
+			end
+		end
+		if _G["MogItPreview"..i] then STYLE:ApplyFrameStyle(_G["MogItPreview"..i]) end
+		if _G["MogItPreview"..i.."CloseButton"] then STYLE:ApplyCloseButtonStyle(_G["MogItPreview"..i.."CloseButton"]) end
+		if _G["MogItPreview"..i.."Inset"] then _G["MogItPreview"..i.."Inset"]:RemoveTextures(true) end
+		if _G["MogItPreview"..i.."Activate"] then _G["MogItPreview"..i.."Activate"]:SetButtonTemplate() end
+	end
+end
+
+local function StyleMogIt()
+	assert(MogItFrame, "AddOn Not Loaded")
+
+	STYLE:ApplyFrameStyle(MogItFrame)
+	MogItFrameInset:RemoveTextures(true)
+	STYLE:ApplyFrameStyle(MogItFilters)
+	MogItFiltersInset:RemoveTextures(true)
+
+	hooksecurefunc(MogIt, "CreatePreview", StyleMogItPreview)
+	STYLE:ApplyTooltipStyle(MogItTooltip)
+	STYLE:ApplyCloseButtonStyle(MogItFrameCloseButton)
+	STYLE:ApplyCloseButtonStyle(MogItFiltersCloseButton)
+	MogItFrameFiltersDefaults:RemoveTextures(true)
+	MogItFrameFiltersDefaults:SetButtonTemplate()
+	STYLE:ApplyScrollFrameStyle(MogItScroll)
+	STYLE:ApplyScrollFrameStyle(MogItFiltersScrollScrollBar)
+end
+STYLE:SaveAddonStyle("MogIt", StyleMogIt)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua
new file mode 100644
index 0000000..7d03c80
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua
@@ -0,0 +1,88 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+OMEN
+##########################################################
+]]--
+local function StyleOmen()
+  assert(Omen, "AddOn Not Loaded")
+
+  Omen.db.profile.Scale = 1
+  Omen.db.profile.Bar.Spacing = 1
+  Omen.db.profile.Bar.Texture = "SVUI MultiColorBar"
+  Omen.db.profile.Background.EdgeSize = 2
+  Omen.db.profile.Background.BarInset = 2
+  Omen.db.profile.Background.Texture = "None"
+  Omen.db.profile.TitleBar.UseSameBG = true
+
+  hooksecurefunc(Omen, 'UpdateBackdrop', function(self)
+    if not SVUI.CurrentlyDocked["OmenAnchor"] then
+      STYLE:ApplyFrameStyle(self.BarList, 'Transparent')
+      self.Title:RemoveTextures()
+      self.Title:SetPanelTemplate("Default")
+      self.Title:SetPanelColor("class")
+    end
+    self.BarList:SetPoint('TOPLEFT', self.Title, 'BOTTOMLEFT', 0, 1)
+  end)
+
+  Omen:UpdateBackdrop()
+  Omen:ReAnchorBars()
+  Omen:ResizeBars()
+end
+STYLE:SaveAddonStyle("Omen", StyleOmen, nil, true)
+
+function STYLE:Docklet_Omen(parent)
+  if not Omen then return end
+  local db=Omen.db;
+  db.profile.Scale=1;
+  db.profile.Bar.Spacing=1;
+  db.profile.Background.EdgeSize=2;
+  db.profile.Background.BarInset=2;
+  db.profile.TitleBar.UseSameBG=true;
+  db.profile.ShowWith.UseShowWith=false;
+  db.profile.Locked=true;
+  db.profile.TitleBar.ShowTitleBar=true;
+  db.profile.FrameStrata='2-LOW'
+  Omen:OnProfileChanged(nil,db)
+  OmenTitle:RemoveTextures()
+  OmenTitle.Panel = nil
+  OmenTitle:SetPanelTemplate("Default")
+  OmenTitle:SetPanelColor("class")
+  OmenBarList:RemoveTextures()
+  OmenBarList.Panel = nil
+  OmenBarList:SetFixedPanelTemplate('Transparent')
+  OmenAnchor:ClearAllPoints()
+  OmenAnchor:SetAllPoints(parent)
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Outfitter.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Outfitter.lua
new file mode 100644
index 0000000..6b08d87
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Outfitter.lua
@@ -0,0 +1,119 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+OUTFITTER
+##########################################################
+]]--
+local function StyleOutfitter()
+	assert(OutfitterFrame, "AddOn Not Loaded")
+
+	CharacterFrame:HookScript("OnShow", function(self) PaperDollSidebarTabs:SetPoint("BOTTOMRIGHT", CharacterFrameInsetRight, "TOPRIGHT", -14, 0) end)
+	OutfitterFrame:HookScript("OnShow", function(self)
+		STYLE:ApplyFrameStyle(OutfitterFrame)
+		OutfitterFrameTab1:Size(60, 25)
+		OutfitterFrameTab2:Size(60, 25)
+		OutfitterFrameTab3:Size(60, 25)
+		OutfitterMainFrame:RemoveTextures(true)
+		for i = 0, 13 do
+			if _G["OutfitterItem"..i.."OutfitSelected"] then
+				_G["OutfitterItem"..i.."OutfitSelected"]:SetButtonTemplate()
+				_G["OutfitterItem"..i.."OutfitSelected"]:ClearAllPoints()
+				_G["OutfitterItem"..i.."OutfitSelected"]:Size(16)
+				_G["OutfitterItem"..i.."OutfitSelected"]:Point("LEFT", _G["OutfitterItem"..i.."Outfit"], "LEFT", 8, 0)
+			end
+		end
+	end)
+	OutfitterMainFrameScrollbarTrench:RemoveTextures(true)
+	OutfitterFrameTab1:ClearAllPoints()
+	OutfitterFrameTab2:ClearAllPoints()
+	OutfitterFrameTab3:ClearAllPoints()
+	OutfitterFrameTab1:Point("TOPLEFT", OutfitterFrame, "BOTTOMRIGHT", -65, -2)
+	OutfitterFrameTab2:Point("LEFT", OutfitterFrameTab1, "LEFT", -65, 0)
+	OutfitterFrameTab3:Point("LEFT", OutfitterFrameTab2, "LEFT", -65, 0)
+	OutfitterFrameTab1:SetButtonTemplate()
+	OutfitterFrameTab2:SetButtonTemplate()
+	OutfitterFrameTab3:SetButtonTemplate()
+	STYLE:ApplyScrollFrameStyle(OutfitterMainFrameScrollFrameScrollBar)
+	STYLE:ApplyCloseButtonStyle(OutfitterCloseButton)
+	OutfitterNewButton:SetButtonTemplate()
+	OutfitterEnableNone:SetButtonTemplate()
+	OutfitterEnableAll:SetButtonTemplate()
+	OutfitterButton:ClearAllPoints()
+	OutfitterButton:SetPoint("RIGHT", PaperDollSidebarTabs, "RIGHT", 26, -2)
+	OutfitterButton:SetHighlightTexture(nil)
+	OutfitterSlotEnables:SetFrameStrata("HIGH")
+	OutfitterEnableHeadSlot:SetCheckboxTemplate(true)
+	OutfitterEnableNeckSlot:SetCheckboxTemplate(true)
+	OutfitterEnableShoulderSlot:SetCheckboxTemplate(true)
+	OutfitterEnableBackSlot:SetCheckboxTemplate(true)
+	OutfitterEnableChestSlot:SetCheckboxTemplate(true)
+	OutfitterEnableShirtSlot:SetCheckboxTemplate(true)
+	OutfitterEnableTabardSlot:SetCheckboxTemplate(true)
+	OutfitterEnableWristSlot:SetCheckboxTemplate(true)
+	OutfitterEnableMainHandSlot:SetCheckboxTemplate(true)
+	OutfitterEnableSecondaryHandSlot:SetCheckboxTemplate(true)
+	OutfitterEnableHandsSlot:SetCheckboxTemplate(true)
+	OutfitterEnableWaistSlot:SetCheckboxTemplate(true)
+	OutfitterEnableLegsSlot:SetCheckboxTemplate(true)
+	OutfitterEnableFeetSlot:SetCheckboxTemplate(true)
+	OutfitterEnableFinger0Slot:SetCheckboxTemplate(true)
+	OutfitterEnableFinger1Slot:SetCheckboxTemplate(true)
+	OutfitterEnableTrinket0Slot:SetCheckboxTemplate(true)
+	OutfitterEnableTrinket1Slot:SetCheckboxTemplate(true)
+	OutfitterItemComparisons:SetButtonTemplate()
+	OutfitterTooltipInfo:SetButtonTemplate()
+	OutfitterShowHotkeyMessages:SetButtonTemplate()
+	OutfitterShowMinimapButton:SetButtonTemplate()
+	OutfitterShowOutfitBar:SetButtonTemplate()
+	OutfitterAutoSwitch:SetButtonTemplate()
+	OutfitterItemComparisons:Size(20)
+	OutfitterTooltipInfo:Size(20)
+	OutfitterShowHotkeyMessages:Size(20)
+	OutfitterShowMinimapButton:Size(20)
+	OutfitterShowOutfitBar:Size(20)
+	OutfitterAutoSwitch:Size(20)
+	OutfitterShowOutfitBar:Point("TOPLEFT", OutfitterAutoSwitch, "BOTTOMLEFT", 0, -5)
+	OutfitterEditScriptDialogDoneButton:SetButtonTemplate()
+	OutfitterEditScriptDialogCancelButton:SetButtonTemplate()
+	STYLE:ApplyScrollFrameStyle(OutfitterEditScriptDialogSourceScriptScrollBar)
+	STYLE:ApplyFrameStyle(OutfitterEditScriptDialogSourceScript,"Transparent")
+	STYLE:ApplyFrameStyle(OutfitterEditScriptDialog)
+	STYLE:ApplyCloseButtonStyle(OutfitterEditScriptDialog.CloseButton)
+	STYLE:ApplyTabStyle(OutfitterEditScriptDialogTab1)
+	STYLE:ApplyTabStyle(OutfitterEditScriptDialogTab2)
+end
+STYLE:SaveAddonStyle("Outfitter", StyleOutfitter)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Postal.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Postal.lua
new file mode 100644
index 0000000..a5ace41
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Postal.lua
@@ -0,0 +1,89 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+POSTAL
+##########################################################
+]]--
+local function StylePostal()
+	assert(PostalOpenAllButton, "AddOn Not Loaded")
+
+	InboxPrevPageButton:Point("CENTER", InboxFrame, "BOTTOMLEFT", 45, 112)
+	InboxNextPageButton:Point("CENTER", InboxFrame, "BOTTOMLEFT", 295, 112)
+
+	for i = 1, INBOXITEMS_TO_DISPLAY do
+		local b = _G["MailItem"..i.."ExpireTime"]
+		b:SetPoint("TOPRIGHT", "MailItem"..i, "TOPRIGHT", -5, -10)
+		if b.returnicon then
+			b.returnicon:SetPoint("TOPRIGHT", b, "TOPRIGHT", 20, 0)
+		end
+		if _G['PostalInboxCB'..i] and not _G['PostalInboxCB'..i].handled then
+			_G['PostalInboxCB'..i]:SetCheckboxTemplate(true)
+			_G['PostalInboxCB'..i].handled = true
+		end
+	end
+	if PostalSelectOpenButton and not PostalSelectOpenButton.handled then
+		PostalSelectOpenButton:SetButtonTemplate()
+		PostalSelectOpenButton.handled = true
+		PostalSelectOpenButton:Point("RIGHT", InboxFrame, "TOP", -41, -48)
+	end
+	if Postal_OpenAllMenuButton and not Postal_OpenAllMenuButton.handled then
+		STYLE:ApplyPaginationStyle(Postal_OpenAllMenuButton, true)
+		Postal_OpenAllMenuButton:SetPoint('LEFT', PostalOpenAllButton, 'RIGHT', 5, 0)
+		Postal_OpenAllMenuButton.handled = true
+	end
+	if PostalOpenAllButton and not PostalOpenAllButton.handled then
+		PostalOpenAllButton:SetButtonTemplate()
+		PostalOpenAllButton.handled = true
+		PostalOpenAllButton:Point("CENTER", InboxFrame, "TOP", -34, -400)
+	end
+	if PostalSelectReturnButton and not PostalSelectReturnButton.handled then
+		PostalSelectReturnButton:SetButtonTemplate()
+		PostalSelectReturnButton.handled = true
+		PostalSelectReturnButton:Point("LEFT", InboxFrame, "TOP", -5, -48)
+	end
+	if Postal_PackageMenuButton and not Postal_PackageMenuButton.handled then
+		STYLE:ApplyPaginationStyle(Postal_PackageMenuButton, true)
+		Postal_PackageMenuButton.handled = true
+		Postal_PackageMenuButton:SetPoint('TOPRIGHT', MailFrame, -53, -6)
+	end
+	if Postal_BlackBookButton and not Postal_BlackBookButton.handled then
+		STYLE:ApplyPaginationStyle(Postal_BlackBookButton, true)
+		Postal_BlackBookButton.handled = true
+		Postal_BlackBookButton:SetPoint('LEFT', SendMailNameEditBox, 'RIGHT', 5, 2)
+	end
+end
+STYLE:SaveAddonStyle("Postal", StylePostal, nil, nil, 'MAIL_SHOW')
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Quartz.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Quartz.lua
new file mode 100644
index 0000000..48d8db9
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Quartz.lua
@@ -0,0 +1,78 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+QUARTZ
+##########################################################
+]]--
+local function StyleQuartz()
+	local AceAddon = LibStub("AceAddon-3.0")
+	if(not AceAddon) then return end
+	local Quartz3 = AceAddon:GetAddon("Quartz3", true)
+
+	assert(Quartz3, "AddOn Not Loaded")
+
+	local GCD = Quartz3:GetModule("GCD")
+	local CastBar = Quartz3.CastBarTemplate.template
+	local function StyleQuartzBar(self)
+		if not self.isStyled then
+			self.IconBorder = CreateFrame("Frame", nil, self)
+			STYLE:ApplyFrameStyle(self.IconBorder,"Transparent")
+			self.IconBorder:SetFrameLevel(0)
+			self.IconBorder:WrapOuter(self.Icon)
+			STYLE:ApplyFrameStyle(self.Bar,"Transparent",true)
+			self.isStyled = true
+		end
+ 		if self.config.hideicon then
+ 			self.IconBorder:Hide()
+ 		else
+ 			self.IconBorder:Show()
+ 		end
+	end
+
+	hooksecurefunc(CastBar, 'ApplySettings', StyleQuartzBar)
+	hooksecurefunc(CastBar, 'UNIT_SPELLCAST_START', StyleQuartzBar)
+	hooksecurefunc(CastBar, 'UNIT_SPELLCAST_CHANNEL_START', StyleQuartzBar)
+
+	if GCD then
+		hooksecurefunc(GCD, 'CheckGCD', function()
+			if not Quartz3GCDBar.backdrop then
+				STYLE:ApplyFrameStyle(Quartz3GCDBar,"Transparent",true)
+			end
+		end)
+	end
+end
+STYLE:SaveAddonStyle("Quartz", StyleQuartz)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua
new file mode 100644
index 0000000..bc14641
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua
@@ -0,0 +1,144 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+RECOUNT
+##########################################################
+]]--
+local function NoColor(a)
+  for p=1,a:GetNumRegions()do
+    local q=select(p,a:GetRegions())
+    if q:GetObjectType()=='Texture'then
+      q:SetDesaturated(true)
+      if q:GetTexture()=='Interface\\DialogFrame\\UI-DialogBox-Corner'then
+        q:SetTexture(0,0,0,0)
+        q:Die()
+      end
+    end
+  end
+end
+
+local function StyleRecount()
+  assert(Recount, "AddOn Not Loaded")
+
+  function Recount:ShowReset()
+    STYLE:LoadAlert(L['Reset Recount?'], function(self) Recount:ResetData() self:GetParent():Hide() end)
+  end
+
+  local function StyleFrame(frame)
+    STYLE:ApplyFrameStyle(frame,"Transparent")
+    frame.Panel:SetAllPoints()
+    frame.Panel:SetPoint('TOPLEFT', frame, 'TOPLEFT', 0, -6)
+    frame.CloseButton:SetPoint('TOPRIGHT', frame, 'TOPRIGHT', -1, -9)
+    frame:SetBackdrop(nil)
+
+    frame.TitleBackground = CreateFrame('Frame', nil, frame)
+    frame.TitleBackground:SetFixedPanelTemplate("Default")
+    frame.TitleBackground:SetPanelColor("class")
+    frame.TitleBackground:SetPoint('TOP', frame, 'TOP', 0, -8)
+    frame.TitleBackground.timeLapse = 0
+    frame.TitleBackground:SetScript('OnUpdate', function(self,elapsed)
+      self.timeLapse = self.timeLapse + elapsed
+      if(self.timeLapse < 0.2) then
+        return
+      else
+        self.timeLapse = 0
+      end
+      self:SetSize(frame:GetWidth() - 4, 22)
+    end)
+    frame.TitleBackground:SetFrameLevel(frame:GetFrameLevel())
+    frame.Title:SetPoint('TOPLEFT', frame, 'TOPLEFT', 6, -12)
+    NoColor(frame.CloseButton)
+    if frame.ConfigButton then NoColor(frame.ConfigButton) end
+    if frame.FileButton then NoColor(frame.FileButton) end
+    if frame.LeftButton then NoColor(frame.LeftButton) end
+    if frame.ResetButton then NoColor(frame.ResetButton) end
+    if frame.RightButton then NoColor(frame.RightButton) end
+    if frame.ReportButton then NoColor(frame.ReportButton) end
+    if frame.SummaryButton then NoColor(frame.SummaryButton) end
+  end
+
+  local RecountFrames = {
+    Recount.MainWindow,
+    Recount.ConfigWindow,
+    Recount.GraphWindow,
+    Recount.DetailWindow,
+  }
+
+  for _, frame in pairs(RecountFrames) do
+    if frame then
+      StyleFrame(frame)
+    end
+  end
+
+  STYLE:ApplyScrollFrameStyle(Recount_MainWindow_ScrollBarScrollBar)
+
+  Recount_MainWindow:HookScript('OnShow', function(self) if InCombatLockdown() then return end if SV.CurrentlyDocked["Recount_MainWindow"] then SuperDockWindowRight:Show() end end)
+  Recount.MainWindow.FileButton:HookScript('OnClick', function(self) if LibDropdownFrame0 then STYLE:ApplyFrameStyle(LibDropdownFrame0) end end)
+
+  hooksecurefunc(Recount, 'ShowScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Show() end)
+  hooksecurefunc(Recount, 'HideScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Hide() end)
+  hooksecurefunc(Recount, 'CreateFrame', function(self, frame) StyleFrame(_G[frame]) end)
+
+  hooksecurefunc(Recount, 'ShowReport', function(self)
+    if Recount_ReportWindow.isStyled then return end
+    Recount_ReportWindow.isStyled = true
+    STYLE:ApplyFrameStyle(Recount_ReportWindow.Whisper)
+    Recount_ReportWindow.ReportButton:SetButtonTemplate()
+    STYLE:ApplyScrollBarStyle(Recount_ReportWindow_Slider)
+    Recount_ReportWindow_Slider:GetThumbTexture():Size(6,6)
+  end)
+end
+STYLE:SaveAddonStyle("Recount", StyleRecount)
+
+function STYLE:Docklet_Recount(parent)
+  if not Recount then return end
+  local n=Recount.MainWindow.Panel;
+  if n and not n.Panel then
+    n:Show()
+    n:SetFixedPanelTemplate('Transparent',true)
+  end
+  Recount.db.profile.Locked=true;
+  Recount.db.profile.Scaling=1;
+  Recount.db.profile.ClampToScreen=true;
+  Recount.db.profile.FrameStrata='2-LOW'
+  Recount.MainWindow:ClearAllPoints()
+  Recount.MainWindow:SetAllPoints(parent)
+  Recount:SetStrataAndClamp()
+  Recount:LockWindows(true)
+  Recount:ResizeMainWindow()
+  Recount_MainWindow_ScrollBar:Hide()
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/SexyCooldown.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/SexyCooldown.lua
new file mode 100644
index 0000000..ad5fd29
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/SexyCooldown.lua
@@ -0,0 +1,105 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+SEXYCOOLDOWN
+##########################################################
+]]--
+local function SCDStripStyleSettings(bar)
+	bar.optionsTable.args.icon.args.borderheader = nil
+	bar.optionsTable.args.icon.args.border = nil
+	bar.optionsTable.args.icon.args.borderColor = nil
+	bar.optionsTable.args.icon.args.borderSize = nil
+	bar.optionsTable.args.icon.args.borderInset = nil
+	bar.optionsTable.args.bar.args.bnbheader = nil
+	bar.optionsTable.args.bar.args.texture = nil
+	bar.optionsTable.args.bar.args.backgroundColor = nil
+	bar.optionsTable.args.bar.args.border = nil
+	bar.optionsTable.args.bar.args.borderColor = nil
+	bar.optionsTable.args.bar.args.borderSize = nil
+	bar.optionsTable.args.bar.args.borderInset = nil
+end
+
+local function StyleSexyCooldownBar(bar)
+	SCDStripStyleSettings(bar)
+	STYLE:ApplyFrameStyle(bar)
+	SV:AddToDisplayAudit(bar)
+	if STYLE:IsAddonReady("DockletSexyCooldown") then
+		bar:ClearAllPoints()
+		bar:Point('BOTTOMRIGHT', SVUI_ActionBar1, 'TOPRIGHT', 0, 2)
+		bar:Point("BOTTOMLEFT", SVUI_ActionBar1, "TOPLEFT", 0, 2)
+		bar:SetHeight(SVUI_ActionBar1Button1:GetHeight())
+	end
+end
+
+local function StyleSexyCooldownIcon(bar, icon)
+	if not icon.styled then
+		STYLE:ApplyFrameStyle(icon, false, true)
+		STYLE:ApplyFrameStyle(icon.overlay,"Transparent",true)
+		icon.styled = true
+	end
+	icon.overlay.tex:SetTexCoord(0.1,0.9,0.1,0.9)
+	icon.tex:SetTexCoord(0.1,0.9,0.1,0.9)
+end
+
+local function StyleSexyCooldownBackdrop(bar)
+	bar:SetFixedPanelTemplate("Transparent")
+end
+
+local function HookSCDBar(bar)
+	if bar.hooked then return end
+	hooksecurefunc(bar, "UpdateBarLook", StyleSexyCooldownBar)
+	hooksecurefunc(bar, "UpdateSingleIconLook", StyleSexyCooldownIcon)
+	hooksecurefunc(bar, "UpdateBarBackdrop", StyleSexyCooldownBackdrop)
+	bar.settings.icon.borderInset = 0
+	bar.hooked = true
+end
+
+local function StyleSexyCooldown()
+	assert(SexyCooldown2, "AddOn Not Loaded")
+
+	for _, bar in ipairs(SexyCooldown2.bars) do
+		HookSCDBar(bar)
+		bar:UpdateBarLook()
+	end
+	hooksecurefunc(SexyCooldown2, 'CreateBar', function(self)
+		for _, bar in ipairs(self.bars) do
+			HookSCDBar(bar)
+			bar:UpdateBarLook()
+		end
+	end)
+end
+STYLE:SaveAddonStyle("SexyCooldown", StyleSexyCooldown)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua
new file mode 100644
index 0000000..502fa9b
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua
@@ -0,0 +1,153 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+local twipe = table.wipe;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+local activePanels = {};
+local SkadaHolder, SkadaHolder2
+--[[
+##########################################################
+SKADA
+##########################################################
+]]--
+local function CheckForHolders()
+  if(not SkadaHolder) then
+    SkadaHolder = CreateFrame("Frame", "SkadaHolder", SuperDockletMain)
+  end
+  if(not SkadaHolder2) then
+    SkadaHolder2 = CreateFrame("Frame", "SkadaHolder2", SuperDockletExtra)
+  end
+  SkadaHolder:SetSize(SuperDockletMain:GetSize())
+  SkadaHolder2:SetSize(SuperDockletExtra:GetSize())
+end
+
+local function skada_panel_loader(holder, window)
+  if not window then return end
+
+  local bars = Skada.displays['bar']
+
+  if(not bars or (bars and not bars.ApplySettings)) then return end
+
+  local width,height = holder:GetSize()
+
+  window.db.barspacing = 1;
+  window.db.barwidth = width - 4;
+  window.db.background.height = height - (window.db.enabletitle and window.db.title.height or 0) - 1;
+  window.db.spark=false;
+  window.db.barslocked = true;
+  window.bargroup:ClearAllPoints()
+  window.bargroup:SetPoint('BOTTOMLEFT',holder,'BOTTOMLEFT',0,0)
+  window.bargroup:SetParent(holder)
+  window.bargroup:SetFrameStrata('LOW')
+
+  local bgroup = window.bargroup.backdrop;
+  if bgroup then
+    bgroup:Show()
+    bgroup:SetFixedPanelTemplate('Transparent',true)
+  end
+
+  bars:ApplySettings(window)
+end
+
+function STYLE:Docklet_Skada()
+  if not Skada then return end
+  CheckForHolders()
+  for index,window in pairs(Skada:GetWindows()) do
+    local wname = window.db.name or ""
+    local key = "Skada" .. wname
+    if(SVUI.db.SVDock.docklets.DockletMain == key)then
+      skada_panel_loader(SkadaHolder, window)
+    elseif(SVUI.db.SVDock.docklets.enableExtra and SVUI.db.SVDock.docklets.DockletExtra == key) then
+      skada_panel_loader(SkadaHolder2, window)
+    else
+      window.db.barslocked = false;
+    end
+  end
+end
+
+local function Skada_ShowPopup(self)
+  STYLE:LoadAlert('Do you want to reset Skada?', function(self) Skada:Reset() self:GetParent():Hide() end)
+end
+
+local function StyleSkada()
+  assert(Skada, "AddOn Not Loaded")
+
+  CheckForHolders()
+  Skada.ShowPopup = Skada_ShowPopup
+
+  local SkadaDisplayBar = Skada.displays['bar']
+
+  hooksecurefunc(SkadaDisplayBar, 'AddDisplayOptions', function(self, window, options)
+    options.baroptions.args.barspacing = nil
+    options.titleoptions.args.texture = nil
+    options.titleoptions.args.bordertexture = nil
+    options.titleoptions.args.thickness = nil
+    options.titleoptions.args.margin = nil
+    options.titleoptions.args.color = nil
+    options.windowoptions = nil
+  end)
+
+  hooksecurefunc(SkadaDisplayBar, 'ApplySettings', function(self, window)
+    local skada = window.bargroup
+    if not skada then return end
+    local panelAnchor = skada
+    skada:SetSpacing(1)
+    skada:SetFrameLevel(5)
+    skada:SetBackdrop(nil)
+
+    if(window.db.enabletitle) then
+      panelAnchor = skada.button
+      skada.button:SetHeight(18)
+      skada.button:SetButtonTemplate()
+      skada.button:GetFontString():SetFont(SVUI.Media.font.names, 15, "OUTLINE")
+    end
+
+    skada:SetPanelTemplate("Transparent")
+    skada.Panel:ClearAllPoints()
+    skada.Panel:SetPoint('TOPLEFT', panelAnchor, 'TOPLEFT', -2, 2)
+    skada.Panel:SetPoint('BOTTOMRIGHT', skada, 'BOTTOMRIGHT', 2, -2)
+  end)
+
+  hooksecurefunc(Skada, 'CreateWindow', function()
+    if SVUI.CurrentlyDocked["SkadaHolder"] or SVUI.CurrentlyDocked["SkadaHolder2"] then
+      STYLE:Docklet_Skada()
+    end
+  end)
+
+  hooksecurefunc(Skada, 'DeleteWindow', function()
+    if SVUI.CurrentlyDocked["SkadaHolder"] or SVUI.CurrentlyDocked["SkadaHolder2"] then
+      STYLE:Docklet_Skada()
+    end
+  end)
+end
+
+STYLE:SaveAddonStyle("Skada", StyleSkada, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua
new file mode 100644
index 0000000..ec46d7d
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua
@@ -0,0 +1,74 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+	______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+	 _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+	  __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+	   _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+		___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TINYDPS
+##########################################################
+]]--
+local function StyleTinyDPS()
+	assert(tdpsFrame, "AddOn Not Loaded")
+
+	STYLE:ApplyFrameStyle(tdpsFrame)
+
+	tdpsFrame:HookScript("OnShow", function()
+		if InCombatLockdown() then return end
+		if SV.CurrentlyDocked["tdpsFrame"] then
+			SuperDockWindowRight:Show()
+		end
+	end)
+
+	if tdpsStatusBar then
+		tdpsStatusBar:SetBackdrop({bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]], edgeFile = S.Blank, tile = false, tileSize = 0, edgeSize = 1})
+		tdpsStatusBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	end
+
+	tdpsRefresh()
+end
+
+STYLE:SaveAddonStyle("TinyDPS", StyleTinyDPS)
+
+function STYLE:Docklet_TinyDPS(parent)
+	if not tdpsFrame then return end
+	tdpsFrame:SetFixedPanelTemplate("Transparent", true)
+	tdpsFrame:SetFrameStrata("LOW")
+	tdps.hideOOC = false;
+	tdps.hideIC = false;
+	tdps.hideSolo = false;
+	tdps.hidePvP = false;
+	tdpsFrame:ClearAllPoints()
+	tdpsFrame:SetAllPoints(parent)
+	tdpsRefresh()
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/TomTom.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TomTom.lua
new file mode 100644
index 0000000..52397c3
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TomTom.lua
@@ -0,0 +1,45 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TOMTOM
+##########################################################
+]]--
+local function StyleTomTom()
+  assert(TomTomBlock, "AddOn Not Loaded")
+  STYLE:ApplyFrameStyle(TomTomBlock)
+end
+STYLE:SaveAddonStyle("TomTom", StyleTomTom)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/TradeSkillDW.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TradeSkillDW.lua
new file mode 100644
index 0000000..f904b36
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TradeSkillDW.lua
@@ -0,0 +1,144 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TSDW
+##########################################################
+]]--
+local function StyleTradeSkillDW()
+	assert(TradeSkillDW_QueueFrame, "AddOn Not Loaded")
+
+	TradeSkillFrame:SetPanelTemplate("Action")
+	TradeSkillListScrollFrame:RemoveTextures(true)
+	TradeSkillDetailScrollFrame:RemoveTextures(true)
+	TradeSkillFrameInset:RemoveTextures(true)
+	TradeSkillExpandButtonFrame:RemoveTextures(true)
+	TradeSkillDetailScrollChildFrame:RemoveTextures(true)
+	TradeSkillListScrollFrame:RemoveTextures(true)
+	STYLE:ApplyFrameStyle(TradeSkillGuildFrame,"Transparent")
+	STYLE:ApplyFrameStyle(TradeSkillGuildFrameContainer,"Transparent")
+	TradeSkillGuildFrame:Point("BOTTOMLEFT", TradeSkillFrame, "BOTTOMRIGHT", 3, 19)
+	STYLE:ApplyCloseButtonStyle(TradeSkillGuildFrameCloseButton)
+
+	TradeSkillFrame:HookScript("OnShow", function()
+		STYLE:ApplyFrameStyle(TradeSkillFrame)
+		TradeSkillListScrollFrame:RemoveTextures()
+		if not TradeSkillDWExpandButton then return end
+		if not TradeSkillDWExpandButton.styled then
+			STYLE:ApplyPaginationStyle(TradeSkillDWExpandButton)
+			TradeSkillDWExpandButton.styled = true
+		end
+	end)
+
+	TradeSkillFrame:Height(TradeSkillFrame:GetHeight() + 12)
+	TradeSkillRankFrame:SetBasicPanel()
+	TradeSkillRankFrame:SetStatusBarTexture(SV.Media.bar.default)
+	TradeSkillCreateButton:SetButtonTemplate()
+	TradeSkillCancelButton:SetButtonTemplate()
+	TradeSkillFilterButton:SetButtonTemplate()
+	TradeSkillCreateAllButton:SetButtonTemplate()
+	TradeSkillViewGuildCraftersButton:SetButtonTemplate()
+	TradeSkillLinkButton:GetNormalTexture():SetTexCoord(0.25, 0.7, 0.37, 0.75)
+	TradeSkillLinkButton:GetPushedTexture():SetTexCoord(0.25, 0.7, 0.45, 0.8)
+	TradeSkillLinkButton:GetHighlightTexture():Die()
+	STYLE:ApplyFrameStyle(TradeSkillLinkButton,"Transparent")
+	TradeSkillLinkButton:Size(17, 14)
+	TradeSkillLinkButton:Point("LEFT", TradeSkillLinkFrame, "LEFT", 5, -1)
+	TradeSkillFrameSearchBox:SetEditboxTemplate()
+	TradeSkillInputBox:SetEditboxTemplate()
+	TradeSkillIncrementButton:Point("RIGHT", TradeSkillCreateButton, "LEFT", -13, 0)
+	STYLE:ApplyCloseButtonStyle(TradeSkillFrameCloseButton)
+	STYLE:ApplyScrollFrameStyle(TradeSkillDetailScrollFrameScrollBar)
+	local once = false
+	hooksecurefunc("TradeSkillFrame_SetSelection", function(id)
+		TradeSkillSkillIcon:SetButtonTemplate()
+
+		if TradeSkillSkillIcon:GetNormalTexture() then
+			TradeSkillSkillIcon:GetNormalTexture():SetTexCoord(0.1,0.9,0.1,0.9)
+			TradeSkillSkillIcon:GetNormalTexture():ClearAllPoints()
+			TradeSkillSkillIcon:GetNormalTexture():Point("TOPLEFT", 2, -2)
+			TradeSkillSkillIcon:GetNormalTexture():Point("BOTTOMRIGHT", -2, 2)
+		end
+
+		for i = 1, MAX_TRADE_SKILL_REAGENTS do
+			local button = _G["TradeSkillReagent"..i]
+			local icon = _G["TradeSkillReagent"..i.."IconTexture"]
+			local count = _G["TradeSkillReagent"..i.."Count"]
+			icon:SetTexCoord(0.1,0.9,0.1,0.9)
+			icon:SetDrawLayer("OVERLAY")
+			if not icon.backdrop then
+				icon.backdrop = CreateFrame("Frame", nil, button)
+				icon.backdrop:SetFrameLevel(button:GetFrameLevel() - 1)
+				STYLE:ApplyFrameStyle(icon.backdrop,"Transparent")
+				icon.backdrop:Point("TOPLEFT", icon, "TOPLEFT", -2, 2)
+				icon.backdrop:Point("BOTTOMRIGHT", icon, "BOTTOMRIGHT", 2, -2)
+			end
+			icon:SetParent(icon.backdrop)
+			count:SetParent(icon.backdrop)
+			count:SetDrawLayer("OVERLAY")
+			if i > 2 and once == false then
+				local point, anchoredto, point2, x, y = button:GetPoint()
+				button:ClearAllPoints()
+				button:Point(point, anchoredto, point2, x, y - 3)
+				once = true
+			end
+			_G["TradeSkillReagent"..i.."NameFrame"]:Die()
+		end
+	end)
+
+	TradeSkillDW_QueueFrame:HookScript("OnShow", function() STYLE:ApplyFrameStyle(TradeSkillDW_QueueFrame,"Transparent") end)
+
+	STYLE:ApplyCloseButtonStyle(TradeSkillDW_QueueFrameCloseButton)
+
+	TradeSkillDW_QueueFrameInset:RemoveTextures()
+	TradeSkillDW_QueueFrameClear:SetButtonTemplate()
+	TradeSkillDW_QueueFrameDown:SetButtonTemplate()
+	TradeSkillDW_QueueFrameUp:SetButtonTemplate()
+	TradeSkillDW_QueueFrameDo:SetButtonTemplate()
+	TradeSkillDW_QueueFrameDetailScrollFrame:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrame:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent1:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent2:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent3:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent4:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent5:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent6:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent7:RemoveTextures()
+	TradeSkillDW_QueueFrameDetailScrollFrameChildFrameReagent8:RemoveTextures()
+	STYLE:ApplyScrollFrameStyle(TradeSkillDW_QueueFrameDetailScrollFrameScrollBar)
+	TradeSkillListScrollFrame:RemoveTextures()
+end
+STYLE:SaveAddonStyle("TradeSkillDW", StyleTradeSkillDW)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/VEM.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/VEM.lua
new file mode 100644
index 0000000..5942c5f
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/VEM.lua
@@ -0,0 +1,250 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+VEM
+##########################################################
+]]--
+local RaidNotice_AddMessage_ = RaidNotice_AddMessage
+local NewHook = hooksecurefunc
+
+local function StyleBars(self)
+	for bar in self:GetBarIterator() do
+		if not bar.injected then
+			bar.ApplyStyle = function()
+				local frame = bar.frame
+				local tbar = _G[frame:GetName()..'Bar']
+				local spark = _G[frame:GetName()..'BarSpark']
+				local texture = _G[frame:GetName()..'BarTexture']
+				local icon1 = _G[frame:GetName()..'BarIcon1']
+				local icon2 = _G[frame:GetName()..'BarIcon2']
+				local name = _G[frame:GetName()..'BarName']
+				local timer = _G[frame:GetName()..'BarTimer']
+
+				if not icon1.overlay then
+					icon1.overlay = CreateFrame('Frame', '$parentIcon1Overlay', tbar)
+					icon1.overlay:SetFixedPanelTemplate()
+					icon1.overlay:SetFrameLevel(0)
+					icon1.overlay:Size(22)
+					icon1.overlay:Point('BOTTOMRIGHT', frame, 'BOTTOMLEFT', -2, 0)
+				end
+				if not icon2.overlay then
+					icon2.overlay = CreateFrame('Frame', '$parentIcon2Overlay', tbar)
+					icon2.overlay:SetFixedPanelTemplate()
+					icon2.overlay:SetFrameLevel(0)
+					icon2.overlay:Size(22)
+					icon2.overlay:Point('BOTTOMLEFT', frame, 'BOTTOMRIGHT', 2, 0)
+				end
+
+				if bar.color then
+					tbar:SetStatusBarColor(bar.color.r, bar.color.g, bar.color.b)
+				else
+					tbar:SetStatusBarColor(bar.owner.options.StartColorR, bar.owner.options.StartColorG, bar.owner.options.StartColorB)
+				end
+
+				if bar.enlarged then
+					frame:SetWidth(bar.owner.options.HugeWidth)
+					tbar:SetWidth(bar.owner.options.HugeWidth)
+					frame:SetScale(bar.owner.options.HugeScale)
+				else
+					frame:SetWidth(bar.owner.options.Width)
+					tbar:SetWidth(bar.owner.options.Width)
+					frame:SetScale(bar.owner.options.Scale)
+				end
+
+				spark:SetAlpha(0)
+				spark:SetTexture(0,0,0,0)
+
+				icon1:SetTexCoord(0.1,0.9,0.1,0.9)
+				icon1:ClearAllPoints()
+				icon1:FillInner(icon1.overlay)
+
+				icon2:SetTexCoord(0.1,0.9,0.1,0.9)
+				icon2:ClearAllPoints()
+				icon2:FillInner(icon2.overlay)
+
+				texture:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+				tbar:FillInner(frame)
+
+				frame:SetFixedPanelTemplate()
+
+				name:ClearAllPoints()
+				name:SetWidth(165)
+				name:SetHeight(8)
+				name:SetJustifyH('LEFT')
+				name:SetShadowColor(0, 0, 0, 0)
+				timer:ClearAllPoints()
+				timer:SetJustifyH('RIGHT')
+				timer:SetShadowColor(0, 0, 0, 0)
+
+				frame:SetHeight(22)
+				name:Point('LEFT', frame, 'LEFT', 4, 0)
+				timer:Point('RIGHT', frame, 'RIGHT', -4, 0)
+
+				name:SetFont(SV.Media.font.default, 12, 'OUTLINE')
+				timer:SetFont(SV.Media.font.default, 12, 'OUTLINE')
+
+				name:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
+				timer:SetTextColor(bar.owner.options.TextColorR, bar.owner.options.TextColorG, bar.owner.options.TextColorB)
+
+				if bar.owner.options.IconLeft then icon1:Show() icon1.overlay:Show() else icon1:Hide() icon1.overlay:Hide() end
+				if bar.owner.options.IconRight then icon2:Show() icon2.overlay:Show() else icon2:Hide() icon2.overlay:Hide() end
+
+				tbar:SetAlpha(1)
+				frame:SetAlpha(1)
+				texture:SetAlpha(1)
+				frame:Show()
+				bar:Update(0)
+				bar.injected = true
+			end
+			bar:ApplyStyle()
+		end
+	end
+end
+
+local StyleBossTitle = function()
+	local anchor = VEMBossHealthDropdown:GetParent()
+	if not anchor.styled then
+		local header = {anchor:GetRegions()}
+		if header[1]:IsObjectType('FontString') then
+			header[1]:SetFont(SV.Media.font.default, 12, 'OUTLINE')
+			header[1]:SetTextColor(1, 1, 1)
+			header[1]:SetShadowColor(0, 0, 0, 0)
+			anchor.styled = true
+		end
+		header = nil
+	end
+	anchor = nil
+end
+
+local StyleBoss = function()
+	local count = 1
+	while _G[format('VEM_BossHealth_Bar_%d', count)] do
+		local bar = _G[format('VEM_BossHealth_Bar_%d', count)]
+		local background = _G[bar:GetName()..'BarBorder']
+		local progress = _G[bar:GetName()..'Bar']
+		local name = _G[bar:GetName()..'BarName']
+		local timer = _G[bar:GetName()..'BarTimer']
+		local prev = _G[format('VEM_BossHealth_Bar_%d', count-1)]
+		local _, anch, _ ,_, _ = bar:GetPoint()
+		bar:ClearAllPoints()
+		if count == 1 then
+			if VEM_SavedOptions.HealthFrameGrowUp then
+				bar:Point('BOTTOM', anch, 'TOP' , 0 , 12)
+			else
+				bar:Point('TOP', anch, 'BOTTOM' , 0, -22)
+			end
+		else
+			if VEM_SavedOptions.HealthFrameGrowUp then
+				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, 26)
+			else
+				bar:Point('TOPLEFT', prev, 'TOPLEFT', 0, -26)
+			end
+		end
+		bar:SetFixedPanelTemplate('Transparent')
+		background:SetNormalTexture(nil)
+		progress:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+		progress:ClearAllPoints()
+		progress:FillInner(bar)
+		name:ClearAllPoints()
+		name:SetJustifyH('LEFT')
+		name:SetShadowColor(0, 0, 0, 0)
+		timer:ClearAllPoints()
+		timer:SetJustifyH('RIGHT')
+		timer:SetShadowColor(0, 0, 0, 0)
+
+		bar:SetHeight(22)
+		name:Point('LEFT', bar, 'LEFT', 4, 0)
+		timer:Point('RIGHT', bar, 'RIGHT', -4, 0)
+
+		name:SetFont(SV.Media.font.default, 12, 'OUTLINE')
+		timer:SetFont(SV.Media.font.default, 12, 'OUTLINE')
+		count = count + 1
+	end
+end
+
+local _hook_OnShow = function(self)
+	if(not self.Panel) then
+		self:SetFixedPanelTemplate('Transparent')
+	end
+end
+
+local function StyleVEM(event, addon)
+	assert(VEM, "AddOn Not Loaded")
+
+	if event == 'PLAYER_ENTERING_WORLD' then
+		NewHook(DBT, 'CreateBar', StyleBars)
+		NewHook(VEM.BossHealth, 'Show', StyleBossTitle)
+		NewHook(VEM.BossHealth, 'AddBoss', StyleBoss)
+		NewHook(VEM.BossHealth, 'UpdateSettings', StyleBoss)
+
+		if not VEM_SavedOptions['DontShowRangeFrame'] then
+			VEM.RangeCheck:Show()
+			VEM.RangeCheck:Hide()
+			VEMRangeCheck:HookScript('OnShow', _hook_OnShow)
+			VEMRangeCheckRadar:SetFixedPanelTemplate('Transparent')
+		end
+
+		if not VEM_SavedOptions['DontShowInfoFrame'] then
+			VEM.InfoFrame:Show(5, 'test')
+			VEM.InfoFrame:Hide()
+			VEMInfoFrame:HookScript('OnShow', _hook_OnShow)
+		end
+
+		RaidNotice_AddMessage = function(noticeFrame, textString, colorInfo)
+			if textString:find(' |T') then
+				textString = gsub(textString,'(:12:12)',':18:18:0:0:64:64:5:59:5:59')
+			end
+			return RaidNotice_AddMessage_(noticeFrame, textString, colorInfo)
+		end
+	end
+
+	if addon == 'VEM-GUI' then
+		VEM_GUI_OptionsFrame:HookScript('OnShow', function()
+			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFrame)
+			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFrameBossMods)
+			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFrameVEMOptions)
+			STYLE:ApplyFrameStyle(VEM_GUI_OptionsFramePanelContainer, 'Transparent', true)
+		end)
+		STYLE:ApplyTabStyle(VEM_GUI_OptionsFrameTab1)
+		STYLE:ApplyTabStyle(VEM_GUI_OptionsFrameTab2)
+		VEM_GUI_OptionsFrameOkay:SetButtonTemplate()
+		VEM_GUI_OptionsFrameWebsiteButton:SetButtonTemplate()
+		STYLE:ApplyScrollFrameStyle(VEM_GUI_OptionsFramePanelContainerFOVScrollBar)
+		STYLE:SafeEventRemoval("VEM", event)
+	end
+end
+STYLE:SaveAddonStyle("VEM", StyleVEM, nil, true)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/_load.xml b/Interface/AddOns/SVUI_StyleOMatic/components/addons/_load.xml
new file mode 100644
index 0000000..c9d2037
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/_load.xml
@@ -0,0 +1,28 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='Ace3.lua'/>
+	<Script file='ACP.lua'/>
+	<Script file='AdiBags.lua'/>
+	<Script file='Altoholic.lua'/>
+	<Script file='AtlasLoot.lua'/>
+	<Script file='AuctionLite.lua'/>
+	<Script file='alDamageMeter.lua'/>
+	<Script file='BigWigs.lua'/>
+	<Script file='Bugsack.lua'/>
+	<Script file='Clique.lua'/>
+	<Script file='Cooline.lua'/>
+	<Script file='DBM.lua'/>
+	<Script file='DXE.lua'/>
+	<Script file='LightHeaded.lua'/>
+	<Script file='Mogit.lua'/>
+	<Script file='Omen.lua'/>
+	<Script file='Outfitter.lua'/>
+	<Script file='Postal.lua'/>
+	<Script file='Quartz.lua'/>
+	<Script file='Recount.lua'/>
+	<Script file='SexyCooldown.lua'/>
+	<Script file='Skada.lua'/>
+	<Script file='TinyDPS.lua'/>
+	<Script file='TomTom.lua'/>
+	<Script file='TradeSkillDW.lua'/>
+	<Script file='VEM.lua'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua
new file mode 100644
index 0000000..dc09a34
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua
@@ -0,0 +1,65 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local string 	= _G.string;
+--[[ STRING METHODS ]]--
+local format = string.format;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ALDAMAGEMETER
+##########################################################
+]]--
+local function StyleALDamageMeter()
+  assert(_G['alDamagerMeterFrame'], "AddOn Not Loaded")
+
+  alDamageMeterFrame.bg:Die()
+  STYLE:ApplyFrameStyle(alDamageMeterFrame)
+  alDamageMeterFrame:HookScript('OnShow', function()
+    if InCombatLockdown() then return end
+    if SV.CurrentlyDocked["alDamagerMeterFrame"] then
+      SuperDockWindowRight:Show()
+    end
+  end)
+end
+STYLE:SaveAddonStyle("alDamageMeter", StyleALDamageMeter)
+
+function STYLE:Docklet_alDamageMeter(parent)
+  if not _G['alDamagerMeterFrame'] then return end
+  local parentFrame=_G['alDamagerMeterFrame']:GetParent();
+  dmconf.barheight=floor(parentFrame:GetHeight()/dmconf.maxbars-dmconf.spacing)
+  dmconf.width=parentFrame:GetWidth()
+  alDamageMeterFrame:ClearAllPoints()
+  alDamageMeterFrame:SetAllPoints(parent)
+  alDamageMeterFrame.backdrop:SetFixedPanelTemplate('Transparent',true)
+  alDamageMeterFrame.bg:Die()
+  alDamageMeterFrame:SetFrameStrata('LOW')
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/_load.xml b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/_load.xml
new file mode 100644
index 0000000..0c36331
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/_load.xml
@@ -0,0 +1,51 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='achievement.lua'/>
+	<Script file='alert.lua'/>
+	<Script file='archeology.lua'/>
+	<Script file='auctionhouse.lua'/>
+	<Script file='barbershop.lua'/>
+	<Script file='battlefield.lua'/>
+	<Script file='blackmarket.lua'/>
+	<Script file='calendar.lua'/>
+	<Script file='challenges.lua'/>
+	<Script file='chat.lua'/>
+	<Script file='character.lua'/>
+	<Script file='dressup.lua'/>
+	<Script file='encounterjournal.lua'/>
+	<Script file='friends.lua'/>
+	<Script file='gossip.lua'/>
+	<Script file='guild.lua'/>
+	<Script file='help.lua'/>
+	<Script file='inspect.lua'/>
+	<Script file='itemsocketing.lua'/>
+	<Script file='itemupgrade.lua'/>
+	<Script file='keybinding.lua'/>
+	<Script file='lfd.lua'/>
+	<Script file='loothistory.lua'/>
+	<Script file='lossofcontrol.lua'/>
+	<Script file='macro.lua'/>
+	<Script file='mailbox.lua'/>
+	<Script file='merchant.lua'/>
+	<Script file='petbattle.lua'/>
+	<Script file='petition.lua'/>
+	<Script file='petjournal.lua'/>
+	<Script file='petstable.lua'/>
+	<Script file='pvp.lua'/>
+	<Script file='quest.lua'/>
+	<Script file='raid.lua'/>
+	<Script file='reforging.lua'/>
+	<Script file='spellbook.lua'/>
+	<Script file='tabard.lua'/>
+	<Script file='talents.lua'/>
+	<Script file='taxi.lua'/>
+	<Script file='timemanager.lua'/>
+	<Script file='trade.lua'/>
+	<Script file='tradeskill.lua'/>
+	<Script file='trainer.lua'/>
+	<Script file='transmog.lua'/>
+	<Script file='voidstorage.lua'/>
+	<Script file='worldmap.lua'/>
+	<Script file='worldstate.lua'/>
+	<Script file='store.lua'/>
+	<Script file='system.lua'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua
new file mode 100644
index 0000000..8f4ed77
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/achievement.lua
@@ -0,0 +1,454 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local AchievementFrameList = {
+	"AchievementFrame",
+	"AchievementFrameCategories",
+	"AchievementFrameSummary",
+	"AchievementFrameHeader",
+	"AchievementFrameSummaryCategoriesHeader",
+	"AchievementFrameSummaryAchievementsHeader",
+	"AchievementFrameStatsBG",
+	"AchievementFrameAchievements",
+	"AchievementFrameComparison",
+	"AchievementFrameComparisonHeader",
+	"AchievementFrameComparisonSummaryPlayer",
+	"AchievementFrameComparisonSummaryFriend"
+}
+
+local AchievementTextureList = {
+	"AchievementFrameStats",
+	"AchievementFrameSummary",
+	"AchievementFrameAchievements",
+	"AchievementFrameComparison"
+}
+
+local AchievementItemButtons = {
+	"AchievementFrameAchievementsContainerButton1",
+	"AchievementFrameAchievementsContainerButton2",
+	"AchievementFrameAchievementsContainerButton3",
+	"AchievementFrameAchievementsContainerButton4",
+	"AchievementFrameAchievementsContainerButton5",
+	"AchievementFrameAchievementsContainerButton6",
+	"AchievementFrameAchievementsContainerButton7",
+}
+
+local _hook_DescriptionColor = function(self, r, g, b)
+	if(r ~= 0.6 or g ~= 0.6 or b ~= 0.6) then
+		self:SetTextColor(0.6, 0.6, 0.6)
+	end
+end
+
+local _hook_HiddenDescriptionColor = function(self, r, g, b)
+	if(r ~= 1 or g ~= 1 or b ~= 1) then
+		self:SetTextColor(1, 1, 1)
+	end
+end
+
+local _hook_TrackingPoint = function(self, anchor, parent, relative, x, y)
+	local actual = self.ListParent
+	if(anchor ~= "BOTTOMLEFT" or parent ~= actual or relative ~= "BOTTOMLEFT" or x ~= 5 or y ~= 5) then
+		self:ClearAllPoints()
+		self:Point("BOTTOMLEFT", actual, "BOTTOMLEFT", 5, 5)
+	end
+end
+
+local _hook_AchievementsUpdate = function()
+	for i = 1, ACHIEVEMENTUI_MAX_SUMMARY_ACHIEVEMENTS do
+		local globalName = ("AchievementFrameSummaryAchievement%d"):format(i)
+		local summary = _G[globalName]
+		if(summary) then
+			summary:RemoveTextures()
+			summary:SetButtonTemplate()
+
+			local highlight = _G[("%sHighlight"):format(globalName)]
+			local desc = _G[("%sDescription"):format(globalName)]
+			local icon = _G[("%sIcon"):format(globalName)]
+			local iconbling = _G[("%sIconBling"):format(globalName)]
+			local iconover = _G[("%sIconOverlay"):format(globalName)]
+			local icontex = _G[("%sIconTexture"):format(globalName)]
+
+			if(highlight) then highlight:Die() end
+			if(desc) then desc:SetTextColor(0.6, 0.6, 0.6) end
+			if(iconbling) then iconbling:Die() end
+			if(iconover) then iconover:Die() end
+			if(icontex) then
+				icontex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				icontex:FillInner()
+			end
+			if(icon and not icon.Panel) then
+				icon:SetFixedPanelTemplate("Slot")
+				icon:Height(icon:GetHeight() - 14)
+				icon:Width(icon:GetWidth() - 14)
+				icon:ClearAllPoints()
+				icon:Point("LEFT", 6, 0)
+			end
+
+			if summary.accountWide then
+				summary:SetBackdropBorderColor(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
+			else
+				summary:SetBackdropBorderColor(0,0,0,1)
+			end
+		end
+	end
+end
+
+local function BarStyleHelper(bar)
+	bar:RemoveTextures()
+	bar:SetStatusBarTexture(SV.Media.bar.default)
+	bar:SetStatusBarColor(4/255, 179/255, 30/255)
+	bar:SetPanelTemplate("Default")
+	if _G[bar:GetName().."Title"]then
+		_G[bar:GetName().."Title"]:SetPoint("LEFT", 4, 0)
+	end
+	if _G[bar:GetName().."Label"]then
+		_G[bar:GetName().."Label"]:SetPoint("LEFT", 4, 0)
+	end
+	if _G[bar:GetName().."Text"]then
+		_G[bar:GetName().."Text"]:SetPoint("RIGHT", -4, 0)
+	end
+end
+--[[
+##########################################################
+ACHIEVEMENTFRAME STYLER
+##########################################################
+]]--
+local function AchievementStyle()
+	if SV.db[Schema].blizzard.enable  ~= true or SV.db[Schema].blizzard.achievement  ~= true then
+		return
+	end
+
+	for _, gName in pairs(AchievementFrameList) do
+		local frame = _G[gName]
+		if(frame) then
+			frame:RemoveTextures(true)
+		end
+	end
+
+	for _, gName in pairs(AchievementTextureList) do
+		local frame = _G[gName]
+		if(frame) then
+			local count = frame:GetNumChildren()
+			for i = 1, count do
+				local childFrame = select(i, frame:GetChildren())
+				if(childFrame and not childFrame:GetName()) then
+					childFrame:SetBackdrop(nil)
+				end
+			end
+		end
+	end
+
+	STYLE:ApplyWindowStyle(AchievementFrame)
+
+	AchievementFrameSummaryAchievements:RemoveTextures(true)
+	AchievementFrameSummaryAchievements:SetBasicPanel()
+	AchievementFrameHeaderTitle:ClearAllPoints()
+	AchievementFrameHeaderTitle:Point("TOPLEFT", AchievementFrame.Panel, "TOPLEFT", -30, -8)
+	AchievementFrameHeaderPoints:ClearAllPoints()
+	AchievementFrameHeaderPoints:Point("LEFT", AchievementFrameHeaderTitle, "RIGHT", 2, 0)
+	AchievementFrameCategoriesContainer:SetPanelTemplate("Inset", true, 2, -2, 2)
+	AchievementFrameAchievementsContainer:SetPanelTemplate("Default")
+	AchievementFrameAchievementsContainer.Panel:Point("TOPLEFT", 0, 2)
+	AchievementFrameAchievementsContainer.Panel:Point("BOTTOMRIGHT", -3, -3)
+	STYLE:ApplyCloseButtonStyle(AchievementFrameCloseButton, AchievementFrame.Panel)
+	STYLE:ApplyDropdownStyle(AchievementFrameFilterDropDown)
+	AchievementFrameFilterDropDown:Point("TOPRIGHT", AchievementFrame, "TOPRIGHT", -44, 5)
+
+	STYLE:ApplyScrollFrameStyle(AchievementFrameCategoriesContainerScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(AchievementFrameAchievementsContainerScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(AchievementFrameStatsContainerScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(AchievementFrameComparisonContainerScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(AchievementFrameComparisonStatsContainerScrollBar, 5)
+
+	for i = 1, 3 do
+		local tab = _G["AchievementFrameTab"..i]
+		if(tab) then
+			STYLE:ApplyTabStyle(tab)
+			tab:SetFrameLevel(tab:GetFrameLevel() + 2)
+		end
+	end
+
+	BarStyleHelper(AchievementFrameSummaryCategoriesStatusBar)
+	BarStyleHelper(AchievementFrameComparisonSummaryPlayerStatusBar)
+	BarStyleHelper(AchievementFrameComparisonSummaryFriendStatusBar)
+
+	AchievementFrameComparisonSummaryFriendStatusBar.text:ClearAllPoints()
+	AchievementFrameComparisonSummaryFriendStatusBar.text:SetPoint("CENTER")
+	AchievementFrameComparisonHeader:Point("BOTTOMRIGHT", AchievementFrameComparison, "TOPRIGHT", 45, -20)
+
+	for f = 1, 10 do
+		local d = _G["AchievementFrameSummaryCategoriesCategory"..f]
+		local i = _G["AchievementFrameSummaryCategoriesCategory"..f.."Button"]
+		local j = _G["AchievementFrameSummaryCategoriesCategory"..f.."ButtonHighlight"]
+		BarStyleHelper(d)
+		i:RemoveTextures()
+		j:RemoveTextures()
+		_G[j:GetName().."Middle"]:SetTexture(1, 1, 1, 0.3)
+		_G[j:GetName().."Middle"]:SetAllPoints(d)
+	end
+
+	AchievementFrame:HookScript("OnShow", function(self)
+		if(self.containerStyled) then return end
+		for i = 1, 20 do
+			STYLE:ApplyItemButtonStyle(_G["AchievementFrameCategoriesContainerButton"..i])
+		end
+		self.containerStyled = true
+	end)
+
+	hooksecurefunc("AchievementButton_DisplayAchievement", function(self)
+		if(self.accountWide and self.bg3) then
+			self.bg3:SetTexture(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
+		elseif self.bg3 then
+			self.bg3:SetTexture(0,0,0,1)
+		end
+	end)
+
+	hooksecurefunc("AchievementFrameSummary_UpdateAchievements", _hook_AchievementsUpdate)
+
+	for i = 1, #AchievementItemButtons do
+		local gName = AchievementItemButtons[i]
+		local button = _G[gName]
+
+		if(button) then
+			local hl = _G[gName.."Highlight"]
+			local desc = _G[gName.."Description"]
+			local hdesc = _G[gName.."HiddenDescription"]
+			local icon = _G[gName.."Icon"]
+			local track = _G[gName.."Tracked"]
+
+			if(hl) then hl:Die() end
+
+			button:RemoveTextures(true)
+
+			button.bg1 = button:CreateTexture(nil, "BACKGROUND", nil, 4)
+			button.bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+			button.bg1:SetVertexColor(unpack(SV.Media.color.default))
+			button.bg1:Point("TOPLEFT", 1, -1)
+			button.bg1:Point("BOTTOMRIGHT", -1, 1)
+
+			button.bg3 = button:CreateTexture(nil, "BACKGROUND", nil, 2)
+			button.bg3:SetTexture(unpack(SV.Media.color.default))
+			button.bg3:WrapOuter(1)
+
+			if(desc) then
+				desc:SetTextColor(0.6, 0.6, 0.6)
+				hooksecurefunc(desc, "SetTextColor", _hook_DescriptionColor)
+			end
+
+			if(hdesc) then
+				hdesc:SetTextColor(1, 1, 1)
+				hooksecurefunc(hdesc, "SetTextColor", _hook_HiddenDescriptionColor)
+			end
+
+			if(icon) then
+				local bling = _G[gName.."IconBling"]
+				local over = _G[gName.."IconOverlay"]
+				local tex = _G[gName.."IconTexture"]
+				if(bling) then bling:Die() end
+				if(over) then over:Die() end
+				if(tex) then
+					tex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+					tex:FillInner()
+				end
+
+				icon:SetFixedPanelTemplate("Default")
+				icon:Height(icon:GetHeight()-14)
+				icon:Width(icon:GetWidth()-14)
+				icon:ClearAllPoints()
+				icon:Point("LEFT", 6, 0)
+			end
+
+			if(track) then
+				track:RemoveTextures()
+				track:SetCheckboxTemplate(true)
+				track:ClearAllPoints()
+				track:Point("BOTTOMLEFT", d, "BOTTOMLEFT", -1, -3)
+				track.ListParent = button
+
+				hooksecurefunc(track, "SetPoint", _hook_TrackingPoint)
+			end
+		end
+	end
+
+	local u = {"Player", "Friend"}
+	for c, v in pairs(u) do
+		for f = 1, 9 do
+			local d = "AchievementFrameComparisonContainerButton"..f..v;
+			_G[d]:RemoveTextures()
+			_G[d.."Background"]:Die()
+			if _G[d.."Description"]then
+				_G[d.."Description"]:SetTextColor(0.6, 0.6, 0.6)
+				hooksecurefunc(_G[d.."Description"], "SetTextColor", _hook_DescriptionColor)
+			end
+			_G[d].bg1 = _G[d]:CreateTexture(nil, "BACKGROUND")
+			_G[d].bg1:SetDrawLayer("BACKGROUND", 4)
+			_G[d].bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+			_G[d].bg1:SetVertexColor(unpack(SV.Media.color.default))
+			_G[d].bg1:Point("TOPLEFT", 4, -4)
+			_G[d].bg1:Point("BOTTOMRIGHT", -4, 4)
+			_G[d].bg2 = _G[d]:CreateTexture(nil, "BACKGROUND")
+			_G[d].bg2:SetDrawLayer("BACKGROUND", 3)
+			_G[d].bg2:SetTexture(0, 0, 0)
+			_G[d].bg2:Point("TOPLEFT", 3, -3)
+			_G[d].bg2:Point("BOTTOMRIGHT", -3, 3)
+			_G[d].bg3 = _G[d]:CreateTexture(nil, "BACKGROUND")
+			_G[d].bg3:SetDrawLayer("BACKGROUND", 2)
+			_G[d].bg3:SetTexture(0,0,0,1)
+			_G[d].bg3:Point("TOPLEFT", 2, -2)
+			_G[d].bg3:Point("BOTTOMRIGHT", -2, 2)
+			_G[d].bg4 = _G[d]:CreateTexture(nil, "BACKGROUND")
+			_G[d].bg4:SetDrawLayer("BACKGROUND", 1)
+			_G[d].bg4:SetTexture(0, 0, 0)
+			_G[d].bg4:Point("TOPLEFT", 1, -1)
+			_G[d].bg4:Point("BOTTOMRIGHT", -1, 1)
+
+			if v == "Friend"then
+				_G[d.."Shield"]:Point("TOPRIGHT", _G["AchievementFrameComparisonContainerButton"..f.."Friend"], "TOPRIGHT", -20, -3)
+			end
+
+			_G[d.."IconBling"]:Die()
+			_G[d.."IconOverlay"]:Die()
+			_G[d.."Icon"]:SetFixedPanelTemplate("Default")
+			_G[d.."Icon"]:Height(_G[d.."Icon"]:GetHeight()-14)
+			_G[d.."Icon"]:Width(_G[d.."Icon"]:GetWidth()-14)
+			_G[d.."Icon"]:ClearAllPoints()
+			_G[d.."Icon"]:Point("LEFT", 6, 0)
+			_G[d.."IconTexture"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			_G[d.."IconTexture"]:FillInner()
+		end
+	end
+
+	hooksecurefunc("AchievementFrameComparison_DisplayAchievement", function(i)
+		local w = i.player;
+		local x = i.friend
+		w.titleBar:Die()
+		x.titleBar:Die()
+		if not w.bg3 or not x.bg3 then
+			return
+		end
+		if w.accountWide then
+			w.bg3:SetTexture(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
+		else
+			w.bg3:SetTexture(0,0,0,1)
+		end
+
+		if x.accountWide then
+			x.bg3:SetTexture(ACHIEVEMENTUI_BLUEBORDER_R, ACHIEVEMENTUI_BLUEBORDER_G, ACHIEVEMENTUI_BLUEBORDER_B)
+		else
+			x.bg3:SetTexture(0,0,0,1)
+		end
+	end)
+
+	for f = 1, 20 do
+		local d = _G["AchievementFrameStatsContainerButton"..f]
+		_G["AchievementFrameStatsContainerButton"..f.."BG"]:SetTexture(1, 1, 1, 0.2)
+		_G["AchievementFrameStatsContainerButton"..f.."HeaderLeft"]:Die()
+		_G["AchievementFrameStatsContainerButton"..f.."HeaderRight"]:Die()
+		_G["AchievementFrameStatsContainerButton"..f.."HeaderMiddle"]:Die()
+		local d = "AchievementFrameComparisonStatsContainerButton"..f;
+		_G[d]:RemoveTextures()
+		_G[d]:SetPanelTemplate("Default")
+		_G[d.."BG"]:SetTexture(1, 1, 1, 0.2)
+		_G[d.."HeaderLeft"]:Die()
+		_G[d.."HeaderRight"]:Die()
+		_G[d.."HeaderMiddle"]:Die()
+	end
+
+	hooksecurefunc("AchievementButton_GetProgressBar", function(y)
+		local d = _G["AchievementFrameProgressBar"..y]
+		if d then
+			if not d.styled then
+				d:RemoveTextures()
+				d:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+				d:SetStatusBarColor(4/255, 179/255, 30/255)
+				d:SetFrameLevel(d:GetFrameLevel()+3)
+				d:Height(d:GetHeight()-2)
+				d.bg1 = d:CreateTexture(nil, "BACKGROUND")
+				d.bg1:SetDrawLayer("BACKGROUND", 4)
+				d.bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+				d.bg1:SetVertexColor(unpack(SV.Media.color.default))
+				d.bg1:SetAllPoints()
+				d.bg3 = d:CreateTexture(nil, "BACKGROUND")
+				d.bg3:SetDrawLayer("BACKGROUND", 2)
+				d.bg3:SetTexture(0,0,0,1)
+				d.bg3:Point("TOPLEFT", -1, 1)
+				d.bg3:Point("BOTTOMRIGHT", 1, -1);
+				d.text:ClearAllPoints()
+				d.text:SetPoint("CENTER", d, "CENTER", 0, -1)
+				d.text:SetJustifyH("CENTER")
+				if y>1 then
+					d:ClearAllPoints()
+					d:Point("TOP", _G["AchievementFrameProgressBar"..y-1], "BOTTOM", 0, -5)
+					hooksecurefunc(d, "SetPoint", function(k, p, q, r, s, t, z)
+						if not z then
+							k:ClearAllPoints()k:SetPoint("TOP", _G["AchievementFrameProgressBar"..y-1], "BOTTOM", 0, -5, true)
+						end
+					end)
+				end
+				d.styled = true
+			end
+		end
+	end)
+
+	hooksecurefunc("AchievementObjectives_DisplayCriteria", function(A, B)
+		local C = GetAchievementNumCriteria(B)
+		local D, E = 0, 0;
+		for f = 1, C do
+			local F, G, H, I, J, K, L, M, N = GetAchievementCriteriaInfo(B, f)
+			if G == CRITERIA_TYPE_ACHIEVEMENT and M then
+				E = E+1;
+				local O = AchievementButton_GetMeta(E)
+				if A.completed and H then
+					O.label:SetShadowOffset(0, 0)
+					O.label:SetTextColor(1, 1, 1, 1)
+				elseif H then
+					O.label:SetShadowOffset(1, -1)
+					O.label:SetTextColor(0, 1, 0, 1)
+				else
+					O.label:SetShadowOffset(1, -1)
+					O.label:SetTextColor(.6, .6, .6, 1)
+				end
+			elseif G  ~= 1 then
+				D = D+1;
+				local P = AchievementButton_GetCriteria(D)
+				if A.completed and H then
+					P.name:SetTextColor(1, 1, 1, 1)
+					P.name:SetShadowOffset(0, 0)
+				elseif H then
+					P.name:SetTextColor(0, 1, 0, 1)
+					P.name:SetShadowOffset(1, -1)
+				else
+					P.name:SetTextColor(.6, .6, .6, 1)
+					P.name:SetShadowOffset(1, -1)
+				end
+			end
+		end
+	end)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_AchievementUI", AchievementStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua
new file mode 100644
index 0000000..04dc87d
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua
@@ -0,0 +1,343 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local AlphaHelper = function(self, value, flag)
+	if(not flag and value ~= 1) then
+		self:SetAlpha(1, true)
+	end
+end
+--[[
+##########################################################
+ALERTFRAME STYLER
+##########################################################
+]]--
+local function AlertStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.alertframes ~= true then return end
+
+	for i = 1, 4 do
+		local alert = _G["SVUI_SystemAlert"..i];
+		if(alert) then
+			for b = 1, 3 do
+				alert.buttons[b]:SetButtonTemplate()
+			end
+			alert:RemoveTextures()
+			STYLE:ApplyAlertStyle(alert)
+			alert.input:SetEditboxTemplate()
+			alert.input.Panel:Point("TOPLEFT", -2, -4)
+			alert.input.Panel:Point("BOTTOMRIGHT", 2, 4)
+			alert.gold:SetEditboxTemplate()
+			alert.silver:SetEditboxTemplate()
+			alert.copper:SetEditboxTemplate()
+		end
+	end
+
+	hooksecurefunc("AlertFrame_SetAchievementAnchors", function()
+		for i = 1, MAX_ACHIEVEMENT_ALERTS do
+			local frame = _G["AchievementAlertFrame"..i]
+			if frame then
+				frame:SetAlpha(1)
+				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+				if not frame.Panel then
+					frame:SetBasicPanel()
+					frame.Panel:Point("TOPLEFT", _G[frame:GetName().."Background"], "TOPLEFT", -2, -6)
+					frame.Panel:Point("BOTTOMRIGHT", _G[frame:GetName().."Background"], "BOTTOMRIGHT", -2, 6)
+				end
+				_G["AchievementAlertFrame"..i.."Background"]:SetTexture(0,0,0,0)
+				_G["AchievementAlertFrame"..i.."OldAchievement"]:Die()
+				_G["AchievementAlertFrame"..i.."Glow"]:Die()
+				_G["AchievementAlertFrame"..i.."Shine"]:Die()
+				_G["AchievementAlertFrame"..i.."GuildBanner"]:Die()
+				_G["AchievementAlertFrame"..i.."GuildBorder"]:Die()
+				_G["AchievementAlertFrame"..i.."Unlocked"]:SetFontTemplate(nil, 12)
+				_G["AchievementAlertFrame"..i.."Unlocked"]:SetTextColor(1, 1, 1)
+				_G["AchievementAlertFrame"..i.."Name"]:SetFontTemplate(nil, 12)
+				_G["AchievementAlertFrame"..i.."IconTexture"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				_G["AchievementAlertFrame"..i.."IconOverlay"]:Die()
+				_G["AchievementAlertFrame"..i.."IconTexture"]:ClearAllPoints()
+				_G["AchievementAlertFrame"..i.."IconTexture"]:Point("LEFT", frame, 7, 0)
+				if not _G["AchievementAlertFrame"..i.."IconTexture"].b then
+					_G["AchievementAlertFrame"..i.."IconTexture"].b = CreateFrame("Frame", nil, _G["AchievementAlertFrame"..i])
+					_G["AchievementAlertFrame"..i.."IconTexture"].b:SetFixedPanelTemplate("Default")
+					_G["AchievementAlertFrame"..i.."IconTexture"].b:WrapOuter(_G["AchievementAlertFrame"..i.."IconTexture"])
+					_G["AchievementAlertFrame"..i.."IconTexture"]:SetParent(_G["AchievementAlertFrame"..i.."IconTexture"].b)
+				end
+			end
+		end
+	end)
+
+	hooksecurefunc("AlertFrame_SetDungeonCompletionAnchors", function()
+		for i = 1, DUNGEON_COMPLETION_MAX_REWARDS do
+			local frame = _G["DungeonCompletionAlertFrame"..i]
+			if frame then
+				frame:SetAlpha(1)
+
+				if(not frame.AlphaHooked) then
+					hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+					frame.AlphaHooked = true
+				end
+
+				if(not frame.Panel) then
+					frame:SetBasicPanel()
+					frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", -2, -6)
+					frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 6)
+				end
+
+				frame.shine:Die()
+				frame.glowFrame:Die()
+				frame.glowFrame.glow:Die()
+				frame.raidArt:Die()
+				frame.dungeonArt1:Die()
+				frame.dungeonArt2:Die()
+				frame.dungeonArt3:Die()
+				frame.dungeonArt4:Die()
+				frame.heroicIcon:Die()
+				frame.dungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				frame.dungeonTexture:SetDrawLayer("OVERLAY")
+				frame.dungeonTexture:ClearAllPoints()
+				frame.dungeonTexture:Point("LEFT", frame, 7, 0)
+
+				if not frame.dungeonTexture.b then
+					frame.dungeonTexture.b = CreateFrame("Frame", nil, frame)
+					frame.dungeonTexture.b:SetFixedPanelTemplate("Default")
+					frame.dungeonTexture.b:WrapOuter(frame.dungeonTexture)
+					frame.dungeonTexture:SetParent(frame.dungeonTexture.b)
+				end
+			end
+		end
+	end)
+
+	hooksecurefunc("AlertFrame_SetGuildChallengeAnchors", function()
+		local frame = GuildChallengeAlertFrame;
+		if frame then
+			frame:SetAlpha(1)
+
+			if(not frame.AlphaHooked) then
+				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+				frame.AlphaHooked = true
+			end
+
+			if(not frame.Panel) then
+				frame:SetBasicPanel()
+				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", -2, -6)
+				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 6)
+			end
+
+			local j = select(2, frame:GetRegions())
+			if j:GetObjectType() == "Texture"then
+				if j:GetTexture() == "Interface\\GuildFrame\\GuildChallenges"then j:Die()end
+			end
+
+			GuildChallengeAlertFrameGlow:Die()
+			GuildChallengeAlertFrameShine:Die()
+			GuildChallengeAlertFrameEmblemBorder:Die()
+			if not GuildChallengeAlertFrameEmblemIcon.b then
+				GuildChallengeAlertFrameEmblemIcon.b = CreateFrame("Frame", nil, frame)
+				GuildChallengeAlertFrameEmblemIcon.b:SetFixedPanelTemplate("Default")
+				GuildChallengeAlertFrameEmblemIcon.b:Point("TOPLEFT", GuildChallengeAlertFrameEmblemIcon, "TOPLEFT", -3, 3)
+				GuildChallengeAlertFrameEmblemIcon.b:Point("BOTTOMRIGHT", GuildChallengeAlertFrameEmblemIcon, "BOTTOMRIGHT", 3, -2)
+				GuildChallengeAlertFrameEmblemIcon:SetParent(GuildChallengeAlertFrameEmblemIcon.b)
+			end
+			SetLargeGuildTabardTextures("player", GuildChallengeAlertFrameEmblemIcon, nil, nil)
+		end
+	end)
+
+	hooksecurefunc("AlertFrame_SetChallengeModeAnchors", function()
+		local frame = ChallengeModeAlertFrame1;
+		if frame then
+			frame:SetAlpha(1)
+			hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+			if not frame.Panel then
+				frame:SetBasicPanel()
+				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", 19, -6)
+				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -22, 6)
+			end
+			for i = 1, frame:GetNumRegions()do
+				local j = select(i, frame:GetRegions())
+				if j:GetObjectType() == "Texture"then
+					if j:GetTexture() == "Interface\\Challenges\\challenges-main" then j:Die() end
+				end
+			end
+			ChallengeModeAlertFrame1Shine:Die()
+			ChallengeModeAlertFrame1GlowFrame:Die()
+			ChallengeModeAlertFrame1GlowFrame.glow:Die()
+			ChallengeModeAlertFrame1Border:Die()
+			ChallengeModeAlertFrame1DungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			ChallengeModeAlertFrame1DungeonTexture:ClearAllPoints()
+			ChallengeModeAlertFrame1DungeonTexture:Point("LEFT", frame.Panel, 9, 0)
+			if not ChallengeModeAlertFrame1DungeonTexture.b then
+				ChallengeModeAlertFrame1DungeonTexture.b = CreateFrame("Frame", nil, frame)
+				ChallengeModeAlertFrame1DungeonTexture.b:SetFixedPanelTemplate("Default")
+				ChallengeModeAlertFrame1DungeonTexture.b:WrapOuter(ChallengeModeAlertFrame1DungeonTexture)
+				ChallengeModeAlertFrame1DungeonTexture:SetParent(ChallengeModeAlertFrame1DungeonTexture.b)
+			end
+		end
+	end)
+
+	hooksecurefunc("AlertFrame_SetScenarioAnchors", function()
+		local frame = ScenarioAlertFrame1;
+		if frame then
+			frame:SetAlpha(1)
+			hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+			if not frame.Panel then
+				frame:SetBasicPanel()
+				frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", 4, 4)
+				frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -7, 6)
+			end
+			for i = 1, frame:GetNumRegions()do
+				local j = select(i, frame:GetRegions())
+				if j:GetObjectType() == "Texture"then
+					if j:GetTexture() == "Interface\\Scenarios\\ScenariosParts" then j:Die() end
+				end
+			end
+			ScenarioAlertFrame1Shine:Die()
+			ScenarioAlertFrame1GlowFrame:Die()
+			ScenarioAlertFrame1GlowFrame.glow:Die()
+			ScenarioAlertFrame1DungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			ScenarioAlertFrame1DungeonTexture:ClearAllPoints()
+			ScenarioAlertFrame1DungeonTexture:Point("LEFT", frame.Panel, 9, 0)
+			if not ScenarioAlertFrame1DungeonTexture.b then
+				ScenarioAlertFrame1DungeonTexture.b = CreateFrame("Frame", nil, frame)
+				ScenarioAlertFrame1DungeonTexture.b:SetFixedPanelTemplate("Default")
+				ScenarioAlertFrame1DungeonTexture.b:WrapOuter(ScenarioAlertFrame1DungeonTexture)
+				ScenarioAlertFrame1DungeonTexture:SetParent(ScenarioAlertFrame1DungeonTexture.b)
+			end
+		end
+	end)
+
+	hooksecurefunc("AlertFrame_SetCriteriaAnchors", function()
+		for i = 1, MAX_ACHIEVEMENT_ALERTS do
+			local frame = _G["CriteriaAlertFrame"..i]
+			if frame then
+				frame:SetAlpha(1)
+				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+				if not frame.Panel then
+					frame:SetBasicPanel()
+					frame.Panel:Point("TOPLEFT", frame, "TOPLEFT", -2, -6)
+					frame.Panel:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 6)
+				end
+				_G["CriteriaAlertFrame"..i.."Unlocked"]:SetTextColor(1, 1, 1)
+				_G["CriteriaAlertFrame"..i.."Name"]:SetTextColor(1, 1, 0)
+				_G["CriteriaAlertFrame"..i.."Background"]:Die()
+				_G["CriteriaAlertFrame"..i.."Glow"]:Die()
+				_G["CriteriaAlertFrame"..i.."Shine"]:Die()
+				_G["CriteriaAlertFrame"..i.."IconBling"]:Die()
+				_G["CriteriaAlertFrame"..i.."IconOverlay"]:Die()
+				if not _G["CriteriaAlertFrame"..i.."IconTexture"].b then
+					_G["CriteriaAlertFrame"..i.."IconTexture"].b = CreateFrame("Frame", nil, frame)
+					_G["CriteriaAlertFrame"..i.."IconTexture"].b:SetFixedPanelTemplate("Default")
+					_G["CriteriaAlertFrame"..i.."IconTexture"].b:Point("TOPLEFT", _G["CriteriaAlertFrame"..i.."IconTexture"], "TOPLEFT", -3, 3)
+					_G["CriteriaAlertFrame"..i.."IconTexture"].b:Point("BOTTOMRIGHT", _G["CriteriaAlertFrame"..i.."IconTexture"], "BOTTOMRIGHT", 3, -2)
+					_G["CriteriaAlertFrame"..i.."IconTexture"]:SetParent(_G["CriteriaAlertFrame"..i.."IconTexture"].b)
+				end
+				_G["CriteriaAlertFrame"..i.."IconTexture"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			end
+		end
+	end)
+
+	hooksecurefunc("AlertFrame_SetLootWonAnchors", function()
+		for i = 1, #LOOT_WON_ALERT_FRAMES do
+			local frame = LOOT_WON_ALERT_FRAMES[i]
+			if frame then
+				frame:SetAlpha(1)
+				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+				frame.Background:Die()
+				frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				frame.IconBorder:Die()
+				frame.glow:Die()
+				frame.shine:Die()
+				if not frame.Icon.b then
+					frame.Icon.b = CreateFrame("Frame", nil, frame)
+					frame.Icon.b:SetFixedPanelTemplate("Default")
+					frame.Icon.b:WrapOuter(frame.Icon)
+					frame.Icon:SetParent(frame.Icon.b)
+				end
+				if not frame.Panel then
+					frame:SetBasicPanel()
+					frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
+					frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
+				end
+			end
+		end
+	end)
+
+	hooksecurefunc("AlertFrame_SetMoneyWonAnchors", function()
+		for i = 1, #MONEY_WON_ALERT_FRAMES do
+			local frame = MONEY_WON_ALERT_FRAMES[i]
+			if frame then
+				frame:SetAlpha(1)
+				hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+				frame.Background:Die()
+				frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				frame.IconBorder:Die()
+				if not frame.Icon.b then
+					frame.Icon.b = CreateFrame("Frame", nil, frame)
+					frame.Icon.b:SetFixedPanelTemplate("Default")
+					frame.Icon.b:WrapOuter(frame.Icon)
+					frame.Icon:SetParent(frame.Icon.b)
+				end
+				if not frame.Panel then
+					frame:SetBasicPanel()
+					frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
+					frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
+				end
+			end
+		end
+	end)
+
+	local frame = BonusRollMoneyWonFrame;
+	frame:SetAlpha(1)
+	hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+	frame.Background:Die()
+	frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	frame.IconBorder:Die()
+	frame.Icon.b = CreateFrame("Frame", nil, frame)
+	frame.Icon.b:SetFixedPanelTemplate("Default")
+	frame.Icon.b:WrapOuter(frame.Icon)
+	frame.Icon:SetParent(frame.Icon.b)
+	frame:SetBasicPanel()
+	frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
+	frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
+
+	local frame = BonusRollLootWonFrame;
+	frame:SetAlpha(1)
+	hooksecurefunc(frame, "SetAlpha", AlphaHelper)
+	frame.Background:Die()
+	frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	frame.IconBorder:Die()
+	frame.glow:Die()
+	frame.shine:Die()
+	frame.Icon.b = CreateFrame("Frame", nil, frame)
+	frame.Icon.b:SetFixedPanelTemplate("Default")
+	frame.Icon.b:WrapOuter(frame.Icon)
+	frame.Icon:SetParent(frame.Icon.b)
+	frame:SetBasicPanel()
+	frame.Panel:SetPoint("TOPLEFT", frame.Icon.b, "TOPLEFT", -4, 4)
+	frame.Panel:SetPoint("BOTTOMRIGHT", frame.Icon.b, "BOTTOMRIGHT", 180, -4)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(AlertStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/archeology.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/archeology.lua
new file mode 100644
index 0000000..251045e
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/archeology.lua
@@ -0,0 +1,88 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ARCHEOLOGYFRAME STYLER
+##########################################################
+]]--
+--240 24
+local progressBarHolder = CreateFrame("Frame", "SVUI_ArcheologyProgressBar", nil)
+progressBarHolder:SetSize(240, 24)
+progressBarHolder:SetPoint("BOTTOM", CastingBarFrame, "TOP", 0, 10)
+SV.Mentalo:Add(progressBarHolder, "Archeology Progress Bar")
+
+local function ArchaeologyStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.archaeology ~= true then return end
+
+	ArchaeologyFrame:RemoveTextures()
+	ArchaeologyFrameInset:RemoveTextures()
+	ArchaeologyFrame:SetPanelTemplate("Halftone")
+	ArchaeologyFrame.Panel:SetAllPoints()
+	ArchaeologyFrame.portrait:SetAlpha(0)
+	ArchaeologyFrameInset:SetPanelTemplate("Inset")
+	ArchaeologyFrameInset.Panel:SetPoint("TOPLEFT")
+	ArchaeologyFrameInset.Panel:SetPoint("BOTTOMRIGHT", -3, -1)
+	ArchaeologyFrameArtifactPageSolveFrameSolveButton:SetButtonTemplate()
+	ArchaeologyFrameArtifactPageBackButton:SetButtonTemplate()
+	ArchaeologyFrameRaceFilter:SetFrameLevel(ArchaeologyFrameRaceFilter:GetFrameLevel()+2)
+	STYLE:ApplyDropdownStyle(ArchaeologyFrameRaceFilter, 125)
+	STYLE:ApplyPaginationStyle(ArchaeologyFrameCompletedPageNextPageButton)
+	STYLE:ApplyPaginationStyle(ArchaeologyFrameCompletedPagePrevPageButton)
+	ArchaeologyFrameRankBar:RemoveTextures()
+	ArchaeologyFrameRankBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	ArchaeologyFrameRankBar:SetFrameLevel(ArchaeologyFrameRankBar:GetFrameLevel()+2)
+	ArchaeologyFrameRankBar:SetPanelTemplate("Default")
+	ArchaeologyFrameArtifactPageSolveFrameStatusBar:RemoveTextures()
+	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetStatusBarColor(0.7, 0.2, 0)
+	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetFrameLevel(ArchaeologyFrameArtifactPageSolveFrameStatusBar:GetFrameLevel()+2)
+	ArchaeologyFrameArtifactPageSolveFrameStatusBar:SetPanelTemplate("Default")
+
+	for b = 1, ARCHAEOLOGY_MAX_COMPLETED_SHOWN do
+		local c = _G["ArchaeologyFrameCompletedPageArtifact"..b]
+		if c then
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Border"]:Die()
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Bg"]:Die()
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop = CreateFrame("Frame", nil, c)
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop:SetFixedPanelTemplate("Default")
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop:WrapOuter(_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"])
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"].backdrop:SetFrameLevel(c:GetFrameLevel()-2)
+			_G["ArchaeologyFrameCompletedPageArtifact"..b.."Icon"]:SetDrawLayer("OVERLAY")
+		end
+	end
+
+	ArchaeologyFrameArtifactPageIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	ArchaeologyFrameArtifactPageIcon.backdrop = CreateFrame("Frame", nil, ArchaeologyFrameArtifactPage)
+	ArchaeologyFrameArtifactPageIcon.backdrop:SetFixedPanelTemplate("Default")
+	ArchaeologyFrameArtifactPageIcon.backdrop:WrapOuter(ArchaeologyFrameArtifactPageIcon)
+	ArchaeologyFrameArtifactPageIcon.backdrop:SetFrameLevel(ArchaeologyFrameArtifactPage:GetFrameLevel())
+	ArchaeologyFrameArtifactPageIcon:SetParent(ArchaeologyFrameArtifactPageIcon.backdrop)
+	ArchaeologyFrameArtifactPageIcon:SetDrawLayer("OVERLAY")
+	STYLE:ApplyCloseButtonStyle(ArchaeologyFrameCloseButton)
+	ArcheologyDigsiteProgressBar:SetAllPoints(progressBarHolder)
+	progressBarHolder:SetParent(ArcheologyDigsiteProgressBar)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_ArchaeologyUI", ArchaeologyStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/auctionhouse.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/auctionhouse.lua
new file mode 100644
index 0000000..f7e4f24
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/auctionhouse.lua
@@ -0,0 +1,331 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local AuctionSortLinks = {
+	"BrowseQualitySort",
+	"BrowseLevelSort",
+	"BrowseDurationSort",
+	"BrowseHighBidderSort",
+	"BrowseCurrentBidSort",
+	"BidQualitySort",
+	"BidLevelSort",
+	"BidDurationSort",
+	"BidBuyoutSort",
+	"BidStatusSort",
+	"BidBidSort",
+	"AuctionsQualitySort",
+	"AuctionsDurationSort",
+	"AuctionsHighBidderSort",
+	"AuctionsBidSort"
+}
+local AuctionBidButtons = {
+	"BrowseBidButton",
+	"BidBidButton",
+	"BrowseBuyoutButton",
+	"BidBuyoutButton",
+	"BrowseCloseButton",
+	"BidCloseButton",
+	"BrowseSearchButton",
+	"AuctionsCreateAuctionButton",
+	"AuctionsCancelAuctionButton",
+	"AuctionsCloseButton",
+	"BrowseResetButton",
+	"AuctionsStackSizeMaxButton",
+	"AuctionsNumStacksMaxButton",
+}
+
+local AuctionTextFields = {
+	"BrowseName",
+	"BrowseMinLevel",
+	"BrowseMaxLevel",
+	"BrowseBidPriceGold",
+	"BidBidPriceGold",
+	"AuctionsStackSizeEntry",
+	"AuctionsNumStacksEntry",
+	"StartPriceGold",
+	"BuyoutPriceGold",
+	"BrowseBidPriceSilver",
+	"BrowseBidPriceCopper",
+	"BidBidPriceSilver",
+	"BidBidPriceCopper",
+	"StartPriceSilver",
+	"StartPriceCopper",
+	"BuyoutPriceSilver",
+	"BuyoutPriceCopper"
+}
+--[[
+##########################################################
+AUCTIONFRAME STYLER
+##########################################################
+]]--
+local function AuctionStyle()
+	--STYLE.Debugging = true
+	if(SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.auctionhouse ~= true) then return end
+
+	STYLE:ApplyWindowStyle(AuctionFrame, false, true)
+
+	BrowseFilterScrollFrame:RemoveTextures()
+	BrowseScrollFrame:RemoveTextures()
+	AuctionsScrollFrame:RemoveTextures()
+	BidScrollFrame:RemoveTextures()
+
+	STYLE:ApplyCloseButtonStyle(AuctionFrameCloseButton)
+	STYLE:ApplyScrollFrameStyle(AuctionsScrollFrameScrollBar)
+
+	STYLE:ApplyDropdownStyle(BrowseDropDown)
+	STYLE:ApplyDropdownStyle(PriceDropDown)
+	STYLE:ApplyDropdownStyle(DurationDropDown)
+	STYLE:ApplyScrollFrameStyle(BrowseFilterScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(BrowseScrollFrameScrollBar)
+	IsUsableCheckButton:SetCheckboxTemplate(true)
+	ShowOnPlayerCheckButton:SetCheckboxTemplate(true)
+
+	--ExactMatchCheckButton:SetCheckboxTemplate(true)
+
+	SideDressUpFrame:RemoveTextures(true)
+	SideDressUpFrame:Size(300, 400)
+	SideDressUpFrame:SetPoint("LEFT", AuctionFrame, "RIGHT", 16, 0)
+	SideDressUpFrame.SetPoint = SV.fubar
+	SideDressUpModel:RemoveTextures(true)
+	SideDressUpModel:SetAllPoints(SideDressUpFrame)
+	SideDressUpModel:SetFixedPanelTemplate("ModelComic")
+	SideDressUpModelResetButton:SetButtonTemplate()
+	SideDressUpModelResetButton:SetPoint("BOTTOM", SideDressUpModel, "BOTTOM", 0, 20)
+	STYLE:ApplyCloseButtonStyle(SideDressUpModelCloseButton)
+
+	AuctionProgressFrame:RemoveTextures()
+	AuctionProgressFrame:SetFixedPanelTemplate("Transparent", true)
+	AuctionProgressFrameCancelButton:SetButtonTemplate()
+	AuctionProgressFrameCancelButton:SetFixedPanelTemplate("Default")
+	AuctionProgressFrameCancelButton:SetHitRectInsets(0, 0, 0, 0)
+	AuctionProgressFrameCancelButton:GetNormalTexture():FillInner()
+	AuctionProgressFrameCancelButton:GetNormalTexture():SetTexCoord(0.67, 0.37, 0.61, 0.26)
+	AuctionProgressFrameCancelButton:Size(28, 28)
+	AuctionProgressFrameCancelButton:Point("LEFT", AuctionProgressBar, "RIGHT", 8, 0)
+	AuctionProgressBarIcon:SetTexCoord(0.67, 0.37, 0.61, 0.26)
+
+	local AuctionProgressBarBG = CreateFrame("Frame", nil, AuctionProgressBarIcon:GetParent())
+	AuctionProgressBarBG:WrapOuter(AuctionProgressBarIcon)
+	AuctionProgressBarBG:SetFixedPanelTemplate("Default")
+	AuctionProgressBarIcon:SetParent(AuctionProgressBarBG)
+
+	AuctionProgressBarText:ClearAllPoints()
+	AuctionProgressBarText:SetPoint("CENTER")
+	AuctionProgressBar:RemoveTextures()
+	AuctionProgressBar:SetPanelTemplate("Default")
+	AuctionProgressBar:SetStatusBarTexture(SV.Media.bar.default)
+	AuctionProgressBar:SetStatusBarColor(1, 1, 0)
+
+	STYLE:ApplyPaginationStyle(BrowseNextPageButton)
+	STYLE:ApplyPaginationStyle(BrowsePrevPageButton)
+
+	for _,gName in pairs(AuctionBidButtons) do
+		if(_G[gName]) then
+			_G[gName]:RemoveTextures()
+			_G[gName]:SetButtonTemplate()
+		end
+	end
+
+	AuctionsCloseButton:Point("BOTTOMRIGHT", AuctionFrameAuctions, "BOTTOMRIGHT", 66, 10)
+	AuctionsCancelAuctionButton:Point("RIGHT", AuctionsCloseButton, "LEFT", -4, 0)
+
+	BidBuyoutButton:Point("RIGHT", BidCloseButton, "LEFT", -4, 0)
+	BidBidButton:Point("RIGHT", BidBuyoutButton, "LEFT", -4, 0)
+
+	BrowseBuyoutButton:Point("RIGHT", BrowseCloseButton, "LEFT", -4, 0)
+	BrowseBidButton:Point("RIGHT", BrowseBuyoutButton, "LEFT", -4, 0)
+
+	AuctionsItemButton:RemoveTextures()
+	AuctionsItemButton:SetButtonTemplate()
+	AuctionsItemButton:SetScript("OnUpdate", function()
+		if AuctionsItemButton:GetNormalTexture()then
+			AuctionsItemButton:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			AuctionsItemButton:GetNormalTexture():FillInner()
+		end
+	end)
+
+	for _,frame in pairs(AuctionSortLinks)do
+		_G[frame.."Left"]:Die()
+		_G[frame.."Middle"]:Die()
+		_G[frame.."Right"]:Die()
+	end
+
+	STYLE:ApplyTabStyle(_G["AuctionFrameTab1"])
+	STYLE:ApplyTabStyle(_G["AuctionFrameTab2"])
+	STYLE:ApplyTabStyle(_G["AuctionFrameTab3"])
+
+	AuctionFrameBrowse.bg1 = CreateFrame("Frame", nil, AuctionFrameBrowse)
+	AuctionFrameBrowse.bg1:Point("TOPLEFT", 20, -103)
+	AuctionFrameBrowse.bg1:Point("BOTTOMRIGHT", -575, 40)
+	AuctionFrameBrowse.bg1:SetFixedPanelTemplate("Inset")
+
+	BrowseNoResultsText:SetParent(AuctionFrameBrowse.bg1)
+	BrowseSearchCountText:SetParent(AuctionFrameBrowse.bg1)
+
+	BrowseResetButton:Point("TOPLEFT", AuctionFrameBrowse, "TOPLEFT", 81, -74)
+	BrowseSearchButton:Point("TOPRIGHT", AuctionFrameBrowse, "TOPRIGHT", 25, -34)
+
+	AuctionFrameBrowse.bg1:SetFrameLevel(AuctionFrameBrowse.bg1:GetFrameLevel()-1)
+	BrowseFilterScrollFrame:Height(300)
+	AuctionFrameBrowse.bg2 = CreateFrame("Frame", nil, AuctionFrameBrowse)
+	AuctionFrameBrowse.bg2:SetFixedPanelTemplate("Inset")
+	AuctionFrameBrowse.bg2:Point("TOPLEFT", AuctionFrameBrowse.bg1, "TOPRIGHT", 4, 0)
+	AuctionFrameBrowse.bg2:Point("BOTTOMRIGHT", AuctionFrame, "BOTTOMRIGHT", -8, 40)
+	AuctionFrameBrowse.bg2:SetFrameLevel(AuctionFrameBrowse.bg2:GetFrameLevel() - 1)
+
+	for i = 1, NUM_FILTERS_TO_DISPLAY do
+		local header = _G[("AuctionFilterButton%d"):format(i)]
+		if(header) then
+			header:RemoveTextures()
+			header:SetButtonTemplate()
+		end
+	end
+
+	for _,field in pairs(AuctionTextFields)do
+		_G[field]:SetEditboxTemplate()
+		_G[field]:SetTextInsets(-1, -1, -2, -2)
+	end
+
+	BrowseMaxLevel:Point("LEFT", BrowseMinLevel, "RIGHT", 8, 0)
+	AuctionsStackSizeEntry.Panel:SetAllPoints()
+	AuctionsNumStacksEntry.Panel:SetAllPoints()
+
+	for h = 1, NUM_BROWSE_TO_DISPLAY do
+		local button = _G["BrowseButton"..h];
+		local buttonItem = _G["BrowseButton"..h.."Item"];
+		local buttonTex = _G["BrowseButton"..h.."ItemIconTexture"];
+
+		if(button) then
+			if(buttonTex) then
+				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				buttonTex:FillInner()
+			end
+
+			button:RemoveTextures()
+			button:SetButtonTemplate()
+
+			if(buttonItem) then
+				buttonItem:SetButtonTemplate()
+				buttonItem.Panel:SetAllPoints()
+				buttonItem:HookScript("OnUpdate", function()
+					buttonItem:GetNormalTexture():Die()
+				end)
+
+				local highLight = button:GetHighlightTexture()
+				_G["BrowseButton"..h.."Highlight"] = highLight
+				highLight:ClearAllPoints()
+				highLight:Point("TOPLEFT", buttonItem, "TOPRIGHT", 2, 0)
+				highLight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -2, 5)
+				button:GetPushedTexture():SetAllPoints(highLight)
+			end
+		end
+	end
+
+	for h = 1, NUM_AUCTIONS_TO_DISPLAY do
+		local button = _G["AuctionsButton"..h];
+		local buttonItem = _G["AuctionsButton"..h.."Item"];
+		local buttonTex = _G["AuctionsButton"..h.."ItemIconTexture"];
+
+		if(button) then
+			if(buttonTex) then
+				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				buttonTex:FillInner()
+			end
+
+			button:RemoveTextures()
+			button:SetButtonTemplate()
+
+			if(buttonItem) then
+				buttonItem:SetButtonTemplate()
+				buttonItem.Panel:SetAllPoints()
+				buttonItem:HookScript("OnUpdate", function()
+					buttonItem:GetNormalTexture():Die()
+				end)
+
+				local highLight = button:GetHighlightTexture()
+				_G["AuctionsButton"..h.."Highlight"] = highLight
+				highLight:ClearAllPoints()
+				highLight:Point("TOPLEFT", buttonItem, "TOPRIGHT", 2, 0)
+				highLight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -2, 5)
+				button:GetPushedTexture():SetAllPoints(highLight)
+			end
+		end
+	end
+
+	for h = 1, NUM_BIDS_TO_DISPLAY do
+		local button = _G["BidButton"..h];
+		local buttonItem = _G["BidButton"..h.."Item"];
+		local buttonTex = _G["BidButton"..h.."ItemIconTexture"];
+
+		if(button) then
+			if(buttonTex) then
+				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				buttonTex:FillInner()
+			end
+
+			button:RemoveTextures()
+			button:SetButtonTemplate()
+
+			if(buttonItem) then
+				buttonItem:SetButtonTemplate()
+				buttonItem.Panel:SetAllPoints()
+				buttonItem:HookScript("OnUpdate", function()
+					buttonItem:GetNormalTexture():Die()
+				end)
+
+				local highLight = button:GetHighlightTexture()
+				_G["BidButton"..h.."Highlight"] = highLight
+				highLight:ClearAllPoints()
+				highLight:Point("TOPLEFT", buttonItem, "TOPRIGHT", 2, 0)
+				highLight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -2, 5)
+				button:GetPushedTexture():SetAllPoints(highLight)
+			end
+		end
+	end
+
+	BrowseScrollFrame:Height(300)
+	AuctionFrameBid.bg = CreateFrame("Frame", nil, AuctionFrameBid)
+	AuctionFrameBid.bg:SetFixedPanelTemplate("Inset")
+	AuctionFrameBid.bg:Point("TOPLEFT", 22, -72)
+	AuctionFrameBid.bg:Point("BOTTOMRIGHT", 66, 39)
+	AuctionFrameBid.bg:SetFrameLevel(AuctionFrameBid.bg:GetFrameLevel()-1)
+	BidScrollFrame:Height(332)
+	AuctionsScrollFrame:Height(336)
+	AuctionFrameAuctions.bg1 = CreateFrame("Frame", nil, AuctionFrameAuctions)
+	AuctionFrameAuctions.bg1:SetFixedPanelTemplate("Inset")
+	AuctionFrameAuctions.bg1:Point("TOPLEFT", 15, -70)
+	AuctionFrameAuctions.bg1:Point("BOTTOMRIGHT", -545, 35)
+	AuctionFrameAuctions.bg1:SetFrameLevel(AuctionFrameAuctions.bg1:GetFrameLevel() - 2)
+	AuctionFrameAuctions.bg2 = CreateFrame("Frame", nil, AuctionFrameAuctions)
+	AuctionFrameAuctions.bg2:SetFixedPanelTemplate("Inset")
+	AuctionFrameAuctions.bg2:Point("TOPLEFT", AuctionFrameAuctions.bg1, "TOPRIGHT", 3, 0)
+	AuctionFrameAuctions.bg2:Point("BOTTOMRIGHT", AuctionFrame, -8, 35)
+	AuctionFrameAuctions.bg2:SetFrameLevel(AuctionFrameAuctions.bg2:GetFrameLevel() - 2)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_AuctionUI", AuctionStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/barbershop.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/barbershop.lua
new file mode 100644
index 0000000..c2ad149
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/barbershop.lua
@@ -0,0 +1,67 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+BARBERSHOP STYLER
+##########################################################
+]]--
+local function BarberShopStyle()
+	if SV.db[Schema].blizzard.enable~=true or SV.db[Schema].blizzard.barber~=true then return end
+	local buttons = {"BarberShopFrameOkayButton", "BarberShopFrameCancelButton", "BarberShopFrameResetButton"}
+	BarberShopFrameOkayButton:Point("RIGHT", BarberShopFrameSelector4, "BOTTOM", 2, -50)
+	for b = 1, #buttons do
+		_G[buttons[b]]:RemoveTextures()
+		_G[buttons[b]]:SetButtonTemplate()
+	end
+	for b = 1, 4 do
+		local c = _G["BarberShopFrameSelector"..b]
+		local d = _G["BarberShopFrameSelector"..b-1]
+		STYLE:ApplyPaginationStyle(_G["BarberShopFrameSelector"..b.."Prev"])
+		STYLE:ApplyPaginationStyle(_G["BarberShopFrameSelector"..b.."Next"])
+		if b ~= 1 then
+			c:ClearAllPoints()c:Point("TOP", d, "BOTTOM", 0, -3)
+		end
+		if c then
+			c:RemoveTextures()
+		end
+	end
+	BarberShopFrameSelector1:ClearAllPoints()
+	BarberShopFrameSelector1:Point("TOP", 0, -12)
+	BarberShopFrameResetButton:ClearAllPoints()
+	BarberShopFrameResetButton:Point("BOTTOM", 0, 12)
+	BarberShopFrame:RemoveTextures()
+	BarberShopFrame:SetPanelTemplate("Halftone")
+	BarberShopFrame:Size(BarberShopFrame:GetWidth()-30, BarberShopFrame:GetHeight()-56)
+	BarberShopFrameMoneyFrame:RemoveTextures()
+	BarberShopFrameMoneyFrame:SetPanelTemplate()
+	BarberShopFrameBackground:Die()
+	BarberShopBannerFrameBGTexture:Die()
+	BarberShopBannerFrame:Die()
+	BarberShopAltFormFrameBorder:RemoveTextures()
+	BarberShopAltFormFrame:Point("BOTTOM", BarberShopFrame, "TOP", 0, 5)
+	BarberShopAltFormFrame:RemoveTextures()
+	BarberShopAltFormFrame:SetBasicPanel()
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_BarbershopUI",BarberShopStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/battlefield.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/battlefield.lua
new file mode 100644
index 0000000..044ff6c
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/battlefield.lua
@@ -0,0 +1,94 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+BATTLEFIELD STYLER
+##########################################################
+]]--
+local function BattlefieldStyle()
+	if SV.db[Schema].blizzard.enable~=true or SV.db[Schema].blizzard.bgmap~=true then return end
+	BattlefieldMinimap:SetClampedToScreen(true)
+	BattlefieldMinimapCorner:Die()
+	BattlefieldMinimapBackground:Die()
+	BattlefieldMinimapTab:Die()
+	BattlefieldMinimapTabLeft:Die()
+	BattlefieldMinimapTabMiddle:Die()
+	BattlefieldMinimapTabRight:Die()
+	BattlefieldMinimap:SetFixedPanelTemplate("Transparent")
+	BattlefieldMinimap.Panel:Point("BOTTOMRIGHT", -4, 2)
+	BattlefieldMinimap:SetFrameStrata("LOW")
+	BattlefieldMinimapCloseButton:ClearAllPoints()
+	BattlefieldMinimapCloseButton:SetPoint("TOPRIGHT", -4, 0)
+	STYLE:ApplyCloseButtonStyle(BattlefieldMinimapCloseButton)
+	BattlefieldMinimapCloseButton:SetFrameStrata("MEDIUM")
+	BattlefieldMinimap:EnableMouse(true)
+	BattlefieldMinimap:SetMovable(true)
+	BattlefieldMinimap:SetScript("OnMouseUp", function(f, g)
+		if g == "LeftButton"then
+			BattlefieldMinimapTab:StopMovingOrSizing()BattlefieldMinimapTab:SetUserPlaced(true)
+			if OpacityFrame:IsShown()then
+				OpacityFrame:Hide()
+			end
+		elseif g == "RightButton"then
+			ToggleDropDownMenu(1, nil, BattlefieldMinimapTabDropDown, f:GetName(), 0, -4)
+			if OpacityFrame:IsShown()then
+				OpacityFrame:Hide()
+			end
+		end
+	end)
+	BattlefieldMinimap:SetScript("OnMouseDown", function(f, g)
+		if g == "LeftButton"then
+			if BattlefieldMinimapOptions and BattlefieldMinimapOptions.locked then
+				return
+			else
+				BattlefieldMinimapTab:StartMoving()
+			end
+		end
+	end)
+	hooksecurefunc("BattlefieldMinimap_UpdateOpacity", function(opacity)
+		local h = 1.0-BattlefieldMinimapOptions.opacity or 0;
+		BattlefieldMinimap.Panel:SetAlpha(h)
+	end)
+	local i;
+	BattlefieldMinimap:HookScript("OnEnter", function()
+		i = BattlefieldMinimapOptions.opacity or 0;
+		BattlefieldMinimap_UpdateOpacity(0)
+	end)
+	BattlefieldMinimap:HookScript("OnLeave", function()
+		if i then
+			BattlefieldMinimap_UpdateOpacity(i)i = nil
+		end
+	end)
+	BattlefieldMinimapCloseButton:HookScript("OnEnter", function()
+		i = BattlefieldMinimapOptions.opacity or 0;
+		BattlefieldMinimap_UpdateOpacity(0)
+	end)
+	BattlefieldMinimapCloseButton:HookScript("OnLeave", function()
+		if i then
+			BattlefieldMinimap_UpdateOpacity(i)i = nil
+		end
+	end)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_BattlefieldMinimap",BattlefieldStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/blackmarket.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/blackmarket.lua
new file mode 100644
index 0000000..88bc2c6
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/blackmarket.lua
@@ -0,0 +1,93 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+BLACKMARKET STYLER
+##########################################################
+]]--
+local function BlackMarketStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.bmah ~= true then
+		return
+	end
+
+	local ChangeTab = function(p)
+		p.Left:SetAlpha(0)
+		if p.Middle then
+			p.Middle:SetAlpha(0)
+		end
+		p.Right:SetAlpha(0)
+	end
+
+	BlackMarketFrame:RemoveTextures()
+	BlackMarketFrame:SetPanelTemplate("Halftone")
+	BlackMarketFrame.Inset:RemoveTextures()
+	BlackMarketFrame.Inset:SetFixedPanelTemplate("Inset")
+	STYLE:ApplyCloseButtonStyle(BlackMarketFrame.CloseButton)
+	STYLE:ApplyScrollFrameStyle(BlackMarketScrollFrameScrollBar, 4)
+
+	ChangeTab(BlackMarketFrame.ColumnName)
+	ChangeTab(BlackMarketFrame.ColumnLevel)
+	ChangeTab(BlackMarketFrame.ColumnType)
+	ChangeTab(BlackMarketFrame.ColumnDuration)
+	ChangeTab(BlackMarketFrame.ColumnHighBidder)
+	ChangeTab(BlackMarketFrame.ColumnCurrentBid)
+
+	BlackMarketFrame.MoneyFrameBorder:RemoveTextures()
+	BlackMarketBidPriceGold:SetEditboxTemplate()
+	BlackMarketBidPriceGold.Panel:Point("TOPLEFT", -2, 0)
+	BlackMarketBidPriceGold.Panel:Point("BOTTOMRIGHT", -2, 0)
+	BlackMarketFrame.BidButton:SetButtonTemplate()
+	hooksecurefunc("BlackMarketScrollFrame_Update", function()
+		local buttons = BlackMarketScrollFrame.buttons;
+		local r = #buttons;
+		local s = HybridScrollFrame_GetOffset(BlackMarketScrollFrame)
+		local t = C_BlackMarket.GetNumItems()
+		for b = 1, r do
+			local u = buttons[b]
+			local v = s+b;
+			if not u.styled then
+				u:RemoveTextures()
+				u:SetButtonTemplate()
+				STYLE:ApplyItemButtonStyle(u.Item)
+				u.styled = true
+			end
+			if v <= t then
+				local w, x = C_BlackMarket.GetItemInfoByIndex(v)
+				if w then
+					u.Item.IconTexture:SetTexture(x)
+				end
+			end
+		end
+	end)
+	BlackMarketFrame.HotDeal:RemoveTextures()
+	STYLE:ApplyItemButtonStyle(BlackMarketFrame.HotDeal.Item)
+	for b = 1, BlackMarketFrame:GetNumRegions()do
+		local y = select(b, BlackMarketFrame:GetRegions())
+		if y and y:GetObjectType() == "FontString" and y:GetText() == BLACK_MARKET_TITLE then
+			y:ClearAllPoints()y:SetPoint("TOP", BlackMarketFrame, "TOP", 0, -4)
+		end
+	end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_BlackMarketUI",BlackMarketStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/calendar.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/calendar.lua
new file mode 100644
index 0000000..ba4091f
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/calendar.lua
@@ -0,0 +1,188 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local CalendarButtons = {
+	"CalendarViewEventAcceptButton",
+	"CalendarViewEventTentativeButton",
+	"CalendarViewEventRemoveButton",
+	"CalendarViewEventDeclineButton"
+};
+--[[
+##########################################################
+CALENDAR STYLER
+##########################################################
+]]--
+local function CalendarStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.calendar ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(CalendarFrame)
+
+	STYLE:ApplyCloseButtonStyle(CalendarCloseButton)
+	CalendarCloseButton:SetPoint("TOPRIGHT", CalendarFrame, "TOPRIGHT", -4, -4)
+	STYLE:ApplyPaginationStyle(CalendarPrevMonthButton)
+	STYLE:ApplyPaginationStyle(CalendarNextMonthButton)
+
+	do
+		local cfframe = _G["CalendarFilterFrame"];
+
+		if(cfframe) then
+			cfframe:RemoveTextures()
+			cfframe:Width(155)
+			cfframe:SetPanelTemplate("Default")
+
+			local cftext = _G["CalendarFilterFrameText"]
+			if(cftext) then
+				cftext:ClearAllPoints()
+				cftext:SetPoint("RIGHT", cfbutton, "LEFT", -2, 0)
+			end
+
+			local cfbutton = _G["CalendarFilterButton"];
+			if(cfbutton) then
+				cfbutton:ClearAllPoints()
+				cfbutton:SetPoint("RIGHT", cfframe, "RIGHT", -10, 3)
+				STYLE:ApplyPaginationStyle(cfbutton, true)
+				cfframe.Panel:SetPoint("TOPLEFT", 20, 2)
+				cfframe.Panel:SetPoint("BOTTOMRIGHT", cfbutton, "BOTTOMRIGHT", 2, -2)
+			end
+		end
+	end
+
+	local l = CreateFrame("Frame", "CalendarFrameBackdrop", CalendarFrame)
+	l:SetFixedPanelTemplate("Default")
+	l:SetPoint("TOPLEFT", 10, -72)
+	l:SetPoint("BOTTOMRIGHT", -8, 3)
+	CalendarContextMenu:SetFixedPanelTemplate("Default")
+	hooksecurefunc(CalendarContextMenu, "SetBackdropColor", function(f, r, g, b, a)
+		if r ~= 0 or g ~= 0 or b ~= 0 or a ~= 0.5 then
+			 f:SetBackdropColor(0, 0, 0, 0.5)
+		end
+	end)
+	hooksecurefunc(CalendarContextMenu, "SetBackdropBorderColor", function(f, r, g, b)
+		if r ~= 0 or g ~= 0 or b ~= 0 then
+			 f:SetBackdropBorderColor(0, 0, 0)
+		end
+	end)
+	for u = 1, 42 do
+		 _G["CalendarDayButton"..u]:SetFrameLevel(_G["CalendarDayButton"..u]:GetFrameLevel()+1)
+	end
+	CalendarCreateEventFrame:RemoveTextures()
+	CalendarCreateEventFrame:SetFixedPanelTemplate("Transparent", true)
+	CalendarCreateEventFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
+	CalendarCreateEventTitleFrame:RemoveTextures()
+	CalendarCreateEventCreateButton:SetButtonTemplate()
+	CalendarCreateEventMassInviteButton:SetButtonTemplate()
+	CalendarCreateEventInviteButton:SetButtonTemplate()
+	CalendarCreateEventInviteButton:SetPoint("TOPLEFT", CalendarCreateEventInviteEdit, "TOPRIGHT", 4, 1)
+	CalendarCreateEventInviteEdit:Width(CalendarCreateEventInviteEdit:GetWidth()-2)
+	CalendarCreateEventInviteList:RemoveTextures()
+	CalendarCreateEventInviteList:SetFixedPanelTemplate("Default")
+	CalendarCreateEventInviteEdit:SetEditboxTemplate()
+	CalendarCreateEventTitleEdit:SetEditboxTemplate()
+	STYLE:ApplyDropdownStyle(CalendarCreateEventTypeDropDown, 120)
+	CalendarCreateEventDescriptionContainer:RemoveTextures()
+	CalendarCreateEventDescriptionContainer:SetFixedPanelTemplate("Default")
+	STYLE:ApplyCloseButtonStyle(CalendarCreateEventCloseButton)
+	CalendarCreateEventLockEventCheck:SetCheckboxTemplate(true)
+	STYLE:ApplyDropdownStyle(CalendarCreateEventHourDropDown, 68)
+	STYLE:ApplyDropdownStyle(CalendarCreateEventMinuteDropDown, 68)
+	STYLE:ApplyDropdownStyle(CalendarCreateEventAMPMDropDown, 68)
+	STYLE:ApplyDropdownStyle(CalendarCreateEventRepeatOptionDropDown, 120)
+	CalendarCreateEventIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	hooksecurefunc(CalendarCreateEventIcon, "SetTexCoord", function(f, v, w, x, y)
+		local z, A, B, C = 0.1, 0.9, 0.1, 0.9
+		if v ~= z or w ~= A or x ~= B or y ~= C then
+			 f:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		end
+	end)
+	CalendarCreateEventInviteListSection:RemoveTextures()
+	CalendarClassButtonContainer:HookScript("OnShow", function()
+		for u, D in ipairs(CLASS_SORT_ORDER)do
+			local e = _G["CalendarClassButton"..u]e:RemoveTextures()
+			e:SetPanelTemplate("Default")
+			local E = CLASS_ICON_TCOORDS[D]
+			local F = e:GetNormalTexture()
+			F:SetTexture("Interface\\Glues\\CharacterCreate\\UI-CharacterCreate-Classes")
+			F:SetTexCoord(E[1]+0.015, E[2]-0.02, E[3]+0.018, E[4]-0.02)
+		end
+		CalendarClassButton1:SetPoint("TOPLEFT", CalendarClassButtonContainer, "TOPLEFT", 5, 0)
+		CalendarClassTotalsButton:RemoveTextures()
+		CalendarClassTotalsButton:SetPanelTemplate("Default")
+	end)
+	CalendarTexturePickerFrame:RemoveTextures()
+	CalendarTexturePickerTitleFrame:RemoveTextures()
+	CalendarTexturePickerFrame:SetFixedPanelTemplate("Transparent", true)
+	STYLE:ApplyScrollFrameStyle(CalendarTexturePickerScrollBar)
+	CalendarTexturePickerAcceptButton:SetButtonTemplate()
+	CalendarTexturePickerCancelButton:SetButtonTemplate()
+	CalendarCreateEventInviteButton:SetButtonTemplate()
+	CalendarCreateEventRaidInviteButton:SetButtonTemplate()
+	CalendarMassInviteFrame:RemoveTextures()
+	CalendarMassInviteFrame:SetFixedPanelTemplate("Transparent", true)
+	CalendarMassInviteTitleFrame:RemoveTextures()
+	STYLE:ApplyCloseButtonStyle(CalendarMassInviteCloseButton)
+	CalendarMassInviteGuildAcceptButton:SetButtonTemplate()
+	STYLE:ApplyDropdownStyle(CalendarMassInviteGuildRankMenu, 130)
+	CalendarMassInviteGuildMinLevelEdit:SetEditboxTemplate()
+	CalendarMassInviteGuildMaxLevelEdit:SetEditboxTemplate()
+	CalendarViewRaidFrame:RemoveTextures()
+	CalendarViewRaidFrame:SetFixedPanelTemplate("Transparent", true)
+	CalendarViewRaidFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
+	CalendarViewRaidTitleFrame:RemoveTextures()
+	STYLE:ApplyCloseButtonStyle(CalendarViewRaidCloseButton)
+	CalendarViewHolidayFrame:RemoveTextures(true)
+	CalendarViewHolidayFrame:SetFixedPanelTemplate("Transparent", true)
+	CalendarViewHolidayFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
+	CalendarViewHolidayTitleFrame:RemoveTextures()
+	STYLE:ApplyCloseButtonStyle(CalendarViewHolidayCloseButton)
+	CalendarViewEventFrame:RemoveTextures()
+	CalendarViewEventFrame:SetFixedPanelTemplate("Transparent", true)
+	CalendarViewEventFrame:SetPoint("TOPLEFT", CalendarFrame, "TOPRIGHT", 3, -24)
+	CalendarViewEventTitleFrame:RemoveTextures()
+	CalendarViewEventDescriptionContainer:RemoveTextures()
+	CalendarViewEventDescriptionContainer:SetFixedPanelTemplate("Transparent", true)
+	CalendarViewEventInviteList:RemoveTextures()
+	CalendarViewEventInviteList:SetFixedPanelTemplate("Transparent", true)
+	CalendarViewEventInviteListSection:RemoveTextures()
+	STYLE:ApplyCloseButtonStyle(CalendarViewEventCloseButton)
+	STYLE:ApplyScrollFrameStyle(CalendarViewEventInviteListScrollFrameScrollBar)
+	for _,btn in pairs(CalendarButtons)do
+		 _G[btn]:SetButtonTemplate()
+	end
+	CalendarEventPickerFrame:RemoveTextures()
+	CalendarEventPickerTitleFrame:RemoveTextures()
+	CalendarEventPickerFrame:SetFixedPanelTemplate("Transparent", true)
+	STYLE:ApplyScrollFrameStyle(CalendarEventPickerScrollBar)
+	CalendarEventPickerCloseButton:SetButtonTemplate()
+	STYLE:ApplyScrollFrameStyle(CalendarCreateEventDescriptionScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(CalendarCreateEventInviteListScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(CalendarViewEventDescriptionScrollFrameScrollBar)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_Calendar",CalendarStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/challenges.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/challenges.lua
new file mode 100644
index 0000000..bfcfe58
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/challenges.lua
@@ -0,0 +1,60 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+CHALLENGES UI STYLER
+##########################################################
+]]--
+local function ChallengesFrameStyle()
+  if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.lfg ~= true then return end
+  ChallengesFrameInset:RemoveTextures()
+  ChallengesFrameInsetBg:Hide()
+  ChallengesFrameDetails.bg:Hide()
+  ChallengesFrameLeaderboard:SetButtonTemplate()
+  select(2, ChallengesFrameDetails:GetRegions()):Hide()
+  select(9, ChallengesFrameDetails:GetRegions()):Hide()
+  select(10, ChallengesFrameDetails:GetRegions()):Hide()
+  select(11, ChallengesFrameDetails:GetRegions()):Hide()
+  ChallengesFrameDungeonButton1:SetPoint("TOPLEFT", ChallengesFrame, "TOPLEFT", 8, -83)
+  for u = 1, 9 do
+    local v = ChallengesFrame["button"..u]
+    v:SetButtonTemplate()
+    v:SetButtonTemplate()
+    v:SetHighlightTexture("")
+    v.selectedTex:SetAlpha(.2)
+    v.selectedTex:SetPoint("TOPLEFT", 1, -1)
+    v.selectedTex:SetPoint("BOTTOMRIGHT", -1, 1)
+  v.NoMedal:Die()
+  end
+  for u = 1, 3 do
+    local F = ChallengesFrame["RewardRow"..u]
+    for A = 1, 2 do
+      local v = F["Reward"..A]
+      v:SetPanelTemplate()
+      v.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+    end
+  end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_ChallengesUI",ChallengesFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua
new file mode 100644
index 0000000..ea9fc7c
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua
@@ -0,0 +1,382 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local CharacterSlotNames = {
+	"HeadSlot",
+	"NeckSlot",
+	"ShoulderSlot",
+	"BackSlot",
+	"ChestSlot",
+	"ShirtSlot",
+	"TabardSlot",
+	"WristSlot",
+	"HandsSlot",
+	"WaistSlot",
+	"LegsSlot",
+	"FeetSlot",
+	"Finger0Slot",
+	"Finger1Slot",
+	"Trinket0Slot",
+	"Trinket1Slot",
+	"MainHandSlot",
+	"SecondaryHandSlot"
+};
+
+local CharFrameList = {
+	"CharacterFrame",
+	"CharacterModelFrame",
+	"CharacterFrameInset",
+	"CharacterStatsPane",
+	"CharacterFrameInsetRight",
+	"PaperDollFrame",
+	"PaperDollSidebarTabs",
+	"PaperDollEquipmentManagerPane"
+};
+
+local function SetItemFrame(frame, point)
+	point = point or frame
+	local noscalemult = 2 * UIParent:GetScale()
+	if point.bordertop then return end
+	point.backdrop = frame:CreateTexture(nil, "BORDER")
+	point.backdrop:SetDrawLayer("BORDER", -4)
+	point.backdrop:SetAllPoints(point)
+	point.backdrop:SetTexture(SV.Media.bar.default)
+	point.backdrop:SetVertexColor(unpack(SV.Media.color.default))
+	point.bordertop = frame:CreateTexture(nil, "BORDER")
+	point.bordertop:SetPoint("TOPLEFT", point, "TOPLEFT", -noscalemult, noscalemult)
+	point.bordertop:SetPoint("TOPRIGHT", point, "TOPRIGHT", noscalemult, noscalemult)
+	point.bordertop:SetHeight(noscalemult)
+	point.bordertop:SetTexture(0,0,0)
+	point.bordertop:SetDrawLayer("BORDER", 1)
+	point.borderbottom = frame:CreateTexture(nil, "BORDER")
+	point.borderbottom:SetPoint("BOTTOMLEFT", point, "BOTTOMLEFT", -noscalemult, -noscalemult)
+	point.borderbottom:SetPoint("BOTTOMRIGHT", point, "BOTTOMRIGHT", noscalemult, -noscalemult)
+	point.borderbottom:SetHeight(noscalemult)
+	point.borderbottom:SetTexture(0,0,0)
+	point.borderbottom:SetDrawLayer("BORDER", 1)
+	point.borderleft = frame:CreateTexture(nil, "BORDER")
+	point.borderleft:SetPoint("TOPLEFT", point, "TOPLEFT", -noscalemult, noscalemult)
+	point.borderleft:SetPoint("BOTTOMLEFT", point, "BOTTOMLEFT", noscalemult, -noscalemult)
+	point.borderleft:SetWidth(noscalemult)
+	point.borderleft:SetTexture(0,0,0)
+	point.borderleft:SetDrawLayer("BORDER", 1)
+	point.borderright = frame:CreateTexture(nil, "BORDER")
+	point.borderright:SetPoint("TOPRIGHT", point, "TOPRIGHT", noscalemult, noscalemult)
+	point.borderright:SetPoint("BOTTOMRIGHT", point, "BOTTOMRIGHT", -noscalemult, -noscalemult)
+	point.borderright:SetWidth(noscalemult)
+	point.borderright:SetTexture(0,0,0)
+	point.borderright:SetDrawLayer("BORDER", 1)
+end
+
+local function StyleCharacterSlots()
+	for _,slotName in pairs(CharacterSlotNames)do
+		local charSlot = _G["Character"..slotName]
+		local slotID,_,_ = GetInventorySlotInfo(slotName)
+		local itemID = GetInventoryItemID("player",slotID)
+		if itemID then
+			local _,_,info = GetItemInfo(itemID)
+			if info and info > 1 then
+				 charSlot:SetBackdropBorderColor(GetItemQualityColor(info))
+			else
+				 charSlot:SetBackdropBorderColor(0,0,0,1)
+			end
+		else
+			 charSlot:SetBackdropBorderColor(0,0,0,1)
+		end
+	end
+end
+
+local function EquipmentFlyout_OnShow()
+	EquipmentFlyoutFrameButtons:RemoveTextures()
+	local counter = 1;
+	local button = _G["EquipmentFlyoutFrameButton"..counter]
+	while button do
+		local texture = _G["EquipmentFlyoutFrameButton"..counter.."IconTexture"]
+		button:SetButtonTemplate()
+		texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		button:GetNormalTexture():SetTexture(0,0,0,0)
+		texture:FillInner()
+		button:SetFrameLevel(button:GetFrameLevel() + 2)
+		if not button.Panel then
+			button:SetPanelTemplate("Default")
+			button.Panel:SetAllPoints()
+		end
+		counter = counter + 1;
+		button = _G["EquipmentFlyoutFrameButton"..counter]
+	end
+end
+
+local function PaperDoll_UpdateTabs()
+	for i = 1, #PAPERDOLL_SIDEBARS do
+		local tab = _G["PaperDollSidebarTab"..i]
+		if tab then
+			tab.Highlight:SetTexture(1, 1, 1, 0.3)
+			tab.Highlight:Point("TOPLEFT", 3, -4)
+			tab.Highlight:Point("BOTTOMRIGHT", -1, 0)
+			tab.Hider:SetTexture(0.4, 0.4, 0.4, 0.4)
+			tab.Hider:Point("TOPLEFT", 3, -4)
+			tab.Hider:Point("BOTTOMRIGHT", -1, 0)
+			tab.TabBg:Die()
+			if i == 1 then
+				for i = 1, tab:GetNumRegions()do
+					local texture = select(i, tab:GetRegions())
+					texture:SetTexCoord(0.16, 0.86, 0.16, 0.86)
+					hooksecurefunc(texture, "SetTexCoord", function(f, v, w, x, y)
+						if v ~= 0.16001 then
+							 f:SetTexCoord(0.16001, 0.86, 0.16, 0.86)
+						end
+					end)
+				end
+			end
+			tab:SetPanelTemplate("Default", true, 2)
+			tab.Panel:Point("TOPLEFT", 2, -3)
+			tab.Panel:Point("BOTTOMRIGHT", 0, -2)
+		end
+	end
+end
+
+local function Reputation_OnShow()
+	for i = 1, GetNumFactions()do
+		local bar = _G["ReputationBar"..i.."ReputationBar"]
+		if bar then
+			 bar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+			if not bar.Panel then
+				 bar:SetPanelTemplate("Inset")
+			end
+			_G["ReputationBar"..i.."Background"]:SetTexture(0,0,0,0)
+			_G["ReputationBar"..i.."ReputationBarHighlight1"]:SetTexture(0,0,0,0)
+			_G["ReputationBar"..i.."ReputationBarHighlight2"]:SetTexture(0,0,0,0)
+			_G["ReputationBar"..i.."ReputationBarAtWarHighlight1"]:SetTexture(0,0,0,0)
+			_G["ReputationBar"..i.."ReputationBarAtWarHighlight2"]:SetTexture(0,0,0,0)
+			_G["ReputationBar"..i.."ReputationBarLeftTexture"]:SetTexture(0,0,0,0)
+			_G["ReputationBar"..i.."ReputationBarRightTexture"]:SetTexture(0,0,0,0)
+		end
+	end
+end
+--[[
+##########################################################
+CHARACTERFRAME STYLER
+##########################################################
+]]--
+local function CharacterFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.character ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(CharacterFrame, true)
+
+	STYLE:ApplyCloseButtonStyle(CharacterFrameCloseButton)
+	STYLE:ApplyScrollFrameStyle(CharacterStatsPaneScrollBar)
+	STYLE:ApplyScrollFrameStyle(ReputationListScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(TokenFrameContainerScrollBar)
+	STYLE:ApplyScrollFrameStyle(GearManagerDialogPopupScrollFrameScrollBar)
+
+	for _,slotName in pairs(CharacterSlotNames) do
+		local charSlot = _G["Character"..slotName]
+		local iconTex = _G["Character"..slotName.."IconTexture"]
+		local cd = _G["Character"..slotName.."Cooldown"]
+		charSlot:RemoveTextures()
+		charSlot:SetSlotTemplate(true)
+		charSlot.Panel:SetFrameLevel(charSlot.Panel:GetFrameLevel() + 1)
+		charSlot.ignoreTexture:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-LeaveItem-Transparent]])
+		iconTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		iconTex:FillInner(charSlot, 0, 0)
+		if cd then
+			 SV.Timers:AddCooldown(cd)
+		end
+	end
+
+	local eqSlotListener = CreateFrame("Frame")
+	eqSlotListener:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
+	eqSlotListener:SetScript("OnEvent", StyleCharacterSlots)
+
+	CharacterFrame:HookScript("OnShow", StyleCharacterSlots)
+
+	StyleCharacterSlots()
+
+	CharacterFrameExpandButton:Size(CharacterFrameExpandButton:GetWidth() - 7, CharacterFrameExpandButton:GetHeight() - 7)
+	STYLE:ApplyPaginationStyle(CharacterFrameExpandButton)
+
+	hooksecurefunc('CharacterFrame_Collapse', function()
+		CharacterFrameExpandButton:SetNormalTexture(nil)
+		CharacterFrameExpandButton:SetPushedTexture(nil)
+		CharacterFrameExpandButton:SetDisabledTexture(nil)
+		SquareButton_SetIcon(CharacterFrameExpandButton, 'RIGHT')
+	end)
+
+	hooksecurefunc('CharacterFrame_Expand', function()
+		CharacterFrameExpandButton:SetNormalTexture(nil)
+		CharacterFrameExpandButton:SetPushedTexture(nil)
+		CharacterFrameExpandButton:SetDisabledTexture(nil)
+		SquareButton_SetIcon(CharacterFrameExpandButton, 'LEFT')
+	end)
+
+	if GetCVar("characterFrameCollapsed") ~= "0" then
+		 SquareButton_SetIcon(CharacterFrameExpandButton, 'RIGHT')
+	else
+		 SquareButton_SetIcon(CharacterFrameExpandButton, 'LEFT')
+	end
+
+	STYLE:ApplyCloseButtonStyle(ReputationDetailCloseButton)
+	STYLE:ApplyCloseButtonStyle(TokenFramePopupCloseButton)
+	ReputationDetailAtWarCheckBox:SetCheckboxTemplate(true)
+	ReputationDetailMainScreenCheckBox:SetCheckboxTemplate(true)
+	ReputationDetailInactiveCheckBox:SetCheckboxTemplate(true)
+	ReputationDetailLFGBonusReputationCheckBox:SetCheckboxTemplate(true)
+	TokenFramePopupInactiveCheckBox:SetCheckboxTemplate(true)
+	TokenFramePopupBackpackCheckBox:SetCheckboxTemplate(true)
+	EquipmentFlyoutFrameHighlight:Die()
+	EquipmentFlyoutFrame:HookScript("OnShow", EquipmentFlyout_OnShow)
+	hooksecurefunc("EquipmentFlyout_Show", EquipmentFlyout_OnShow)
+	CharacterFramePortrait:Die()
+	STYLE:ApplyScrollFrameStyle(_G["PaperDollTitlesPaneScrollBar"], 5)
+	STYLE:ApplyScrollFrameStyle(_G["PaperDollEquipmentManagerPaneScrollBar"], 5)
+	for _,btn in pairs(CharFrameList)do
+		 _G[btn]:RemoveTextures(true)
+	end
+	CharacterModelFrameBackgroundTopLeft:SetTexture(0,0,0,0)
+	CharacterModelFrameBackgroundTopRight:SetTexture(0,0,0,0)
+	CharacterModelFrameBackgroundBotLeft:SetTexture(0,0,0,0)
+	CharacterModelFrameBackgroundBotRight:SetTexture(0,0,0,0)
+
+	CharacterModelFrame:SetFixedPanelTemplate("ModelComic")
+	CharacterFrameExpandButton:SetFrameLevel(CharacterModelFrame:GetFrameLevel() + 5)
+
+	PaperDollTitlesPane:SetBasicPanel()
+
+	PaperDollTitlesPane:HookScript("OnShow", function(f)
+		for _,btn in pairs(PaperDollTitlesPane.buttons)do
+			btn.BgTop:SetTexture(0,0,0,0)
+			btn.BgBottom:SetTexture(0,0,0,0)
+			btn.BgMiddle:SetTexture(0,0,0,0)
+			btn.Check:SetTexture(0,0,0,0)
+			btn.text:FillInner(btn)
+			btn.text:SetFont(SV.Media.font.roboto,10,"NONE","LEFT")
+		end
+	end)
+
+	PaperDollEquipmentManagerPane:SetBasicPanel()
+	PaperDollEquipmentManagerPaneEquipSet:SetButtonTemplate()
+	PaperDollEquipmentManagerPaneSaveSet:SetButtonTemplate()
+	PaperDollEquipmentManagerPaneEquipSet:Width(PaperDollEquipmentManagerPaneEquipSet:GetWidth()-8)
+	PaperDollEquipmentManagerPaneSaveSet:Width(PaperDollEquipmentManagerPaneSaveSet:GetWidth()-8)
+	PaperDollEquipmentManagerPaneEquipSet:Point("TOPLEFT", PaperDollEquipmentManagerPane, "TOPLEFT", 8, 0)
+	PaperDollEquipmentManagerPaneSaveSet:Point("LEFT", PaperDollEquipmentManagerPaneEquipSet, "RIGHT", 4, 0)
+	PaperDollEquipmentManagerPaneEquipSet.ButtonBackground:SetTexture(0,0,0,0)
+	PaperDollEquipmentManagerPane:HookScript("OnShow", function(f)
+		for _,btn in pairs(PaperDollEquipmentManagerPane.buttons)do
+			btn.BgTop:SetTexture(0,0,0,0)
+			btn.BgBottom:SetTexture(0,0,0,0)
+			btn.BgMiddle:SetTexture(0,0,0,0)
+			btn.icon:Size(36, 36)
+			btn.Check:SetTexture(0,0,0,0)
+			btn.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			btn.icon:SetPoint("LEFT", btn, "LEFT", 4, 0)
+			if not btn.icon.bordertop then
+				 SetItemFrame(btn, btn.icon)
+			end
+		end
+		GearManagerDialogPopup:RemoveTextures()
+		GearManagerDialogPopup:SetPanelTemplate("Inset", true)
+		GearManagerDialogPopup:Point("LEFT", PaperDollFrame, "RIGHT", 4, 0)
+		GearManagerDialogPopupScrollFrame:RemoveTextures()
+		GearManagerDialogPopupEditBox:RemoveTextures()
+
+		GearManagerDialogPopupEditBox:SetBasicPanel()
+
+		GearManagerDialogPopupOkay:SetButtonTemplate()
+		GearManagerDialogPopupCancel:SetButtonTemplate()
+
+		for i = 1, NUM_GEARSET_ICONS_SHOWN do
+			local e = _G["GearManagerDialogPopupButton"..i]
+			local texture = e.icon;
+			if e then
+				e:RemoveTextures()
+				e:SetButtonTemplate()
+				texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				_G["GearManagerDialogPopupButton"..i.."Icon"]:SetTexture(0,0,0,0)
+				texture:FillInner()
+				e:SetFrameLevel(e:GetFrameLevel() + 2)
+				if not e.Panel then
+					e:SetPanelTemplate("Default")
+					e.Panel:SetAllPoints()
+				end
+			end
+		end
+	end)
+
+	for i = 1, 4 do
+		 STYLE:ApplyTabStyle(_G["CharacterFrameTab"..i])
+	end
+
+	hooksecurefunc("PaperDollFrame_UpdateSidebarTabs", PaperDoll_UpdateTabs)
+
+	for i = 1, 7 do
+		local category = _G["CharacterStatsPaneCategory"..i]
+		if(category) then
+			category:RemoveTextures()
+			category:SetButtonTemplate()
+		end
+	end
+
+	ReputationFrame:RemoveTextures(true)
+	ReputationListScrollFrame:RemoveTextures()
+	ReputationDetailFrame:RemoveTextures()
+	ReputationDetailFrame:SetPanelTemplate("Inset", true)
+	ReputationDetailFrame:Point("TOPLEFT", ReputationFrame, "TOPRIGHT", 4, -28)
+	ReputationFrame:HookScript("OnShow", Reputation_OnShow)
+	hooksecurefunc("ExpandFactionHeader", Reputation_OnShow)
+	hooksecurefunc("CollapseFactionHeader", Reputation_OnShow)
+	TokenFrameContainer:SetBasicPanel()
+
+	TokenFrame:HookScript("OnShow", function()
+		for i = 1, GetCurrencyListSize() do
+			local currency = _G["TokenFrameContainerButton"..i]
+			if(currency) then
+				currency.highlight:Die()
+				currency.categoryMiddle:Die()
+				currency.categoryLeft:Die()
+				currency.categoryRight:Die()
+				if currency.icon then
+					 currency.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				end
+			end
+		end
+		TokenFramePopup:RemoveTextures()
+		TokenFramePopup:SetPanelTemplate("Inset", true)
+		TokenFramePopup:Point("TOPLEFT", TokenFrame, "TOPRIGHT", 4, -28)
+	end)
+	PetModelFrame:SetPanelTemplate("Comic",false,1,-7,-7)
+	PetPaperDollPetInfo:GetRegions():SetTexCoord(.12, .63, .15, .55)
+	PetPaperDollPetInfo:SetFrameLevel(PetPaperDollPetInfo:GetFrameLevel() + 10)
+	PetPaperDollPetInfo:SetPanelTemplate("Slot")
+	PetPaperDollPetInfo.Panel:SetFrameLevel(0)
+	PetPaperDollPetInfo:Size(24, 24)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(CharacterFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua
new file mode 100644
index 0000000..5f11298
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua
@@ -0,0 +1,481 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+FRAME LISTS
+##########################################################
+]]--
+local ChatMenuList = {
+	"ChatMenu",
+	"EmoteMenu",
+	"LanguageMenu",
+	"VoiceMacroMenu",
+};
+local ChatFrameList1 = {
+	"ChatConfigFrame",
+	"ChatConfigBackgroundFrame",
+	"ChatConfigCategoryFrame",
+	"ChatConfigChatSettingsClassColorLegend",
+	"ChatConfigChatSettingsLeft",
+	"ChatConfigChannelSettingsLeft",
+	"ChatConfigChannelSettingsClassColorLegend",
+	"ChatConfigOtherSettingsCombat",
+	"ChatConfigOtherSettingsPVP",
+	"ChatConfigOtherSettingsSystem",
+	"ChatConfigOtherSettingsCreature",
+	"ChatConfigCombatSettingsFilters",
+	"CombatConfigMessageSourcesDoneBy",
+	"CombatConfigMessageSourcesDoneTo",
+	"CombatConfigColorsUnitColors",
+	"CombatConfigColorsHighlighting",
+	"CombatConfigColorsColorizeUnitName",
+	"CombatConfigColorsColorizeSpellNames",
+	"CombatConfigColorsColorizeDamageNumber",
+	"CombatConfigColorsColorizeDamageSchool",
+	"CombatConfigColorsColorizeEntireLine",
+};
+local ChatFrameList2 = {
+	"ChatConfigFrameDefaultButton",
+	"ChatConfigFrameOkayButton",
+	"CombatLogDefaultButton",
+	"ChatConfigCombatSettingsFiltersCopyFilterButton",
+	"ChatConfigCombatSettingsFiltersAddFilterButton",
+	"ChatConfigCombatSettingsFiltersDeleteButton",
+	"CombatConfigSettingsSaveButton",
+	"ChatConfigFrameCancelButton",
+};
+local ChatFrameList3 = {
+	"ChatConfigCategoryFrame",
+	"ChatConfigBackgroundFrame",
+	"ChatConfigChatSettingsClassColorLegend",
+	"ChatConfigChannelSettingsClassColorLegend",
+	"ChatConfigCombatSettingsFilters",
+	"ChatConfigCombatSettingsFiltersScrollFrame",
+	"CombatConfigColorsHighlighting",
+	"CombatConfigColorsColorizeUnitName",
+	"CombatConfigColorsColorizeSpellNames",
+	"CombatConfigColorsColorizeDamageNumber",
+	"CombatConfigColorsColorizeDamageSchool",
+	"CombatConfigColorsColorizeEntireLine",
+	"ChatConfigChatSettingsLeft",
+	"ChatConfigOtherSettingsCombat",
+	"ChatConfigOtherSettingsPVP",
+	"ChatConfigOtherSettingsSystem",
+	"ChatConfigOtherSettingsCreature",
+	"ChatConfigChannelSettingsLeft",
+	"CombatConfigMessageSourcesDoneBy",
+	"CombatConfigMessageSourcesDoneTo",
+	"CombatConfigColorsUnitColors",
+};
+local ChatFrameList4 = {
+	"CombatConfigColorsColorizeSpellNames",
+	"CombatConfigColorsColorizeDamageNumber",
+	"CombatConfigColorsColorizeDamageSchool",
+	"CombatConfigColorsColorizeEntireLine",
+};
+local ChatFrameList5 = {
+	"ChatConfigFrameOkayButton",
+	"ChatConfigFrameDefaultButton",
+	"CombatLogDefaultButton",
+	"ChatConfigCombatSettingsFiltersDeleteButton",
+	"ChatConfigCombatSettingsFiltersAddFilterButton",
+	"ChatConfigCombatSettingsFiltersCopyFilterButton",
+	"CombatConfigSettingsSaveButton",
+};
+local ChatFrameList6 = {
+	"CombatConfigColorsHighlightingLine",
+	"CombatConfigColorsHighlightingAbility",
+	"CombatConfigColorsHighlightingDamage",
+	"CombatConfigColorsHighlightingSchool",
+	"CombatConfigColorsColorizeUnitNameCheck",
+	"CombatConfigColorsColorizeSpellNamesCheck",
+	"CombatConfigColorsColorizeSpellNamesSchoolColoring",
+	"CombatConfigColorsColorizeDamageNumberCheck",
+	"CombatConfigColorsColorizeDamageNumberSchoolColoring",
+	"CombatConfigColorsColorizeDamageSchoolCheck",
+	"CombatConfigColorsColorizeEntireLineCheck",
+	"CombatConfigFormattingShowTimeStamp",
+	"CombatConfigFormattingShowBraces",
+	"CombatConfigFormattingUnitNames",
+	"CombatConfigFormattingSpellNames",
+	"CombatConfigFormattingItemNames",
+	"CombatConfigFormattingFullText",
+	"CombatConfigSettingsShowQuickButton",
+	"CombatConfigSettingsSolo",
+	"CombatConfigSettingsParty",
+	"CombatConfigSettingsRaid",
+};
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local ChatGeneric_OnShow = function(self)
+	 if(not self.Panel) then
+	 	self:SetPanelTemplate("Halftone")
+	end
+end
+
+local ChatMenu_OnShow = function(self)
+	if(not self.Panel) then
+		self:SetPanelTemplate("Halftone")
+	end
+	self:ClearAllPoints()
+	self:Point("BOTTOMLEFT", ChatFrame1, "TOPLEFT", 0, 30)
+end
+
+local ChatConfigChannelSettingsLeft_OnEvent = function(self)
+	local checkBoxTable = self.checkBoxTable;
+    local checkBoxNameString = "ChatConfigChannelSettingsLeftCheckBox";
+    local boxHeight = ChatConfigOtherSettingsCombatCheckBox1:GetHeight() or 20
+    local colorsHeight = ChatConfigChatSettingsLeftCheckBox1Check:GetHeight() or 20
+	for i = 1,#checkBoxTable do
+		local gName = ("ChatConfigChannelSettingsLeftCheckBox%d"):format(i)
+		local checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetBasicPanel()
+			end
+			checkbox:SetHeight(boxHeight)
+			checkbox.Panel:Point("TOPLEFT",3,-1)
+			checkbox.Panel:Point("BOTTOMRIGHT",-3,1)
+
+			local check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+
+			local colors = _G[("%sColorClasses"):format(gName)]
+			if(colors) then
+				colors:SetCheckboxTemplate(true)
+				colors:SetHeight(colorsHeight)
+			end
+		end
+	end
+end
+
+local ChatConfigBackgroundFrame_OnShow = function(self)
+	local gName, checkbox, check, colors
+	local boxHeight = ChatConfigOtherSettingsCombatCheckBox1:GetHeight() or 20
+    local colorsHeight = ChatConfigChatSettingsLeftCheckBox1Check:GetHeight() or 20
+
+	for i = 1, #CHAT_CONFIG_CHAT_LEFT do
+		gName = ("ChatConfigChatSettingsLeftCheckBox%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+			checkbox:SetHeight(boxHeight)
+
+			check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+
+			colors = _G[("%sColorClasses"):format(gName)]
+			if(colors) then
+				colors:SetCheckboxTemplate(true)
+				colors:SetHeight(colorsHeight)
+			end
+		end
+	end
+	for i = 1, #CHAT_CONFIG_OTHER_COMBAT do
+		gName = ("ChatConfigOtherSettingsCombatCheckBox%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+
+			check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+		end
+	end
+	for i = 1, #CHAT_CONFIG_OTHER_PVP do
+		gName = ("ChatConfigOtherSettingsPVPCheckBox%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+
+			check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+		end
+	end
+	for i = 1, #CHAT_CONFIG_OTHER_SYSTEM do
+		gName = ("ChatConfigOtherSettingsSystemCheckBox%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+
+			check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+		end
+	end
+	for i = 1, #CHAT_CONFIG_CHAT_CREATURE_LEFT do
+		gName = ("ChatConfigOtherSettingsCreatureCheckBox%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+
+			check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+		end
+	end
+	for i = 1, #COMBAT_CONFIG_MESSAGESOURCES_BY do
+		gName = ("CombatConfigMessageSourcesDoneByCheckBox%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+
+			check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+		end
+	end
+	for i = 1, #COMBAT_CONFIG_MESSAGESOURCES_TO do
+		gName = ("CombatConfigMessageSourcesDoneToCheckBox%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+
+			check = _G[("%sCheck"):format(gName)]
+			if(check) then
+				check:SetCheckboxTemplate(true)
+			end
+		end
+	end
+	for i = 1, #COMBAT_CONFIG_UNIT_COLORS do
+		gName = ("CombatConfigColorsUnitColorsSwatch%d"):format(i)
+		checkbox = _G[gName]
+		if(checkbox) then
+			if(not checkbox.Panel) then
+				checkbox:RemoveTextures()
+				checkbox:SetPanelTemplate("Default")
+			end
+			checkbox.Panel:Point("TOPLEFT", 3, -1)
+			checkbox.Panel:Point("BOTTOMRIGHT", -3, 1)
+		end
+	end
+	for i = 1, 4 do
+		gName = ("CombatConfigMessageTypesLeftCheckBox%d"):format(i)
+		for j = 1, 4 do
+			local gName2 = ("%s_%d"):format(gName, j)
+			if(_G[gName] and _G[gName2]) then
+				_G[gName]:SetCheckboxTemplate(true)
+				_G[gName2]:SetCheckboxTemplate(true)
+			end
+		end
+
+		gName = ("CombatConfigMessageTypesRightCheckBox%d"):format(i)
+		for j = 1, 10 do
+			local gName2 = ("%s_%d"):format(gName, j)
+			if(_G[gName] and _G[gName2]) then
+				_G[gName]:SetCheckboxTemplate(true)
+				_G[gName2]:SetCheckboxTemplate(true)
+			end
+		end
+
+		gName = ("CombatConfigMessageTypesMiscCheckBox%d"):format(i)
+		if(_G[gName]) then
+			_G[gName]:SetCheckboxTemplate(true)
+		end
+	end
+end
+--[[
+##########################################################
+CHAT STYLER
+##########################################################
+]]--
+local function ChatStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.chat ~= true then
+		 return
+	end
+
+	for i = 1, #ChatMenuList do
+		local name = ChatMenuList[i]
+		local this = _G[name]
+		if(this) then
+			if(name == "ChatMenu") then
+				this:HookScript("OnShow", ChatMenu_OnShow)
+			else
+				this:HookScript("OnShow", ChatGeneric_OnShow)
+			end
+		end
+	end
+
+	for i = 1, #ChatFrameList1 do
+		local name = ChatFrameList1[i]
+		local this = _G[name]
+		if(this) then
+			this:RemoveTextures()
+		end
+	end
+
+	for i = 1, #ChatFrameList2 do
+		local name = ChatFrameList2[i]
+		local this = _G[name]
+		if(this) then
+			this:SetButtonTemplate()
+		end
+	end
+
+	ChatConfigFrameOkayButton:Point("RIGHT", ChatConfigFrameCancelButton, "RIGHT", -11, -1)
+	ChatConfigCombatSettingsFiltersDeleteButton:Point("TOPRIGHT", ChatConfigCombatSettingsFilters, "BOTTOMRIGHT", 0, -1)
+	ChatConfigCombatSettingsFiltersAddFilterButton:Point("RIGHT", ChatConfigCombatSettingsFiltersDeleteButton, "LEFT", -1, 0)
+	ChatConfigCombatSettingsFiltersCopyFilterButton:Point("RIGHT", ChatConfigCombatSettingsFiltersAddFilterButton, "LEFT", -1, 0)
+
+	if(_G["CombatConfigTab1"]) then _G["CombatConfigTab1"]:RemoveTextures() end
+	if(_G["CombatConfigTab2"]) then _G["CombatConfigTab2"]:RemoveTextures() end
+	if(_G["CombatConfigTab3"]) then _G["CombatConfigTab3"]:RemoveTextures() end
+	if(_G["CombatConfigTab4"]) then _G["CombatConfigTab4"]:RemoveTextures() end
+	if(_G["CombatConfigTab5"]) then _G["CombatConfigTab5"]:RemoveTextures() end
+
+	CombatConfigSettingsNameEditBox:SetEditboxTemplate()
+	ChatConfigFrame:SetPanelTemplate("Halftone", true)
+
+	for i = 1, #ChatFrameList3 do
+		local frame = _G[ChatFrameList3[i]]
+		if(frame) then
+			frame:RemoveTextures()
+			frame:SetBasicPanel()
+		end
+	end
+
+	for i = 1, #ChatFrameList4 do
+		local this = _G[ChatFrameList4[i]]
+		if(this) then
+			this:ClearAllPoints()
+			if this == CombatConfigColorsColorizeSpellNames then
+				this:Point("TOP",CombatConfigColorsColorizeUnitName,"BOTTOM",0,-2)
+			else
+				this:Point("TOP",_G[ChatFrameList4[i-1]],"BOTTOM",0,-2)
+			end
+		end
+	end
+
+	ChatConfigChannelSettingsLeft:HookScript("OnShow", ChatConfigChannelSettingsLeft_OnEvent)
+
+	CreateChatChannelList(ChatConfigChannelSettings, GetChannelList())
+	ChatConfig_CreateCheckboxes(ChatConfigChannelSettingsLeft, CHAT_CONFIG_CHANNEL_LIST, "ChatConfigCheckBoxWithSwatchAndClassColorTemplate", CHANNELS)
+	ChatConfig_UpdateCheckboxes(ChatConfigChannelSettingsLeft)
+
+	ChatConfigBackgroundFrame:SetScript("OnShow", ChatConfigBackgroundFrame_OnShow)
+
+	for i = 1, #COMBAT_CONFIG_TABS do
+		local this = _G["CombatConfigTab"..i]
+		if(this) then
+			STYLE:ApplyTabStyle(this)
+			this:SetHeight(this:GetHeight()-2)
+			this:SetWidth(ceil(this:GetWidth()+1.6))
+			_G["CombatConfigTab"..i.."Text"]:SetPoint("BOTTOM", 0, 10)
+		end
+	end
+
+	CombatConfigTab1:ClearAllPoints()
+	CombatConfigTab1:SetPoint("BOTTOMLEFT", ChatConfigBackgroundFrame, "TOPLEFT", 6, -2)
+
+	for i = 1, #ChatFrameList5 do
+		local this = _G[ChatFrameList5[i]]
+		if(this) then
+			this:SetButtonTemplate()
+		end
+	end
+
+	ChatConfigFrameOkayButton:SetPoint("TOPRIGHT", ChatConfigBackgroundFrame, "BOTTOMRIGHT", -3, -5)
+	ChatConfigFrameDefaultButton:SetPoint("TOPLEFT", ChatConfigCategoryFrame, "BOTTOMLEFT", 1, -5)
+	CombatLogDefaultButton:SetPoint("TOPLEFT", ChatConfigCategoryFrame, "BOTTOMLEFT", 1, -5)
+	ChatConfigCombatSettingsFiltersDeleteButton:SetPoint("TOPRIGHT", ChatConfigCombatSettingsFilters, "BOTTOMRIGHT", -3, -1)
+	ChatConfigCombatSettingsFiltersCopyFilterButton:SetPoint("RIGHT", ChatConfigCombatSettingsFiltersDeleteButton, "LEFT", -2, 0)
+	ChatConfigCombatSettingsFiltersAddFilterButton:SetPoint("RIGHT", ChatConfigCombatSettingsFiltersCopyFilterButton, "LEFT", -2, 0)
+
+	for i = 1, #ChatFrameList6 do
+		local this = _G[ChatFrameList6[i]]
+		if(this) then
+			this:SetCheckboxTemplate(true)
+		end
+	end
+
+	STYLE:ApplyPaginationStyle(ChatConfigMoveFilterUpButton,true)
+	STYLE:ApplyPaginationStyle(ChatConfigMoveFilterDownButton,true)
+
+	ChatConfigMoveFilterUpButton:ClearAllPoints()
+	ChatConfigMoveFilterDownButton:ClearAllPoints()
+	ChatConfigMoveFilterUpButton:SetPoint("TOPLEFT",ChatConfigCombatSettingsFilters,"BOTTOMLEFT",3,0)
+	ChatConfigMoveFilterDownButton:SetPoint("LEFT",ChatConfigMoveFilterUpButton,24,0)
+
+	CombatConfigSettingsNameEditBox:SetEditboxTemplate()
+
+	ChatConfigFrame:Size(680,596)
+	ChatConfigFrameHeader:ClearAllPoints()
+	ChatConfigFrameHeader:SetPoint("TOP", ChatConfigFrame, "TOP", 0, -5)
+
+	-- for i=1, select("#", GetChatWindowChannels(3)) do
+	-- 	local info = select(i, GetChatWindowChannels(3))
+	-- 	print(info)
+	-- end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(ChatStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/dressup.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/dressup.lua
new file mode 100644
index 0000000..0f6f3b5
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/dressup.lua
@@ -0,0 +1,51 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+DRESSUP STYLER
+##########################################################
+]]--
+local function DressUpStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.dressingroom ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(DressUpFrame, true, true)
+
+	DressUpModel:ClearAllPoints()
+	DressUpModel:SetPoint("TOPLEFT", DressUpFrame, "TOPLEFT", 12, -76)
+	DressUpModel:SetPoint("BOTTOMRIGHT", DressUpFrame, "BOTTOMRIGHT", -12, 36)
+
+	DressUpModel:SetFixedPanelTemplate("ModelComic")
+
+	DressUpFrameCancelButton:Point("BOTTOMRIGHT", DressUpFrame, "BOTTOMRIGHT", -12, 12)
+	DressUpFrameCancelButton:SetButtonTemplate()
+
+	DressUpFrameResetButton:Point("RIGHT", DressUpFrameCancelButton, "LEFT", -12, 0)
+	DressUpFrameResetButton:SetButtonTemplate()
+
+	STYLE:ApplyCloseButtonStyle(DressUpFrameCloseButton, DressUpFrame.Panel)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(DressUpStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua
new file mode 100644
index 0000000..3920bb7
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua
@@ -0,0 +1,229 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ENCOUNTERJOURNAL STYLER
+##########################################################
+]]--
+local PVP_LOST = [[Interface\WorldMap\Skull_64Red]]
+
+local function Tab_OnEnter(this)
+  this.backdrop:SetPanelColor("highlight")
+  this.backdrop:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+
+local function Tab_OnLeave(this)
+  this.backdrop:SetPanelColor("dark")
+  this.backdrop:SetBackdropBorderColor(0,0,0,1)
+end
+
+local function ChangeTabHelper(this, xOffset, yOffset)
+  this:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
+  this:GetNormalTexture():FillInner()
+  this.backdrop = CreateFrame("Frame", nil, this)
+  this.backdrop:FillInner(this)
+
+  local level = this:GetFrameLevel()
+  if(level > 0) then
+    this.backdrop:SetFrameLevel(level - 1)
+  else
+    this.backdrop:SetFrameLevel(0)
+  end
+
+  this.backdrop:SetPanelTemplate("Component", true)
+  this.backdrop:SetPanelColor("dark")
+  this:HookScript("OnEnter",Tab_OnEnter)
+  this:HookScript("OnLeave",Tab_OnLeave)
+
+  local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = this:GetPoint()
+  this:Point(initialAnchor, anchorParent, relativeAnchor, xOffset or 7, yOffset or yPosition)
+end
+
+local function Outline(frame, noHighlight)
+    if(frame.Outlined) then return; end
+    local offset = noHighlight and 30 or 5
+    local mod = noHighlight and 50 or 5
+
+    local panel = CreateFrame('Frame', nil, frame)
+    panel:Point('TOPLEFT', frame, 'TOPLEFT', 1, -1)
+    panel:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -1, 1)
+
+    --[[ UNDERLAY BORDER ]]--
+    local borderLeft = panel:CreateTexture(nil, "BORDER")
+    borderLeft:SetTexture(0, 0, 0)
+    borderLeft:SetPoint("TOPLEFT")
+    borderLeft:SetPoint("BOTTOMLEFT")
+    borderLeft:SetWidth(offset)
+
+    local borderRight = panel:CreateTexture(nil, "BORDER")
+    borderRight:SetTexture(0, 0, 0)
+    borderRight:SetPoint("TOPRIGHT")
+    borderRight:SetPoint("BOTTOMRIGHT")
+    borderRight:SetWidth(offset)
+
+    local borderTop = panel:CreateTexture(nil, "BORDER")
+    borderTop:SetTexture(0, 0, 0)
+    borderTop:SetPoint("TOPLEFT")
+    borderTop:SetPoint("TOPRIGHT")
+    borderTop:SetHeight(mod)
+
+    local borderBottom = panel:CreateTexture(nil, "BORDER")
+    borderBottom:SetTexture(0, 0, 0)
+    borderBottom:SetPoint("BOTTOMLEFT")
+    borderBottom:SetPoint("BOTTOMRIGHT")
+    borderBottom:SetHeight(mod)
+
+    if(not noHighlight) then
+      local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
+      highlight:SetTexture(0, 1, 1, 0.35)
+      highlight:SetAllPoints(panel)
+    end
+
+    frame.Outlined = true
+end
+
+local function EncounterJournalStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.encounterjournal ~= true then
+		 return
+	end
+
+	EncounterJournal:RemoveTextures(true)
+  EncounterJournalInstanceSelect:RemoveTextures(true)
+  EncounterJournalNavBar:RemoveTextures(true)
+  EncounterJournalNavBarOverlay:RemoveTextures(true)
+  EncounterJournalNavBarHomeButton:RemoveTextures(true)
+  EncounterJournalInset:RemoveTextures(true)
+
+  EncounterJournalEncounterFrame:RemoveTextures(true)
+  EncounterJournalEncounterFrameInfo:RemoveTextures(true)
+  EncounterJournalEncounterFrameInfoDifficulty:RemoveTextures(true)
+  EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:RemoveTextures(true)
+  EncounterJournalEncounterFrameInfoBossesScrollFrame:RemoveTextures(true)
+  EncounterJournalInstanceSelectDungeonTab:RemoveTextures(true)
+  EncounterJournalInstanceSelectRaidTab:RemoveTextures(true)
+  ChangeTabHelper(EncounterJournalEncounterFrameInfoBossTab)
+  ChangeTabHelper(EncounterJournalEncounterFrameInfoLootTab, 0, -10)
+
+  EncounterJournalSearchResults:RemoveTextures(true)
+
+  EncounterJournal:SetPanelTemplate("Action")
+  EncounterJournal:SetPanelColor("dark")
+  EncounterJournalInset:SetFixedPanelTemplate("Inset")
+
+  EncounterJournalInstanceSelectScrollFrameScrollChild:SetFixedPanelTemplate("Default")
+  EncounterJournalInstanceSelectScrollFrameScrollChild:SetPanelColor("dark")
+
+  EncounterJournalEncounterFrameInstanceFrame:SetFixedPanelTemplate("Inset")
+
+  local comicHolder = CreateFrame('Frame', nil, EncounterJournal.encounter)
+  comicHolder:SetPoint("TOPLEFT", EncounterJournalEncounterFrameInfoBossesScrollFrame, "TOPLEFT", -20, 40)
+  comicHolder:SetPoint("BOTTOMRIGHT", EncounterJournalEncounterFrameInfoBossesScrollFrame, "BOTTOMRIGHT", 0, 0)
+  comicHolder:SetPanelTemplate("Comic")
+  comicHolder:SetPanelColor("dark")
+  EncounterJournal.encounter.info.encounterTitle:SetParent(comicHolder)
+  EncounterJournal.searchResults.TitleText:SetParent(comicHolder)
+
+  EncounterJournalNavBarHomeButton:SetButtonTemplate()
+  EncounterJournalEncounterFrameInfoDifficulty:SetButtonTemplate()
+  EncounterJournalEncounterFrameInfoDifficulty:SetFrameLevel(EncounterJournalEncounterFrameInfoDifficulty:GetFrameLevel() + 10)
+  EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:SetButtonTemplate()
+  EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:SetFrameLevel(EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:GetFrameLevel() + 10)
+
+  EncounterJournalInstanceSelectDungeonTab:SetButtonTemplate()
+  EncounterJournalInstanceSelectRaidTab:SetButtonTemplate()
+
+  STYLE:ApplyScrollBarStyle(EncounterJournalEncounterFrameInfoLootScrollBar)
+
+  local bgParent = EncounterJournal.encounter.instance
+  local loreParent = EncounterJournal.encounter.instance.loreScroll
+
+  bgParent.loreBG:SetPoint("TOPLEFT", bgParent, "TOPLEFT", 0, 0)
+  bgParent.loreBG:SetPoint("BOTTOMRIGHT", bgParent, "BOTTOMRIGHT", 0, 90)
+
+  loreParent:SetPanelTemplate("Pattern", true, 1, 1, 5)
+  loreParent:SetPanelColor("dark")
+  loreParent.child.lore:SetTextColor(1, 1, 1)
+  EncounterJournal.encounter.infoFrame.description:SetTextColor(1, 1, 1)
+
+  loreParent:SetFrameLevel(loreParent:GetFrameLevel() + 10)
+
+  local frame = EncounterJournal.instanceSelect.scroll.child
+  local index = 1
+  local instanceButton = frame["instance"..index];
+  while instanceButton do
+      Outline(instanceButton)
+      index = index + 1;
+      instanceButton = frame["instance"..index]
+  end
+
+  hooksecurefunc("EncounterJournal_ListInstances", function()
+    local frame = EncounterJournal.instanceSelect.scroll.child
+    local index = 1
+    local instanceButton = frame["instance"..index];
+    while instanceButton do
+        Outline(instanceButton)
+        index = index + 1;
+        instanceButton = frame["instance"..index]
+    end
+  end)
+
+  EncounterJournal.instanceSelect.raidsTab:GetFontString():SetTextColor(1, 1, 1);
+  hooksecurefunc("EncounterJournal_ToggleHeaders", function()
+    local usedHeaders = EncounterJournal.encounter.usedHeaders
+    for key,used in pairs(usedHeaders) do
+      if(not used.button.Panel) then
+          used:RemoveTextures(true)
+          used.button:RemoveTextures(true)
+          used.button:SetButtonTemplate()
+      end
+      used.description:SetTextColor(1, 1, 1)
+      used.button.portrait.icon:Hide()
+    end
+  end)
+
+  hooksecurefunc("EncounterJournal_LootUpdate", function()
+    local scrollFrame = EncounterJournal.encounter.info.lootScroll;
+    local offset = HybridScrollFrame_GetOffset(scrollFrame);
+    local items = scrollFrame.buttons;
+    local item, index;
+
+    local numLoot = EJ_GetNumLoot()
+
+    for i = 1,#items do
+      item = items[i];
+      index = offset + i;
+      if index <= numLoot then
+          item.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+          if(not item.Panel) then
+            item:SetFixedPanelTemplate("Slot")
+          end
+          item.slot:SetTextColor(0.5, 1, 0)
+          item.armorType:SetTextColor(1, 1, 0)
+          item.boss:SetTextColor(0.7, 0.08, 0)
+      end
+    end
+  end)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle('Blizzard_EncounterJournal', EncounterJournalStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/friends.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/friends.lua
new file mode 100644
index 0000000..5c8c50f
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/friends.lua
@@ -0,0 +1,283 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local FrameSuffix = {
+	"LeftDisabled",
+	"MiddleDisabled",
+	"RightDisabled",
+	"Left",
+	"Middle",
+	"Right"
+};
+local FriendsFrameList1 = {
+	"ScrollOfResurrectionSelectionFrame",
+	"ScrollOfResurrectionSelectionFrameList",
+	"FriendsListFrame",
+	"FriendsTabHeader",
+	"FriendsFrameFriendsScrollFrame",
+	"WhoFrameColumnHeader1",
+	"WhoFrameColumnHeader2",
+	"WhoFrameColumnHeader3",
+	"WhoFrameColumnHeader4",
+	"ChannelListScrollFrame",
+	"ChannelRoster",
+	"FriendsFramePendingButton1",
+	"FriendsFramePendingButton2",
+	"FriendsFramePendingButton3",
+	"FriendsFramePendingButton4",
+	"ChannelFrameDaughterFrame",
+	"AddFriendFrame",
+	"AddFriendNoteFrame"
+};
+-- local FriendsFrameList2 = {
+-- 	"FriendsFrameBroadcastInputLeft",
+-- 	"FriendsFrameBroadcastInputRight",
+-- 	"FriendsFrameBroadcastInputMiddle",
+-- 	"ChannelFrameDaughterFrameChannelNameLeft",
+-- 	"ChannelFrameDaughterFrameChannelNameRight",
+-- 	"ChannelFrameDaughterFrameChannelNameMiddle",
+-- 	"ChannelFrameDaughterFrameChannelPasswordLeft",
+-- 	"ChannelFrameDaughterFrameChannelPasswordRight",
+-- 	"ChannelFrameDaughterFrameChannelPasswordMiddle"
+-- };
+local FriendsFrameButtons = {
+	"FriendsFrameAddFriendButton",
+	"FriendsFrameSendMessageButton",
+	"WhoFrameWhoButton",
+	"WhoFrameAddFriendButton",
+	"WhoFrameGroupInviteButton",
+	"ChannelFrameNewButton",
+	"FriendsFrameIgnorePlayerButton",
+	"FriendsFrameUnsquelchButton",
+	"FriendsFramePendingButton1AcceptButton",
+	"FriendsFramePendingButton1DeclineButton",
+	"FriendsFramePendingButton2AcceptButton",
+	"FriendsFramePendingButton2DeclineButton",
+	"FriendsFramePendingButton3AcceptButton",
+	"FriendsFramePendingButton3DeclineButton",
+	"FriendsFramePendingButton4AcceptButton",
+	"FriendsFramePendingButton4DeclineButton",
+	"ChannelFrameDaughterFrameOkayButton",
+	"ChannelFrameDaughterFrameCancelButton",
+	"AddFriendEntryFrameAcceptButton",
+	"AddFriendEntryFrameCancelButton",
+	"AddFriendInfoFrameContinueButton",
+	"ScrollOfResurrectionSelectionFrameAcceptButton",
+	"ScrollOfResurrectionSelectionFrameCancelButton"
+};
+
+local function TabCustomHelper(this)
+	if not this then return end
+	for _,prop in pairs(FrameSuffix) do
+		local frame = _G[this:GetName()..prop]
+		frame:SetTexture(0,0,0,0)
+	end
+	this:GetHighlightTexture():SetTexture(0,0,0,0)
+	this.backdrop = CreateFrame("Frame", nil, this)
+	this.backdrop:SetFixedPanelTemplate("Default")
+	this.backdrop:SetFrameLevel(this:GetFrameLevel()-1)
+	this.backdrop:Point("TOPLEFT", 3, -8)
+	this.backdrop:Point("BOTTOMRIGHT", -6, 0)
+end
+
+local function ChannelList_OnUpdate()
+	for i = 1, MAX_DISPLAY_CHANNEL_BUTTONS do
+		local btn = _G["ChannelButton"..i]
+		if btn then
+			btn:RemoveTextures()
+			btn:SetHighlightTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight")
+			_G["ChannelButton"..i.."Text"]:SetFontTemplate(nil, 12)
+		end
+	end
+end
+--[[
+##########################################################
+FRIENDSFRAME STYLER
+##########################################################
+]]--FriendsFrameBattlenetFrameScrollFrame
+local function FriendsFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.friends ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(FriendsFrame)
+
+	STYLE:ApplyScrollFrameStyle(FriendsFrameFriendsScrollFrameScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(WhoListScrollFrameScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(ChannelRosterScrollFrameScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(FriendsFriendsScrollFrameScrollBar)
+	FriendsFrameInset:RemoveTextures()
+	WhoFrameListInset:RemoveTextures()
+	WhoFrameEditBoxInset:RemoveTextures()
+	STYLE:ApplyEditBoxStyle(WhoFrameEditBoxInset)
+	ChannelFrameRightInset:RemoveTextures()
+	ChannelFrameLeftInset:RemoveTextures()
+	ChannelFrameRightInset:SetFixedPanelTemplate("Inset", true)
+	ChannelFrameLeftInset:SetFixedPanelTemplate("Inset", true)
+	LFRQueueFrameListInset:RemoveTextures()
+	LFRQueueFrameRoleInset:RemoveTextures()
+	LFRQueueFrameCommentInset:RemoveTextures()
+	LFRQueueFrameListInset:SetFixedPanelTemplate("Inset", true)
+	FriendsFrameFriendsScrollFrame:SetBasicPanel()
+	FriendsFrameFriendsScrollFrame.Panel:Point("TOPRIGHT", -4, 0)
+	WhoFrameListInset:SetBasicPanel()
+
+	for c, e in pairs(FriendsFrameButtons)do
+		 _G[e]:SetButtonTemplate()
+	end
+
+	-- for c, texture in pairs(FriendsFrameList2)do
+	-- 	 _G[texture]:Die()
+	-- end
+
+	for c, V in pairs(FriendsFrameList1)do
+		 _G[V]:RemoveTextures()
+	end
+
+	for u = 1, FriendsFrame:GetNumRegions()do
+		local a1 = select(u, FriendsFrame:GetRegions())
+		if a1:GetObjectType() == "Texture"then
+			a1:SetTexture(0,0,0,0)
+			a1:SetAlpha(0)
+		end
+	end
+
+	FriendsFrameStatusDropDown:SetPoint('TOPLEFT', FriendsTabHeader, 'TOPLEFT', 0, -27)
+	STYLE:ApplyDropdownStyle(FriendsFrameStatusDropDown, 70)
+	FriendsFrameBattlenetFrame:RemoveTextures()
+	FriendsFrameBattlenetFrame:SetHeight(22)
+	FriendsFrameBattlenetFrame:SetPoint('TOPLEFT', FriendsFrameStatusDropDown, 'TOPRIGHT', 0, -1)
+	FriendsFrameBattlenetFrame:SetFixedPanelTemplate("Inset")
+	FriendsFrameBattlenetFrame:SetBackdropColor(0,0,0,0.8)
+
+	-- FriendsFrameBattlenetFrame.BroadcastButton:GetNormalTexture():SetTexCoord(.28, .72, .28, .72)
+	-- FriendsFrameBattlenetFrame.BroadcastButton:GetPushedTexture():SetTexCoord(.28, .72, .28, .72)
+	-- FriendsFrameBattlenetFrame.BroadcastButton:GetHighlightTexture():SetTexCoord(.28, .72, .28, .72)
+	FriendsFrameBattlenetFrame.BroadcastButton:RemoveTextures()
+	FriendsFrameBattlenetFrame.BroadcastButton:SetSize(22,22)
+	FriendsFrameBattlenetFrame.BroadcastButton:SetPoint('TOPLEFT', FriendsFrameBattlenetFrame, 'TOPRIGHT', 8, 0)
+	FriendsFrameBattlenetFrame.BroadcastButton:SetButtonTemplate()
+	FriendsFrameBattlenetFrame.BroadcastButton:SetBackdropColor(0.4,0.4,0.4)
+	FriendsFrameBattlenetFrame.BroadcastButton:SetNormalTexture([[Interface\FriendsFrame\UI-Toast-BroadcastIcon]])
+	FriendsFrameBattlenetFrame.BroadcastButton:SetPushedTexture([[Interface\FriendsFrame\UI-Toast-BroadcastIcon]])
+	FriendsFrameBattlenetFrame.BroadcastButton:SetScript('OnClick', function()
+		SV:StaticPopup_Show("SET_BN_BROADCAST")
+	end)
+	FriendsFrameBattlenetFrame.Tag:SetFontTemplate(SV.Media.font.narrator,16,"NONE")
+	AddFriendNameEditBox:SetEditboxTemplate()
+	AddFriendFrame:SetFixedPanelTemplate("Transparent", true)
+	ScrollOfResurrectionSelectionFrame:SetFixedPanelTemplate('Transparent')
+	ScrollOfResurrectionSelectionFrameList:SetFixedPanelTemplate('Default')
+	STYLE:ApplyScrollFrameStyle(ScrollOfResurrectionSelectionFrameListScrollFrameScrollBar, 4)
+	ScrollOfResurrectionSelectionFrameTargetEditBox:SetEditboxTemplate()
+	FriendsFrameBroadcastInput:SetPanelTemplate("Default")
+	ChannelFrameDaughterFrameChannelName:SetPanelTemplate("Default")
+	ChannelFrameDaughterFrameChannelPassword:SetPanelTemplate("Default")
+
+	ChannelFrame:HookScript("OnShow", function()
+		ChannelRosterScrollFrame:RemoveTextures()
+	end)
+
+	hooksecurefunc("FriendsFrame_OnEvent", function()
+		ChannelRosterScrollFrame:RemoveTextures()
+	end)
+
+	WhoFrame:HookScript("OnShow", function()
+		ChannelRosterScrollFrame:RemoveTextures()
+	end)
+
+	hooksecurefunc("FriendsFrame_OnEvent", function()
+		WhoListScrollFrame:RemoveTextures()
+	end)
+
+	ChannelFrameDaughterFrame:SetBasicPanel()
+	STYLE:ApplyCloseButtonStyle(ChannelFrameDaughterFrameDetailCloseButton, ChannelFrameDaughterFrame)
+	STYLE:ApplyCloseButtonStyle(FriendsFrameCloseButton, FriendsFrame.Panel)
+	STYLE:ApplyDropdownStyle(WhoFrameDropDown, 150)
+
+	for i = 1, 4 do
+		 STYLE:ApplyTabStyle(_G["FriendsFrameTab"..i])
+	end
+
+	for i = 1, 3 do
+		 TabCustomHelper(_G["FriendsTabHeaderTab"..i])
+	end
+
+	hooksecurefunc("ChannelList_Update", ChannelList_OnUpdate)
+	FriendsFriendsFrame:SetBasicPanel()
+
+	_G["FriendsFriendsFrame"]:RemoveTextures()
+	_G["FriendsFriendsList"]:RemoveTextures()
+	_G["FriendsFriendsNoteFrame"]:RemoveTextures()
+
+	_G["FriendsFriendsSendRequestButton"]:SetButtonTemplate()
+	_G["FriendsFriendsCloseButton"]:SetButtonTemplate()
+
+	FriendsFriendsList:SetEditboxTemplate()
+	FriendsFriendsNoteFrame:SetEditboxTemplate()
+	STYLE:ApplyDropdownStyle(FriendsFriendsFrameDropDown, 150)
+	BNConversationInviteDialog:RemoveTextures()
+	BNConversationInviteDialog:SetPanelTemplate('Transparent')
+	BNConversationInviteDialogList:RemoveTextures()
+	BNConversationInviteDialogList:SetFixedPanelTemplate('Default')
+	BNConversationInviteDialogInviteButton:SetButtonTemplate()
+	BNConversationInviteDialogCancelButton:SetButtonTemplate()
+	for i = 1, BN_CONVERSATION_INVITE_NUM_DISPLAYED do
+		 _G["BNConversationInviteDialogListFriend"..i].checkButton:SetCheckboxTemplate(true)
+	end
+	FriendsTabHeaderSoRButton:SetFixedPanelTemplate('Default')
+	FriendsTabHeaderSoRButton:SetButtonTemplate()
+	FriendsTabHeaderSoRButtonIcon:SetDrawLayer('OVERLAY')
+	FriendsTabHeaderSoRButtonIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	FriendsTabHeaderSoRButtonIcon:FillInner()
+	FriendsTabHeaderSoRButton:Point('TOPRIGHT', FriendsTabHeader, 'TOPRIGHT', -8, -56)
+	FriendsTabHeaderRecruitAFriendButton:SetFixedPanelTemplate('Default')
+	FriendsTabHeaderRecruitAFriendButton:SetButtonTemplate()
+	FriendsTabHeaderRecruitAFriendButtonIcon:SetDrawLayer('OVERLAY')
+	FriendsTabHeaderRecruitAFriendButtonIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	FriendsTabHeaderRecruitAFriendButtonIcon:FillInner()
+
+	FriendsFrameIgnoreScrollFrame:SetFixedPanelTemplate("Inset")
+	STYLE:ApplyScrollFrameStyle(FriendsFrameIgnoreScrollFrameScrollBar, 4)
+	FriendsFramePendingScrollFrame:SetFixedPanelTemplate("Inset")
+	STYLE:ApplyScrollFrameStyle(FriendsFramePendingScrollFrameScrollBar, 4)
+	IgnoreListFrame:RemoveTextures()
+	PendingListFrame:RemoveTextures()
+	ScrollOfResurrectionFrame:RemoveTextures()
+	ScrollOfResurrectionFrameAcceptButton:SetButtonTemplate()
+	ScrollOfResurrectionFrameCancelButton:SetButtonTemplate()
+	ScrollOfResurrectionFrameTargetEditBoxLeft:SetTexture(0,0,0,0)
+	ScrollOfResurrectionFrameTargetEditBoxMiddle:SetTexture(0,0,0,0)
+	ScrollOfResurrectionFrameTargetEditBoxRight:SetTexture(0,0,0,0)
+	ScrollOfResurrectionFrameNoteFrame:RemoveTextures()
+	ScrollOfResurrectionFrameNoteFrame:SetFixedPanelTemplate()
+	ScrollOfResurrectionFrameTargetEditBox:SetFixedPanelTemplate()
+	ScrollOfResurrectionFrame:SetFixedPanelTemplate('Transparent')
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(FriendsFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/gossip.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/gossip.lua
new file mode 100644
index 0000000..d45542a
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/gossip.lua
@@ -0,0 +1,67 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+GOSSIP STYLER
+##########################################################
+]]--
+local function GossipStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.gossip ~= true then return end
+	ItemTextFrame:RemoveTextures(true)
+	ItemTextScrollFrame:RemoveTextures()
+	STYLE:ApplyCloseButtonStyle(GossipFrameCloseButton)
+	STYLE:ApplyPaginationStyle(ItemTextPrevPageButton)
+	STYLE:ApplyPaginationStyle(ItemTextNextPageButton)
+	ItemTextPageText:SetTextColor(1, 1, 1)
+	hooksecurefunc(ItemTextPageText, "SetTextColor", function(q, k, l, m)
+		if k ~= 1 or l ~= 1 or m ~= 1 then
+			ItemTextPageText:SetTextColor(1, 1, 1)
+		end
+	end)
+	ItemTextFrame:SetPanelTemplate("Pattern")
+	ItemTextFrameInset:Die()
+	STYLE:ApplyScrollFrameStyle(ItemTextScrollFrameScrollBar)
+	STYLE:ApplyCloseButtonStyle(ItemTextFrameCloseButton)
+	local r = {"GossipFrameGreetingPanel", "GossipFrame", "GossipFrameInset", "GossipGreetingScrollFrame"}
+	STYLE:ApplyScrollFrameStyle(GossipGreetingScrollFrameScrollBar, 5)
+	for s, t in pairs(r)do
+		_G[t]:RemoveTextures()
+	end
+	GossipFrame:SetPanelTemplate("Halftone")
+	GossipGreetingScrollFrame:SetFixedPanelTemplate("Inset", true)
+	GossipGreetingScrollFrame.spellTex = GossipGreetingScrollFrame:CreateTexture(nil, "ARTWORK")
+	GossipGreetingScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
+	GossipGreetingScrollFrame.spellTex:SetPoint("TOPLEFT", 2, -2)
+	GossipGreetingScrollFrame.spellTex:Size(506, 615)
+	GossipGreetingScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
+	_G["GossipFramePortrait"]:Die()
+	_G["GossipFrameGreetingGoodbyeButton"]:RemoveTextures()
+	_G["GossipFrameGreetingGoodbyeButton"]:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(GossipFrameCloseButton, GossipFrame.Panel)
+	NPCFriendshipStatusBar:RemoveTextures()
+	NPCFriendshipStatusBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	NPCFriendshipStatusBar:SetPanelTemplate("Default")
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(GossipStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/guild.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/guild.lua
new file mode 100644
index 0000000..6d1c9c0
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/guild.lua
@@ -0,0 +1,699 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local format = string.format;
+local internalTest = false;
+
+local GuildFrameList = {
+	"GuildNewPerksFrame",
+	"GuildFrameInset",
+	"GuildFrameBottomInset",
+	"GuildAllPerksFrame",
+	"GuildMemberDetailFrame",
+	"GuildMemberNoteBackground",
+	"GuildInfoFrameInfo",
+	"GuildLogContainer",
+	"GuildLogFrame",
+	"GuildRewardsFrame",
+	"GuildMemberOfficerNoteBackground",
+	"GuildTextEditContainer",
+	"GuildTextEditFrame",
+	"GuildRecruitmentRolesFrame",
+	"GuildRecruitmentAvailabilityFrame",
+	"GuildRecruitmentInterestFrame",
+	"GuildRecruitmentLevelFrame",
+	"GuildRecruitmentCommentFrame",
+	"GuildRecruitmentCommentInputFrame",
+	"GuildInfoFrameApplicantsContainer",
+	"GuildInfoFrameApplicants",
+	"GuildNewsBossModel",
+	"GuildNewsBossModelTextFrame"
+};
+
+local GuildButtonList = {
+	"GuildPerksToggleButton",
+	"GuildMemberRemoveButton",
+	"GuildMemberGroupInviteButton",
+	"GuildAddMemberButton",
+	"GuildViewLogButton",
+	"GuildControlButton",
+	"GuildRecruitmentListGuildButton",
+	"GuildTextEditFrameAcceptButton",
+	"GuildRecruitmentInviteButton",
+	"GuildRecruitmentMessageButton",
+	"GuildRecruitmentDeclineButton"
+};
+
+local GuildCheckBoxList = {
+	"GuildRecruitmentQuestButton",
+	"GuildRecruitmentDungeonButton",
+	"GuildRecruitmentRaidButton",
+	"GuildRecruitmentPvPButton",
+	"GuildRecruitmentRPButton",
+	"GuildRecruitmentWeekdaysButton",
+	"GuildRecruitmentWeekendsButton",
+	"GuildRecruitmentLevelAnyButton",
+	"GuildRecruitmentLevelMaxButton"
+};
+
+local CalendarIconList = {
+	[CALENDAR_EVENTTYPE_PVP] = "Interface\\Calendar\\UI-Calendar-Event-PVP",
+	[CALENDAR_EVENTTYPE_MEETING] = "Interface\\Calendar\\MeetingIcon",
+	[CALENDAR_EVENTTYPE_OTHER] = "Interface\\Calendar\\UI-Calendar-Event-Other"
+};
+
+local LFGFrameList = {
+  "LookingForGuildPvPButton",
+  "LookingForGuildWeekendsButton",
+  "LookingForGuildWeekdaysButton",
+  "LookingForGuildRPButton",
+  "LookingForGuildRaidButton",
+  "LookingForGuildQuestButton",
+  "LookingForGuildDungeonButton"
+};
+
+local function GCTabHelper(tab)
+	tab.Panel:Hide()
+	tab.bg1 = tab:CreateTexture(nil,"BACKGROUND")
+	tab.bg1:SetDrawLayer("BACKGROUND",4)
+	tab.bg1:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	tab.bg1:SetVertexColor(unpack(SV.Media.color.default))
+	tab.bg1:FillInner(tab.Panel,1)
+	tab.bg3 = tab:CreateTexture(nil,"BACKGROUND")
+	tab.bg3:SetDrawLayer("BACKGROUND",2)
+	tab.bg3:SetTexture(0,0,0,1)
+	tab.bg3:SetAllPoints(tab.Panel)
+end
+
+local RankOrder_OnUpdate = function()
+	for b=1,GuildControlGetNumRanks()do
+		local frame = _G["GuildControlUIRankOrderFrameRank"..b]
+		if frame then
+			frame.downButton:SetButtonTemplate()
+			frame.upButton:SetButtonTemplate()
+			frame.deleteButton:SetButtonTemplate()
+			if not frame.nameBox.Panel then
+				frame.nameBox:SetEditboxTemplate()
+			end
+			frame.nameBox.Panel:Point("TOPLEFT",-2,-4)
+			frame.nameBox.Panel:Point("BOTTOMRIGHT",-4,4)
+		end
+	end
+end
+
+function GuildInfoEvents_SetButton(button, eventIndex)
+	local dateData = date("*t")
+	local month, day, weekday, hour, minute, eventType, title, calendarType, textureName = CalendarGetGuildEventInfo(eventIndex)
+	local formattedTime = GameTime_GetFormattedTime(hour, minute, true)
+	local unformattedText;
+	if dateData["day"] == day and dateData["month"] == month then
+		unformattedText = NORMAL_FONT_COLOR_CODE..GUILD_EVENT_TODAY..FONT_COLOR_CODE_CLOSE
+	else
+		local year = dateData["year"]
+		if month < dateData["month"] then
+			year = year + 1
+		end
+		local newTime = time{year = year, month = month, day = day}
+		if(((newTime - time()) < 518400) and CALENDAR_WEEKDAY_NAMES[weekday]) then
+			unformattedText = CALENDAR_WEEKDAY_NAMES[weekday]
+		elseif CALENDAR_WEEKDAY_NAMES[weekday]and day and month then
+			unformattedText = format(GUILD_NEWS_DATE, CALENDAR_WEEKDAY_NAMES[weekday], day, month)
+		end
+	end
+	if button.text and unformattedText then
+		button.text:SetFormattedText(GUILD_EVENT_FORMAT, unformattedText, formattedTime, title)
+	end
+	button.index = eventIndex;
+	if button.icon.type ~= "event" then
+		button.icon.type = "event"
+		button.icon:SetTexCoord(0, 1, 0, 1)
+		button.icon:SetWidth(14)
+		button.icon:SetHeight(14)
+	end
+	if CalendarIconList[eventType] then
+		button.icon:SetTexture(CalendarIconList[eventType])
+	else
+		button.icon:SetTexture("Interface\\LFGFrame\\LFGIcon-"..textureName)
+	end
+end
+--[[
+##########################################################
+GUILDFRAME STYLERS
+##########################################################
+]]--
+local function GuildBankStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.gbank ~= true then
+		return
+	end
+
+	STYLE:ApplyWindowStyle(GuildBankFrame)
+
+	GuildBankEmblemFrame:RemoveTextures(true)
+	GuildBankMoneyFrameBackground:Die()
+	STYLE:ApplyScrollFrameStyle(GuildBankPopupScrollFrameScrollBar)
+
+	for b = 1, GuildBankFrame:GetNumChildren() do
+		local c = select(b, GuildBankFrame:GetChildren())
+		if c.GetPushedTexture and c:GetPushedTexture() and not c:GetName() then
+			STYLE:ApplyCloseButtonStyle(c)
+		end
+	end
+
+	GuildBankFrameDepositButton:SetButtonTemplate()
+	GuildBankFrameWithdrawButton:SetButtonTemplate()
+	GuildBankInfoSaveButton:SetButtonTemplate()
+	GuildBankFramePurchaseButton:SetButtonTemplate()
+	GuildBankFrameWithdrawButton:Point("RIGHT", GuildBankFrameDepositButton, "LEFT", -2, 0)
+	GuildBankInfoScrollFrame:Point('TOPLEFT', GuildBankInfo, 'TOPLEFT', -10, 12)
+	GuildBankInfoScrollFrame:RemoveTextures()
+	GuildBankInfoScrollFrame:Width(GuildBankInfoScrollFrame:GetWidth()-8)
+	GuildBankTransactionsScrollFrame:RemoveTextures()
+
+	for b = 1, NUM_GUILDBANK_COLUMNS do
+		if(_G["GuildBankColumn"..b]) then
+			_G["GuildBankColumn"..b]:RemoveTextures()
+
+			for d = 1, NUM_SLOTS_PER_GUILDBANK_GROUP do
+				local e = _G["GuildBankColumn"..b.."Button"..d]
+				local icon = _G["GuildBankColumn"..b.."Button"..d.."IconTexture"]
+				local texture = _G["GuildBankColumn"..b.."Button"..d.."NormalTexture"]
+				if texture then
+					texture:SetTexture(0,0,0,0)
+				end
+				e:SetSlotTemplate()
+				icon:FillInner()
+				icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			end
+		end
+	end
+
+	for b = 1, 8 do
+		local e = _G["GuildBankTab"..b.."Button"]
+		if(e) then
+			local texture = _G["GuildBankTab"..b.."ButtonIconTexture"]
+			_G["GuildBankTab"..b]:RemoveTextures(true)
+			e:RemoveTextures()
+			e:SetButtonTemplate()
+			e:SetFixedPanelTemplate("Default")
+			texture:FillInner()
+			texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		end
+	end
+
+	for b = 1, 4 do
+		STYLE:ApplyTabStyle(_G["GuildBankFrameTab"..b])
+	end
+
+	hooksecurefunc('GuildBankFrame_Update', function()
+		if GuildBankFrame.mode ~= "bank" then
+			return
+		end
+		local f = GetCurrentGuildBankTab()
+		local e, g, h, i, j, k, l, m;
+		for b = 1, MAX_GUILDBANK_SLOTS_PER_TAB do
+			g = mod(b, NUM_SLOTS_PER_GUILDBANK_GROUP)
+			if g == 0 then
+				g = NUM_SLOTS_PER_GUILDBANK_GROUP
+			end
+			h = ceil((b-0.5)/NUM_SLOTS_PER_GUILDBANK_GROUP)
+			e = _G["GuildBankColumn"..h.."Button"..g]
+			i = GetGuildBankItemLink(f, b)
+			if i then
+				j = select(3, GetItemInfo(i))
+				if j > 1 then
+					k, l, m = GetItemQualityColor(j)
+				else
+					k, l, m = 0,0,0,1
+				end
+			else
+				k, l, m = 0,0,0,1
+			end
+			e:SetBackdropBorderColor(k, l, m)
+		end
+	end)
+
+	GuildBankPopupFrame:RemoveTextures()
+	GuildBankPopupScrollFrame:RemoveTextures()
+	GuildBankPopupFrame:SetFixedPanelTemplate("Transparent", true)
+	GuildBankPopupFrame:Point("TOPLEFT", GuildBankFrame, "TOPRIGHT", 1, -30)
+	GuildBankPopupOkayButton:SetButtonTemplate()
+	GuildBankPopupCancelButton:SetButtonTemplate()
+	GuildBankPopupEditBox:SetEditboxTemplate()
+	GuildBankPopupNameLeft:Die()
+	GuildBankPopupNameRight:Die()
+	GuildBankPopupNameMiddle:Die()
+	GuildItemSearchBox:RemoveTextures()
+	GuildItemSearchBox:SetPanelTemplate("Overlay")
+	GuildItemSearchBox.Panel:Point("TOPLEFT", 10, -1)
+	GuildItemSearchBox.Panel:Point("BOTTOMRIGHT", 4, 1)
+
+	for b = 1, 16 do
+		local e = _G["GuildBankPopupButton"..b]
+		if(e) then
+			local icon = _G[e:GetName().."Icon"]
+			e:RemoveTextures()
+			e:SetFixedPanelTemplate("Default")
+			e:SetButtonTemplate()
+			icon:FillInner()
+			icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		end
+	end
+
+	STYLE:ApplyScrollFrameStyle(GuildBankTransactionsScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(GuildBankInfoScrollFrameScrollBar)
+end
+
+local function GuildFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.guild ~= true then
+		return
+	end
+
+	STYLE:ApplyWindowStyle(GuildFrame)
+
+	STYLE:ApplyCloseButtonStyle(GuildMemberDetailCloseButton)
+	STYLE:ApplyCloseButtonStyle(GuildFrameCloseButton)
+	GuildRewardsFrameVisitText:ClearAllPoints()
+	GuildRewardsFrameVisitText:SetPoint("TOP", GuildRewardsFrame, "TOP", 0, 30)
+
+	for i = 1, #GuildFrameList do
+		local frame = _G[GuildFrameList[i]]
+		if(frame) then
+			frame:RemoveTextures()
+		end
+	end
+
+	for i = 1, #GuildButtonList do
+		local button = _G[GuildButtonList[i]]
+		if(button) then
+			button:RemoveTextures(true)
+			button:SetButtonTemplate()
+		end
+	end
+
+	for i = 1, #GuildCheckBoxList do
+		local check = _G[GuildCheckBoxList[i]]
+		if(check) then check:SetCheckboxTemplate(true) end
+	end
+
+	for i = 1, 5 do
+		local tab = _G["GuildFrameTab"..i]
+		if(tab) then
+			STYLE:ApplyTabStyle(tab)
+			if i == 1 then
+				tab:Point("TOPLEFT", GuildFrame, "BOTTOMLEFT", -10, 3)
+			end
+		end
+	end
+
+	GuildNewsBossModel:SetBasicPanel()
+	GuildNewsBossModelTextFrame:SetPanelTemplate("Default")
+	GuildNewsBossModelTextFrame.Panel:Point("TOPLEFT", GuildNewsBossModel.Panel, "BOTTOMLEFT", 0, -1)
+	GuildNewsBossModel:SetPoint("TOPLEFT", GuildFrame, "TOPRIGHT", 4, -43)
+
+	GuildRecruitmentTankButton.checkButton:SetCheckboxTemplate(true)
+	GuildRecruitmentHealerButton.checkButton:SetCheckboxTemplate(true)
+	GuildRecruitmentDamagerButton.checkButton:SetCheckboxTemplate(true)
+
+	GuildFactionBar:RemoveTextures()
+	GuildFactionBar.progress:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	GuildFactionBar:SetPanelTemplate("Inset")
+	GuildFactionBar.Panel:Point("TOPLEFT", GuildFactionBar.progress, "TOPLEFT", -1, 1)
+	GuildFactionBar.Panel:Point("BOTTOMRIGHT", GuildFactionBar, "BOTTOMRIGHT", 1, 1)
+
+	if(SV.GameVersion < 60000) then
+		GuildLevelFrame:Die()
+
+		GuildXPFrame:ClearAllPoints()
+		GuildXPFrame:Point("TOP", GuildFrame, "TOP", 0, -40)
+
+		GuildXPBar:RemoveTextures()
+		GuildXPBar.progress:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+		GuildXPBar:SetPanelTemplate("Inset")
+		GuildXPBar.Panel:Point("TOPLEFT", GuildXPBar, "TOPLEFT", -1, -3)
+		GuildXPBar.Panel:Point("BOTTOMRIGHT", GuildXPBar, "BOTTOMRIGHT", 0, 1)
+	end
+
+	GuildLatestPerkButton:RemoveTextures()
+	GuildLatestPerkButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	GuildLatestPerkButtonIconTexture:ClearAllPoints()
+	GuildLatestPerkButtonIconTexture:Point("TOPLEFT", 2, -2)
+	GuildLatestPerkButton:SetPanelTemplate("Inset")
+	GuildLatestPerkButton.Panel:WrapOuter(GuildLatestPerkButtonIconTexture)
+
+	GuildNextPerkButton:RemoveTextures()
+	GuildNextPerkButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	GuildNextPerkButtonIconTexture:ClearAllPoints()
+	GuildNextPerkButtonIconTexture:Point("TOPLEFT", 2, -2)
+	GuildNextPerkButton:SetPanelTemplate("Inset")
+	GuildNextPerkButton.Panel:WrapOuter(GuildNextPerkButtonIconTexture)
+
+	GuildRosterContainer:SetBasicPanel(-2, 2, -1, -2)
+	STYLE:ApplyScrollFrameStyle(GuildRosterContainerScrollBar, 4, -4)
+	GuildRosterShowOfflineButton:SetCheckboxTemplate(true)
+
+	for i = 1, 4 do
+		local btn = _G["GuildRosterColumnButton"..i]
+		if(btn) then
+			btn:RemoveTextures(true)
+		end
+	end
+
+	STYLE:ApplyDropdownStyle(GuildRosterViewDropdown, 200)
+
+	for i = 1, 14 do
+		local btn = _G["GuildRosterContainerButton"..i.."HeaderButton"]
+		if(btn) then
+			btn:RemoveTextures()
+			btn:SetButtonTemplate()
+		end
+	end
+
+	GuildMemberDetailFrame:SetPanelTemplate("Default", true)
+	GuildMemberNoteBackground:SetBasicPanel()
+	GuildMemberOfficerNoteBackground:SetBasicPanel()
+
+	GuildMemberRankDropdown:SetFrameLevel(GuildMemberRankDropdown:GetFrameLevel()+5)
+	STYLE:ApplyDropdownStyle(GuildMemberRankDropdown, 182)
+	GuildMemberRankDropdown.Panel:SetBackdropColor(0,0,0,1)
+	GuildNewsFrame:RemoveTextures()
+	GuildNewsContainer:SetBasicPanel(-2, 2, 0, -2)
+
+	for i = 1, 17 do
+		local btn = _G["GuildNewsContainerButton"..i]
+		if(btn) then
+			if(btn.header) then btn.header:Die() end
+			btn:RemoveTextures()
+			btn:SetButtonTemplate()
+		end
+	end
+
+	GuildNewsFiltersFrame:RemoveTextures()
+	GuildNewsFiltersFrame:SetFixedPanelTemplate("Transparent", true)
+	STYLE:ApplyCloseButtonStyle(GuildNewsFiltersFrameCloseButton)
+
+	for i = 1, 7 do
+		local btn = _G["GuildNewsFilterButton"..i]
+		if(btn) then
+			btn:SetCheckboxTemplate(true)
+		end
+	end
+
+	GuildNewsFiltersFrame:Point("TOPLEFT", GuildFrame, "TOPRIGHT", 4, -20)
+	STYLE:ApplyScrollFrameStyle(GuildNewsContainerScrollBar, 4, 4)
+	STYLE:ApplyScrollFrameStyle(GuildInfoDetailsFrameScrollBar, 4, 4)
+
+	for i = 1, 3 do
+		local tab = _G["GuildInfoFrameTab"..i]
+		if(tab) then
+			tab:RemoveTextures()
+		end
+	end
+
+	local panel1 = CreateFrame("Frame", nil, GuildInfoFrameInfo)
+	panel1:SetPoint("TOPLEFT", GuildInfoFrameInfo, "TOPLEFT", 2, -22)
+	panel1:SetPoint("BOTTOMRIGHT", GuildInfoFrameInfo, "BOTTOMRIGHT", 0, 200)
+	panel1:SetBasicPanel()
+
+	local panel2 = CreateFrame("Frame", nil, GuildInfoFrameInfo)
+	panel2:SetPoint("TOPLEFT", GuildInfoFrameInfo, "TOPLEFT", 2, -158)
+	panel2:SetPoint("BOTTOMRIGHT", GuildInfoFrameInfo, "BOTTOMRIGHT", 0, 118)
+	panel2:SetBasicPanel()
+
+	local panel3 = CreateFrame("Frame", nil, GuildInfoFrameInfo)
+	panel3:SetPoint("TOPLEFT", GuildInfoFrameInfo, "TOPLEFT", 2, -233)
+	panel3:SetPoint("BOTTOMRIGHT", GuildInfoFrameInfo, "BOTTOMRIGHT", 0, 3)
+	panel3:SetBasicPanel()
+
+	GuildRecruitmentCommentInputFrame:SetFixedPanelTemplate("Default")
+	GuildTextEditFrame:SetFixedPanelTemplate("Transparent", true)
+	STYLE:ApplyScrollFrameStyle(GuildTextEditScrollFrameScrollBar, 4, 4)
+	GuildTextEditContainer:SetFixedPanelTemplate("Default")
+
+	local editChildren = GuildTextEditFrame:GetNumChildren()
+
+	for i = 1, editChildren do
+		local child = select(i, GuildTextEditFrame:GetChildren())
+		if(child:GetName() == "GuildTextEditFrameCloseButton") then
+			if(child:GetWidth() < 33) then
+				STYLE:ApplyCloseButtonStyle(child)
+			else
+				child:SetButtonTemplate()
+			end
+		end
+	end
+
+	STYLE:ApplyScrollFrameStyle(GuildLogScrollFrameScrollBar, 4, 4)
+	GuildLogFrame:SetBasicPanel()
+
+	local logChildren = GuildLogFrame:GetNumChildren()
+
+	for i = 1, logChildren do
+		local child = select(i, GuildLogFrame:GetChildren())
+		if child:GetName() == "GuildLogFrameCloseButton" then
+			if(child:GetWidth() < 33) then
+				STYLE:ApplyCloseButtonStyle(child)
+			else
+				child:SetButtonTemplate()
+			end
+		end
+	end
+
+	GuildRewardsFrame:SetBasicPanel(2, 0, -22, 18)
+	STYLE:ApplyScrollFrameStyle(GuildRewardsContainerScrollBar, 4, -4)
+
+	GuildNewPerksFrame:SetBasicPanel(-1, 0, 1, 0)
+	GuildPerksContainer:SetBasicPanel(-3, 0, 26, -3)
+
+	STYLE:ApplyScrollFrameStyle(GuildPerksContainerScrollBar, 4, 2)
+
+	for i = 1, 8 do
+		local button = _G["GuildPerksContainerButton"..i]
+		if button then
+			button:RemoveTextures()
+			if button.icon then
+				STYLE:ApplyItemButtonStyle(button, nil, true)
+				button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				button.icon:ClearAllPoints()
+				button.icon:Point("TOPLEFT", button, "TOPLEFT", 2, -2)
+				button.icon:SetParent(button.Panel)
+			end
+		end
+	end
+
+	for i = 1, 8 do
+		local button = _G["GuildRewardsContainerButton"..i]
+		if button then
+			button:RemoveTextures()
+			if button.icon then
+				button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				button.icon:ClearAllPoints()
+				button.icon:Point("TOPLEFT", button, "TOPLEFT", 2, -2)
+				button:SetFixedPanelTemplate("Button")
+				button.Panel:WrapOuter(button.icon)
+				button.icon:SetParent(button.Panel)
+			end
+		end
+	end
+
+	local maxCalendarEvents = CalendarGetNumGuildEvents();
+	local scrollFrame = GuildInfoFrameApplicantsContainer;
+  	local offset = HybridScrollFrame_GetOffset(scrollFrame);
+  	local buttonIndex,counter = 0,0;
+
+	for _,button in next, GuildInfoFrameApplicantsContainer.buttons do
+		counter = counter + 1;
+		buttonIndex = offset + counter;
+		button.selectedTex:Die()
+		button:GetHighlightTexture():Die()
+		button:SetBackdrop(nil)
+	end
+end
+
+local function GuildControlStyle()
+	if SV.db[Schema].blizzard.enable~=true or SV.db[Schema].blizzard.guildcontrol~=true then return end
+
+	GuildControlUI:RemoveTextures()
+	GuildControlUIHbar:RemoveTextures()
+	GuildControlUIRankBankFrameInset:RemoveTextures()
+	GuildControlUIRankBankFrameInsetScrollFrame:RemoveTextures()
+
+	STYLE:ApplyWindowStyle(GuildControlUI)
+
+	STYLE:ApplyScrollFrameStyle(GuildControlUIRankBankFrameInsetScrollFrameScrollBar)
+
+	hooksecurefunc("GuildControlUI_RankOrder_Update",RankOrder_OnUpdate)
+
+	GuildControlUIRankOrderFrameNewButton:HookScript("OnClick", function()
+		SV.Timers:ExecuteTimer(1,RankOrder_OnUpdate)
+	end)
+
+	STYLE:ApplyDropdownStyle(GuildControlUINavigationDropDown)
+	STYLE:ApplyDropdownStyle(GuildControlUIRankSettingsFrameRankDropDown,180)
+	GuildControlUINavigationDropDownButton:Width(20)
+	GuildControlUIRankSettingsFrameRankDropDownButton:Width(20)
+
+	for i=1, NUM_RANK_FLAGS do
+		local check = _G["GuildControlUIRankSettingsFrameCheckbox"..i]
+		if(check) then check:SetCheckboxTemplate(true) end
+	end
+
+	GuildControlUIRankOrderFrameNewButton:SetButtonTemplate()
+	GuildControlUIRankSettingsFrameGoldBox:SetEditboxTemplate()
+	GuildControlUIRankSettingsFrameGoldBox.Panel:Point("TOPLEFT",-2,-4)
+	GuildControlUIRankSettingsFrameGoldBox.Panel:Point("BOTTOMRIGHT",2,4)
+	GuildControlUIRankSettingsFrameGoldBox:RemoveTextures()
+	GuildControlUIRankBankFrame:RemoveTextures()
+
+	hooksecurefunc("GuildControlUI_BankTabPermissions_Update",function()
+		local tabs = GetNumGuildBankTabs()
+
+		if tabs < MAX_BUY_GUILDBANK_TABS then
+			tabs = tabs + 1
+		end
+
+		for i=1, tabs do
+			local tab = _G["GuildControlBankTab"..i.."Owned"]
+
+			if(tab) then
+				if(tab.tabIcon) then tab.tabIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9) end
+				if(tab.editBox) then tab.editBox:SetEditboxTemplate() end
+
+				if internalTest == false then
+					_G["GuildControlBankTab"..i.."BuyPurchaseButton"]:SetButtonTemplate()
+					_G["GuildControlBankTab"..i.."OwnedStackBox"]:SetEditboxTemplate()
+					_G["GuildControlBankTab"..i.."OwnedViewCheck"]:SetCheckboxTemplate(true)
+					_G["GuildControlBankTab"..i.."OwnedDepositCheck"]:SetCheckboxTemplate(true)
+					_G["GuildControlBankTab"..i.."OwnedUpdateInfoCheck"]:SetCheckboxTemplate(true)
+
+					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedStackBox"])
+					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedViewCheck"])
+					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedDepositCheck"])
+					GCTabHelper(_G["GuildControlBankTab"..i.."OwnedUpdateInfoCheck"])
+				end
+			end
+		end
+		internalTest = true
+	end)
+
+	STYLE:ApplyDropdownStyle(GuildControlUIRankBankFrameRankDropDown, 180)
+
+	GuildControlUIRankBankFrameRankDropDownButton:Width(20)
+end
+
+
+local function GuildRegistrarStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.guildregistrar ~= true then
+		return
+	end
+
+	STYLE:ApplyWindowStyle(GuildRegistrarFrame, true, true)
+
+	GuildRegistrarFrameInset:Die()
+	GuildRegistrarFrameEditBox:RemoveTextures()
+	GuildRegistrarGreetingFrame:RemoveTextures()
+
+	GuildRegistrarFrameGoodbyeButton:SetButtonTemplate()
+	GuildRegistrarFrameCancelButton:SetButtonTemplate()
+	GuildRegistrarFramePurchaseButton:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(GuildRegistrarFrameCloseButton)
+	GuildRegistrarFrameEditBox:SetEditboxTemplate()
+
+	for b = 1, GuildRegistrarFrameEditBox:GetNumRegions()do
+		local a2 = select(b, GuildRegistrarFrameEditBox:GetRegions())
+		if a2 and a2:GetObjectType() == "Texture"then
+			if a2:GetTexture() == "Interface\\ChatFrame\\UI-ChatInputBorder-Left" or a2:GetTexture() == "Interface\\ChatFrame\\UI-ChatInputBorder-Right" then
+				a2:Die()
+			end
+		end
+	end
+
+	GuildRegistrarFrameEditBox:Height(20)
+
+	if(_G["GuildRegistrarButton1"]) then
+		_G["GuildRegistrarButton1"]:GetFontString():SetTextColor(1, 1, 1)
+	end
+	if(_G["GuildRegistrarButton2"]) then
+		_G["GuildRegistrarButton2"]:GetFontString():SetTextColor(1, 1, 1)
+	end
+
+	GuildRegistrarPurchaseText:SetTextColor(1, 1, 1)
+	AvailableServicesText:SetTextColor(1, 1, 0)
+end
+
+local function LFGuildFrameStyle()
+	if(SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.lfguild ~= true) then return end
+
+	STYLE:ApplyWindowStyle(LookingForGuildFrame, true)
+
+	for i = 1, #LFGFrameList do
+		local check = _G[LFGFrameList[i]]
+		if(check) then check:SetCheckboxTemplate(true) end
+	end
+
+	LookingForGuildTankButton.checkButton:SetCheckboxTemplate(true)
+	LookingForGuildHealerButton.checkButton:SetCheckboxTemplate(true)
+	LookingForGuildDamagerButton.checkButton:SetCheckboxTemplate(true)
+	LookingForGuildFrameInset:RemoveTextures(false)
+	LookingForGuildBrowseButton_LeftSeparator:Die()
+	LookingForGuildRequestButton_RightSeparator:Die()
+
+	STYLE:ApplyScrollFrameStyle(LookingForGuildBrowseFrameContainerScrollBar)
+	LookingForGuildBrowseButton:SetButtonTemplate()
+	LookingForGuildRequestButton:SetButtonTemplate()
+
+	STYLE:ApplyCloseButtonStyle(LookingForGuildFrameCloseButton)
+	LookingForGuildCommentInputFrame:SetPanelTemplate("Default")
+	LookingForGuildCommentInputFrame:RemoveTextures(false)
+
+	for u = 1, 5 do
+		local J = _G["LookingForGuildBrowseFrameContainerButton"..u]
+		local K = _G["LookingForGuildAppsFrameContainerButton"..u]
+		J:SetBackdrop(nil)
+		K:SetBackdrop(nil)
+	end
+
+	for u = 1, 3 do
+		local tab = _G["LookingForGuildFrameTab"..u]
+		STYLE:ApplyTabStyle(tab)
+		tab:SetFrameStrata("HIGH")
+		tab:SetFrameLevel(99)
+	end
+
+	GuildFinderRequestMembershipFrame:RemoveTextures(true)
+	GuildFinderRequestMembershipFrame:SetFixedPanelTemplate("Transparent", true)
+	GuildFinderRequestMembershipFrameAcceptButton:SetButtonTemplate()
+	GuildFinderRequestMembershipFrameCancelButton:SetButtonTemplate()
+	GuildFinderRequestMembershipFrameInputFrame:RemoveTextures()
+	GuildFinderRequestMembershipFrameInputFrame:SetFixedPanelTemplate("Default")
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_GuildBankUI",GuildBankStyle)
+STYLE:SaveBlizzardStyle("Blizzard_GuildUI",GuildFrameStyle)
+STYLE:SaveBlizzardStyle("Blizzard_GuildControlUI",GuildControlStyle)
+STYLE:SaveCustomStyle(GuildRegistrarStyle)
+STYLE:SaveBlizzardStyle("Blizzard_LookingForGuildUI",LFGuildFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/help.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/help.lua
new file mode 100644
index 0000000..bf38890
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/help.lua
@@ -0,0 +1,175 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local HelpFrameList = {
+	"HelpFrameLeftInset",
+	"HelpFrameMainInset",
+	"HelpFrameKnowledgebase",
+	"HelpFrameHeader",
+	"HelpFrameKnowledgebaseErrorFrame"
+}
+
+local HelpFrameButtonList = {
+	"HelpFrameOpenTicketHelpItemRestoration",
+	"HelpFrameAccountSecurityOpenTicket",
+	"HelpFrameOpenTicketHelpTopIssues",
+	"HelpFrameOpenTicketHelpOpenTicket",
+	"HelpFrameKnowledgebaseSearchButton",
+	"HelpFrameKnowledgebaseNavBarHomeButton",
+	"HelpFrameCharacterStuckStuck",
+	"GMChatOpenLog",
+	"HelpFrameTicketSubmit",
+	"HelpFrameTicketCancel"
+}
+
+local function NavBarHelper(button)
+	for i = 1, #button.navList do
+		local this = button.navList[i]
+		local last = button.navList[i - 1]
+		if this and last then
+			local level = last:GetFrameLevel()
+			if(level >= 2) then
+				level = level - 2
+			else
+				level = 0
+			end
+			this:SetFrameLevel(level)
+		end
+	end
+end
+--[[
+##########################################################
+HELPFRAME STYLER
+##########################################################
+]]--
+local function HelpFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.help ~= true then
+		return
+	end
+	tinsert(HelpFrameButtonList, "HelpFrameButton16")
+	tinsert(HelpFrameButtonList, "HelpFrameSubmitSuggestionSubmit")
+	tinsert(HelpFrameButtonList, "HelpFrameReportBugSubmit")
+	for d = 1, #HelpFrameList do
+		_G[HelpFrameList[d]]:RemoveTextures(true)
+		_G[HelpFrameList[d]]:SetPanelTemplate("Default")
+	end
+	HelpFrameHeader:SetFrameLevel(HelpFrameHeader:GetFrameLevel()+2)
+	HelpFrameKnowledgebaseErrorFrame:SetFrameLevel(HelpFrameKnowledgebaseErrorFrame:GetFrameLevel()+2)
+	HelpFrameReportBugScrollFrame:RemoveTextures()
+	HelpFrameReportBugScrollFrame:SetPanelTemplate("Default")
+	HelpFrameReportBugScrollFrame.Panel:Point("TOPLEFT", -4, 4)
+	HelpFrameReportBugScrollFrame.Panel:Point("BOTTOMRIGHT", 6, -4)
+	for d = 1, HelpFrameReportBug:GetNumChildren()do
+		local e = select(d, HelpFrameReportBug:GetChildren())
+		if not e:GetName() then
+			e:RemoveTextures()
+		end
+	end
+	STYLE:ApplyScrollFrameStyle(HelpFrameReportBugScrollFrameScrollBar)
+	HelpFrameSubmitSuggestionScrollFrame:RemoveTextures()
+	HelpFrameSubmitSuggestionScrollFrame:SetPanelTemplate("Default")
+	HelpFrameSubmitSuggestionScrollFrame.Panel:Point("TOPLEFT", -4, 4)
+	HelpFrameSubmitSuggestionScrollFrame.Panel:Point("BOTTOMRIGHT", 6, -4)
+	for d = 1, HelpFrameSubmitSuggestion:GetNumChildren()do
+		local e = select(d, HelpFrameSubmitSuggestion:GetChildren())
+		if not e:GetName() then
+			e:RemoveTextures()
+		end
+	end
+	STYLE:ApplyScrollFrameStyle(HelpFrameSubmitSuggestionScrollFrameScrollBar)
+	HelpFrameTicketScrollFrame:RemoveTextures()
+	HelpFrameTicketScrollFrame:SetPanelTemplate("Default")
+	HelpFrameTicketScrollFrame.Panel:Point("TOPLEFT", -4, 4)
+	HelpFrameTicketScrollFrame.Panel:Point("BOTTOMRIGHT", 6, -4)
+	for d = 1, HelpFrameTicket:GetNumChildren()do
+		local e = select(d, HelpFrameTicket:GetChildren())
+		if not e:GetName() then
+			e:RemoveTextures()
+		end
+	end
+	STYLE:ApplyScrollFrameStyle(HelpFrameKnowledgebaseScrollFrame2ScrollBar)
+	for d = 1, #HelpFrameButtonList do
+		_G[HelpFrameButtonList[d]]:RemoveTextures(true)
+		_G[HelpFrameButtonList[d]]:SetButtonTemplate()
+		if _G[HelpFrameButtonList[d]].text then
+			_G[HelpFrameButtonList[d]].text:ClearAllPoints()
+			_G[HelpFrameButtonList[d]].text:SetPoint("CENTER")
+			_G[HelpFrameButtonList[d]].text:SetJustifyH("CENTER")
+		end
+	end
+	for d = 1, 6 do
+		local f = _G["HelpFrameButton"..d]
+		f:SetButtonTemplate()
+		f.text:ClearAllPoints()
+		f.text:SetPoint("CENTER")
+		f.text:SetJustifyH("CENTER")
+	end
+	for d = 1, HelpFrameKnowledgebaseScrollFrameScrollChild:GetNumChildren()do
+		local f = _G["HelpFrameKnowledgebaseScrollFrameButton"..d]
+		f:RemoveTextures(true)
+		f:SetButtonTemplate()
+	end
+	HelpFrameKnowledgebaseSearchBox:ClearAllPoints()
+	HelpFrameKnowledgebaseSearchBox:Point("TOPLEFT", HelpFrameMainInset, "TOPLEFT", 13, -10)
+	HelpFrameKnowledgebaseNavBarOverlay:Die()
+	HelpFrameKnowledgebaseNavBar:RemoveTextures()
+	HelpFrame:RemoveTextures(true)
+	HelpFrame:SetPanelTemplate("Halftone")
+	HelpFrameKnowledgebaseSearchBox:SetEditboxTemplate()
+	STYLE:ApplyScrollFrameStyle(HelpFrameKnowledgebaseScrollFrameScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(HelpFrameTicketScrollFrameScrollBar, 4)
+	STYLE:ApplyCloseButtonStyle(HelpFrameCloseButton, HelpFrame.Panel)
+	STYLE:ApplyCloseButtonStyle(HelpFrameKnowledgebaseErrorFrameCloseButton, HelpFrameKnowledgebaseErrorFrame.Panel)
+	HelpFrameCharacterStuckHearthstone:SetButtonTemplate()
+	HelpFrameCharacterStuckHearthstone:SetFixedPanelTemplate("Default")
+	HelpFrameCharacterStuckHearthstone.IconTexture:FillInner()
+	HelpFrameCharacterStuckHearthstone.IconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	hooksecurefunc("NavBar_AddButton", function(h, k)
+		local i = h.navList[#h.navList]
+		if not i.styled then
+			i:SetButtonTemplate()
+			i.styled = true;
+			i:HookScript("OnClick", function()
+				NavBarHelper(h)
+			end)
+		end
+		NavBarHelper(h)
+	end)
+	HelpFrameGM_ResponseNeedMoreHelp:SetButtonTemplate()
+	HelpFrameGM_ResponseCancel:SetButtonTemplate()
+	for d = 1, HelpFrameGM_Response:GetNumChildren()do
+		local e = select(d, HelpFrameGM_Response:GetChildren())
+		if e and e:GetObjectType()
+		 == "Frame"and not e:GetName()
+		then
+			e:SetFixedPanelTemplate("Default")
+		end
+	end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(HelpFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/inspect.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/inspect.lua
new file mode 100644
index 0000000..f0ed23f
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/inspect.lua
@@ -0,0 +1,100 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local InspectSlotList = {
+	"HeadSlot",
+	"NeckSlot",
+	"ShoulderSlot",
+	"BackSlot",
+	"ChestSlot",
+	"ShirtSlot",
+	"TabardSlot",
+	"WristSlot",
+	"HandsSlot",
+	"WaistSlot",
+	"LegsSlot",
+	"FeetSlot",
+	"Finger0Slot",
+	"Finger1Slot",
+	"Trinket0Slot",
+	"Trinket1Slot",
+	"MainHandSlot",
+	"SecondaryHandSlot"
+};
+--[[
+##########################################################
+INSPECT UI STYLER
+##########################################################
+]]--
+local function InspectStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.inspect ~= true then
+		return
+	end
+	InspectFrame:RemoveTextures(true)
+	InspectFrameInset:RemoveTextures(true)
+	InspectFrame:SetPanelTemplate('Action')
+	STYLE:ApplyCloseButtonStyle(InspectFrameCloseButton)
+	for d = 1, 4 do
+		STYLE:ApplyTabStyle(_G["InspectFrameTab"..d])
+	end
+	InspectModelFrameBorderTopLeft:Die()
+	InspectModelFrameBorderTopRight:Die()
+	InspectModelFrameBorderTop:Die()
+	InspectModelFrameBorderLeft:Die()
+	InspectModelFrameBorderRight:Die()
+	InspectModelFrameBorderBottomLeft:Die()
+	InspectModelFrameBorderBottomRight:Die()
+	InspectModelFrameBorderBottom:Die()
+	InspectModelFrameBorderBottom2:Die()
+	InspectModelFrameBackgroundOverlay:Die()
+	InspectModelFrame:SetPanelTemplate("Default")
+	for _, slot in pairs(InspectSlotList)do
+		local texture = _G["Inspect"..slot.."IconTexture"]
+		local frame = _G["Inspect"..slot]
+		frame:RemoveTextures()
+		frame:SetButtonTemplate()
+		texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		texture:FillInner()
+		frame:SetFrameLevel(frame:GetFrameLevel() + 1)
+		frame:SetFixedPanelTemplate()
+	end
+	hooksecurefunc('InspectPaperDollItemSlotButton_Update', function(q)
+		local unit = InspectFrame.unit;
+		local r = GetInventoryItemQuality(unit, q:GetID())
+		if r and q.Panel then
+			local s, t, f = GetItemQualityColor(r)
+			q.Panel:SetBackdropBorderColor(s, t, f)
+		elseif q.Panel then
+			q.Panel:SetBackdropBorderColor(0,0,0,1)
+		end
+	end)
+	InspectGuildFrameBG:Die()
+	InspectTalentFrame:RemoveTextures()
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_InspectUI",InspectStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemsocketing.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemsocketing.lua
new file mode 100644
index 0000000..b4c53f2
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemsocketing.lua
@@ -0,0 +1,67 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ITEMSOCKETING STYLER
+##########################################################
+]]--
+local function ItemSocketStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.socket ~= true then return end
+	ItemSocketingFrame:RemoveTextures()
+	ItemSocketingFrame:SetPanelTemplate("Action")
+	ItemSocketingFrameInset:Die()
+	ItemSocketingScrollFrame:RemoveTextures()
+	ItemSocketingScrollFrame:SetPanelTemplate("Inset", true)
+	STYLE:ApplyScrollFrameStyle(ItemSocketingScrollFrameScrollBar, 2)
+	for j = 1, MAX_NUM_SOCKETS do
+		local i = _G[("ItemSocketingSocket%d"):format(j)];
+		local C = _G[("ItemSocketingSocket%dBracketFrame"):format(j)];
+		local D = _G[("ItemSocketingSocket%dBackground"):format(j)];
+		local E = _G[("ItemSocketingSocket%dIconTexture"):format(j)];
+		i:RemoveTextures()
+		i:SetButtonTemplate()
+		i:SetFixedPanelTemplate("Button", true)
+		C:Die()
+		D:Die()
+		E:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		E:FillInner()
+	end
+	hooksecurefunc("ItemSocketingFrame_Update", function()
+		local max = GetNumSockets()
+		for j=1, max do
+			local i = _G[("ItemSocketingSocket%d"):format(j)];
+			local G = GetSocketTypes(j);
+			local color = GEM_TYPE_INFO[G]
+			i:SetBackdropColor(color.r, color.g, color.b, 0.15);
+			i:SetBackdropBorderColor(color.r, color.g, color.b)
+		end
+	end)
+	ItemSocketingFramePortrait:Die()
+	ItemSocketingSocketButton:ClearAllPoints()
+	ItemSocketingSocketButton:Point("BOTTOMRIGHT", ItemSocketingFrame, "BOTTOMRIGHT", -5, 5)
+	ItemSocketingSocketButton:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(ItemSocketingFrameCloseButton)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_ItemSocketingUI",ItemSocketStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemupgrade.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemupgrade.lua
new file mode 100644
index 0000000..86aab3e
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/itemupgrade.lua
@@ -0,0 +1,55 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+ITEMUPGRADE UI STYLER
+##########################################################
+]]--
+local function ItemUpgradeStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.itemUpgrade ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(ItemUpgradeFrame, true)
+
+	STYLE:ApplyCloseButtonStyle(ItemUpgradeFrameCloseButton)
+	ItemUpgradeFrameUpgradeButton:RemoveTextures()
+	ItemUpgradeFrameUpgradeButton:SetButtonTemplate()
+	ItemUpgradeFrame.ItemButton:RemoveTextures()
+	ItemUpgradeFrame.ItemButton:SetSlotTemplate(true)
+	ItemUpgradeFrame.ItemButton.IconTexture:FillInner()
+	hooksecurefunc('ItemUpgradeFrame_Update', function()
+		if GetItemUpgradeItemInfo() then
+			ItemUpgradeFrame.ItemButton.IconTexture:SetAlpha(1)
+			ItemUpgradeFrame.ItemButton.IconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		else
+			ItemUpgradeFrame.ItemButton.IconTexture:SetAlpha(0)
+		end
+	end)
+	ItemUpgradeFrameMoneyFrame:RemoveTextures()
+	ItemUpgradeFrame.FinishedGlow:Die()
+	ItemUpgradeFrame.ButtonFrame:DisableDrawLayer('BORDER')
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_ItemUpgradeUI",ItemUpgradeStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/keybinding.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/keybinding.lua
new file mode 100644
index 0000000..bd456a5
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/keybinding.lua
@@ -0,0 +1,66 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+KEYBINDING STYLER
+##########################################################
+]]--
+local BindButtons = {
+	"KeyBindingFrameDefaultButton",
+	"KeyBindingFrameUnbindButton",
+	"KeyBindingFrameOkayButton",
+	"KeyBindingFrameCancelButton"
+}
+
+local function BindingStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.binding ~= true then return end
+
+	for _, gName in pairs(BindButtons)do
+		local btn = _G[gName]
+		if(btn) then
+			btn:RemoveTextures()
+			btn:SetButtonTemplate()
+		end
+	end
+
+	for i = 1, KEY_BINDINGS_DISPLAYED do
+		local button1 = _G["KeyBindingFrameBinding"..i.."Key1Button"]
+		if(button1) then
+			button1:RemoveTextures(true)
+			button1:SetEditboxTemplate()
+		end
+
+		local button2 = _G["KeyBindingFrameBinding"..i.."Key2Button"]
+		if(button2) then
+			button2:RemoveTextures(true)
+			button2:SetEditboxTemplate()
+		end
+	end
+
+	STYLE:ApplyScrollFrameStyle(KeyBindingFrameScrollFrameScrollBar)
+	KeyBindingFrame:RemoveTextures()
+	KeyBindingFrame:SetPanelTemplate("Halftone")
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_BindingUI", BindingStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lfd.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lfd.lua
new file mode 100644
index 0000000..19859c9
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lfd.lua
@@ -0,0 +1,412 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local LFDFrameList = {
+  "LFDQueueFrameRoleButtonHealer",
+  "LFDQueueFrameRoleButtonDPS",
+  "LFDQueueFrameRoleButtonLeader",
+  "LFDQueueFrameRoleButtonTank",
+  "RaidFinderQueueFrameRoleButtonHealer",
+  "RaidFinderQueueFrameRoleButtonDPS",
+  "RaidFinderQueueFrameRoleButtonLeader",
+  "RaidFinderQueueFrameRoleButtonTank",
+  "LFGInvitePopupRoleButtonTank",
+  "LFGInvitePopupRoleButtonHealer",
+  "LFGInvitePopupRoleButtonDPS"
+};
+
+local Incentive_OnShow = function(button)
+  ActionButton_ShowOverlayGlow(button:GetParent().checkButton)
+end
+
+local Incentive_OnHide = function(button)
+  ActionButton_HideOverlayGlow(button:GetParent().checkButton)
+end
+
+local LFDQueueRandom_OnUpdate = function()
+  LFDQueueFrame:RemoveTextures()
+  for u = 1, LFD_MAX_REWARDS do
+    local t = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u]
+    local icon = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."IconTexture"]
+    if t then
+      if not t.restyled then
+        local x = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."ShortageBorder"]
+        local y = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."Count"]
+        local z = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."NameFrame"]
+        icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+        icon:SetDrawLayer("OVERLAY")
+        y:SetDrawLayer("OVERLAY")
+        z:SetTexture()
+        z:SetSize(118, 39)
+        x:SetAlpha(0)
+        t.border = CreateFrame("Frame", nil, t)
+        t.border:SetFixedPanelTemplate()
+        t.border:WrapOuter(icon)
+        icon:SetParent(t.border)
+        y:SetParent(t.border)
+        t.restyled = true;
+        for A = 1, 3 do
+          local B = _G["LFDQueueFrameRandomScrollFrameChildFrameItem"..u.."RoleIcon"..A]
+          if B then
+             B:SetParent(t.border)
+          end
+        end
+      end
+    end
+  end
+end
+
+local ScenarioQueueRandom_OnUpdate = function()
+  LFDQueueFrame:RemoveTextures()
+  for u = 1, LFD_MAX_REWARDS do
+    local t = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u]
+    local icon = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."IconTexture"]
+    if t then
+      if not t.restyled then
+        local x = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."ShortageBorder"]
+        local y = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."Count"]
+        local z = _G["ScenarioQueueFrameRandomScrollFrameChildFrameItem"..u.."NameFrame"]icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+        icon:SetDrawLayer("OVERLAY")
+        y:SetDrawLayer("OVERLAY")
+        z:SetTexture()
+        z:SetSize(118, 39)
+        x:SetAlpha(0)
+        t.border = CreateFrame("Frame", nil, t)
+        t.border:SetFixedPanelTemplate()
+        t.border:WrapOuter(icon)
+        icon:SetParent(t.border)
+        y:SetParent(t.border)
+        t.restyled = true
+      end
+    end
+  end
+end
+--[[
+##########################################################
+LFD STYLER
+##########################################################
+]]--
+local function LFDFrameStyle()
+  if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.lfg ~= true then return end
+
+  STYLE:ApplyWindowStyle(PVEFrame, true)
+
+  PVEFrameLeftInset:RemoveTextures()
+  RaidFinderQueueFrame:RemoveTextures(true)
+  PVEFrameBg:Hide()
+  PVEFrameTitleBg:Hide()
+  PVEFramePortrait:Hide()
+  PVEFramePortraitFrame:Hide()
+  PVEFrameTopRightCorner:Hide()
+  PVEFrameTopBorder:Hide()
+  PVEFrameLeftInsetBg:Hide()
+  PVEFrame.shadows:Hide()
+
+  LFDQueueFramePartyBackfillBackfillButton:SetButtonTemplate()
+  LFDQueueFramePartyBackfillNoBackfillButton:SetButtonTemplate()
+  LFDQueueFrameRandomScrollFrameChildFrameBonusRepFrame.ChooseButton:SetButtonTemplate()
+  ScenarioQueueFrameRandomScrollFrameChildFrameBonusRepFrame.ChooseButton:SetButtonTemplate()
+
+  STYLE:ApplyScrollFrameStyle(ScenarioQueueFrameRandomScrollFrameScrollBar)
+
+  GroupFinderFrameGroupButton1.icon:SetTexture("Interface\\Icons\\INV_Helmet_08")
+  GroupFinderFrameGroupButton2.icon:SetTexture("Interface\\Icons\\inv_helmet_06")
+  GroupFinderFrameGroupButton3.icon:SetTexture("Interface\\Icons\\Icon_Scenarios")
+  GroupFinderFrameGroupButton4.icon:SetTexture("Interface\\Addons\\SVUI\\assets\\artwork\\Icons\\SVUI-EMBLEM")
+
+  LFGDungeonReadyDialogBackground:Die()
+  LFGDungeonReadyDialogEnterDungeonButton:SetButtonTemplate()
+  LFGDungeonReadyDialogLeaveQueueButton:SetButtonTemplate()
+  STYLE:ApplyCloseButtonStyle(LFGDungeonReadyDialogCloseButton)
+
+  LFGDungeonReadyDialog:RemoveTextures()
+  LFGDungeonReadyDialog:SetPanelTemplate("Pattern", true, 2, 4, 4)
+  LFGDungeonReadyStatus:RemoveTextures()
+  LFGDungeonReadyStatus:SetPanelTemplate("Pattern", true, 2, 4, 4)
+  LFGDungeonReadyDialogRoleIconTexture:SetTexture("Interface\\LFGFrame\\UI-LFG-ICONS-ROLEBACKGROUNDS")
+  LFGDungeonReadyDialogRoleIconTexture:SetAlpha(0.5)
+
+  hooksecurefunc("LFGDungeonReadyPopup_Update", function()
+    local b, c, d, e, f, g, h, i, j, k, l, m = GetLFGProposal()
+    if LFGDungeonReadyDialogRoleIcon:IsShown() then
+      if h == "DAMAGER" then
+        LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
+      elseif h == "TANK" then
+        LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(LFDQueueFrameRoleButtonTank.background:GetTexCoord())
+      elseif h == "HEALER" then
+        LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
+      end
+    end
+  end)
+
+  LFDQueueFrameRoleButtonTankIncentiveIcon:SetAlpha(0)
+  LFDQueueFrameRoleButtonHealerIncentiveIcon:SetAlpha(0)
+  LFDQueueFrameRoleButtonDPSIncentiveIcon:SetAlpha(0)
+  LFDQueueFrameRoleButtonTankIncentiveIcon:HookScript("OnShow", Incentive_OnShow)
+  LFDQueueFrameRoleButtonHealerIncentiveIcon:HookScript("OnShow", Incentive_OnShow)
+  LFDQueueFrameRoleButtonDPSIncentiveIcon:HookScript("OnShow", Incentive_OnShow)
+  LFDQueueFrameRoleButtonTankIncentiveIcon:HookScript("OnHide", Incentive_OnHide)
+  LFDQueueFrameRoleButtonHealerIncentiveIcon:HookScript("OnHide", Incentive_OnHide)
+  LFDQueueFrameRoleButtonDPSIncentiveIcon:HookScript("OnHide", Incentive_OnHide)
+  LFDQueueFrameRoleButtonTank.shortageBorder:Die()
+  LFDQueueFrameRoleButtonDPS.shortageBorder:Die()
+  LFDQueueFrameRoleButtonHealer.shortageBorder:Die()
+  LFGDungeonReadyDialog.filigree:SetAlpha(0)
+  LFGDungeonReadyDialog.bottomArt:SetAlpha(0)
+  STYLE:ApplyCloseButtonStyle(LFGDungeonReadyStatusCloseButton)
+
+  for _,name in pairs(LFDFrameList) do
+    local frame = _G[name];
+    if frame then
+      frame.checkButton:RemoveTextures()
+      frame.checkButton:SetCheckboxTemplate(true, -4, -4)
+      frame.checkButton:SetFrameLevel(frame.checkButton:GetFrameLevel() + 50)
+      frame:DisableDrawLayer("BACKGROUND")
+      frame:DisableDrawLayer("OVERLAY")
+    end
+  end
+
+  LFDQueueFrameRoleButtonLeader.leadIcon = LFDQueueFrameRoleButtonLeader:CreateTexture(nil, 'BACKGROUND')
+  LFDQueueFrameRoleButtonLeader.leadIcon:SetTexture([[Interface\GroupFrame\UI-Group-LeaderIcon]])
+  LFDQueueFrameRoleButtonLeader.leadIcon:SetPoint(LFDQueueFrameRoleButtonLeader:GetNormalTexture():GetPoint())
+  LFDQueueFrameRoleButtonLeader.leadIcon:Size(50)
+  LFDQueueFrameRoleButtonLeader.leadIcon:SetAlpha(0.4)
+  RaidFinderQueueFrameRoleButtonLeader.leadIcon = RaidFinderQueueFrameRoleButtonLeader:CreateTexture(nil, 'BACKGROUND')
+  RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetTexture([[Interface\GroupFrame\UI-Group-LeaderIcon]])
+  RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetPoint(RaidFinderQueueFrameRoleButtonLeader:GetNormalTexture():GetPoint())
+  RaidFinderQueueFrameRoleButtonLeader.leadIcon:Size(50)
+  RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetAlpha(0.4)
+
+  hooksecurefunc('LFG_DisableRoleButton', function(self)
+    if self.checkButton:GetChecked() then
+       self.checkButton:SetAlpha(1)
+    else
+       self.checkButton:SetAlpha(0)
+    end
+    if self.background then
+       self.background:Show()
+    end
+  end)
+
+  hooksecurefunc('LFG_EnableRoleButton', function(self)
+    self.checkButton:SetAlpha(1)
+  end)
+
+  hooksecurefunc("LFG_PermanentlyDisableRoleButton", function(self)
+    if self.background then
+       self.background:Show()
+       self.background:SetDesaturated(true)
+    end
+  end)
+
+  for i = 1, 4 do
+    local button = GroupFinderFrame["groupButton"..i]
+    if(button) then
+      button.ring:Hide()
+      button.bg:SetTexture(0,0,0,0)
+      button.bg:SetAllPoints()
+      button:SetFixedPanelTemplate('Button')
+      button:SetButtonTemplate()
+      button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+      button.icon:SetDrawLayer("OVERLAY")
+      button.icon:Size(40)
+      button.icon:ClearAllPoints()
+      button.icon:SetPoint("LEFT", 10, 0)
+      button.border = CreateFrame("Frame", nil, button)
+      button.border:SetFixedPanelTemplate('Default')
+      button.border:WrapOuter(button.icon)
+      button.icon:SetParent(button.border)
+    end
+  end
+
+  for u = 1, 2 do
+     STYLE:ApplyTabStyle(_G['PVEFrameTab'..u])
+  end
+
+  PVEFrameTab1:SetPoint('BOTTOMLEFT', PVEFrame, 'BOTTOMLEFT', 19, -31)
+  STYLE:ApplyCloseButtonStyle(PVEFrameCloseButton)
+  LFDParentFrame:RemoveTextures()
+  LFDQueueFrameFindGroupButton:RemoveTextures()
+  LFDParentFrameInset:RemoveTextures()
+  LFDQueueFrameSpecificListScrollFrame:RemoveTextures()
+  LFDQueueFrameFindGroupButton:SetButtonTemplate()
+  hooksecurefunc("LFDQueueFrameRandom_UpdateFrame", LFDQueueRandom_OnUpdate)
+
+  hooksecurefunc("ScenarioQueueFrameSpecific_Update", function()
+    for i = 1, NUM_SCENARIO_CHOICE_BUTTONS do
+      local box = _G["ScenarioQueueFrameSpecificButton"..i.."EnableButton"]
+      if(box and (not box.Panel)) then
+        box:RemoveTextures()
+        box:SetCheckboxTemplate(true, -2, -3)
+      end
+    end
+  end)
+
+  STYLE:ApplyDropdownStyle(LFDQueueFrameTypeDropDown)
+
+  RaidFinderFrame:RemoveTextures()
+  RaidFinderFrameBottomInset:RemoveTextures()
+  RaidFinderFrameRoleInset:RemoveTextures()
+  LFDQueueFrameRandomScrollFrameScrollBar:RemoveTextures()
+  ScenarioQueueFrameSpecificScrollFrame:RemoveTextures()
+  RaidFinderFrameBottomInsetBg:Hide()
+  RaidFinderFrameBtnCornerRight:Hide()
+  RaidFinderFrameButtonBottomBorder:Hide()
+  STYLE:ApplyDropdownStyle(RaidFinderQueueFrameSelectionDropDown)
+  RaidFinderFrameFindRaidButton:RemoveTextures()
+  RaidFinderFrameFindRaidButton:SetButtonTemplate()
+  RaidFinderQueueFrame:RemoveTextures()
+
+  for u = 1, LFD_MAX_REWARDS do
+    local t = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u]
+    local icon = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."IconTexture"]
+    if t then
+      if not t.restyled then
+        local x = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."ShortageBorder"]
+        local y = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."Count"]
+        local z = _G["RaidFinderQueueFrameScrollFrameChildFrameItem"..u.."NameFrame"]
+        t:RemoveTextures()
+        icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+        icon:SetDrawLayer("OVERLAY")
+        y:SetDrawLayer("OVERLAY")
+        z:SetTexture()
+        z:SetSize(118, 39)
+        x:SetAlpha(0)
+        t.border = CreateFrame("Frame", nil, t)
+        t.border:SetFixedPanelTemplate()
+        t.border:WrapOuter(icon)
+        icon:SetParent(t.border)
+        y:SetParent(t.border)
+        t.restyled = true
+      end
+    end
+  end
+
+  ScenarioFinderFrameInset:DisableDrawLayer("BORDER")
+  ScenarioFinderFrame.TopTileStreaks:Hide()
+  ScenarioFinderFrameBtnCornerRight:Hide()
+  ScenarioFinderFrameButtonBottomBorder:Hide()
+  ScenarioQueueFrame.Bg:Hide()
+  ScenarioFinderFrameInset:GetRegions():Hide()
+  hooksecurefunc("ScenarioQueueFrameRandom_UpdateFrame", ScenarioQueueRandom_OnUpdate)
+  ScenarioQueueFrameFindGroupButton:RemoveTextures()
+  ScenarioQueueFrameFindGroupButton:SetButtonTemplate()
+  STYLE:ApplyDropdownStyle(ScenarioQueueFrameTypeDropDown)
+  LFRBrowseFrameRoleInset:DisableDrawLayer("BORDER")
+  RaidBrowserFrameBg:Hide()
+  LFRQueueFrameSpecificListScrollFrameScrollBackgroundTopLeft:Hide()
+  LFRQueueFrameSpecificListScrollFrameScrollBackgroundBottomRight:Hide()
+  LFRBrowseFrameRoleInsetBg:Hide()
+
+  for u = 1, 14 do
+    if u ~= 6 and u ~= 8 then
+       select(u, RaidBrowserFrame:GetRegions()):Hide()
+    end
+  end
+
+  RaidBrowserFrame:SetPanelTemplate('Pattern')
+  STYLE:ApplyCloseButtonStyle(RaidBrowserFrameCloseButton)
+  LFRQueueFrameFindGroupButton:SetButtonTemplate()
+  LFRQueueFrameAcceptCommentButton:SetButtonTemplate()
+  STYLE:ApplyScrollFrameStyle(LFRQueueFrameCommentScrollFrameScrollBar)
+  STYLE:ApplyScrollFrameStyle(LFDQueueFrameSpecificListScrollFrameScrollBar)
+
+  RaidBrowserFrame:HookScript('OnShow', function()
+    if not LFRQueueFrameSpecificListScrollFrameScrollBar.styled then
+      STYLE:ApplyScrollFrameStyle(LFRQueueFrameSpecificListScrollFrameScrollBar)
+      LFRBrowseFrame:RemoveTextures()
+      for u = 1, 2 do
+        local C = _G['LFRParentFrameSideTab'..u]
+        C:DisableDrawLayer('BACKGROUND')
+        C:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
+        C:GetNormalTexture():FillInner()
+        C.pushed = true;
+        C:SetPanelTemplate("Default")
+        C.Panel:SetAllPoints()
+        C:SetPanelTemplate()
+        hooksecurefunc(C:GetHighlightTexture(), "SetTexture", function(o, D)
+          if D ~= nil then
+             o:SetTexture(0,0,0,0)
+          end
+        end)
+        hooksecurefunc(C:GetCheckedTexture(), "SetTexture", function(o, D)
+          if D ~= nil then
+             o:SetTexture(0,0,0,0)
+          end
+        end)
+      end
+      for u = 1, 7 do
+        local C = _G['LFRBrowseFrameColumnHeader'..u]
+        C:DisableDrawLayer('BACKGROUND')
+      end
+      STYLE:ApplyDropdownStyle(LFRBrowseFrameRaidDropDown)
+      LFRBrowseFrameRefreshButton:SetButtonTemplate()
+      LFRBrowseFrameInviteButton:SetButtonTemplate()
+      LFRBrowseFrameSendMessageButton:SetButtonTemplate()
+      LFRQueueFrameSpecificListScrollFrameScrollBar.styled = true
+    end
+  end)
+
+  LFGInvitePopup:RemoveTextures()
+  LFGInvitePopup:SetPanelTemplate("Pattern", true, 2, 4, 4)
+  LFGInvitePopupAcceptButton:SetButtonTemplate()
+  LFGInvitePopupDeclineButton:SetButtonTemplate()
+
+  _G[LFDQueueFrame.PartyBackfill:GetName().."BackfillButton"]:SetButtonTemplate()
+  _G[LFDQueueFrame.PartyBackfill:GetName().."NoBackfillButton"]:SetButtonTemplate()
+  _G[RaidFinderQueueFrame.PartyBackfill:GetName().."BackfillButton"]:SetButtonTemplate()
+  _G[RaidFinderQueueFrame.PartyBackfill:GetName().."NoBackfillButton"]:SetButtonTemplate()
+  _G[ScenarioQueueFrame.PartyBackfill:GetName().."BackfillButton"]:SetButtonTemplate()
+  _G[ScenarioQueueFrame.PartyBackfill:GetName().."NoBackfillButton"]:SetButtonTemplate()
+
+  STYLE:ApplyScrollFrameStyle(LFDQueueFrameRandomScrollFrameScrollBar)
+  STYLE:ApplyScrollFrameStyle(ScenarioQueueFrameSpecificScrollFrameScrollBar)
+  LFDQueueFrameRandomScrollFrame:SetBasicPanel()
+  ScenarioQueueFrameRandomScrollFrame:SetBasicPanel()
+  RaidFinderQueueFrameScrollFrame:SetBasicPanel()
+
+  for u = 1, NUM_LFD_CHOICE_BUTTONS do
+    local box = _G["LFDQueueFrameSpecificListButton"..u.."EnableButton"]
+    if(box and (not box.Panel)) then
+      box:RemoveTextures()
+      box:SetCheckboxTemplate(true, -2, -3)
+      box:SetFrameLevel(box:GetFrameLevel() + 50)
+    end
+  end
+
+  for u = 1, NUM_LFR_CHOICE_BUTTONS do
+    local box = _G["LFRQueueFrameSpecificListButton"..u.."EnableButton"]
+    if(box and (not box.Panel)) then
+      box:RemoveTextures()
+      box:SetCheckboxTemplate(true, -2, -3)
+      box:SetFrameLevel(box:GetFrameLevel() + 50)
+    end
+  end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(LFDFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/loothistory.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/loothistory.lua
new file mode 100644
index 0000000..6294540
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/loothistory.lua
@@ -0,0 +1,132 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local MissingLootFrame_OnShow = function()
+  local N = GetNumMissingLootItems()
+  for u = 1, N do
+    local O = _G["MissingLootFrameItem"..u]
+    local icon = O.icon;
+    STYLE:ApplyItemButtonStyle(O, true)
+    local g, f, y, P = GetMissingLootItemInfo(u)
+    local color = GetItemQualityColor(P) or 0,0,0,1
+    icon:SetTexture(g)
+    M:SetBackdropBorderColor(color)
+  end
+  local Q = ceil(N/2)
+  MissingLootFrame:SetHeight(Q * 43 + 38 + MissingLootFrameLabel:GetHeight())
+end
+
+local LootHistoryFrame_OnUpdate = function(o)
+  local N = C_LootHistory.GetNumItems()
+  for u = 1, N do
+    local M = LootHistoryFrame.itemFrames[u]
+    if not M.isStyled then
+      local Icon = M.Icon:GetTexture()
+      M:RemoveTextures()
+      M.Icon:SetTexture(Icon)
+      M.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+      M:SetFixedPanelTemplate("Button")
+      M.Panel:WrapOuter(M.Icon)
+      M.Icon:SetParent(M.Panel)
+      M.isStyled = true
+    end
+  end
+end
+--[[
+##########################################################
+LOOTHISTORY STYLER
+##########################################################
+]]--
+local function LootHistoryStyle()
+  LootHistoryFrame:SetFrameStrata('HIGH')
+  if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.loot ~= true then return end
+  local M = MissingLootFrame;
+  M:RemoveTextures()
+  M:SetPanelTemplate("Pattern")
+  STYLE:ApplyCloseButtonStyle(MissingLootFramePassButton)
+  hooksecurefunc("MissingLootFrame_Show", MissingLootFrame_OnShow)
+  LootHistoryFrame:RemoveTextures()
+  STYLE:ApplyCloseButtonStyle(LootHistoryFrame.CloseButton)
+  LootHistoryFrame:RemoveTextures()
+  LootHistoryFrame:SetFixedPanelTemplate('Transparent')
+  STYLE:ApplyCloseButtonStyle(LootHistoryFrame.ResizeButton)
+  LootHistoryFrame.ResizeButton:SetFixedPanelTemplate()
+  LootHistoryFrame.ResizeButton:Width(LootHistoryFrame:GetWidth())
+  LootHistoryFrame.ResizeButton:Height(19)
+  LootHistoryFrame.ResizeButton:ClearAllPoints()
+  LootHistoryFrame.ResizeButton:Point("TOP", LootHistoryFrame, "BOTTOM", 0, -2)
+  LootHistoryFrame.ResizeButton:SetNormalTexture("")
+
+  local txt = LootHistoryFrame.ResizeButton:CreateFontString(nil,"OVERLAY")
+  txt:SetFont(SV.Media.font.roboto, 14, "NONE")
+  txt:SetAllPoints(LootHistoryFrame.ResizeButton)
+  txt:SetJustifyH("CENTER")
+  txt:SetText("RESIZE")
+
+  LootHistoryFrameScrollFrame:RemoveTextures()
+  STYLE:ApplyScrollFrameStyle(LootHistoryFrameScrollFrameScrollBar)
+  hooksecurefunc("LootHistoryFrame_FullUpdate", LootHistoryFrame_OnUpdate)
+  MasterLooterFrame:RemoveTextures()
+  MasterLooterFrame:SetFixedPanelTemplate()
+  MasterLooterFrame:SetFrameStrata('FULLSCREEN_DIALOG')
+  hooksecurefunc("MasterLooterFrame_Show", function()
+    local J = MasterLooterFrame.Item;
+    if J then
+      local u = J.Icon;
+      local icon = u:GetTexture()
+      local S = ITEM_QUALITY_COLORS[LootFrame.selectedQuality]
+      J:RemoveTextures()
+      u:SetTexture(icon)
+      u:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+      J:SetPanelTemplate("Pattern")
+      J.Panel:WrapOuter(u)
+      J.Panel:SetBackdropBorderColor(S.r, S.g, S.b)
+    end
+    for u = 1, MasterLooterFrame:GetNumChildren()do
+      local T = select(u, MasterLooterFrame:GetChildren())
+      if T and not T.isStyled and not T:GetName() then
+        if T:GetObjectType() == "Button" then
+          if T:GetPushedTexture() then
+            STYLE:ApplyCloseButtonStyle(T)
+          else
+            T:SetFixedPanelTemplate()
+            T:SetButtonTemplate()
+          end
+          T.isStyled = true
+        end
+      end
+    end
+  end)
+  BonusRollFrame:RemoveTextures()
+  STYLE:ApplyAlertStyle(BonusRollFrame)
+  BonusRollFrame.PromptFrame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+  BonusRollFrame.PromptFrame.Timer.Bar:SetTexture(SV.Media.bar.default)
+  BonusRollFrame.PromptFrame.Timer.Bar:SetVertexColor(0.1, 1, 0.1)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(LootHistoryStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lossofcontrol.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lossofcontrol.lua
new file mode 100644
index 0000000..b96660e
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/lossofcontrol.lua
@@ -0,0 +1,63 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+LOSSOFCONTROL STYLER
+##########################################################
+]]--
+local _hook_LossOfControl = function(self, ...)
+  self.Icon:ClearAllPoints()
+  self.Icon:SetPoint("CENTER", self, "CENTER", 0, 0)
+  self.AbilityName:ClearAllPoints()
+  self.AbilityName:SetPoint("BOTTOM", self, 0, -28)
+  self.AbilityName.scrollTime = nil;
+  self.AbilityName:SetFont(SV.Media.font.names, 20, 'OUTLINE')
+  self.TimeLeft.NumberText:ClearAllPoints()
+  self.TimeLeft.NumberText:SetPoint("BOTTOM", self, 4, -58)
+  self.TimeLeft.NumberText.scrollTime = nil;
+  self.TimeLeft.NumberText:SetFont(SV.Media.font.numbers, 20, 'OUTLINE')
+  self.TimeLeft.SecondsText:ClearAllPoints()
+  self.TimeLeft.SecondsText:SetPoint("BOTTOM", self, 0, -80)
+  self.TimeLeft.SecondsText.scrollTime = nil;
+  self.TimeLeft.SecondsText:SetFont(SV.Media.font.roboto, 20, 'OUTLINE')
+  if self.Anim:IsPlaying() then
+     self.Anim:Stop()
+  end
+end
+
+local function LossOfControlStyle()
+  if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.losscontrol ~= true then return end
+  local IconBackdrop = CreateFrame("Frame", nil, LossOfControlFrame)
+  IconBackdrop:WrapOuter(LossOfControlFrame.Icon)
+  IconBackdrop:SetFrameLevel(LossOfControlFrame:GetFrameLevel()-1)
+  IconBackdrop:SetPanelTemplate("Slot")
+  LossOfControlFrame.Icon:SetTexCoord(.1, .9, .1, .9)
+  LossOfControlFrame:RemoveTextures()
+  LossOfControlFrame.AbilityName:ClearAllPoints()
+  LossOfControlFrame:Size(LossOfControlFrame.Icon:GetWidth() + 50)
+  --local bg = CreateFrame("Frame", nil, LossOfControlFrame)
+  hooksecurefunc("LossOfControlFrame_SetUpDisplay", _hook_LossOfControl)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(LossOfControlStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/macro.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/macro.lua
new file mode 100644
index 0000000..67f8299
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/macro.lua
@@ -0,0 +1,126 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local MacroButtonList = {
+	"MacroSaveButton", "MacroCancelButton", "MacroDeleteButton", "MacroNewButton", "MacroExitButton", "MacroEditButton", "MacroFrameTab1", "MacroFrameTab2", "MacroPopupOkayButton", "MacroPopupCancelButton"
+}
+local MacroButtonList2 = {
+	"MacroDeleteButton", "MacroNewButton", "MacroExitButton"
+}
+--[[
+##########################################################
+MACRO UI STYLER
+##########################################################
+]]--
+local function MacroUIStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.macro ~= true then return end
+	STYLE:ApplyCloseButtonStyle(MacroFrameCloseButton)
+	STYLE:ApplyScrollFrameStyle(MacroButtonScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(MacroFrameScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(MacroPopupScrollFrameScrollBar)
+	MacroFrame:Width(360)
+	for b = 1, #MacroButtonList do
+		_G[MacroButtonList[b]]:RemoveTextures()
+		_G[MacroButtonList[b]]:SetButtonTemplate()
+	end
+	for b = 1, #MacroButtonList2 do
+		local a1,p,a2,x,y = _G[MacroButtonList2[b]]:GetPoint()
+		_G[MacroButtonList2[b]]:SetPoint(a1,p,a2,x,-25)
+	end
+	for b = 1, 2 do
+		tab = _G[format("MacroFrameTab%s", b)]
+		tab:Height(22)
+	end
+	MacroFrameTab1:Point("TOPLEFT", MacroFrame, "TOPLEFT", 85, -39)
+	MacroFrameTab2:Point("LEFT", MacroFrameTab1, "RIGHT", 4, 0)
+	MacroFrame:RemoveTextures()
+	MacroFrame:SetPanelTemplate("Action")
+	MacroFrame.Panel:SetPoint("BOTTOMRIGHT",MacroFrame,"BOTTOMRIGHT",0,-25)
+	MacroFrameText:SetFont(SV.Media.font.roboto, 10, "OUTLINE")
+	MacroFrameTextBackground:RemoveTextures()
+	MacroFrameTextBackground:SetBasicPanel()
+	MacroPopupFrame:RemoveTextures()
+	MacroPopupFrame:SetBasicPanel()
+	MacroPopupScrollFrame:RemoveTextures()
+	MacroPopupScrollFrame:SetPanelTemplate("Pattern")
+	MacroPopupScrollFrame.Panel:Point("TOPLEFT", 51, 2)
+	MacroPopupScrollFrame.Panel:Point("BOTTOMRIGHT", -4, 4)
+	MacroButtonScrollFrame:SetBasicPanel()
+	MacroPopupEditBox:SetEditboxTemplate()
+	MacroPopupNameLeft:SetTexture(0,0,0,0)
+	MacroPopupNameMiddle:SetTexture(0,0,0,0)
+	MacroPopupNameRight:SetTexture(0,0,0,0)
+	MacroFrameInset:Die()
+	MacroEditButton:ClearAllPoints()
+	MacroEditButton:Point("BOTTOMLEFT", MacroFrameSelectedMacroButton, "BOTTOMRIGHT", 10, 0)
+	STYLE:ApplyScrollFrameStyle(MacroButtonScrollFrame)
+	MacroPopupFrame:HookScript("OnShow", function(c)
+		c:ClearAllPoints()
+		c:Point("TOPLEFT", MacroFrame, "TOPRIGHT", 5, -2)
+	end)
+	MacroFrameSelectedMacroButton:RemoveTextures()
+	MacroFrameSelectedMacroButton:SetSlotTemplate()
+	MacroFrameSelectedMacroButtonIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	MacroFrameSelectedMacroButtonIcon:FillInner()
+	MacroFrameCharLimitText:ClearAllPoints()
+	MacroFrameCharLimitText:Point("BOTTOM", MacroFrameTextBackground, -25, -35)
+	for b = 1, MAX_ACCOUNT_MACROS do
+		local d = _G["MacroButton"..b]
+		local e = _G["MacroButton"..b.."Icon"]
+		local f = _G["MacroPopupButton"..b]
+		local g = _G["MacroPopupButton"..b.."Icon"]
+		if d then
+			d:RemoveTextures()
+			d:SetButtonTemplate()
+			local level = d:GetFrameLevel()
+			if(level > 0) then
+				d.Panel:SetFrameLevel(level - 1)
+			else
+				d.Panel:SetFrameLevel(0)
+			end
+			d:SetBackdropColor(0, 0, 0, 0)
+		end
+		if e then
+			e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			e:FillInner()
+			e:SetDrawLayer("OVERLAY")
+		end
+		if f then
+			f:RemoveTextures()
+			f:SetButtonTemplate()
+			f:SetBackdropColor(0, 0, 0, 0)
+		end
+		if g then
+			g:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			g:FillInner()
+		end
+	end
+end
+
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_MacroUI", MacroUIStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/mailbox.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/mailbox.lua
new file mode 100644
index 0000000..972bf14
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/mailbox.lua
@@ -0,0 +1,144 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local function MailFrame_OnUpdate()
+	for b = 1, ATTACHMENTS_MAX_SEND do
+		local d = _G["SendMailAttachment"..b]
+		if not d.styled then
+			d:RemoveTextures()d:SetFixedPanelTemplate("Default")
+			d:SetButtonTemplate()
+			d.styled = true
+		end
+		local e = d:GetNormalTexture()
+		if e then
+			e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			e:FillInner()
+		end
+	end
+end
+--[[
+##########################################################
+MAILBOX STYLER
+##########################################################
+]]--
+local function MailBoxStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.mail ~= true then return end
+
+	STYLE:ApplyWindowStyle(MailFrame)
+
+	for b = 1, INBOXITEMS_TO_DISPLAY do
+		local i = _G["MailItem"..b]
+		i:RemoveTextures()
+		i:SetPanelTemplate("Inset")
+		i.Panel:Point("TOPLEFT", 2, 1)
+		i.Panel:Point("BOTTOMRIGHT", -2, 2)
+		local d = _G["MailItem"..b.."Button"]
+		d:RemoveTextures()
+		d:SetButtonTemplate()
+		local e = _G["MailItem"..b.."ButtonIcon"]
+		e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		e:FillInner()
+	end
+	STYLE:ApplyCloseButtonStyle(MailFrameCloseButton)
+	STYLE:ApplyPaginationStyle(InboxPrevPageButton)
+	STYLE:ApplyPaginationStyle(InboxNextPageButton)
+	MailFrameTab1:RemoveTextures()
+	MailFrameTab2:RemoveTextures()
+	STYLE:ApplyTabStyle(MailFrameTab1)
+	STYLE:ApplyTabStyle(MailFrameTab2)
+	SendMailScrollFrame:RemoveTextures(true)
+	SendMailScrollFrame:SetFixedPanelTemplate("Inset")
+	STYLE:ApplyScrollFrameStyle(SendMailScrollFrameScrollBar)
+	SendMailNameEditBox:SetEditboxTemplate()
+	SendMailSubjectEditBox:SetEditboxTemplate()
+	SendMailMoneyGold:SetEditboxTemplate()
+	SendMailMoneySilver:SetEditboxTemplate()
+	SendMailMoneyCopper:SetEditboxTemplate()
+	SendMailMoneyBg:Die()
+	SendMailMoneyInset:RemoveTextures()
+
+	_G["SendMailMoneySilver"]:SetEditboxTemplate()
+	_G["SendMailMoneySilver"].Panel:Point("TOPLEFT", -2, 1)
+	_G["SendMailMoneySilver"].Panel:Point("BOTTOMRIGHT", -12, -1)
+	_G["SendMailMoneySilver"]:SetTextInsets(-1, -1, -2, -2)
+
+	_G["SendMailMoneyCopper"]:SetEditboxTemplate()
+	_G["SendMailMoneyCopper"].Panel:Point("TOPLEFT", -2, 1)
+	_G["SendMailMoneyCopper"].Panel:Point("BOTTOMRIGHT", -12, -1)
+	_G["SendMailMoneyCopper"]:SetTextInsets(-1, -1, -2, -2)
+
+	SendMailNameEditBox.Panel:Point("BOTTOMRIGHT", 2, 4)
+	SendMailSubjectEditBox.Panel:Point("BOTTOMRIGHT", 2, 0)
+	SendMailFrame:RemoveTextures()
+
+	hooksecurefunc("SendMailFrame_Update", MailFrame_OnUpdate)
+	SendMailMailButton:SetButtonTemplate()
+	SendMailCancelButton:SetButtonTemplate()
+	OpenMailFrame:RemoveTextures(true)
+	OpenMailFrame:SetFixedPanelTemplate("Transparent", true)
+	OpenMailFrameInset:Die()
+	STYLE:ApplyCloseButtonStyle(OpenMailFrameCloseButton)
+	OpenMailReportSpamButton:SetButtonTemplate()
+	OpenMailReplyButton:SetButtonTemplate()
+	OpenMailDeleteButton:SetButtonTemplate()
+	OpenMailCancelButton:SetButtonTemplate()
+	InboxFrame:RemoveTextures()
+	MailFrameInset:Die()
+	OpenMailScrollFrame:RemoveTextures(true)
+	OpenMailScrollFrame:SetFixedPanelTemplate("Default")
+	STYLE:ApplyScrollFrameStyle(OpenMailScrollFrameScrollBar)
+	SendMailBodyEditBox:SetTextColor(1, 1, 1)
+	OpenMailBodyText:SetTextColor(1, 1, 1)
+	InvoiceTextFontNormal:SetTextColor(1, 1, 1)
+	OpenMailArithmeticLine:Die()
+	OpenMailLetterButton:RemoveTextures()
+	OpenMailLetterButton:SetFixedPanelTemplate("Default")
+	OpenMailLetterButton:SetButtonTemplate()
+	OpenMailLetterButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	OpenMailLetterButtonIconTexture:FillInner()
+	OpenMailMoneyButton:RemoveTextures()
+	OpenMailMoneyButton:SetFixedPanelTemplate("Default")
+	OpenMailMoneyButton:SetButtonTemplate()
+	OpenMailMoneyButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	OpenMailMoneyButtonIconTexture:FillInner()
+	for b = 1, ATTACHMENTS_MAX_SEND do
+		local d = _G["OpenMailAttachmentButton"..b]
+		d:RemoveTextures()
+		d:SetButtonTemplate()
+		local e = _G["OpenMailAttachmentButton"..b.."IconTexture"]
+		if e then
+			e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			e:FillInner()
+		end
+	end
+	OpenMailReplyButton:Point("RIGHT", OpenMailDeleteButton, "LEFT", -2, 0)
+	OpenMailDeleteButton:Point("RIGHT", OpenMailCancelButton, "LEFT", -2, 0)
+	SendMailMailButton:Point("RIGHT", SendMailCancelButton, "LEFT", -2, 0)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(MailBoxStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/merchant.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/merchant.lua
new file mode 100644
index 0000000..ee68517
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/merchant.lua
@@ -0,0 +1,91 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+FRAME STYLER
+##########################################################
+]]--
+local function MerchantStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.merchant ~= true then return end
+	MerchantFrame:RemoveTextures(true)
+	MerchantFrame:SetPanelTemplate("Halftone", false, nil, 2, 4)
+	local level = MerchantFrame:GetFrameLevel()
+	if(level > 0) then
+		MerchantFrame:SetFrameLevel(level - 1)
+	else
+		MerchantFrame:SetFrameLevel(0)
+	end
+	MerchantBuyBackItem:RemoveTextures(true)
+	MerchantBuyBackItem:SetPanelTemplate("Inset", true, 2, 2, 3)
+	MerchantBuyBackItem.Panel:SetFrameLevel(MerchantBuyBackItem.Panel:GetFrameLevel() + 1)
+	MerchantBuyBackItemItemButton:RemoveTextures()
+	MerchantBuyBackItemItemButton:SetButtonTemplate()
+	MerchantExtraCurrencyInset:RemoveTextures()
+	MerchantExtraCurrencyBg:RemoveTextures()
+	MerchantFrameInset:RemoveTextures()
+	MerchantMoneyBg:RemoveTextures()
+	MerchantMoneyInset:RemoveTextures()
+	MerchantFrameInset:SetPanelTemplate("Inset")
+	MerchantFrameInset.Panel:SetFrameLevel(MerchantFrameInset.Panel:GetFrameLevel() + 1)
+	STYLE:ApplyDropdownStyle(MerchantFrameLootFilter)
+	for b = 1, 2 do
+		STYLE:ApplyTabStyle(_G["MerchantFrameTab"..b])
+	end
+	for b = 1, 12 do
+		local d = _G["MerchantItem"..b.."ItemButton"]
+		local e = _G["MerchantItem"..b.."ItemButtonIconTexture"]
+		local o = _G["MerchantItem"..b]o:RemoveTextures(true)
+		o:SetFixedPanelTemplate("Inset")
+		d:RemoveTextures()
+		d:SetButtonTemplate()
+		d:Point("TOPLEFT", o, "TOPLEFT", 4, -4)
+		e:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		e:FillInner()
+		_G["MerchantItem"..b.."MoneyFrame"]:ClearAllPoints()
+		_G["MerchantItem"..b.."MoneyFrame"]:Point("BOTTOMLEFT", d, "BOTTOMRIGHT", 3, 0)
+	end
+	MerchantBuyBackItemItemButton:RemoveTextures()
+	MerchantBuyBackItemItemButton:SetButtonTemplate()
+	MerchantBuyBackItemItemButtonIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	MerchantBuyBackItemItemButtonIconTexture:FillInner()
+	MerchantRepairItemButton:SetButtonTemplate()
+	for b = 1, MerchantRepairItemButton:GetNumRegions()do
+		local p = select(b, MerchantRepairItemButton:GetRegions())
+		if p:GetObjectType() == "Texture"then
+			p:SetTexCoord(0.04, 0.24, 0.06, 0.5)
+			p:FillInner()
+		end
+	end MerchantGuildBankRepairButton:SetButtonTemplate()
+	MerchantGuildBankRepairButtonIcon:SetTexCoord(0.61, 0.82, 0.1, 0.52)
+	MerchantGuildBankRepairButtonIcon:FillInner()
+	MerchantRepairAllButton:SetButtonTemplate()
+	MerchantRepairAllIcon:SetTexCoord(0.34, 0.1, 0.34, 0.535, 0.535, 0.1, 0.535, 0.535)
+	MerchantRepairAllIcon:FillInner()
+	MerchantFrame:Width(360)
+	STYLE:ApplyCloseButtonStyle(MerchantFrameCloseButton, MerchantFrame.Panel)
+	STYLE:ApplyPaginationStyle(MerchantNextPageButton)
+	STYLE:ApplyPaginationStyle(MerchantPrevPageButton)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(MerchantStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petbattle.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petbattle.lua
new file mode 100644
index 0000000..807a9c5
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petbattle.lua
@@ -0,0 +1,379 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local PBAB_WIDTH = 382;
+local PBAB_HEIGHT = 72;
+local PetBattleActionBar = CreateFrame("Frame", "SVUI_PetBattleActionBar", UIParent)
+
+local function PetBattleButtonHelper(frame)
+	frame:SetPanelTemplate("Blackout")
+	frame:SetNormalTexture("")
+	frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	frame.Icon:SetDrawLayer('BORDER')
+	frame.Icon:SetParent(frame.Panel)
+	if(frame.SelectedHighlight) then frame.SelectedHighlight:SetAlpha(0) end
+	if(frame.checked) then frame.checked = true end
+	if(frame.pushed) then frame.pushed:FillInner(frame.Panel) end
+	if(frame.hover) then frame.hover:FillInner(frame.Panel) end
+	frame:SetFrameStrata('LOW')
+end
+--[[
+##########################################################
+PETBATTLE STYLER
+##########################################################
+]]--
+local function PetBattleStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.petbattleui ~= true then
+		return
+	end
+
+	local PetBattleFrame = _G["PetBattleFrame"];
+	local BottomFrame = PetBattleFrame.BottomFrame;
+	local ActiveFramesList = { PetBattleFrame.ActiveAlly, PetBattleFrame.ActiveEnemy }
+	local StandardFramesList = { PetBattleFrame.Ally2, PetBattleFrame.Ally3, PetBattleFrame.Enemy2, PetBattleFrame.Enemy3 }
+
+	STYLE:ApplyCloseButtonStyle(FloatingBattlePetTooltip.CloseButton)
+	PetBattleFrame:RemoveTextures()
+
+	for i, frame in pairs(ActiveFramesList) do
+		if(not frame.isStyled) then
+			frame.Border:SetAlpha(0)
+			frame.Border2:SetAlpha(0)
+			frame.healthBarWidth = 300;
+
+			frame.IconBackdrop = CreateFrame("Frame", nil, frame)
+			frame.IconBackdrop:SetFrameLevel(0)
+			frame.IconBackdrop:WrapOuter(frame.Icon, 3, 3)
+			frame.IconBackdrop:SetSlotTemplate(true, 3, 0, 0, true);
+
+			frame.IconBackdrop.Panel:SetFixedPanelTemplate("Blackout")
+
+			frame.BorderFlash:Die()
+			frame.HealthBarBG:Die()
+			frame.HealthBarFrame:Die()
+			frame.HealthBarBackdrop = CreateFrame("Frame", nil, frame)
+			frame.HealthBarBackdrop:SetFrameLevel(frame:GetFrameLevel()-1)
+			frame.HealthBarBackdrop:SetFixedPanelTemplate("Blackout")
+			frame.HealthBarBackdrop:Width(frame.healthBarWidth+(2))
+			frame.ActualHealthBar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
+			frame.PetTypeFrame = CreateFrame("Frame", nil, frame)
+			frame.PetTypeFrame:Size(100, 23)
+			frame.PetTypeFrame.text = frame.PetTypeFrame:CreateFontString(nil, 'OVERLAY')
+			frame.PetTypeFrame.text:SetFont(SV.Media.font.roboto, 12, "OUTLINE")
+			frame.PetTypeFrame.text:SetText("")
+			frame.ActualHealthBar:ClearAllPoints()
+			frame.Name:SetFontObject(SystemFont_Shadow_Outline_Huge2)
+			frame.Name:ClearAllPoints()
+			frame.FirstAttack = frame:CreateTexture(nil, "ARTWORK")
+			frame.FirstAttack:Size(30)
+			frame.FirstAttack:SetTexture("Interface\\PetBattles\\PetBattle-StatIcons")
+			if i == 1 then
+				frame.HealthBarBackdrop:Point('TOPLEFT', frame.ActualHealthBar, 'TOPLEFT', -1, 1)
+				frame.HealthBarBackdrop:Point('BOTTOMLEFT', frame.ActualHealthBar, 'BOTTOMLEFT', -1, -1)
+				frame.ActualHealthBar:SetVertexColor(171/255, 214/255, 116/255)
+				PetBattleFrame.Ally2.iconPoint = frame.IconBackdrop;
+				PetBattleFrame.Ally3.iconPoint = frame.IconBackdrop;
+				frame.ActualHealthBar:Point('BOTTOMLEFT', frame.Icon, 'BOTTOMRIGHT', 10, 0)
+				frame.Name:Point('BOTTOMLEFT', frame.ActualHealthBar, 'TOPLEFT', 0, 8)
+				frame.PetTypeFrame:SetPoint("BOTTOMRIGHT", frame.HealthBarBackdrop, "TOPRIGHT", 0, 4)
+				frame.PetTypeFrame.text:SetPoint("RIGHT")
+				frame.FirstAttack:SetPoint("LEFT", frame.HealthBarBackdrop, "RIGHT", 5, 0)
+				frame.FirstAttack:SetTexCoord(frame.SpeedIcon:GetTexCoord())
+				frame.FirstAttack:SetVertexColor(.1, .1, .1, 1)
+			else
+				frame.HealthBarBackdrop:Point('TOPRIGHT', frame.ActualHealthBar, 'TOPRIGHT', 1, 1)
+				frame.HealthBarBackdrop:Point('BOTTOMRIGHT', frame.ActualHealthBar, 'BOTTOMRIGHT', 1, -1)
+				frame.ActualHealthBar:SetVertexColor(196/255, 30/255, 60/255)
+				PetBattleFrame.Enemy2.iconPoint = frame.IconBackdrop;
+				PetBattleFrame.Enemy3.iconPoint = frame.IconBackdrop;
+				frame.ActualHealthBar:Point('BOTTOMRIGHT', frame.Icon, 'BOTTOMLEFT', -10, 0)
+				frame.Name:Point('BOTTOMRIGHT', frame.ActualHealthBar, 'TOPRIGHT', 0, 8)
+				frame.PetTypeFrame:SetPoint("BOTTOMLEFT", frame.HealthBarBackdrop, "TOPLEFT", 2, 4)
+				frame.PetTypeFrame.text:SetPoint("LEFT")
+				frame.FirstAttack:SetPoint("RIGHT", frame.HealthBarBackdrop, "LEFT", -5, 0)
+				frame.FirstAttack:SetTexCoord(.5, 0, .5, 1)
+				frame.FirstAttack:SetVertexColor(.1, .1, .1, 1)
+			end
+			frame.HealthText:ClearAllPoints()
+			frame.HealthText:SetPoint('CENTER', frame.HealthBarBackdrop, 'CENTER')
+			frame.PetType:SetFrameLevel(frame.PetTypeFrame:GetFrameLevel()+2)
+			frame.PetType:ClearAllPoints()
+			frame.PetType:SetAllPoints(frame.PetTypeFrame)
+			frame.PetType:SetAlpha(0)
+			frame.LevelUnderlay:SetAlpha(0)
+			frame.Level:SetFontObject(NumberFont_Outline_Huge)
+			frame.Level:ClearAllPoints()
+			frame.Level:Point('BOTTOMLEFT', frame.Icon, 'BOTTOMLEFT', -2, -2)
+			if frame.SpeedIcon then
+				frame.SpeedIcon:ClearAllPoints()
+				frame.SpeedIcon:SetPoint("CENTER")
+				frame.SpeedIcon:SetAlpha(0)
+				frame.SpeedUnderlay:SetAlpha(0)
+			end
+			frame.isStyled = true
+		end
+	end
+
+	for _, frame in pairs(StandardFramesList) do
+		if(not frame.hasTempBG) then
+			frame.BorderAlive:SetAlpha(0)
+			frame.HealthBarBG:SetAlpha(0)
+			frame.HealthDivider:SetAlpha(0)
+			frame:Size(40)
+
+			frame.IconBackdrop = CreateFrame("Frame", nil, frame)
+			frame.IconBackdrop:SetFrameLevel(0)
+			frame.IconBackdrop:WrapOuter(frame, 2, 2)
+			frame.IconBackdrop:SetSlotTemplate(true, 2, 0, 0, true);
+
+			frame.IconBackdrop.Panel:SetFixedPanelTemplate("Blackout")
+
+			frame:ClearAllPoints()
+			frame.healthBarWidth = 40;
+			frame.ActualHealthBar:ClearAllPoints()
+			frame.ActualHealthBar:SetPoint("TOPLEFT", frame.IconBackdrop, 'BOTTOMLEFT', 2, -3)
+			frame.ActualHealthBar:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
+			frame.HealthBarBackdrop = CreateFrame("Frame", nil, frame)
+			frame.HealthBarBackdrop:SetFrameLevel(frame:GetFrameLevel()-1)
+			frame.HealthBarBackdrop:SetFixedPanelTemplate("Blackout")
+			frame.HealthBarBackdrop:Width(frame.healthBarWidth+2)
+			frame.HealthBarBackdrop:Point('TOPLEFT', frame.ActualHealthBar, 'TOPLEFT', -1, 1)
+			frame.HealthBarBackdrop:Point('BOTTOMLEFT', frame.ActualHealthBar, 'BOTTOMLEFT', -1, -1)
+			frame.hasTempBG = true
+		end
+	end
+
+	PetBattleActionBar:SetParent(PetBattleFrame)
+	PetBattleActionBar:SetSize(PBAB_WIDTH, PBAB_HEIGHT)
+	PetBattleActionBar:EnableMouse(true)
+	PetBattleActionBar:SetFrameLevel(0)
+	PetBattleActionBar:SetFrameStrata('BACKGROUND')
+	PetBattleActionBar:SetFixedPanelTemplate("Blackout")
+
+	if(SuperDockBottomDataAnchor) then
+		PetBattleActionBar:SetPoint("BOTTOM", SuperDockBottomDataAnchor, "TOP", 0, 4)
+	else
+		PetBattleActionBar:SetPoint("BOTTOM", SV.UIParent, "BOTTOM", 0, 4)
+	end
+
+	PetBattleFrame.TopVersusText:ClearAllPoints()
+	PetBattleFrame.TopVersusText:SetPoint("TOP", PetBattleFrame, "TOP", 0, -42)
+
+	PetBattleFrame.Ally2:SetPoint("TOPRIGHT", PetBattleFrame.Ally2.iconPoint, "TOPLEFT", -6, -2)
+	PetBattleFrame.Ally3:SetPoint('TOPRIGHT', PetBattleFrame.Ally2, 'TOPLEFT', -8, 0)
+	PetBattleFrame.Enemy2:SetPoint("TOPLEFT", PetBattleFrame.Enemy2.iconPoint, "TOPRIGHT", 6, -2)
+	PetBattleFrame.Enemy3:SetPoint('TOPLEFT', PetBattleFrame.Enemy2, 'TOPRIGHT', 8, 0)
+
+	BottomFrame:RemoveTextures()
+	BottomFrame.TurnTimer:RemoveTextures()
+
+	BottomFrame.TurnTimer.SkipButton:ClearAllPoints()
+	BottomFrame.TurnTimer.SkipButton:SetParent(PetBattleActionBar)
+	BottomFrame.TurnTimer.SkipButton:Size((PBAB_WIDTH * 0.2) - 4, 18)
+	BottomFrame.TurnTimer.SkipButton:SetPoint("BOTTOMLEFT", PetBattleActionBar.Panel, "TOPLEFT", 2, 2)
+	BottomFrame.TurnTimer.SkipButton:SetButtonTemplate()
+
+	BottomFrame.TurnTimer:Size(BottomFrame.TurnTimer.SkipButton:GetWidth(), BottomFrame.TurnTimer.SkipButton:GetHeight())
+	BottomFrame.TurnTimer:ClearAllPoints()
+	BottomFrame.TurnTimer:SetPoint("TOP", SV.UIParent, "TOP", 0, -140)
+	BottomFrame.TurnTimer.TimerText:SetPoint("CENTER")
+
+	BottomFrame.FlowFrame:RemoveTextures()
+	BottomFrame.MicroButtonFrame:Die()
+	BottomFrame.Delimiter:RemoveTextures()
+
+	BottomFrame.xpBar:ClearAllPoints()
+	BottomFrame.xpBar:SetParent(PetBattleActionBar)
+	BottomFrame.xpBar:Size((PBAB_WIDTH * 0.8) - 4, 16)
+	BottomFrame.xpBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
+	BottomFrame.xpBar:SetPanelTemplate("Bar")
+	BottomFrame.xpBar:SetPoint("BOTTOMRIGHT", PetBattleActionBar.Panel, "TOPRIGHT", -3, 3)
+	BottomFrame.xpBar:SetScript("OnShow", function(self)
+		self:RemoveTextures()
+		self:SetStatusBarTexture(SV.Media.bar.default)
+	end)
+
+	for i = 1, 3 do
+		local pet = BottomFrame.PetSelectionFrame["Pet"..i]
+		pet.HealthBarBG:SetAlpha(0)
+		pet.HealthDivider:SetAlpha(0)
+		pet.ActualHealthBar:SetAlpha(0)
+		pet.SelectedTexture:SetAlpha(0)
+		pet.MouseoverHighlight:SetAlpha(0)
+		pet.Framing:SetAlpha(0)
+		pet.Icon:SetAlpha(0)
+		pet.Name:SetAlpha(0)
+		pet.DeadOverlay:SetAlpha(0)
+		pet.Level:SetAlpha(0)
+		pet.HealthText:SetAlpha(0)
+	end
+
+	PetBattleQueueReadyFrame:RemoveTextures()
+	PetBattleQueueReadyFrame:SetBasicPanel()
+	PetBattleQueueReadyFrame.AcceptButton:SetButtonTemplate()
+	PetBattleQueueReadyFrame.DeclineButton:SetButtonTemplate()
+	PetBattleQueueReadyFrame.Art:SetTexture([[Interface\PetBattles\PetBattlesQueue]])
+
+	--[[ TOO MANY GOD DAMN HOOKS ]]--
+	hooksecurefunc("PetBattleFrame_UpdateSpeedIndicators", function()
+		if not PetBattleFrame.ActiveAlly.SpeedIcon:IsShown() and not PetBattleFrame.ActiveEnemy.SpeedIcon:IsShown() then
+			PetBattleFrame.ActiveAlly.FirstAttack:Hide()
+			PetBattleFrame.ActiveEnemy.FirstAttack:Hide()
+			return
+		end
+		PetBattleFrame.ActiveAlly.FirstAttack:Show()
+		if PetBattleFrame.ActiveAlly.SpeedIcon:IsShown() then
+			PetBattleFrame.ActiveAlly.FirstAttack:SetVertexColor(0, 1, 0, 1)
+		else
+			PetBattleFrame.ActiveAlly.FirstAttack:SetVertexColor(.8, 0, .3, 1)
+		end
+		PetBattleFrame.ActiveEnemy.FirstAttack:Show()
+		if PetBattleFrame.ActiveEnemy.SpeedIcon:IsShown() then
+			PetBattleFrame.ActiveEnemy.FirstAttack:SetVertexColor(0, 1, 0, 1)
+		else
+			PetBattleFrame.ActiveEnemy.FirstAttack:SetVertexColor(.8, 0, .3, 1)
+		end
+	end)
+
+	hooksecurefunc("PetBattleUnitFrame_UpdatePetType", function(self)
+		if self.PetType then
+			local pettype = C_PetBattles.GetPetType(self.petOwner, self.petIndex)
+			if self.PetTypeFrame then
+				self.PetTypeFrame.text:SetText(PET_TYPE_SUFFIX[pettype])
+			end
+		end
+	end)
+
+	hooksecurefunc("PetBattleAuraHolder_Update", function(self)
+	    if ( not self.petOwner or not self.petIndex ) then
+	        self:Hide();
+	        return;
+	    end
+
+	    local nextFrame = 1;
+	    for i=1, C_PetBattles.GetNumAuras(self.petOwner, self.petIndex) do
+	        local auraID, instanceID, turnsRemaining, isBuff = C_PetBattles.GetAuraInfo(self.petOwner, self.petIndex, i);
+	        if ( (isBuff and self.displayBuffs) or (not isBuff and self.displayDebuffs) ) then
+				local frame = self.frames[nextFrame]
+				frame.DebuffBorder:Hide()
+				if not frame.isStyled then
+					frame:SetSlotTemplate(true, 2, -8,-2)
+					frame.Icon:FillInner(frame.Panel, 2, 2)
+					frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+					frame.isStyled = true
+				end
+				if isBuff then
+					frame:SetBackdropBorderColor(0, 1, 0)
+				else
+					frame:SetBackdropBorderColor(1, 0, 0)
+				end
+				frame.Duration:SetFont(SV.Media.font.numbers, 16, "OUTLINE")
+				frame.Duration:ClearAllPoints()
+				frame.Duration:SetPoint("BOTTOMLEFT", frame.Icon, "BOTTOMLEFT", 4, 4)
+				if turnsRemaining > 0 then
+					frame.Duration:SetText(turnsRemaining)
+				end
+				nextFrame = nextFrame + 1
+			end
+		end
+	end)
+
+	hooksecurefunc("PetBattleWeatherFrame_Update", function(self)
+		local auraID = C_PetBattles.GetAuraInfo(LE_BATTLE_PET_WEATHER, PET_BATTLE_PAD_INDEX, 1)
+		if auraID then
+			self.Icon:Hide()
+			self.Name:Hide()
+			self.DurationShadow:Hide()
+			self.Label:Hide()
+			self.Duration:SetPoint("CENTER", self, 0, 8)
+			self:ClearAllPoints()
+			self:SetPoint("TOP", SV.UIParent, 0, -15)
+		end
+	end)
+
+	hooksecurefunc("PetBattleUnitFrame_UpdateDisplay", function(self)
+		self.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		--Update the pet rarity border
+	    if (self.IconBackdrop) then
+	    	local petOwner = self.petOwner;
+    		local petIndex = self.petIndex;
+	        local rarity = C_PetBattles.GetBreedQuality(petOwner, petIndex);
+	        if (ENABLE_COLORBLIND_MODE ~= "1") then
+	        	self.IconBackdrop:SetBackdropColor(ITEM_QUALITY_COLORS[rarity-1].r, ITEM_QUALITY_COLORS[rarity-1].g, ITEM_QUALITY_COLORS[rarity-1].b);
+	            self.IconBackdrop:SetBackdropBorderColor(ITEM_QUALITY_COLORS[rarity-1].r, ITEM_QUALITY_COLORS[rarity-1].g, ITEM_QUALITY_COLORS[rarity-1].b);
+	        end
+	    end
+	end)
+
+	hooksecurefunc("PetBattleAbilityTooltip_Show", function()
+		SV:AnchorToCursor(PetBattlePrimaryAbilityTooltip)
+	end)
+
+	hooksecurefunc(BottomFrame.TurnTimer.SkipButton, "SetPoint", function(self, arg1, _, arg2, arg3, arg4)
+		if (arg1 ~= "BOTTOMLEFT" or arg2 ~= "TOPLEFT" or arg3 ~= 2 or arg4 ~= 2) then
+			self:ClearAllPoints()
+			self:SetPoint("BOTTOMLEFT", PetBattleActionBar.Panel, "TOPLEFT", 2, 2)
+		end
+	end)
+
+	hooksecurefunc("PetBattlePetSelectionFrame_Show", function()
+		BottomFrame.PetSelectionFrame:ClearAllPoints()
+		BottomFrame.PetSelectionFrame:SetPoint("BOTTOM", BottomFrame.xpBar, "TOP", 0, 8)
+	end)
+
+	hooksecurefunc("PetBattleFrame_UpdateActionBarLayout", function(self)
+		for i = 1, NUM_BATTLE_PET_ABILITIES do
+			local actionButton = self.BottomFrame.abilityButtons[i]
+			PetBattleButtonHelper(actionButton)
+			actionButton:SetParent(PetBattleActionBar)
+			actionButton:ClearAllPoints()
+			if i == 1 then
+				actionButton:SetPoint("BOTTOMLEFT", 10, 10)
+			else
+				local lastActionButton = self.BottomFrame.abilityButtons[i - 1]
+				actionButton:SetPoint("LEFT", lastActionButton, "RIGHT", 10, 0)
+			end
+		end
+		self.BottomFrame.SwitchPetButton:SetParent(PetBattleActionBar)
+		self.BottomFrame.SwitchPetButton:ClearAllPoints()
+		self.BottomFrame.SwitchPetButton:SetPoint("LEFT", self.BottomFrame.abilityButtons[3], "RIGHT", 10, 0)
+		PetBattleButtonHelper(self.BottomFrame.SwitchPetButton)
+		self.BottomFrame.CatchButton:SetParent(PetBattleActionBar)
+		self.BottomFrame.CatchButton:ClearAllPoints()
+		self.BottomFrame.CatchButton:SetPoint("LEFT", self.BottomFrame.SwitchPetButton, "RIGHT", 10, 0)
+		PetBattleButtonHelper(self.BottomFrame.CatchButton)
+		self.BottomFrame.ForfeitButton:SetParent(PetBattleActionBar)
+		self.BottomFrame.ForfeitButton:ClearAllPoints()
+		self.BottomFrame.ForfeitButton:SetPoint("LEFT", self.BottomFrame.CatchButton, "RIGHT", 10, 0)
+		PetBattleButtonHelper(self.BottomFrame.ForfeitButton)
+	end)
+
+	SV.SVTip:ReLoad()
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(PetBattleStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petition.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petition.lua
new file mode 100644
index 0000000..ec4aecb
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petition.lua
@@ -0,0 +1,54 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+PETITIONFRAME STYLER
+##########################################################
+]]--
+local function PetitionFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.petition ~= true then
+		return
+	end
+	PetitionFrame:RemoveTextures(true)
+	PetitionFrame:SetFixedPanelTemplate("Transparent", true)
+	PetitionFrameInset:Die()
+	PetitionFrameSignButton:SetButtonTemplate()
+	PetitionFrameRequestButton:SetButtonTemplate()
+	PetitionFrameRenameButton:SetButtonTemplate()
+	PetitionFrameCancelButton:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(PetitionFrameCloseButton)
+	PetitionFrameCharterTitle:SetTextColor(1, 1, 0)
+	PetitionFrameCharterName:SetTextColor(1, 1, 1)
+	PetitionFrameMasterTitle:SetTextColor(1, 1, 0)
+	PetitionFrameMasterName:SetTextColor(1, 1, 1)
+	PetitionFrameMemberTitle:SetTextColor(1, 1, 0)
+	for g = 1, 9 do
+		_G["PetitionFrameMemberName"..g]:SetTextColor(1, 1, 1)
+	end
+	PetitionFrameInstructions:SetTextColor(1, 1, 1)
+	PetitionFrameRenameButton:Point("LEFT", PetitionFrameRequestButton, "RIGHT", 3, 0)
+	PetitionFrameRenameButton:Point("RIGHT", PetitionFrameCancelButton, "LEFT", -3, 0)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(PetitionFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua
new file mode 100644
index 0000000..fac1626
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petjournal.lua
@@ -0,0 +1,275 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local function PetJournal_UpdateMounts()
+	for b = 1, #MountJournal.ListScrollFrame.buttons do
+		local d = _G["MountJournalListScrollFrameButton"..b]
+		local e = _G["MountJournalListScrollFrameButton"..b.."Name"]
+		if d.selectedTexture:IsShown() then
+			e:SetTextColor(1, 1, 0)
+			if d.Panel then
+				d:SetBackdropBorderColor(1, 1, 0)
+			end
+			if d.IconShadow then
+				d.IconShadow:SetBackdropBorderColor(1, 1, 0)
+			end
+		else
+			e:SetTextColor(1, 1, 1)
+			if d.Panel then
+				d:SetBackdropBorderColor(0,0,0,1)
+			end
+			if d.IconShadow then
+				d.IconShadow:SetBackdropBorderColor(0,0,0,1)
+			end
+		end
+	end
+end
+
+local function PetJournal_UpdatePets()
+	local u = PetJournal.listScroll.buttons;
+	local isWild = PetJournal.isWild;
+	for b = 1, #u do
+		local v = u[b].index;
+		if not v then
+			break
+		end
+		local d = _G["PetJournalListScrollFrameButton"..b]
+		local e = _G["PetJournalListScrollFrameButton"..b.."Name"]
+		local w, x, y, z, level, favorite, A, B, C, D, E, F, G, H, I = C_PetJournal.GetPetInfoByIndex(v, isWild)
+		if w ~= nil then
+			local J, K, L, M, N = C_PetJournal.GetPetStats(w)
+			if d.selectedTexture:IsShown() then
+				e:SetTextColor(1, 1, 0)
+			else
+				e:SetTextColor(1, 1, 1)
+			end
+			if N then
+				local color = ITEM_QUALITY_COLORS[N-1]
+				if d.Panel then
+					d.Panel:SetBackdropBorderColor(color.r, color.g, color.b)
+				end
+				if d.IconShadow then
+					d.IconShadow:SetBackdropBorderColor(color.r, color.g, color.b)
+				end
+			else
+				if d.Panel then
+					d.Panel:SetBackdropBorderColor(1, 1, 0, 0.5)
+				end
+				if d.IconShadow then
+					d.IconShadow:SetBackdropBorderColor(1, 1, 0, 0.5)
+				end
+			end
+		end
+	end
+end
+--[[
+##########################################################
+FRAME STYLER
+##########################################################
+]]--
+local function PetJournalStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.mounts ~= true then return end
+
+	STYLE:ApplyWindowStyle(PetJournalParent)
+
+	PetJournalParentPortrait:Hide()
+	STYLE:ApplyTabStyle(PetJournalParentTab1)
+	STYLE:ApplyTabStyle(PetJournalParentTab2)
+	STYLE:ApplyCloseButtonStyle(PetJournalParentCloseButton)
+
+	MountJournal:RemoveTextures()
+	MountJournal.LeftInset:RemoveTextures()
+	MountJournal.RightInset:RemoveTextures()
+	MountJournal.MountDisplay:RemoveTextures()
+	MountJournal.MountDisplay.ShadowOverlay:RemoveTextures()
+	MountJournal.MountCount:RemoveTextures()
+	MountJournalListScrollFrame:RemoveTextures()
+	MountJournalMountButton:SetButtonTemplate()
+	MountJournalSearchBox:SetEditboxTemplate()
+
+	STYLE:ApplyScrollFrameStyle(MountJournalListScrollFrameScrollBar)
+	MountJournal.MountDisplay:SetFixedPanelTemplate("ModelComic")
+
+	for i = 1, #MountJournal.ListScrollFrame.buttons do
+		local button = _G["MountJournalListScrollFrameButton"..i]
+		if(button) then
+			STYLE:ApplyItemButtonStyle(button, nil, true, true)
+			local bar = _G["SVUI_MountSelectBar"..i]
+			if(bar) then bar:SetParent(button.Panel) end
+		end
+	end
+
+	hooksecurefunc("MountJournal_UpdateMountList", PetJournal_UpdateMounts)
+	MountJournalListScrollFrame:HookScript("OnVerticalScroll", PetJournal_UpdateMounts)
+	MountJournalListScrollFrame:HookScript("OnMouseWheel", PetJournal_UpdateMounts)
+	PetJournalSummonButton:RemoveTextures()
+	PetJournalFindBattle:RemoveTextures()
+	PetJournalSummonButton:SetButtonTemplate()
+	PetJournalFindBattle:SetButtonTemplate()
+	PetJournalRightInset:RemoveTextures()
+	PetJournalLeftInset:RemoveTextures()
+
+	for i = 1, 3 do
+		local button = _G["PetJournalLoadoutPet" .. i .. "HelpFrame"]
+		button:RemoveTextures()
+	end
+
+	PetJournalTutorialButton:Die()
+	PetJournal.PetCount:RemoveTextures()
+	PetJournalSearchBox:SetEditboxTemplate()
+	PetJournalFilterButton:RemoveTextures(true)
+	PetJournalFilterButton:SetButtonTemplate()
+	PetJournalListScrollFrame:RemoveTextures()
+	STYLE:ApplyScrollFrameStyle(PetJournalListScrollFrameScrollBar)
+
+	for i = 1, #PetJournal.listScroll.buttons do
+		local button = _G["PetJournalListScrollFrameButton" .. i]
+		local favorite = _G["PetJournalListScrollFrameButton" .. i .. "Favorite"]
+		STYLE:ApplyItemButtonStyle(button, false, true)
+		if(favorite) then
+			local fg = CreateFrame("Frame", nil, button)
+			fg:SetSize(40,40)
+			fg:SetPoint("TOPLEFT", button, "TOPLEFT", -1, 1)
+			fg:SetFrameLevel(button:GetFrameLevel() + 30)
+			favorite:SetParent(fg)
+			button.dragButton.favorite:SetParent(fg)
+		end
+
+		button.dragButton.levelBG:SetAlpha(0)
+		button.dragButton.level:SetParent(button)
+		button.petTypeIcon:SetParent(button.Panel)
+	end
+
+	hooksecurefunc('PetJournal_UpdatePetList', PetJournal_UpdatePets)
+	PetJournalListScrollFrame:HookScript("OnVerticalScroll", PetJournal_UpdatePets)
+	PetJournalListScrollFrame:HookScript("OnMouseWheel", PetJournal_UpdatePets)
+	PetJournalAchievementStatus:DisableDrawLayer('BACKGROUND')
+	STYLE:ApplyItemButtonStyle(PetJournalHealPetButton, true)
+	PetJournalHealPetButton.texture:SetTexture([[Interface\Icons\spell_magic_polymorphrabbit]])
+	PetJournalLoadoutBorder:RemoveTextures()
+
+	for b = 1, 3 do
+		local pjPet = _G['PetJournalLoadoutPet'..b]
+		pjPet:RemoveTextures()
+		pjPet.petTypeIcon:SetPoint('BOTTOMLEFT', 2, 2)
+		pjPet.dragButton:WrapOuter(_G['PetJournalLoadoutPet'..b..'Icon'])
+		pjPet.hover = true;
+		pjPet.pushed = true;
+		pjPet.checked = true;
+		STYLE:ApplyItemButtonStyle(pjPet, nil, nil, true)
+		pjPet.setButton:RemoveTextures()
+		_G['PetJournalLoadoutPet'..b..'HealthFrame'].healthBar:RemoveTextures()
+		_G['PetJournalLoadoutPet'..b..'HealthFrame'].healthBar:SetPanelTemplate('Default')
+		_G['PetJournalLoadoutPet'..b..'HealthFrame'].healthBar:SetStatusBarTexture(SV.Media.bar.default)
+		_G['PetJournalLoadoutPet'..b..'XPBar']:RemoveTextures()
+		_G['PetJournalLoadoutPet'..b..'XPBar']:SetPanelTemplate('Default')
+		_G['PetJournalLoadoutPet'..b..'XPBar']:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+		_G['PetJournalLoadoutPet'..b..'XPBar']:SetFrameLevel(_G['PetJournalLoadoutPet'..b..'XPBar']:GetFrameLevel()+2)
+		for v = 1, 3 do
+			local s = _G['PetJournalLoadoutPet'..b..'Spell'..v]
+			STYLE:ApplyItemButtonStyle(s)
+			s.FlyoutArrow:SetTexture([[Interface\Buttons\ActionBarFlyoutButton]])
+			_G['PetJournalLoadoutPet'..b..'Spell'..v..'Icon']:FillInner(s)
+			s.Panel:SetFrameLevel(s:GetFrameLevel() + 1)
+			_G['PetJournalLoadoutPet'..b..'Spell'..v..'Icon']:SetParent(s.Panel)
+		end
+	end
+
+	PetJournalSpellSelect:RemoveTextures()
+
+	for b = 1, 2 do
+		local Q = _G['PetJournalSpellSelectSpell'..b]
+		STYLE:ApplyItemButtonStyle(Q)
+		_G['PetJournalSpellSelectSpell'..b..'Icon']:FillInner(Q)
+		_G['PetJournalSpellSelectSpell'..b..'Icon']:SetDrawLayer('BORDER')
+	end
+
+	PetJournalPetCard:RemoveTextures()
+	STYLE:ApplyItemButtonStyle(PetJournalPetCard, nil, nil, true)
+	PetJournalPetCardInset:RemoveTextures()
+	PetJournalPetCardPetInfo.levelBG:SetAlpha(0)
+	PetJournalPetCardPetInfoIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	STYLE:ApplyItemButtonStyle(PetJournalPetCardPetInfo, nil, true, true)
+	local fg = CreateFrame("Frame", nil, PetJournalPetCardPetInfo)
+	fg:SetSize(40,40)
+	fg:SetPoint("TOPLEFT", PetJournalPetCardPetInfo, "TOPLEFT", -1, 1)
+	fg:SetFrameLevel(PetJournalPetCardPetInfo:GetFrameLevel() + 30)
+	PetJournalPetCardPetInfo.favorite:SetParent(fg)
+	PetJournalPetCardPetInfo.Panel:WrapOuter(PetJournalPetCardPetInfoIcon)
+	PetJournalPetCardPetInfoIcon:SetParent(PetJournalPetCardPetInfo.Panel)
+	PetJournalPetCardPetInfo.level:SetParent(PetJournalPetCardPetInfo.Panel)
+	local R = PetJournalPrimaryAbilityTooltip;R.Background:SetTexture(0,0,0,0)
+	if R.Delimiter1 then
+		R.Delimiter1:SetTexture(0,0,0,0)
+		R.Delimiter2:SetTexture(0,0,0,0)
+	end
+	R.BorderTop:SetTexture(0,0,0,0)
+	R.BorderTopLeft:SetTexture(0,0,0,0)
+	R.BorderTopRight:SetTexture(0,0,0,0)
+	R.BorderLeft:SetTexture(0,0,0,0)
+	R.BorderRight:SetTexture(0,0,0,0)
+	R.BorderBottom:SetTexture(0,0,0,0)
+	R.BorderBottomRight:SetTexture(0,0,0,0)
+	R.BorderBottomLeft:SetTexture(0,0,0,0)
+	R:SetFixedPanelTemplate("Transparent", true)
+	for b = 1, 6 do
+		local S = _G['PetJournalPetCardSpell'..b]
+		S:SetFrameLevel(S:GetFrameLevel() + 2)
+		S:DisableDrawLayer('BACKGROUND')
+		S:SetPanelTemplate('Transparent')
+		S.Panel:SetAllPoints()
+		S.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		S.icon:FillInner(S.Panel)
+	end
+	PetJournalPetCardHealthFrame.healthBar:RemoveTextures()
+	PetJournalPetCardHealthFrame.healthBar:SetPanelTemplate('Default')
+	PetJournalPetCardHealthFrame.healthBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	PetJournalPetCardXPBar:RemoveTextures()
+	PetJournalPetCardXPBar:SetPanelTemplate('Default')
+	PetJournalPetCardXPBar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+
+	if(SV.GameVersion >= 60000) then
+		STYLE:ApplyTabStyle(PetJournalParentTab3)
+		ToyBox:RemoveTextures()
+		ToyBoxProgressBar:SetPanelTemplate("Bar", true)
+		ToyBoxSearchBox:SetEditboxTemplate()
+		ToyBoxFilterButton:SetButtonTemplate()
+		STYLE:ApplyDropdownStyle(ToyBoxFilterDropDown)
+		ToyBoxIconsFrame:SetBasicPanel()
+
+		for i = 1, 18 do
+			local gName = ("ToySpellButton%d"):format(i)
+			local button = _G[gName]
+			if(button) then
+				button:SetButtonTemplate()
+			end
+		end
+	end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_PetJournal", PetJournalStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petstable.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petstable.lua
new file mode 100644
index 0000000..e296f8e
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/petstable.lua
@@ -0,0 +1,51 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+PETSTABLE STYLER
+##########################################################
+]]--
+local function PetStableStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.stable ~= true then return end
+	PetStableFrame:RemoveTextures()
+	PetStableFrameInset:RemoveTextures()
+	PetStableLeftInset:RemoveTextures()
+	PetStableBottomInset:RemoveTextures()
+	PetStableFrame:SetPanelTemplate("Halftone")
+	PetStableFrameInset:SetFixedPanelTemplate('Inset')
+	STYLE:ApplyCloseButtonStyle(PetStableFrameCloseButton)
+	PetStablePrevPageButton:SetButtonTemplate()
+	PetStableNextPageButton:SetButtonTemplate()
+	STYLE:ApplyPaginationStyle(PetStablePrevPageButton)
+	STYLE:ApplyPaginationStyle(PetStableNextPageButton)
+	for j = 1, NUM_PET_ACTIVE_SLOTS do
+		 STYLE:ApplyItemButtonStyle(_G['PetStableActivePet'..j], true)
+	end
+	for j = 1, NUM_PET_STABLE_SLOTS do
+		 STYLE:ApplyItemButtonStyle(_G['PetStableStabledPet'..j], true)
+	end
+	PetStableSelectedPetIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(PetStableStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/pvp.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/pvp.lua
new file mode 100644
index 0000000..f7d643e
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/pvp.lua
@@ -0,0 +1,164 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+PVP STYLER
+##########################################################
+]]--
+-- LoadAddOn("Blizzard_PVPUI")
+
+local function PVPFrameStyle()
+	if (SV.db[Schema] and (SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.pvp ~= true)) then
+		return
+	end
+
+	STYLE:ApplyWindowStyle(PVPUIFrame, true)
+
+	STYLE:ApplyCloseButtonStyle(PVPUIFrameCloseButton)
+
+	for g = 1, 2 do
+		STYLE:ApplyTabStyle(_G["PVPUIFrameTab"..g])
+	end
+
+	for i = 1, 3 do
+		local btn = _G["PVPQueueFrameCategoryButton"..i]
+		if(btn) then
+			btn.Background:Die()
+			btn.Ring:Die()
+			btn:SetButtonTemplate()
+			btn.Icon:Size(45)
+			btn.Icon:SetTexCoord(.15, .85, .15, .85)
+			btn.Icon:SetDrawLayer("OVERLAY", nil, 7)
+			btn.Panel:WrapOuter(btn.Icon)
+		end
+	end
+
+	STYLE:ApplyDropdownStyle(HonorFrameTypeDropDown)
+	HonorFrame.Inset:RemoveTextures()
+	HonorFrame.Inset:SetFixedPanelTemplate("Inset")
+	STYLE:ApplyScrollFrameStyle(HonorFrameSpecificFrameScrollBar)
+	HonorFrameSoloQueueButton:RemoveTextures()
+	HonorFrameGroupQueueButton:RemoveTextures()
+	HonorFrameSoloQueueButton:SetButtonTemplate()
+	HonorFrameGroupQueueButton:SetButtonTemplate()
+	HonorFrame.BonusFrame:RemoveTextures()
+	HonorFrame.BonusFrame.ShadowOverlay:RemoveTextures()
+	HonorFrame.BonusFrame.RandomBGButton:RemoveTextures()
+	HonorFrame.BonusFrame.RandomBGButton:SetFixedPanelTemplate("Button")
+	HonorFrame.BonusFrame.RandomBGButton:SetButtonTemplate()
+	HonorFrame.BonusFrame.RandomBGButton.SelectedTexture:FillInner()
+	HonorFrame.BonusFrame.RandomBGButton.SelectedTexture:SetTexture(1, 1, 0, 0.1)
+
+	if(SV.GameVersion < 60000) then
+		PVPUIFrame.Shadows:RemoveTextures()
+		HonorFrame.BonusFrame.CallToArmsButton:RemoveTextures()
+		HonorFrame.BonusFrame.CallToArmsButton:SetFixedPanelTemplate("Button")
+		HonorFrame.BonusFrame.CallToArmsButton:SetButtonTemplate()
+		HonorFrame.BonusFrame.CallToArmsButton.SelectedTexture:FillInner()
+		HonorFrame.BonusFrame.CallToArmsButton.SelectedTexture:SetTexture(1, 1, 0, 0.1)
+		for g = 1, 2 do
+			local I = HonorFrame.BonusFrame["WorldPVP"..g.."Button"]
+			I:RemoveTextures()
+			I:SetFixedPanelTemplate("Button", true)
+			I:SetButtonTemplate()
+			I.SelectedTexture:FillInner()
+			I.SelectedTexture:SetTexture(1, 1, 0, 0.1)
+		end
+		PVPUIFrame.LeftInset:RemoveTextures()
+	end
+
+	HonorFrame.BonusFrame.DiceButton:DisableDrawLayer("ARTWORK")
+	HonorFrame.BonusFrame.DiceButton:SetHighlightTexture("")
+	HonorFrame.RoleInset:RemoveTextures()
+	HonorFrame.RoleInset.DPSIcon.checkButton:SetCheckboxTemplate(true)
+	HonorFrame.RoleInset.TankIcon.checkButton:SetCheckboxTemplate(true)
+	HonorFrame.RoleInset.HealerIcon.checkButton:SetCheckboxTemplate(true)
+	HonorFrame.RoleInset.TankIcon:DisableDrawLayer("OVERLAY")
+	HonorFrame.RoleInset.TankIcon:DisableDrawLayer("BACKGROUND")
+	HonorFrame.RoleInset.HealerIcon:DisableDrawLayer("OVERLAY")
+	HonorFrame.RoleInset.HealerIcon:DisableDrawLayer("BACKGROUND")
+	HonorFrame.RoleInset.DPSIcon:DisableDrawLayer("OVERLAY")
+	HonorFrame.RoleInset.DPSIcon:DisableDrawLayer("BACKGROUND")
+	hooksecurefunc("LFG_PermanentlyDisableRoleButton", function(n)
+		if n.bg then
+			n.bg:SetDesaturated(true)
+		end
+	end)
+
+	ConquestFrame.Inset:RemoveTextures()
+	ConquestPointsBarLeft:Die()
+	ConquestPointsBarRight:Die()
+	ConquestPointsBarMiddle:Die()
+	ConquestPointsBarBG:Die()
+	ConquestPointsBarShadow:Die()
+	ConquestPointsBar.progress:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]])
+	ConquestPointsBar:SetFixedPanelTemplate('Inset')
+	ConquestPointsBar.Panel:WrapOuter(ConquestPointsBar, nil, -2)
+	ConquestFrame:RemoveTextures()
+	ConquestFrame.ShadowOverlay:RemoveTextures()
+	ConquestJoinButton:RemoveTextures()
+	ConquestJoinButton:SetButtonTemplate()
+	ConquestFrame.RatedBG:RemoveTextures()
+	ConquestFrame.RatedBG:SetFixedPanelTemplate("Inset")
+	ConquestFrame.RatedBG:SetButtonTemplate()
+	ConquestFrame.RatedBG.SelectedTexture:FillInner()
+	ConquestFrame.RatedBG.SelectedTexture:SetTexture(1, 1, 0, 0.1)
+	WarGamesFrame:RemoveTextures()
+	WarGamesFrame.RightInset:RemoveTextures()
+	WarGamesFrameInfoScrollFrame:RemoveTextures()
+	WarGamesFrameInfoScrollFrameScrollBar:RemoveTextures()
+	WarGameStartButton:RemoveTextures()
+	WarGameStartButton:SetButtonTemplate()
+	STYLE:ApplyScrollFrameStyle(WarGamesFrameScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(WarGamesFrameInfoScrollFrameScrollBar)
+	WarGamesFrame.HorizontalBar:RemoveTextures()
+
+	PVPReadyDialog:RemoveTextures()
+	PVPReadyDialog:SetPanelTemplate("Pattern")
+	PVPReadyDialogEnterBattleButton:SetButtonTemplate()
+	PVPReadyDialogLeaveQueueButton:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(PVPReadyDialogCloseButton)
+	PVPReadyDialogRoleIcon.texture:SetTexture("Interface\\LFGFrame\\UI-LFG-ICONS-ROLEBACKGROUNDS")
+	PVPReadyDialogRoleIcon.texture:SetAlpha(0.5)
+
+	ConquestFrame.Inset:SetFixedPanelTemplate("Inset")
+	WarGamesFrameScrollFrame:SetPanelTemplate("Inset",false,2,2,6)
+
+	hooksecurefunc("PVPReadyDialog_Display", function(self, l, N, O, P, Q, R)
+		if R == "DAMAGER" then
+			PVPReadyDialogRoleIcon.texture:SetTexCoord(LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
+		elseif R == "TANK" then
+			PVPReadyDialogRoleIcon.texture:SetTexCoord(LFDQueueFrameRoleButtonTank.background:GetTexCoord())
+		elseif R == "HEALER" then
+			PVPReadyDialogRoleIcon.texture:SetTexCoord(LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
+		end
+		if P == "ARENA" then
+			self:SetHeight(100)
+		end
+	end)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle('Blizzard_PVPUI', PVPFrameStyle, true)
+
+-- /script StaticPopupSpecial_Show(PVPReadyDialog)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua
new file mode 100644
index 0000000..8e2ceb7
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua
@@ -0,0 +1,279 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+credit: Elv.                      original logic from ElvUI. Adapted to SVUI #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local QuestFrameList = {
+	"QuestLogFrameAbandonButton",
+	"QuestLogFramePushQuestButton",
+	"QuestLogFrameTrackButton",
+	"QuestLogFrameCancelButton",
+	"QuestLogFrameCompleteButton"
+};
+
+local function QuestScrollHelper(b, c, d, e)
+	b:SetPanelTemplate("Inset")
+	b.spellTex = b:CreateTexture(nil, 'ARTWORK')
+	b.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
+	if e then
+		 b.spellTex:SetPoint("TOPLEFT", 2, -2)
+	else
+		 b.spellTex:SetPoint("TOPLEFT")
+	end
+	b.spellTex:Size(c or 506, d or 615)
+	b.spellTex:SetTexCoord(0, 1, 0.02, 1)
+end
+
+local function QueuedWatchFrameItems()
+	for i=1, WATCHFRAME_NUM_ITEMS do
+		local button = _G["WatchFrameItem"..i]
+		local point, relativeTo, relativePoint, xOffset, yOffset = button:GetPoint(1)
+		button:SetFrameStrata("LOW")
+		button:SetPoint("TOPRIGHT", relativeTo, "TOPLEFT", -30, -2);
+		if not button.styled then
+			button:SetSlotTemplate()
+			button:SetBackdropColor(0,0,0,0)
+			_G["WatchFrameItem"..i.."NormalTexture"]:SetAlpha(0)
+			_G["WatchFrameItem"..i.."IconTexture"]:FillInner()
+			_G["WatchFrameItem"..i.."IconTexture"]:SetTexCoord(0.1,0.9,0.1,0.9)
+			SV.Timers:AddCooldown(_G["WatchFrameItem"..i.."Cooldown"])
+			button.styled = true
+		end
+	end
+end
+
+local QuestRewardScrollFrame_OnShow = function(self)
+	if(not self.Panel) then
+		self:SetPanelTemplate("Default")
+		QuestScrollHelper(self, 509, 630, false)
+		self:Height(self:GetHeight() - 2)
+	end
+	if(self.spellTex) then
+		self.spellTex:Height(self:GetHeight() + 217)
+	end
+end
+
+local Hook_QuestInfo_Display = function(self, ...)
+	for i = 1, MAX_NUM_ITEMS do
+		local name = ("QuestInfoItem%d"):format(i)
+		local item = _G[name]
+		if(item and item:IsShown()) then
+			local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = item:GetPoint()
+			if(i == 1) then
+				item:Point(initialAnchor, anchorParent, relativeAnchor, 0, yPosition)
+			elseif(relativeAnchor == "BOTTOMLEFT") then
+				item:Point(initialAnchor, anchorParent, relativeAnchor, 0, -4)
+			else
+				item:Point(initialAnchor, anchorParent, relativeAnchor, 4, 0)
+			end
+		end
+	end
+end
+
+local Hook_QuestInfoItem_OnClick = function(self)
+	QuestInfoItemHighlight:ClearAllPoints()
+	QuestInfoItemHighlight:SetAllPoints(self)
+end
+
+local Hook_QuestNPCModel = function(self, _, _, _, x, y)
+	QuestNPCModel:ClearAllPoints()
+	QuestNPCModel:SetPoint("TOPLEFT", self, "TOPRIGHT", x + 18, y)
+end
+--[[
+##########################################################
+QUEST STYLERS
+##########################################################
+]]--
+local function QuestGreetingStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.greeting ~= true then
+		return
+	end
+
+	QuestFrameGreetingPanel:HookScript("OnShow", function()
+		QuestFrameGreetingPanel:RemoveTextures()
+		QuestFrameGreetingGoodbyeButton:SetButtonTemplate()
+		QuestGreetingFrameHorizontalBreak:Die()
+	end)
+end
+
+local function QuestFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.quest ~= true then return end
+
+	STYLE:ApplyWindowStyle(QuestFrame, true, true)
+
+	--[[ THIS SECTION NOT WORKING IN WOD ]]--
+	if(SV.GameVersion < 60000) then
+		QuestLogScrollFrame:RemoveTextures()
+		QuestLogCount:RemoveTextures()
+		EmptyQuestLogFrame:RemoveTextures()
+		QuestProgressScrollFrame:RemoveTextures()
+		QuestLogFrameShowMapButton:RemoveTextures()
+		QuestLogFrameCompleteButton:RemoveTextures()
+
+		STYLE:ApplyWindowStyle(QuestLogFrame)
+		QuestLogCount:SetFixedPanelTemplate("Default")
+
+		QuestLogDetailFrameInset:Die()
+		QuestLogFrameInset:Die()
+
+		QuestLogFrameShowMapButton:SetButtonTemplate()
+		QuestLogFrameShowMapButton.text:ClearAllPoints()
+		QuestLogFrameShowMapButton.text:SetPoint("CENTER")
+
+		for _,i in pairs(QuestFrameList)do
+			_G[i]:SetButtonTemplate()
+			_G[i]:SetFrameLevel(_G[i]:GetFrameLevel() + 2)
+		end
+
+		QuestLogFramePushQuestButton:Point("LEFT", QuestLogFrameAbandonButton, "RIGHT", 2, 0)
+		QuestLogFramePushQuestButton:Point("RIGHT", QuestLogFrameTrackButton, "LEFT", -2, 0)
+
+		QuestLogDetailScrollFrame:HookScript('OnShow', function(k)
+			if not QuestLogDetailScrollFrame.Panel then
+				QuestLogDetailScrollFrame:SetPanelTemplate("Default")
+				QuestScrollHelper(QuestLogDetailScrollFrame, 509, 630, false)
+				QuestLogDetailScrollFrame:Height(k:GetHeight() - 2)
+			end
+			QuestLogDetailScrollFrame.spellTex:Height(k:GetHeight() + 217)
+		end)
+
+		QuestLogFrame:HookScript("OnShow", function()
+			if not QuestLogScrollFrame.spellTex then
+				QuestLogScrollFrame:SetFixedPanelTemplate("Default")
+				QuestLogScrollFrame.spellTex = QuestLogScrollFrame:CreateTexture(nil, 'ARTWORK')
+				QuestLogScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBookBG]])
+				QuestLogScrollFrame.spellTex:SetPoint("TOPLEFT", 2, -2)
+				QuestLogScrollFrame.spellTex:Size(514, 616)
+				QuestLogScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
+				QuestLogScrollFrame.spellTex2 = QuestLogScrollFrame:CreateTexture(nil, 'BORDER')
+				QuestLogScrollFrame.spellTex2:SetTexture([[Interface\FrameGeneral\UI-Background-Rock]])
+				QuestLogScrollFrame.spellTex2:FillInner()
+			end
+		end)
+	end
+	--[[ ############################### ]]--
+
+	STYLE:ApplyCloseButtonStyle(QuestLogFrameCloseButton)
+	STYLE:ApplyScrollFrameStyle(QuestLogDetailScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(QuestLogScrollFrameScrollBar, 5)
+	STYLE:ApplyScrollFrameStyle(QuestProgressScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(QuestRewardScrollFrameScrollBar)
+
+	QuestGreetingScrollFrame:RemoveTextures()
+	STYLE:ApplyScrollFrameStyle(QuestGreetingScrollFrameScrollBar)
+
+	for i = 1, MAX_NUM_ITEMS do
+		local item = _G["QuestInfoItem"..i]
+		if(item) then
+			local cLvl = item:GetFrameLevel() + 1
+			item:RemoveTextures()
+			item:Width(item:GetWidth() - 4)
+			item:SetFrameLevel(cLvl)
+
+			local tex = _G["QuestInfoItem"..i.."IconTexture"]
+			if(tex) then
+				tex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				tex:SetDrawLayer("OVERLAY",1)
+				tex:SetPoint("TOPLEFT", 2, -2)
+				tex:Size(tex:GetWidth() - 2, tex:GetHeight() - 2)
+			end
+			STYLE:ApplyItemButtonStyle(item)
+		end
+	end
+
+	QuestInfoSkillPointFrame:RemoveTextures()
+	QuestInfoSkillPointFrame:Width(QuestInfoSkillPointFrame:GetWidth() - 4)
+
+	local curLvl = QuestInfoSkillPointFrame:GetFrameLevel() + 1
+	QuestInfoSkillPointFrame:SetFrameLevel(curLvl)
+	QuestInfoSkillPointFrame:SetFixedPanelTemplate("Slot")
+	QuestInfoSkillPointFrame:SetBackdropColor(1, 1, 0, 0.5)
+	QuestInfoSkillPointFrameIconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	QuestInfoSkillPointFrameIconTexture:SetDrawLayer("OVERLAY")
+	QuestInfoSkillPointFrameIconTexture:Point("TOPLEFT", 2, -2)
+	QuestInfoSkillPointFrameIconTexture:Size(QuestInfoSkillPointFrameIconTexture:GetWidth()-2, QuestInfoSkillPointFrameIconTexture:GetHeight()-2)
+	QuestInfoSkillPointFrameCount:SetDrawLayer("OVERLAY")
+	QuestInfoItemHighlight:RemoveTextures()
+	QuestInfoItemHighlight:SetFixedPanelTemplate("Slot")
+	QuestInfoItemHighlight:SetBackdropBorderColor(1, 1, 0)
+	QuestInfoItemHighlight:SetBackdropColor(0, 0, 0, 0)
+	QuestInfoItemHighlight:Size(142, 40)
+
+	hooksecurefunc("QuestInfoItem_OnClick", Hook_QuestInfoItem_OnClick)
+	hooksecurefunc("QuestInfo_Display", Hook_QuestInfo_Display)
+
+	QuestRewardScrollFrame:HookScript("OnShow", QuestRewardScrollFrame_OnShow)
+
+	QuestFrameInset:Die()
+	QuestFrameDetailPanel:RemoveTextures(true)
+	QuestDetailScrollFrame:RemoveTextures(true)
+	QuestScrollHelper(QuestDetailScrollFrame, 506, 615, true)
+	QuestProgressScrollFrame:SetFixedPanelTemplate()
+	QuestScrollHelper(QuestProgressScrollFrame, 506, 615, true)
+	QuestGreetingScrollFrame:SetFixedPanelTemplate()
+	QuestScrollHelper(QuestGreetingScrollFrame, 506, 615, true)
+	QuestDetailScrollChildFrame:RemoveTextures(true)
+	QuestRewardScrollFrame:RemoveTextures(true)
+	QuestRewardScrollChildFrame:RemoveTextures(true)
+	QuestFrameProgressPanel:RemoveTextures(true)
+	QuestFrameRewardPanel:RemoveTextures(true)
+
+	QuestFrameAcceptButton:SetButtonTemplate()
+	QuestFrameDeclineButton:SetButtonTemplate()
+	QuestFrameCompleteButton:SetButtonTemplate()
+	QuestFrameGoodbyeButton:SetButtonTemplate()
+	QuestFrameCompleteQuestButton:SetButtonTemplate()
+
+	STYLE:ApplyCloseButtonStyle(QuestFrameCloseButton, QuestFrame.Panel)
+
+	for j = 1, 6 do
+		local i = _G["QuestProgressItem"..j]
+		local texture = _G["QuestProgressItem"..j.."IconTexture"]
+		i:RemoveTextures()
+		i:SetFixedPanelTemplate("Inset")
+		i:Width(_G["QuestProgressItem"..j]:GetWidth() - 4)
+		texture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		texture:SetDrawLayer("OVERLAY")
+		texture:Point("TOPLEFT", 2, -2)
+		texture:Size(texture:GetWidth() - 2, texture:GetHeight() - 2)
+		_G["QuestProgressItem"..j.."Count"]:SetDrawLayer("OVERLAY")
+	end
+
+	QuestNPCModel:RemoveTextures()
+	QuestNPCModel:SetPanelTemplate("Comic")
+
+	QuestNPCModelTextFrame:RemoveTextures()
+	QuestNPCModelTextFrame:SetPanelTemplate("Default")
+	QuestNPCModelTextFrame.Panel:Point("TOPLEFT", QuestNPCModel.Panel, "BOTTOMLEFT", 0, -2)
+
+	hooksecurefunc("QuestFrame_ShowQuestPortrait", Hook_QuestNPCModel)
+
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(QuestFrameStyle)
+STYLE:SaveCustomStyle(QuestGreetingStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/raid.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/raid.lua
new file mode 100644
index 0000000..05c420e
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/raid.lua
@@ -0,0 +1,102 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local RaidGroupList = {
+	"RaidGroup1",
+	"RaidGroup2",
+	"RaidGroup3",
+	"RaidGroup4",
+	"RaidGroup5",
+	"RaidGroup6",
+	"RaidGroup7",
+	"RaidGroup8"
+};
+
+local RaidInfoFrameList = {
+	"RaidFrameConvertToRaidButton",
+	"RaidFrameRaidInfoButton",
+	"RaidFrameNotInRaidRaidBrowserButton",
+	"RaidInfoExtendButton",
+	"RaidInfoCancelButton"
+};
+--[[
+##########################################################
+RAID STYLERS
+##########################################################
+]]--
+local function RaidUIStyle()
+	if InCombatLockdown() then return end
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.raid ~= true then return end
+	for _,group in pairs(RaidGroupList)do
+		if _G[group] then
+			_G[group]:RemoveTextures()
+			for i = 1, 5 do
+				local name = ("%sSlot%d"):format(group, i)
+				local slot = _G[name]
+				if(slot) then
+					slot:RemoveTextures()
+					slot:SetPanelTemplate("Inset", true)
+				end
+			end
+		end
+	end
+end
+
+local function RaidInfoStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.nonraid ~= true then
+		return
+	end
+
+	_G["RaidInfoFrame"]:RemoveTextures()
+	_G["RaidInfoInstanceLabel"]:RemoveTextures()
+	_G["RaidInfoIDLabel"]:RemoveTextures()
+	_G["RaidInfoScrollFrameScrollBarBG"]:Die()
+	_G["RaidInfoScrollFrameScrollBarTop"]:Die()
+	_G["RaidInfoScrollFrameScrollBarBottom"]:Die()
+	_G["RaidInfoScrollFrameScrollBarMiddle"]:Die()
+
+	for g = 1, #RaidInfoFrameList do
+		if _G[RaidInfoFrameList[g]] then
+			_G[RaidInfoFrameList[g]]:SetButtonTemplate()
+		end
+	end
+
+	RaidInfoScrollFrame:RemoveTextures()
+	RaidInfoFrame:SetBasicPanel()
+	RaidInfoFrame.Panel:Point("TOPLEFT", RaidInfoFrame, "TOPLEFT")
+	RaidInfoFrame.Panel:Point("BOTTOMRIGHT", RaidInfoFrame, "BOTTOMRIGHT")
+
+	STYLE:ApplyCloseButtonStyle(RaidInfoCloseButton, RaidInfoFrame)
+	STYLE:ApplyScrollFrameStyle(RaidInfoScrollFrameScrollBar)
+
+	if RaidFrameRaidBrowserButton then RaidFrameRaidBrowserButton:SetButtonTemplate() end
+	RaidFrameAllAssistCheckButton:SetCheckboxTemplate(true)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_RaidUI", RaidUIStyle)
+STYLE:SaveCustomStyle(RaidInfoStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/reforging.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/reforging.lua
new file mode 100644
index 0000000..6ea57b8
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/reforging.lua
@@ -0,0 +1,59 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+REFORGING STYLER
+##########################################################
+]]--
+local function ReforgingStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.reforge ~= true then return end
+
+	STYLE:ApplyWindowStyle(ReforgingFrame, true)
+
+	ReforgingFrame.ButtonFrame:RemoveTextures()
+	ReforgingFrameReforgeButton:ClearAllPoints()
+	ReforgingFrameReforgeButton:Point("LEFT", ReforgingFrameRestoreButton, "RIGHT", 2, 0)
+	ReforgingFrameReforgeButton:Point("BOTTOMRIGHT", -3, 3)
+	ReforgingFrame.RestoreMessage:SetTextColor(1, 1, 1)
+
+	ReforgingFrameRestoreButton:RemoveTextures()
+	ReforgingFrameReforgeButton:RemoveTextures()
+	ReforgingFrameRestoreButton:SetButtonTemplate()
+	ReforgingFrameReforgeButton:SetButtonTemplate()
+
+	ReforgingFrame.ItemButton:RemoveTextures()
+	ReforgingFrame.ItemButton:SetSlotTemplate(true)
+	ReforgingFrame.ItemButton.IconTexture:FillInner()
+	hooksecurefunc("ReforgingFrame_Update", function(k)
+		local w, x, u, y, z, A = GetReforgeItemInfo()
+		if x then
+			 ReforgingFrame.ItemButton.IconTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		else
+			 ReforgingFrame.ItemButton.IconTexture:SetTexture(0,0,0,0)
+		end
+	end)
+	STYLE:ApplyCloseButtonStyle(ReforgingFrameCloseButton)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_ReforgingUI",ReforgingStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/spellbook.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/spellbook.lua
new file mode 100644
index 0000000..ea1731a
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/spellbook.lua
@@ -0,0 +1,330 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G["SVUI"];
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+FRAME LISTS
+##########################################################
+]]--
+local bookFrames = {
+	"SpellBookFrame",
+	"SpellBookFrameInset",
+	"SpellBookSpellIconsFrame",
+	"SpellBookSideTabsFrame",
+	"SpellBookPageNavigationFrame"
+}
+local proButtons = {
+	"PrimaryProfession1SpellButtonTop",
+	"PrimaryProfession1SpellButtonBottom",
+	"PrimaryProfession2SpellButtonTop",
+	"PrimaryProfession2SpellButtonBottom",
+	"SecondaryProfession1SpellButtonLeft",
+	"SecondaryProfession1SpellButtonRight",
+	"SecondaryProfession2SpellButtonLeft",
+	"SecondaryProfession2SpellButtonRight",
+	"SecondaryProfession3SpellButtonLeft",
+	"SecondaryProfession3SpellButtonRight",
+	"SecondaryProfession4SpellButtonLeft",
+	"SecondaryProfession4SpellButtonRight"
+}
+
+local proFrames = {
+	"PrimaryProfession1",
+	"PrimaryProfession2",
+	"SecondaryProfession1",
+	"SecondaryProfession2",
+	"SecondaryProfession3",
+	"SecondaryProfession4"
+}
+local proBars = {
+	"PrimaryProfession1StatusBar",
+	"PrimaryProfession2StatusBar",
+	"SecondaryProfession1StatusBar",
+	"SecondaryProfession2StatusBar",
+	"SecondaryProfession3StatusBar",
+	"SecondaryProfession4StatusBar"
+}
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local function Tab_OnEnter(this)
+	this.backdrop:SetBackdropColor(0.1, 0.8, 0.8)
+	this.backdrop:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+
+local function Tab_OnLeave(this)
+	this.backdrop:SetBackdropColor(0,0,0,1)
+	this.backdrop:SetBackdropBorderColor(0,0,0,1)
+end
+
+local function ChangeTabHelper(this)
+	this:RemoveTextures()
+	local nTex = this:GetNormalTexture()
+	if(nTex) then
+		nTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		nTex:FillInner()
+	end
+
+	this.pushed = true;
+
+	this.backdrop = CreateFrame("Frame", nil, this)
+	this.backdrop:WrapOuter(this,1,1)
+	this.backdrop:SetFrameLevel(0)
+	this.backdrop:SetBackdrop({
+		bgFile = [[Interface\BUTTONS\WHITE8X8]],
+        tile = false,
+        tileSize = 0,
+        edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
+        edgeSize = 3,
+        insets = {
+            left = 0,
+            right = 0,
+            top = 0,
+            bottom = 0
+        }
+    });
+    this.backdrop:SetBackdropColor(0,0,0,1)
+	this.backdrop:SetBackdropBorderColor(0,0,0,1)
+	this:SetScript("OnEnter", Tab_OnEnter)
+	this:SetScript("OnLeave", Tab_OnLeave)
+
+	local a,b,c,d,e = this:GetPoint()
+	this:Point(a,b,c,1,e)
+end
+
+local function GetSpecTabHelper(index)
+	local tab = SpellBookCoreAbilitiesFrame.SpecTabs[index]
+	if(not tab) then return end
+	ChangeTabHelper(tab)
+	if index > 1 then
+		local o, Y, Z, h, s = tab:GetPoint()
+		tab:ClearAllPoints()
+		tab:SetPoint(o, Y, Z, 0, s)
+	end
+end
+
+local function SkillTabUpdateHelper()
+	for j = 1, MAX_SKILLLINE_TABS do
+		local S = _G["SpellBookSkillLineTab"..j]
+		local h, h, h, h, a0 = GetSpellTabInfo(j)
+		if a0 then
+			S:GetNormalTexture():FillInner()
+			S:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		end
+	end
+end
+
+local function AbilityButtonHelper(j)
+	local i = SpellBookCoreAbilitiesFrame.Abilities[j]
+	if i.styled then return end
+		local x = i.iconTexture;
+		if not InCombatLockdown() then
+			if not i.properFrameLevel then
+			 	i.properFrameLevel = i:GetFrameLevel() + 1
+			end
+			i:SetFrameLevel(i.properFrameLevel)
+		end
+		if not i.styled then
+		for j = 1, i:GetNumRegions()do
+			local N = select(j, i:GetRegions())
+			if N:GetObjectType() == "Texture"then
+				if N:GetTexture() ~= "Interface\\Buttons\\ActionBarFlyoutButton" then
+				 	N:SetTexture(0,0,0,0)
+				end
+			end
+		end
+		if i.highlightTexture then
+			hooksecurefunc(i.highlightTexture, "SetTexture", function(k, P, Q, R)
+				if P == [[Interface\Buttons\ButtonHilight-Square]] then
+					 i.highlightTexture:SetTexture(1, 1, 1, 0.3)
+				end
+			end)
+		end
+		i.styled = true
+
+		if x then
+			x:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			x:ClearAllPoints()
+			x:SetAllPoints()
+			if not i.Panel then
+				 i:SetPanelTemplate("Inset", false, 3, 3, 3)
+			end
+		end
+
+		if(i.Name) then i.Name:SetFontObject(NumberFont_Outline_Large) i.Name:SetTextColor(1,1,0) end
+		if(i.InfoText) then i.InfoText:SetFontObject(NumberFont_Shadow_Small) i.InfoText:SetTextColor(0.9,0.9,0.9) end
+	end
+	i.styled = true
+end
+
+local function ButtonUpdateHelper(self, strip)
+	for j=1, SPELLS_PER_PAGE do
+		local name = "SpellButton"..j
+		local i = _G[name]
+		local x = _G[name.."IconTexture"]
+		local spellString = _G[name.."SpellName"];
+    	local subSpellString = _G[name.."SubSpellName"];
+		if not InCombatLockdown() then
+			 i:SetFrameLevel(SpellBookFrame:GetFrameLevel() + 5)
+		end
+		if strip then
+			for j = 1, i:GetNumRegions()do
+				local N = select(j, i:GetRegions())
+				if N:GetObjectType() == "Texture"then
+					if N ~= i.FlyoutArrow then
+						N:SetTexture(0,0,0,0)
+					end
+				end
+			end
+		end
+		if _G[name.."Highlight"] then
+			_G[name.."Highlight"]:SetTexture(1, 1, 1, 0.3)
+			_G[name.."Highlight"]:ClearAllPoints()
+			_G[name.."Highlight"]:SetAllPoints(x)
+		end
+		if i.shine then
+			i.shine:ClearAllPoints()
+			i.shine:SetPoint('TOPLEFT', i, 'TOPLEFT', -3, 3)
+			i.shine:SetPoint('BOTTOMRIGHT', i, 'BOTTOMRIGHT', 3, -3)
+		end
+		if x then
+			x:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			x:ClearAllPoints()
+			x:SetAllPoints()
+			if not i.Panel then
+				i:SetPanelTemplate("Slot")
+			end
+		end
+		if(spellString) then spellString:SetFontObject(NumberFontNormal) spellString:SetTextColor(1,1,0) end
+		if(subSpellString) then subSpellString:SetFontObject(NumberFont_Shadow_Small) subSpellString:SetTextColor(0.9,0.9,0.9) end
+	end
+end
+--[[
+##########################################################
+SPELLBOOK STYLER
+##########################################################
+]]--
+local function SpellBookStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.spellbook ~= true then return end
+
+	STYLE:ApplyWindowStyle(SpellBookFrame)
+	STYLE:ApplyCloseButtonStyle(SpellBookFrameCloseButton)
+
+	for _, gName in pairs(bookFrames) do
+		local frame = _G[gName]
+		if(frame) then
+			frame:RemoveTextures()
+		end
+	end
+
+	-- SpellBookFrameInset:ClearAllPoints()
+	-- SpellBookFrameInset:Point("TOPLEFT", SpellBookFrame, "TOPLEFT", 20, -46)
+	-- SpellBookFrameInset:Point("BOTTOMRIGHT", SpellBookFrame, "BOTTOMRIGHT", -20, 20)
+	SpellBookFrameInset:SetFixedPanelTemplate("Blackout")
+
+	_G["SpellBookFrameTutorialButton"]:Die()
+
+	for i = 1, 2 do
+		local frame = _G[("SpellBookPage%d"):format(i)]
+		if(frame) then
+			frame:SetDrawLayer('BORDER', 3)
+		end
+	end
+
+	STYLE:ApplyPaginationStyle(SpellBookPrevPageButton)
+	STYLE:ApplyPaginationStyle(SpellBookNextPageButton)
+
+	ButtonUpdateHelper(nil, true)
+
+	hooksecurefunc("SpellButton_UpdateButton", ButtonUpdateHelper)
+	hooksecurefunc("SpellBook_GetCoreAbilityButton", AbilityButtonHelper)
+
+	for i = 1, MAX_SKILLLINE_TABS do
+		local tabName = ("SpellBookSkillLineTab%d"):format(i)
+		local tab = _G[tabName]
+		local tabFlash = _G[("%sFlash"):format(tabName)]
+		if(tabFlash) then tabFlash:Die() end
+		if(tab) then ChangeTabHelper(tab) end
+	end
+
+	hooksecurefunc('SpellBook_GetCoreAbilitySpecTab', GetSpecTabHelper)
+	hooksecurefunc("SpellBookFrame_UpdateSkillLineTabs", SkillTabUpdateHelper)
+
+	for _, gName in pairs(proFrames)do
+		local frame = _G[gName]
+		local frameMissing = _G[("%sMissing"):format(gName)]
+		if(frame and frame.missingText) then frame.missingText:SetTextColor(0, 0, 0) end
+		if(frameMissing) then frameMissing:SetTextColor(1, 1, 0) end
+    	--frame.skillName
+    	if(frame.missingHeader) then frame.missingHeader:SetFontObject(NumberFont_Outline_Large) frame.missingHeader:SetTextColor(1,1,0) end
+    	if(frame.missingText) then frame.missingText:SetFontObject(NumberFont_Shadow_Small) frame.missingText:SetTextColor(0.9,0.9,0.9) end
+    	if(frame.rank) then frame.rank:SetFontObject(NumberFontNormal) frame.rank:SetTextColor(0.9,0.9,0.9) end
+    	if(frame.professionName) then frame.professionName:SetFontObject(NumberFont_Outline_Large) frame.professionName:SetTextColor(1,1,0) end
+	end
+
+	for _, gName in pairs(proButtons)do
+		local button = _G[gName]
+		local buttonTex = _G[("%sIconTexture"):format(gName)]
+		if(button) then
+			button:RemoveTextures()
+			if(buttonTex) then
+				buttonTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				buttonTex:FillInner()
+				button:SetFrameLevel(button:GetFrameLevel() + 2)
+				if not button.Panel then
+					button:SetPanelTemplate("Inset", false, 3, 3, 3)
+					button.Panel:SetAllPoints()
+				end
+			end
+			if(button.spellString) then button.spellString:SetFontObject(NumberFontNormal) button.spellString:SetTextColor(1,1,0) end
+			if(button.subSpellString) then button.subSpellString:SetFontObject(NumberFont_Shadow_Small) button.subSpellString:SetTextColor(0.9,0.9,0.9) end
+		end
+	end
+
+	for _, gName in pairs(proBars) do
+		local bar = _G[gName]
+		if(bar) then
+			bar:RemoveTextures()
+			bar:SetHeight(12)
+			bar:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
+			bar:SetStatusBarColor(0, 220/255, 0)
+			bar:SetPanelTemplate("Default")
+			bar.rankText:ClearAllPoints()
+			bar.rankText:SetPoint("CENTER")
+		end
+	end
+
+	for i = 1, 5 do
+		local frame = _G[("SpellBookFrameTabButton%d"):format(i)]
+		if(frame) then
+			STYLE:ApplyTabStyle(frame)
+		end
+	end
+
+	SpellBookFrameTabButton1:ClearAllPoints()
+	SpellBookFrameTabButton1:SetPoint('TOPLEFT', SpellBookFrame, 'BOTTOMLEFT', 0, 2)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(SpellBookStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/store.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/store.lua
new file mode 100644
index 0000000..d4c8056
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/store.lua
@@ -0,0 +1,38 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TAXIFRAME STYLER
+##########################################################
+]]--
+local function StoreStyle()
+	-- if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.store ~= true then
+	-- 	 return
+	-- end
+
+	--STYLE:ApplyWindowStyle(StoreFrame)
+	STYLE:ApplyTooltipStyle(StoreTooltip)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_StoreUI", StoreStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua
new file mode 100644
index 0000000..39f1ff1
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua
@@ -0,0 +1,726 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+local ceil = math.ceil
+--[[
+##########################################################
+MASSIVE LIST OF LISTS
+##########################################################
+]]--
+local SystemPopList = {
+	"StaticPopup1",
+	"StaticPopup2",
+	"StaticPopup3"
+};
+local SystemDropDownList = {
+	"DropDownList1MenuBackdrop",
+	"DropDownList2MenuBackdrop",
+	"DropDownList1Backdrop",
+	"DropDownList2Backdrop",
+};
+local SystemFrameList1 = {
+	"GameMenuFrame",
+	"TicketStatusFrameButton",
+	"AutoCompleteBox",
+	"ConsolidatedBuffsTooltip",
+	"ReadyCheckFrame",
+	"StackSplitFrame",
+	"QueueStatusFrame",
+	"InterfaceOptionsFrame",
+	"VideoOptionsFrame",
+	"AudioOptionsFrame",
+};
+local SystemFrameList4 = {
+	"Options",
+	"Store",
+	"SoundOptions",
+	"UIOptions",
+	"Keybindings",
+	"Macros",
+	"Ratings",
+	"AddOns",
+	"Logout",
+	"Quit",
+	"Continue",
+	"MacOptions",
+	"Help",
+	"WhatsNew",
+	"Addons"
+};
+local SystemFrameList5 = {
+	"GameMenuFrame",
+	"InterfaceOptionsFrame",
+	"AudioOptionsFrame",
+	"VideoOptionsFrame",
+};
+local SystemFrameList6 = {
+	"VideoOptionsFrameOkay",
+	"VideoOptionsFrameCancel",
+	"VideoOptionsFrameDefaults",
+	"VideoOptionsFrameApply",
+	"AudioOptionsFrameOkay",
+	"AudioOptionsFrameCancel",
+	"AudioOptionsFrameDefaults",
+	"InterfaceOptionsFrameDefaults",
+	"InterfaceOptionsFrameOkay",
+	"InterfaceOptionsFrameCancel",
+	"ReadyCheckFrameYesButton",
+	"ReadyCheckFrameNoButton",
+	"StackSplitOkayButton",
+	"StackSplitCancelButton",
+	"RolePollPopupAcceptButton"
+};
+
+local SystemFrameList13 = {
+	"VideoOptionsFrameCategoryFrame",
+	"VideoOptionsFramePanelContainer",
+	"InterfaceOptionsFrameCategories",
+	"InterfaceOptionsFramePanelContainer",
+	"InterfaceOptionsFrameAddOns",
+	"AudioOptionsSoundPanelPlayback",
+	"AudioOptionsSoundPanelVolume",
+	"AudioOptionsSoundPanelHardware",
+	"AudioOptionsVoicePanelTalking",
+	"AudioOptionsVoicePanelBinding",
+	"AudioOptionsVoicePanelListening",
+};
+local SystemFrameList14 = {
+	"InterfaceOptionsFrameTab1",
+	"InterfaceOptionsFrameTab2",
+};
+local SystemFrameList15 = {
+	"ControlsPanelBlockChatChannelInvites",
+	"ControlsPanelStickyTargeting",
+	"ControlsPanelAutoDismount",
+	"ControlsPanelAutoClearAFK",
+	"ControlsPanelBlockTrades",
+	"ControlsPanelBlockGuildInvites",
+	"ControlsPanelLootAtMouse",
+	"ControlsPanelAutoLootCorpse",
+	"ControlsPanelInteractOnLeftClick",
+	"ControlsPanelAutoOpenLootHistory",
+	"CombatPanelEnemyCastBarsOnOnlyTargetNameplates",
+	"CombatPanelEnemyCastBarsNameplateSpellNames",
+	"CombatPanelAttackOnAssist",
+	"CombatPanelStopAutoAttack",
+	"CombatPanelNameplateClassColors",
+	"CombatPanelTargetOfTarget",
+	"CombatPanelShowSpellAlerts",
+	"CombatPanelReducedLagTolerance",
+	"CombatPanelActionButtonUseKeyDown",
+	"CombatPanelEnemyCastBarsOnPortrait",
+	"CombatPanelEnemyCastBarsOnNameplates",
+	"CombatPanelAutoSelfCast",
+	"CombatPanelLossOfControl",
+	"DisplayPanelShowCloak",
+	"DisplayPanelShowHelm",
+	"DisplayPanelShowAggroPercentage",
+	"DisplayPanelPlayAggroSounds",
+	"DisplayPanelDetailedLootInfo",
+	"DisplayPanelShowSpellPointsAvg",
+	"DisplayPanelemphasizeMySpellEffects",
+	"DisplayPanelShowFreeBagSpace",
+	"DisplayPanelCinematicSubtitles",
+	"DisplayPanelRotateMinimap",
+	"DisplayPanelScreenEdgeFlash",
+	"DisplayPanelShowAccountAchievments",
+	"ObjectivesPanelAutoQuestTracking",
+	"ObjectivesPanelAutoQuestProgress",
+	"ObjectivesPanelMapQuestDifficulty",
+	"ObjectivesPanelAdvancedWorldMap",
+	"ObjectivesPanelWatchFrameWidth",
+	"SocialPanelProfanityFilter",
+	"SocialPanelSpamFilter",
+	"SocialPanelChatBubbles",
+	"SocialPanelPartyChat",
+	"SocialPanelChatHoverDelay",
+	"SocialPanelGuildMemberAlert",
+	"SocialPanelChatMouseScroll",
+	"ActionBarsPanelLockActionBars",
+	"ActionBarsPanelSecureAbilityToggle",
+	"ActionBarsPanelAlwaysShowActionBars",
+	"ActionBarsPanelBottomLeft",
+	"ActionBarsPanelBottomRight",
+	"ActionBarsPanelRight",
+	"ActionBarsPanelRightTwo",
+	"NamesPanelMyName",
+	"NamesPanelFriendlyPlayerNames",
+	"NamesPanelFriendlyPets",
+	"NamesPanelFriendlyGuardians",
+	"NamesPanelFriendlyTotems",
+	"NamesPanelUnitNameplatesFriends",
+	"NamesPanelUnitNameplatesFriendlyGuardians",
+	"NamesPanelUnitNameplatesFriendlyPets",
+	"NamesPanelUnitNameplatesFriendlyTotems",
+	"NamesPanelGuilds",
+	"NamesPanelGuildTitles",
+	"NamesPanelTitles",
+	"NamesPanelNonCombatCreature",
+	"NamesPanelEnemyPlayerNames",
+	"NamesPanelEnemyPets",
+	"NamesPanelEnemyGuardians",
+	"NamesPanelEnemyTotems",
+	"NamesPanelUnitNameplatesEnemyPets",
+	"NamesPanelUnitNameplatesEnemies",
+	"NamesPanelUnitNameplatesEnemyGuardians",
+	"NamesPanelUnitNameplatesEnemyTotems",
+	"CombatTextPanelTargetDamage",
+	"CombatTextPanelPeriodicDamage",
+	"CombatTextPanelPetDamage",
+	"CombatTextPanelHealing",
+	"CombatTextPanelHealingAbsorbTarget",
+	"CombatTextPanelHealingAbsorbSelf",
+	"CombatTextPanelTargetEffects",
+	"CombatTextPanelOtherTargetEffects",
+	"CombatTextPanelEnableFCT",
+	"CombatTextPanelDodgeParryMiss",
+	"CombatTextPanelDamageReduction",
+	"CombatTextPanelRepChanges",
+	"CombatTextPanelReactiveAbilities",
+	"CombatTextPanelFriendlyHealerNames",
+	"CombatTextPanelCombatState",
+	"CombatTextPanelComboPoints",
+	"CombatTextPanelLowManaHealth",
+	"CombatTextPanelEnergyGains",
+	"CombatTextPanelPeriodicEnergyGains",
+	"CombatTextPanelHonorGains",
+	"CombatTextPanelAuras",
+	"BuffsPanelBuffDurations",
+	"BuffsPanelDispellableDebuffs",
+	"BuffsPanelCastableBuffs",
+	"BuffsPanelConsolidateBuffs",
+	"BuffsPanelShowAllEnemyDebuffs",
+	"CameraPanelFollowTerrain",
+	"CameraPanelHeadBob",
+	"CameraPanelWaterCollision",
+	"CameraPanelSmartPivot",
+	"MousePanelInvertMouse",
+	"MousePanelClickToMove",
+	"MousePanelWoWMouse",
+	"HelpPanelShowTutorials",
+	"HelpPanelLoadingScreenTips",
+	"HelpPanelEnhancedTooltips",
+	"HelpPanelBeginnerTooltips",
+	"HelpPanelShowLuaErrors",
+	"HelpPanelColorblindMode",
+	"HelpPanelMovePad",
+	"BattlenetPanelOnlineFriends",
+	"BattlenetPanelOfflineFriends",
+	"BattlenetPanelBroadcasts",
+	"BattlenetPanelFriendRequests",
+	"BattlenetPanelConversations",
+	"BattlenetPanelShowToastWindow",
+	"StatusTextPanelPlayer",
+	"StatusTextPanelPet",
+	"StatusTextPanelParty",
+	"StatusTextPanelTarget",
+	"StatusTextPanelAlternateResource",
+	"StatusTextPanelPercentages",
+	"StatusTextPanelXP",
+	"UnitFramePanelPartyBackground",
+	"UnitFramePanelPartyPets",
+	"UnitFramePanelArenaEnemyFrames",
+	"UnitFramePanelArenaEnemyCastBar",
+	"UnitFramePanelArenaEnemyPets",
+	"UnitFramePanelFullSizeFocusFrame",
+	"NamesPanelUnitNameplatesNameplateClassColors",
+};
+local SystemFrameList16 ={
+	"ControlsPanelAutoLootKeyDropDown",
+	"CombatPanelTOTDropDown",
+	"CombatPanelFocusCastKeyDropDown",
+	"CombatPanelSelfCastKeyDropDown",
+	"CombatPanelLossOfControlFullDropDown",
+	"CombatPanelLossOfControlSilenceDropDown",
+	"CombatPanelLossOfControlInterruptDropDown",
+	"CombatPanelLossOfControlDisarmDropDown",
+	"CombatPanelLossOfControlRootDropDown",
+	"DisplayPanelAggroWarningDisplay",
+	"DisplayPanelWorldPVPObjectiveDisplay",
+	"SocialPanelChatStyle",
+	"SocialPanelWhisperMode",
+	"SocialPanelTimestamps",
+	"SocialPanelBnWhisperMode",
+	"SocialPanelConversationMode",
+	"ActionBarsPanelPickupActionKeyDropDown",
+	"NamesPanelNPCNamesDropDown",
+	"NamesPanelUnitNameplatesMotionDropDown",
+	"CombatTextPanelFCTDropDown",
+	"CameraPanelStyleDropDown",
+	"MousePanelClickMoveStyleDropDown",
+	"LanguagesPanelLocaleDropDown",
+	"StatusTextPanelDisplayDropDown"
+};
+local SystemFrameList17 = {
+	"Advanced_MaxFPSCheckBox",
+	"Advanced_MaxFPSBKCheckBox",
+	"Advanced_UseUIScale",
+	"AudioOptionsSoundPanelEnableSound",
+	"AudioOptionsSoundPanelSoundEffects",
+	"AudioOptionsSoundPanelErrorSpeech",
+	"AudioOptionsSoundPanelEmoteSounds",
+	"AudioOptionsSoundPanelPetSounds",
+	"AudioOptionsSoundPanelMusic",
+	"AudioOptionsSoundPanelLoopMusic",
+	"AudioOptionsSoundPanelAmbientSounds",
+	"AudioOptionsSoundPanelSoundInBG",
+	"AudioOptionsSoundPanelReverb",
+	"AudioOptionsSoundPanelHRTF",
+	"AudioOptionsSoundPanelEnableDSPs",
+	"AudioOptionsSoundPanelUseHardware",
+	"AudioOptionsVoicePanelEnableVoice",
+	"AudioOptionsVoicePanelEnableMicrophone",
+	"AudioOptionsVoicePanelPushToTalkSound",
+	"AudioOptionsSoundPanelPetBattleMusic",
+	"NetworkOptionsPanelOptimizeSpeed",
+	"NetworkOptionsPanelUseIPv6",
+	"NetworkOptionsPanelAdvancedCombatLogging"
+};
+local SystemFrameList18 = {
+	"Graphics_DisplayModeDropDown",
+	"Graphics_ResolutionDropDown",
+	"Graphics_RefreshDropDown",
+	"Graphics_PrimaryMonitorDropDown",
+	"Graphics_MultiSampleDropDown",
+	"Graphics_VerticalSyncDropDown",
+	"Graphics_TextureResolutionDropDown",
+	"Graphics_FilteringDropDown",
+	"Graphics_ProjectedTexturesDropDown",
+	"Graphics_ViewDistanceDropDown",
+	"Graphics_EnvironmentalDetailDropDown",
+	"Graphics_GroundClutterDropDown",
+	"Graphics_ShadowsDropDown",
+	"Graphics_LiquidDetailDropDown",
+	"Graphics_SunshaftsDropDown",
+	"Graphics_ParticleDensityDropDown",
+	"Graphics_SSAODropDown",
+	"Advanced_BufferingDropDown",
+	"Advanced_LagDropDown",
+	"Advanced_HardwareCursorDropDown",
+	"Advanced_GraphicsAPIDropDown",
+	"AudioOptionsSoundPanelHardwareDropDown",
+	"AudioOptionsSoundPanelSoundChannelsDropDown",
+	"AudioOptionsVoicePanelInputDeviceDropDown",
+	"AudioOptionsVoicePanelChatModeDropDown",
+	"AudioOptionsVoicePanelOutputDeviceDropDown",
+	"CompactUnitFrameProfilesProfileSelector",
+	"CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdown",
+	"CompactUnitFrameProfilesGeneralOptionsFrameSortByDropdown",
+};
+local SystemFrameList19 = {
+	"RecordLoopbackSoundButton",
+	"PlayLoopbackSoundButton",
+	"AudioOptionsVoicePanelChatMode1KeyBindingButton",
+	"CompactUnitFrameProfilesSaveButton",
+	"CompactUnitFrameProfilesDeleteButton",
+};
+local SystemFrameList20 = {
+	"KeepGroupsTogether",
+	"DisplayIncomingHeals",
+	"DisplayPowerBar",
+	"DisplayAggroHighlight",
+	"UseClassColors",
+	"DisplayPets",
+	"DisplayMainTankAndAssist",
+	"DisplayBorder",
+	"ShowDebuffs",
+	"DisplayOnlyDispellableDebuffs",
+	"AutoActivate2Players",
+	"AutoActivate3Players",
+	"AutoActivate5Players",
+	"AutoActivate10Players",
+	"AutoActivate15Players",
+	"AutoActivate25Players",
+	"AutoActivate40Players",
+	"AutoActivateSpec1",
+	"AutoActivateSpec2",
+	"AutoActivatePvP",
+	"AutoActivatePvE",
+};
+local SystemFrameList21 = {
+	"Graphics_Quality",
+	"Advanced_UIScaleSlider",
+	"Advanced_MaxFPSSlider",
+	"Advanced_MaxFPSBKSlider",
+	"AudioOptionsSoundPanelSoundQuality",
+	"AudioOptionsSoundPanelMasterVolume",
+	"AudioOptionsSoundPanelSoundVolume",
+	"AudioOptionsSoundPanelMusicVolume",
+	"AudioOptionsSoundPanelAmbienceVolume",
+	"AudioOptionsVoicePanelMicrophoneVolume",
+	"AudioOptionsVoicePanelSpeakerVolume",
+	"AudioOptionsVoicePanelSoundFade",
+	"AudioOptionsVoicePanelMusicFade",
+	"AudioOptionsVoicePanelAmbienceFade",
+	"InterfaceOptionsCombatPanelSpellAlertOpacitySlider",
+	"InterfaceOptionsCombatPanelMaxSpellStartRecoveryOffset",
+	"InterfaceOptionsBattlenetPanelToastDurationSlider",
+	"InterfaceOptionsCameraPanelMaxDistanceSlider",
+	"InterfaceOptionsCameraPanelFollowSpeedSlider",
+	"InterfaceOptionsMousePanelMouseSensitivitySlider",
+	"InterfaceOptionsMousePanelMouseLookSpeedSlider",
+	"OpacityFrameSlider",
+};
+--[[
+##########################################################
+HELPER FUNCTIONS
+##########################################################
+]]--
+local function forceBackdropColor(self, r, g, b, a)
+	if r ~= 0 or g ~= 0 or b ~= 0 or a ~= 0 then
+		GhostFrame:SetBackdropColor(0,0,0,0)
+		GhostFrame:SetBackdropBorderColor(0,0,0,0)
+	end
+end
+--[[
+##########################################################
+SYSTEM WIDGET STYLERS
+##########################################################
+]]--
+local function SystemPanelQue()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.misc ~= true then return end
+
+	QueueStatusFrame:RemoveTextures()
+
+	for i = 1, #SystemPopList do
+		local this = _G[SystemPopList[i]]
+		if(this) then
+			this:RemoveTextures()
+			STYLE:ApplyAlertStyle(this)
+			this:SetBackdropColor(0.8, 0.2, 0.2)
+		end
+	end
+	for i = 1, #SystemDropDownList do
+		local this = _G[SystemDropDownList[i]]
+		if(this) then
+			this:RemoveTextures()
+			this:SetPanelTemplate("FramedTop")
+		end
+	end
+	for i = 1, #SystemFrameList1 do
+		local this = _G[SystemFrameList1[i]]
+		if(this) then
+			STYLE:ApplyWindowStyle(this)
+		end
+	end
+
+	LFDRoleCheckPopup:RemoveTextures()
+	LFDRoleCheckPopup:SetFixedPanelTemplate()
+	LFDRoleCheckPopupAcceptButton:SetButtonTemplate()
+	LFDRoleCheckPopupDeclineButton:SetButtonTemplate()
+	LFDRoleCheckPopupRoleButtonTank.checkButton:SetCheckboxTemplate(true)
+	LFDRoleCheckPopupRoleButtonDPS.checkButton:SetCheckboxTemplate(true)
+	LFDRoleCheckPopupRoleButtonHealer.checkButton:SetCheckboxTemplate(true)
+	LFDRoleCheckPopupRoleButtonTank.checkButton:SetFrameLevel(LFDRoleCheckPopupRoleButtonTank.checkButton:GetFrameLevel() + 1)
+	LFDRoleCheckPopupRoleButtonDPS.checkButton:SetFrameLevel(LFDRoleCheckPopupRoleButtonDPS.checkButton:GetFrameLevel() + 1)
+	LFDRoleCheckPopupRoleButtonHealer.checkButton:SetFrameLevel(LFDRoleCheckPopupRoleButtonHealer.checkButton:GetFrameLevel() + 1)
+	for i = 1, 3 do
+		for j = 1, 3 do
+			_G["StaticPopup"..i.."Button"..j]:SetButtonTemplate()
+			_G["StaticPopup"..i.."EditBox"]:SetEditboxTemplate()
+			_G["StaticPopup"..i.."MoneyInputFrameGold"]:SetEditboxTemplate()
+			_G["StaticPopup"..i.."MoneyInputFrameSilver"]:SetEditboxTemplate()
+			_G["StaticPopup"..i.."MoneyInputFrameCopper"]:SetEditboxTemplate()
+			_G["StaticPopup"..i.."EditBox"].Panel:Point("TOPLEFT", -2, -4)
+			_G["StaticPopup"..i.."EditBox"].Panel:Point("BOTTOMRIGHT", 2, 4)
+			_G["StaticPopup"..i.."ItemFrameNameFrame"]:Die()
+			_G["StaticPopup"..i.."ItemFrame"]:GetNormalTexture():Die()
+			_G["StaticPopup"..i.."ItemFrame"]:SetFixedPanelTemplate("Default")
+			_G["StaticPopup"..i.."ItemFrame"]:SetButtonTemplate()
+			_G["StaticPopup"..i.."ItemFrameIconTexture"]:SetTexCoord(0.1,0.9,0.1,0.9 )
+			_G["StaticPopup"..i.."ItemFrameIconTexture"]:FillInner()
+		end
+	end
+	for i = 1, #SystemFrameList4 do
+		local this = _G["GameMenuButton"..SystemFrameList4[i]]
+		if(this) then
+			this:SetButtonTemplate()
+		end
+	end
+	if IsAddOnLoaded("OptionHouse") then
+		GameMenuButtonOptionHouse:SetButtonTemplate()
+	end
+	do
+		GhostFrame:SetButtonTemplate()
+		GhostFrame:SetBackdropColor(0,0,0,0)
+		GhostFrame:SetBackdropBorderColor(0,0,0,0)
+		hooksecurefunc(GhostFrame, "SetBackdropColor", forceBackdropColor)
+		hooksecurefunc(GhostFrame, "SetBackdropBorderColor", forceBackdropColor)
+		GhostFrame:ClearAllPoints()
+		GhostFrame:SetPoint("TOP", SV.UIParent, "TOP", 0, -150)
+		GhostFrameContentsFrame:SetButtonTemplate()
+		GhostFrameContentsFrameIcon:SetTexture(0,0,0,0)
+		local x = CreateFrame("Frame", nil, GhostFrame)
+		x:SetFrameStrata("MEDIUM")
+		x:SetFixedPanelTemplate("Default")
+		x:WrapOuter(GhostFrameContentsFrameIcon)
+		local tex = x:CreateTexture(nil, "OVERLAY")
+		tex:SetTexture("Interface\\Icons\\spell_holy_guardianspirit")
+		tex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		tex:FillInner()
+	end
+	for i = 1, #SystemFrameList5 do
+		local this = _G[SystemFrameList5[i].."Header"]
+		if(this) then
+			this:SetTexture(0,0,0,0)
+			this:ClearAllPoints()
+			if this == _G["GameMenuFrameHeader"] then
+				this:SetPoint("TOP", GameMenuFrame, 0, 7)
+			else
+				this:SetPoint("TOP", SystemFrameList5[i], 0, 0)
+			end
+		end
+	end
+	for i = 1, #SystemFrameList6 do
+		local this = _G[SystemFrameList6[i]]
+		if(this) then
+			this:SetButtonTemplate()
+		end
+	end
+	VideoOptionsFrameCancel:ClearAllPoints()
+	VideoOptionsFrameCancel:SetPoint("RIGHT",VideoOptionsFrameApply,"LEFT",-4,0)
+	VideoOptionsFrameOkay:ClearAllPoints()
+	VideoOptionsFrameOkay:SetPoint("RIGHT",VideoOptionsFrameCancel,"LEFT",-4,0)
+	AudioOptionsFrameOkay:ClearAllPoints()
+	AudioOptionsFrameOkay:SetPoint("RIGHT",AudioOptionsFrameCancel,"LEFT",-4,0)
+	InterfaceOptionsFrameOkay:ClearAllPoints()
+	InterfaceOptionsFrameOkay:SetPoint("RIGHT",InterfaceOptionsFrameCancel,"LEFT", -4,0)
+	ReadyCheckFrameYesButton:SetParent(ReadyCheckFrame)
+	ReadyCheckFrameNoButton:SetParent(ReadyCheckFrame)
+	ReadyCheckFrameYesButton:SetPoint("RIGHT", ReadyCheckFrame, "CENTER", -1, 0)
+	ReadyCheckFrameNoButton:SetPoint("LEFT", ReadyCheckFrameYesButton, "RIGHT", 3, 0)
+	ReadyCheckFrameText:SetParent(ReadyCheckFrame)
+	ReadyCheckFrameText:ClearAllPoints()
+	ReadyCheckFrameText:SetPoint("TOP", 0, -12)
+	ReadyCheckListenerFrame:SetAlpha(0)
+	ReadyCheckFrame:HookScript("OnShow", function(self) if UnitIsUnit("player", self.initiator) then self:Hide() end end)
+	StackSplitFrame:GetRegions():Hide()
+	RolePollPopup:SetFixedPanelTemplate("Transparent", true)
+	InterfaceOptionsFrame:SetClampedToScreen(true)
+	InterfaceOptionsFrame:SetMovable(true)
+	InterfaceOptionsFrame:EnableMouse(true)
+	InterfaceOptionsFrame:RegisterForDrag("LeftButton", "RightButton")
+	InterfaceOptionsFrame:SetScript("OnDragStart", function(self)
+		if InCombatLockdown() then return end
+		if IsShiftKeyDown() then
+			self:StartMoving()
+		end
+	end)
+	InterfaceOptionsFrame:SetScript("OnDragStop", function(self)
+		self:StopMovingOrSizing()
+	end)
+	if IsMacClient() then
+		MacOptionsFrame:SetFixedPanelTemplate("Default")
+		MacOptionsFrameHeader:SetTexture(0,0,0,0)
+		MacOptionsFrameHeader:ClearAllPoints()
+		MacOptionsFrameHeader:SetPoint("TOP", MacOptionsFrame, 0, 0)
+		MacOptionsFrameMovieRecording:SetFixedPanelTemplate("Default")
+		MacOptionsITunesRemote:SetFixedPanelTemplate("Default")
+		MacOptionsFrameCancel:SetButtonTemplate()
+		MacOptionsFrameOkay:SetButtonTemplate()
+		MacOptionsButtonKeybindings:SetButtonTemplate()
+		MacOptionsFrameDefaults:SetButtonTemplate()
+		MacOptionsButtonCompress:SetButtonTemplate()
+		local tPoint, tRTo, tRP, tX, tY = MacOptionsButtonCompress:GetPoint()
+		MacOptionsButtonCompress:SetWidth(136)
+		MacOptionsButtonCompress:ClearAllPoints()
+		MacOptionsButtonCompress:Point(tPoint, tRTo, tRP, 4, tY)
+		MacOptionsFrameCancel:SetWidth(96)
+		MacOptionsFrameCancel:SetHeight(22)
+		tPoint, tRTo, tRP, tX, tY = MacOptionsFrameCancel:GetPoint()
+		MacOptionsFrameCancel:ClearAllPoints()
+		MacOptionsFrameCancel:Point(tPoint, tRTo, tRP, -14, tY)
+		MacOptionsFrameOkay:ClearAllPoints()
+		MacOptionsFrameOkay:SetWidth(96)
+		MacOptionsFrameOkay:SetHeight(22)
+		MacOptionsFrameOkay:Point("LEFT",MacOptionsFrameCancel, -99,0)
+		MacOptionsButtonKeybindings:ClearAllPoints()
+		MacOptionsButtonKeybindings:SetWidth(96)
+		MacOptionsButtonKeybindings:SetHeight(22)
+		MacOptionsButtonKeybindings:Point("LEFT",MacOptionsFrameOkay, -99,0)
+		MacOptionsFrameDefaults:SetWidth(96)
+		MacOptionsFrameDefaults:SetHeight(22)
+	end
+	OpacityFrame:RemoveTextures()
+	OpacityFrame:SetFixedPanelTemplate("Transparent", true)
+
+	hooksecurefunc("UIDropDownMenu_InitializeHelper", function(self)
+		for i = 1, UIDROPDOWNMENU_MAXLEVELS do
+			local name = ("DropDownList%d"):format(i)
+			local bg = _G[("%sBackdrop"):format(name)]
+			bg:SetBasicPanel()
+			local menu = _G[("%sMenuBackdrop"):format(name)]
+			menu:SetBasicPanel()
+		end
+	end)
+
+	if(SV.GameVersion < 60000) then
+		GuildInviteFrame:RemoveTextures()
+		GuildInviteFrame:SetFixedPanelTemplate('Transparent')
+		GuildInviteFrameLevel:RemoveTextures()
+		GuildInviteFrameLevel:ClearAllPoints()
+		GuildInviteFrameLevel:SetPoint('TOP', GuildInviteFrame, 'CENTER', -15, -25)
+		GuildInviteFrameJoinButton:SetButtonTemplate()
+		GuildInviteFrameDeclineButton:SetButtonTemplate()
+		GuildInviteFrame:Height(225)
+		GuildInviteFrame:HookScript("OnEvent", function()
+			GuildInviteFrame:Height(225)
+		end)
+
+		GuildInviteFrameWarningText:Die()
+		BattleTagInviteFrame:RemoveTextures()
+		BattleTagInviteFrame:SetFixedPanelTemplate('Transparent')
+	end
+	--BattleTagInviteFrameScrollFrame:SetEditboxTemplate()
+
+	for i=1, BattleTagInviteFrame:GetNumChildren() do
+		local child = select(i, BattleTagInviteFrame:GetChildren())
+		if child:GetObjectType() == 'Button' then
+			child:SetButtonTemplate()
+		end
+	end
+
+	for i = 1, #SystemFrameList13 do
+		local frame = _G[SystemFrameList13[i]]
+		if(frame) then
+			frame:RemoveTextures()
+			frame:SetBasicPanel()
+		end
+	end
+
+	for i = 1, #SystemFrameList14 do
+		local this = _G[SystemFrameList14[i]]
+		if(this) then
+			this:RemoveTextures()
+			STYLE:ApplyTabStyle(this)
+		end
+	end
+
+	InterfaceOptionsFrameTab1:ClearAllPoints()
+	InterfaceOptionsFrameTab1:SetPoint("BOTTOMLEFT",InterfaceOptionsFrameCategories,"TOPLEFT",-11,-2)
+	VideoOptionsFrameDefaults:ClearAllPoints()
+	InterfaceOptionsFrameDefaults:ClearAllPoints()
+	InterfaceOptionsFrameCancel:ClearAllPoints()
+	VideoOptionsFrameDefaults:SetPoint("TOPLEFT",VideoOptionsFrameCategoryFrame,"BOTTOMLEFT",-1,-5)
+	InterfaceOptionsFrameDefaults:SetPoint("TOPLEFT",InterfaceOptionsFrameCategories,"BOTTOMLEFT",-1,-5)
+	InterfaceOptionsFrameCancel:SetPoint("TOPRIGHT",InterfaceOptionsFramePanelContainer,"BOTTOMRIGHT",0,-6)
+	for i = 1, #SystemFrameList15 do
+		local this = _G["InterfaceOptions"..SystemFrameList15[i]]
+		if(this) then
+			this:SetCheckboxTemplate(true)
+		end
+	end
+	for i = 1, #SystemFrameList16 do
+		local this = _G["InterfaceOptions"..SystemFrameList16[i]]
+		if(this) then
+			STYLE:ApplyDropdownStyle(this)
+		end
+	end
+	InterfaceOptionsHelpPanelResetTutorials:SetButtonTemplate()
+	for i = 1, #SystemFrameList17 do
+		local this = _G[SystemFrameList17[i]]
+		if(this) then
+			this:SetCheckboxTemplate(true)
+		end
+	end
+	for i = 1, #SystemFrameList18 do
+		local this = _G[SystemFrameList18[i]]
+		if(this) then
+			STYLE:ApplyDropdownStyle(this, 165)
+		end
+	end
+	for i = 1, #SystemFrameList19 do
+		local this = _G[SystemFrameList19[i]]
+		if(this) then
+			this:SetButtonTemplate()
+		end
+	end
+	AudioOptionsVoicePanelChatMode1KeyBindingButton:ClearAllPoints()
+	AudioOptionsVoicePanelChatMode1KeyBindingButton:Point("CENTER", AudioOptionsVoicePanelBinding, "CENTER", 0, -10)
+	CompactUnitFrameProfilesRaidStylePartyFrames:SetCheckboxTemplate(true)
+	CompactUnitFrameProfilesGeneralOptionsFrameResetPositionButton:SetButtonTemplate()
+
+	for i = 1, #SystemFrameList20 do
+		local this = _G["CompactUnitFrameProfilesGeneralOptionsFrame"..SystemFrameList20[i]]
+		if(this) then
+			this:SetCheckboxTemplate(true)
+			this:SetFrameLevel(40)
+		end
+	end
+
+	for i = 1, #SystemFrameList21 do
+		local this = _G[SystemFrameList21[i]]
+		if(this) then
+			STYLE:ApplyScrollBarStyle(this)
+		end
+	end
+	Graphics_RightQuality:SetBackdrop(nil)
+	Graphics_RightQuality:Die()
+
+	MacOptionsFrame:RemoveTextures()
+	MacOptionsFrame:SetFixedPanelTemplate()
+	MacOptionsButtonCompress:SetButtonTemplate()
+	MacOptionsButtonKeybindings:SetButtonTemplate()
+	MacOptionsFrameDefaults:SetButtonTemplate()
+	MacOptionsFrameOkay:SetButtonTemplate()
+	MacOptionsFrameCancel:SetButtonTemplate()
+	MacOptionsFrameMovieRecording:RemoveTextures()
+	MacOptionsITunesRemote:RemoveTextures()
+	MacOptionsFrameMisc:RemoveTextures()
+	STYLE:ApplyDropdownStyle(MacOptionsFrameResolutionDropDown)
+	STYLE:ApplyDropdownStyle(MacOptionsFrameFramerateDropDown)
+	STYLE:ApplyDropdownStyle(MacOptionsFrameCodecDropDown)
+	STYLE:ApplyScrollBarStyle(MacOptionsFrameQualitySlider)
+	for i = 1, 11 do
+		local this = _G["MacOptionsFrameCheckButton"..i]
+		if(this) then
+			this:SetCheckboxTemplate(true)
+		end
+	end
+	MacOptionsButtonKeybindings:ClearAllPoints()
+	MacOptionsButtonKeybindings:SetPoint("LEFT", MacOptionsFrameDefaults, "RIGHT", 2, 0)
+	MacOptionsFrameOkay:ClearAllPoints()
+	MacOptionsFrameOkay:SetPoint("LEFT", MacOptionsButtonKeybindings, "RIGHT", 2, 0)
+	MacOptionsFrameCancel:ClearAllPoints()
+	MacOptionsFrameCancel:SetPoint("LEFT", MacOptionsFrameOkay, "RIGHT", 2, 0)
+	MacOptionsFrameCancel:SetWidth(MacOptionsFrameCancel:GetWidth() - 6)
+	ReportCheatingDialog:RemoveTextures()
+	ReportCheatingDialogCommentFrame:RemoveTextures()
+	ReportCheatingDialogReportButton:SetButtonTemplate()
+	ReportCheatingDialogCancelButton:SetButtonTemplate()
+	ReportCheatingDialog:SetFixedPanelTemplate("Transparent", true)
+	ReportCheatingDialogCommentFrameEditBox:SetEditboxTemplate()
+	ReportPlayerNameDialog:RemoveTextures()
+	ReportPlayerNameDialogCommentFrame:RemoveTextures()
+	ReportPlayerNameDialogCommentFrameEditBox:SetEditboxTemplate()
+	ReportPlayerNameDialog:SetFixedPanelTemplate("Transparent", true)
+	ReportPlayerNameDialogReportButton:SetButtonTemplate()
+	ReportPlayerNameDialogCancelButton:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(SideDressUpModelCloseButton)
+	SideDressUpFrame:RemoveTextures()
+	SideDressUpFrame.BGTopLeft:Hide()
+	SideDressUpFrame.BGBottomLeft:Hide()
+	SideDressUpModelResetButton:SetButtonTemplate()
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(SystemPanelQue)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tabard.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tabard.lua
new file mode 100644
index 0000000..663f239
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tabard.lua
@@ -0,0 +1,93 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local function cleanT(a,b)
+	for c=1,a:GetNumRegions()do
+		local d=select(c,a:GetRegions())
+		if d and d:GetObjectType()=="Texture"then
+			local n=d:GetName();
+			if n=='TabardFrameEmblemTopRight' or n=='TabardFrameEmblemTopLeft' or n=='TabardFrameEmblemBottomRight' or n=='TabardFrameEmblemBottomLeft' then return end
+			if b and type(b)=='boolean'then
+				d:Die()
+			elseif d:GetDrawLayer()==b then
+				d:SetTexture(0,0,0,0)
+			elseif b and type(b)=='string'and d:GetTexture()~=b then
+				d:SetTexture(0,0,0,0)
+			else
+				d:SetTexture(0,0,0,0)
+			end
+		end
+	end
+end
+--[[
+##########################################################
+TABARDFRAME STYLER
+##########################################################
+]]--
+local function TabardFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.tabard ~= true then
+		 return
+	end
+	cleanT(TabardFrame, true)
+	TabardFrame:SetPanelTemplate("Action", false)
+	TabardModel:SetFixedPanelTemplate("Transparent")
+	TabardFrameCancelButton:SetButtonTemplate()
+	TabardFrameAcceptButton:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(TabardFrameCloseButton)
+	TabardFrameCostFrame:RemoveTextures()
+	TabardFrameCustomizationFrame:RemoveTextures()
+	TabardFrameInset:Die()
+	TabardFrameMoneyInset:Die()
+	TabardFrameMoneyBg:RemoveTextures()
+	for b = 1, 5 do
+		local c = "TabardFrameCustomization"..b;_G[c]:RemoveTextures()
+		STYLE:ApplyPaginationStyle(_G[c.."LeftButton"])
+		STYLE:ApplyPaginationStyle(_G[c.."RightButton"])
+		if b>1 then
+			 _G[c]:ClearAllPoints()
+			_G[c]:Point("TOP", _G["TabardFrameCustomization"..b-1], "BOTTOM", 0, -6)
+		else
+			local d, e, f, g, h = _G[c]:GetPoint()
+			_G[c]:Point(d, e, f, g, h+4)
+		end
+	end
+	TabardCharacterModelRotateLeftButton:Point("BOTTOMLEFT", 4, 4)
+	TabardCharacterModelRotateRightButton:Point("TOPLEFT", TabardCharacterModelRotateLeftButton, "TOPRIGHT", 4, 0)
+	hooksecurefunc(TabardCharacterModelRotateLeftButton, "SetPoint", function(i, d, j, k, l, m)
+		if d ~= "BOTTOMLEFT"or l ~= 4 or m ~= 4 then
+			 i:Point("BOTTOMLEFT", 4, 4)
+		end
+	end)
+	hooksecurefunc(TabardCharacterModelRotateRightButton, "SetPoint", function(i, d, j, k, l, m)
+		if d ~= "TOPLEFT"or l ~= 4 or m ~= 0 then
+			 i:Point("TOPLEFT", TabardCharacterModelRotateLeftButton, "TOPRIGHT", 4, 0)
+		end
+	end)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(TabardFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua
new file mode 100644
index 0000000..f9fcfa4
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/talents.lua
@@ -0,0 +1,386 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local borderTex = [[Interface\Addons\SVUI\assets\artwork\Template\ROUND]]
+
+local SpecButtonList = {
+	"PlayerTalentFrameSpecializationLearnButton",
+	"PlayerTalentFrameTalentsLearnButton",
+	"PlayerTalentFramePetSpecializationLearnButton"
+};
+
+local function Tab_OnEnter(this)
+	this.backdrop:SetPanelColor("highlight")
+	this.backdrop:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+
+local function Tab_OnLeave(this)
+	this.backdrop:SetPanelColor("dark")
+	this.backdrop:SetBackdropBorderColor(0,0,0,1)
+end
+
+local function ChangeTabHelper(this)
+	this:RemoveTextures()
+	local nTex = this:GetNormalTexture()
+	if(nTex) then
+		nTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		nTex:FillInner()
+	end
+
+	this.pushed = true;
+
+	this.backdrop = CreateFrame("Frame", nil, this)
+	this.backdrop:WrapOuter(this,1,1)
+	this.backdrop:SetFrameLevel(0)
+	this.backdrop:SetBackdrop({
+		bgFile = [[Interface\BUTTONS\WHITE8X8]],
+        tile = false,
+        tileSize = 0,
+        edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
+        edgeSize = 3,
+        insets = {
+            left = 0,
+            right = 0,
+            top = 0,
+            bottom = 0
+        }
+    });
+    this.backdrop:SetBackdropColor(0,0,0,1)
+	this.backdrop:SetBackdropBorderColor(0,0,0,1)
+	this:SetScript("OnEnter", Tab_OnEnter)
+	this:SetScript("OnLeave", Tab_OnLeave)
+end
+
+local function StyleGlyphHolder(holder, offset)
+    if holder.styled then return end
+
+    local outer = holder:CreateTexture(nil, "OVERLAY")
+    outer:WrapOuter(holder, offset, offset)
+    outer:SetTexture(borderTex)
+    outer:SetGradient(unpack(SV.Media.gradient.class))
+
+    local hover = holder:CreateTexture(nil, "HIGHLIGHT")
+    hover:WrapOuter(holder, offset, offset)
+    hover:SetTexture(borderTex)
+    hover:SetGradient(unpack(SV.Media.gradient.yellow))
+    holder.hover = hover
+
+    if holder.SetDisabledTexture then
+        local disabled = holder:CreateTexture(nil, "BORDER")
+        disabled:WrapOuter(holder, offset, offset)
+        disabled:SetTexture(borderTex)
+        disabled:SetGradient(unpack(SV.Media.gradient.default))
+        holder:SetDisabledTexture(disabled)
+    end
+
+    local cd = holder:GetName() and _G[holder:GetName().."Cooldown"]
+    if cd then
+        cd:ClearAllPoints()
+        cd:FillInner()
+    end
+    holder.styled = true
+end
+--[[
+##########################################################
+TALENTFRAME STYLER
+##########################################################
+]]--
+local function TalentFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.talent ~= true then return end
+
+	STYLE:ApplyWindowStyle(PlayerTalentFrame)
+
+	PlayerTalentFrameInset:RemoveTextures()
+	PlayerTalentFrameTalents:RemoveTextures()
+	PlayerTalentFrameTalentsClearInfoFrame:RemoveTextures()
+
+	PlayerTalentFrame.Panel:Point("BOTTOMRIGHT", PlayerTalentFrame, "BOTTOMRIGHT", 0, -5)
+	PlayerTalentFrameSpecializationTutorialButton:Die()
+	PlayerTalentFrameTalentsTutorialButton:Die()
+	PlayerTalentFramePetSpecializationTutorialButton:Die()
+	STYLE:ApplyCloseButtonStyle(PlayerTalentFrameCloseButton)
+	PlayerTalentFrameActivateButton:SetButtonTemplate()
+
+	for _,name in pairs(SpecButtonList)do
+		local button = _G[name];
+		if(button) then
+			button:RemoveTextures()
+			button:SetButtonTemplate()
+			local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = button:GetPoint()
+			button:SetPoint(initialAnchor, anchorParent, relativeAnchor, xPosition, -28)
+		end
+	end
+
+	PlayerTalentFrameTalents:SetFixedPanelTemplate("Inset")
+	PlayerTalentFrameTalentsClearInfoFrame.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	PlayerTalentFrameTalentsClearInfoFrame:Width(PlayerTalentFrameTalentsClearInfoFrame:GetWidth()-2)
+	PlayerTalentFrameTalentsClearInfoFrame:Height(PlayerTalentFrameTalentsClearInfoFrame:GetHeight()-2)
+	PlayerTalentFrameTalentsClearInfoFrame.icon:Size(PlayerTalentFrameTalentsClearInfoFrame:GetSize())
+	PlayerTalentFrameTalentsClearInfoFrame:Point('TOPLEFT', PlayerTalentFrameTalents, 'BOTTOMLEFT', 8, -8)
+
+	for i = 1, 4 do
+		STYLE:ApplyTabStyle(_G["PlayerTalentFrameTab"..i])
+		if i == 1 then
+			local d, e, k, g = _G["PlayerTalentFrameTab"..i]:GetPoint()
+			_G["PlayerTalentFrameTab"..i]:Point(d, e, k, g, -4)
+		end
+	end
+
+	hooksecurefunc("PlayerTalentFrame_UpdateTabs", function()
+		for i = 1, 4 do
+			local d, e, k, g = _G["PlayerTalentFrameTab"..i]:GetPoint()
+			_G["PlayerTalentFrameTab"..i]:Point(d, e, k, g, -4)
+		end
+	end)
+
+	PlayerTalentFrameSpecializationSpellScrollFrameScrollChild.Seperator:SetTexture(1, 1, 1)
+	PlayerTalentFrameSpecializationSpellScrollFrameScrollChild.Seperator:SetAlpha(0.2)
+
+	for i = 1, 2 do
+		local v = _G["PlayerSpecTab"..i]
+		_G["PlayerSpecTab"..i.."Background"]:Die()
+		ChangeTabHelper(v)
+	end
+
+	hooksecurefunc("PlayerTalentFrame_UpdateSpecs", function()
+		local d, x, f, g, h = PlayerSpecTab1:GetPoint()
+		PlayerSpecTab1:Point(d, x, f, -1, h)
+	end)
+
+	for i = 1, MAX_NUM_TALENT_TIERS do
+		local gName = ("PlayerTalentFrameTalentsTalentRow%d"):format(i)
+		local rowFrame = _G[gName]
+		if(rowFrame) then
+			local bgFrame = _G[("%sBg"):format(gName)]
+			if(bgFrame) then bgFrame:Hide() end
+
+			rowFrame:DisableDrawLayer("BORDER")
+			rowFrame:RemoveTextures()
+			rowFrame.TopLine:Point("TOP", 0, 4)
+			rowFrame.BottomLine:Point("BOTTOM", 0, -4)
+
+			for z = 1, NUM_TALENT_COLUMNS do
+				local talentItem = _G[("%sTalent%d"):format(gName, z)]
+				if(talentItem) then
+					STYLE:ApplyItemButtonStyle(talentItem, false, true)
+				end
+			end
+		end
+	end
+
+	hooksecurefunc("TalentFrame_Update", function()
+		for i = 1, MAX_NUM_TALENT_TIERS do
+			local gName = ("PlayerTalentFrameTalentsTalentRow%d"):format(i)
+
+			for z = 1, NUM_TALENT_COLUMNS do
+				local talentItem = _G[("%sTalent%d"):format(gName, z)]
+				if(talentItem) then
+					if talentItem.knownSelection:IsShown() then
+						talentItem:SetBackdropBorderColor(0, 1, 0)
+					else
+			 			talentItem:SetBackdropBorderColor(0, 0, 0)
+					end
+					if talentItem.learnSelection:IsShown() then
+			 			talentItem:SetBackdropBorderColor(1, 1, 0)
+					end
+				end
+			end
+		end
+	end)
+
+	for b = 1, 5 do
+		 select(b, PlayerTalentFrameSpecializationSpellScrollFrameScrollChild:GetRegions()):Hide()
+	end
+
+	local C = _G["PlayerTalentFrameSpecializationSpellScrollFrameScrollChild"]
+	C.ring:Hide()
+	C:SetFixedPanelTemplate("Transparent")
+	C.Panel:WrapOuter(C.specIcon)
+	C.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+
+	local D = _G["PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild"]
+	D.ring:Hide()
+	D:SetFixedPanelTemplate("Transparent")
+	D.Panel:WrapOuter(D.specIcon)
+	D.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+
+	hooksecurefunc("PlayerTalentFrame_UpdateSpecFrame", function(i, E)
+		local F = GetSpecialization(nil, i.isPet, PlayerSpecTab2:GetChecked() and 2 or 1)
+		local G = E or F or 1;
+		local H, p, p, icon = GetSpecializationInfo(G, nil, i.isPet)
+		local I = i.spellsScroll.child;
+		I.specIcon:SetTexture(icon)
+		local J = 1;
+		local K;
+		if i.isPet then
+			K = { GetSpecializationSpells(G, nil, i.isPet) }
+		else
+			 K = SPEC_SPELLS_DISPLAY[H]
+		end
+		for b = 1, #K, 2 do
+			local L = I["abilityButton"..J]
+			local p, icon = GetSpellTexture(K[b])
+			L.icon:SetTexture(icon)
+			if not L.restyled then
+				L.restyled = true;L:Size(30, 30)
+				L.ring:Hide()
+				L:SetFixedPanelTemplate("Transparent")
+				L.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+				L.icon:FillInner()
+			end
+			J = J+1
+		end
+		for b = 1, GetNumSpecializations(nil, i.isPet)do
+			local A = i["specButton"..b]
+			A.SelectedTexture:FillInner(A.Panel)
+			if A.selected then
+				 A.SelectedTexture:Show()
+			else
+				 A.SelectedTexture:Hide()
+			end
+		end
+	end)
+
+	for b = 1, GetNumSpecializations(false, nil)do
+		local button = PlayerTalentFrameSpecialization["specButton"..b]
+		if(button) then
+			local _, _, _, icon = GetSpecializationInfo(b, false, nil)
+			button.ring:Hide()
+			button.specIcon:SetTexture(icon)
+			button.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			button.specIcon:SetSize(50, 50)
+			button.specIcon:Point("LEFT", button, "LEFT", 15, 0)
+			button.SelectedTexture = button:CreateTexture(nil, 'ARTWORK')
+			button.SelectedTexture:SetTexture(1, 1, 0, 0.1)
+		end
+	end
+
+	local btnList = {
+		"PlayerTalentFrameSpecializationSpecButton", "PlayerTalentFramePetSpecializationSpecButton"
+	}
+
+	for _, gName in pairs(btnList)do
+		for b = 1, 4 do
+			local button = _G[gName..b]
+			if(button) then
+				if(_G[gName..b.."Glow"]) then _G[gName..b.."Glow"]:Die() end
+				local bTex = button:CreateTexture(nil, 'ARTWORK')
+				bTex:SetTexture(1, 1, 1, 0.1)
+				button:SetHighlightTexture(bTex)
+				button.bg:SetAlpha(0)
+				button.learnedTex:SetAlpha(0)
+				button.selectedTex:SetAlpha(0)
+				button:SetFixedPanelTemplate("Button")
+				button:GetHighlightTexture():FillInner(button.Panel)
+			end
+		end
+	end
+
+	if SV.class == "HUNTER" then
+		for b = 1, 6 do
+			 select(b, PlayerTalentFramePetSpecialization:GetRegions()):Hide()
+		end
+		for b = 1, PlayerTalentFramePetSpecialization:GetNumChildren()do
+			local O = select(b, PlayerTalentFramePetSpecialization:GetChildren())
+			if O and not O:GetName() then
+				 O:DisableDrawLayer("OVERLAY")
+			end
+		end
+		for b = 1, 5 do
+			 select(b, PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild:GetRegions()):Hide()
+		end
+		for b = 1, GetNumSpecializations(false, true)do
+			local A = PlayerTalentFramePetSpecialization["specButton"..b]
+			local p, p, p, icon = GetSpecializationInfo(b, false, true)
+			A.ring:Hide()
+			A.specIcon:SetTexture(icon)
+			A.specIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			A.specIcon:SetSize(50, 50)
+			A.specIcon:Point("LEFT", A, "LEFT", 15, 0)
+			A.SelectedTexture = A:CreateTexture(nil, 'ARTWORK')
+			A.SelectedTexture:SetTexture(1, 1, 0, 0.1)
+		end
+		PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild.Seperator:SetTexture(1, 1, 1)
+		PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild.Seperator:SetAlpha(0.2)
+	end
+
+	PlayerTalentFrameSpecialization:DisableDrawLayer('ARTWORK')
+	PlayerTalentFrameSpecialization:DisableDrawLayer('BORDER')
+
+	for b = 1, PlayerTalentFrameSpecialization:GetNumChildren()do
+		local O = select(b, PlayerTalentFrameSpecialization:GetChildren())
+		if O and not O:GetName() then
+			 O:DisableDrawLayer("OVERLAY")
+		end
+	end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_TalentUI", TalentFrameStyle)
+
+local function GlyphStyle()
+	GlyphFrame:RemoveTextures()
+	--GlyphFrame.background:ClearAllPoints()
+	--GlyphFrame.background:SetAllPoints(PlayerTalentFrameInset)
+	GlyphFrame:SetFixedPanelTemplate("Comic", false, 0, 3, 3)
+	GlyphFrameSideInset:RemoveTextures()
+	GlyphFrameClearInfoFrame:RemoveTextures()
+	GlyphFrameClearInfoFrame.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9 )
+	GlyphFrameClearInfoFrame:Width(GlyphFrameClearInfoFrame:GetWidth()-2)
+	GlyphFrameClearInfoFrame:Height(GlyphFrameClearInfoFrame:GetHeight()-2)
+	GlyphFrameClearInfoFrame.icon:Size(GlyphFrameClearInfoFrame:GetSize())
+	GlyphFrameClearInfoFrame:Point("TOPLEFT", GlyphFrame, "BOTTOMLEFT", 6, -10)
+	STYLE:ApplyDropdownStyle(GlyphFrameFilterDropDown, 212)
+	GlyphFrameSearchBox:SetEditboxTemplate()
+	STYLE:ApplyScrollFrameStyle(GlyphFrameScrollFrameScrollBar, 5)
+
+	for b = 1, 10 do
+		local e = _G["GlyphFrameScrollFrameButton"..b]
+		local icon = _G["GlyphFrameScrollFrameButton"..b.."Icon"]
+		e:RemoveTextures()
+		STYLE:ApplyItemButtonStyle(e)
+		icon:SetTexCoord(0.1, 0.9, 0.1, 0.9 )
+	end
+
+	for b = 1, 6 do
+		local glyphHolder = _G["GlyphFrameGlyph"..b]
+		if glyphHolder then
+			glyphHolder:RemoveTextures()
+			if(b % 2 == 0) then
+				StyleGlyphHolder(glyphHolder, 4)
+			else
+				StyleGlyphHolder(glyphHolder, 1)
+			end
+		end
+	end
+
+	GlyphFrameHeader1:RemoveTextures()
+	GlyphFrameHeader2:RemoveTextures()
+	GlyphFrameScrollFrame:SetPanelTemplate("Inset", false, 3, 2, 2)
+end
+
+STYLE:SaveBlizzardStyle("Blizzard_GlyphUI", GlyphStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/taxi.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/taxi.lua
new file mode 100644
index 0000000..2e3c82a
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/taxi.lua
@@ -0,0 +1,42 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TAXIFRAME STYLER
+##########################################################
+]]--
+local function TaxiStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.taxi ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(TaxiFrame)
+
+	TaxiRouteMap:SetPanelTemplate("Blackout")
+	--TaxiRouteMap.Panel:WrapOuter(TaxiRouteMap, 4, 4)
+
+	STYLE:ApplyCloseButtonStyle(TaxiFrame.CloseButton)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(TaxiStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/timemanager.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/timemanager.lua
new file mode 100644
index 0000000..0a49a23
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/timemanager.lua
@@ -0,0 +1,69 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TIMEMANAGER STYLER
+##########################################################
+]]--
+local function TimeManagerStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.timemanager ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(TimeManagerFrame, true)
+
+	STYLE:ApplyCloseButtonStyle(TimeManagerFrameCloseButton)
+	TimeManagerFrameInset:Die()
+	STYLE:ApplyDropdownStyle(TimeManagerAlarmHourDropDown, 80)
+	STYLE:ApplyDropdownStyle(TimeManagerAlarmMinuteDropDown, 80)
+	STYLE:ApplyDropdownStyle(TimeManagerAlarmAMPMDropDown, 80)
+	TimeManagerAlarmMessageEditBox:SetEditboxTemplate()
+	TimeManagerAlarmEnabledButton:SetCheckboxTemplate(true)
+	TimeManagerMilitaryTimeCheck:SetCheckboxTemplate(true)
+	TimeManagerLocalTimeCheck:SetCheckboxTemplate(true)
+	TimeManagerStopwatchFrame:RemoveTextures()
+	TimeManagerStopwatchCheck:SetFixedPanelTemplate("Default")
+	TimeManagerStopwatchCheck:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	TimeManagerStopwatchCheck:GetNormalTexture():FillInner()
+	local sWatch = TimeManagerStopwatchCheck:CreateTexture(nil, "OVERLAY")
+	sWatch:SetTexture(1, 1, 1, 0.3)
+	sWatch:Point("TOPLEFT", TimeManagerStopwatchCheck, 2, -2)
+	sWatch:Point("BOTTOMRIGHT", TimeManagerStopwatchCheck, -2, 2)
+	TimeManagerStopwatchCheck:SetHighlightTexture(sWatch)
+
+	StopwatchFrame:RemoveTextures()
+	StopwatchFrame:SetBasicPanel()
+	StopwatchFrame.Panel:Point("TOPLEFT", 0, -17)
+	StopwatchFrame.Panel:Point("BOTTOMRIGHT", 0, 2)
+
+	StopwatchTabFrame:RemoveTextures()
+
+	STYLE:ApplyCloseButtonStyle(StopwatchCloseButton)
+	STYLE:ApplyPaginationStyle(StopwatchPlayPauseButton)
+	STYLE:ApplyPaginationStyle(StopwatchResetButton)
+	StopwatchPlayPauseButton:Point("RIGHT", StopwatchResetButton, "LEFT", -4, 0)
+	StopwatchResetButton:Point("BOTTOMRIGHT", StopwatchFrame, "BOTTOMRIGHT", -4, 6)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_TimeManager",TimeManagerStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trade.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trade.lua
new file mode 100644
index 0000000..a724c3f
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trade.lua
@@ -0,0 +1,112 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TRADEFRAME STYLER
+##########################################################
+]]--
+local function TradeFrameStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.trade ~= true then
+		 return
+	end
+
+	STYLE:ApplyWindowStyle(TradeFrame, true)
+
+	TradeFrameInset:Die()
+	TradeFrameTradeButton:SetButtonTemplate()
+	TradeFrameCancelButton:SetButtonTemplate()
+	STYLE:ApplyCloseButtonStyle(TradeFrameCloseButton, TradeFrame.Panel)
+	TradePlayerInputMoneyFrameGold:SetEditboxTemplate()
+	TradePlayerInputMoneyFrameSilver:SetEditboxTemplate()
+	TradePlayerInputMoneyFrameCopper:SetEditboxTemplate()
+	TradeRecipientItemsInset:Die()
+	TradePlayerItemsInset:Die()
+	TradePlayerInputMoneyInset:Die()
+	TradePlayerEnchantInset:Die()
+	TradeRecipientEnchantInset:Die()
+	TradeRecipientMoneyInset:Die()
+	TradeRecipientMoneyBg:Die()
+	local inputs = {
+		"TradePlayerInputMoneyFrameSilver",
+		"TradePlayerInputMoneyFrameCopper"
+	}
+	for _,frame in pairs(inputs)do
+		_G[frame]:SetEditboxTemplate()
+		_G[frame].Panel:Point("TOPLEFT", -2, 1)
+		_G[frame].Panel:Point("BOTTOMRIGHT", -12, -1)
+		_G[frame]:SetTextInsets(-1, -1, -2, -2)
+	end
+	for i = 1, 7 do
+		local W = _G["TradePlayerItem"..i]
+		local X = _G["TradeRecipientItem"..i]
+		local Y = _G["TradePlayerItem"..i.."ItemButton"]
+		local Z = _G["TradeRecipientItem"..i.."ItemButton"]
+		local b = _G["TradePlayerItem"..i.."ItemButtonIconTexture"]
+		local z = _G["TradeRecipientItem"..i.."ItemButtonIconTexture"]
+		if Y and Z then
+			W:RemoveTextures()
+			X:RemoveTextures()
+			Y:RemoveTextures()
+			Z:RemoveTextures()
+			b:FillInner(Y)
+			b:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			Y:SetFixedPanelTemplate("Button", true)
+			Y:SetButtonTemplate()
+			Y.bg = CreateFrame("Frame", nil, Y)
+			Y.bg:SetPanelTemplate("Inset")
+			Y.bg:SetPoint("TOPLEFT", Y, "TOPRIGHT", 4, 0)
+			Y.bg:SetPoint("BOTTOMRIGHT", _G["TradePlayerItem"..i.."NameFrame"], "BOTTOMRIGHT", 0, 14)
+			Y.bg:SetFrameLevel(Y:GetFrameLevel()-3)
+			Y:SetFrameLevel(Y:GetFrameLevel()-1)
+			z:FillInner(Z)
+			z:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			Z:SetFixedPanelTemplate("Button", true)
+			Z:SetButtonTemplate()
+			Z.bg = CreateFrame("Frame", nil, Z)
+			Z.bg:SetPanelTemplate("Inset")
+			Z.bg:SetPoint("TOPLEFT", Z, "TOPRIGHT", 4, 0)
+			Z.bg:SetPoint("BOTTOMRIGHT", _G["TradeRecipientItem"..i.."NameFrame"], "BOTTOMRIGHT", 0, 14)
+			Z.bg:SetFrameLevel(Z:GetFrameLevel()-3)
+			Z:SetFrameLevel(Z:GetFrameLevel()-1)
+		end
+	end
+	TradeHighlightPlayerTop:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightPlayerBottom:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightPlayerMiddle:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightPlayer:SetFrameStrata("HIGH")
+	TradeHighlightPlayerEnchantTop:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightPlayerEnchantBottom:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightPlayerEnchantMiddle:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightPlayerEnchant:SetFrameStrata("HIGH")
+	TradeHighlightRecipientTop:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightRecipientBottom:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightRecipientMiddle:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightRecipient:SetFrameStrata("HIGH")
+	TradeHighlightRecipientEnchantTop:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightRecipientEnchantBottom:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightRecipientEnchantMiddle:SetTexture(0, 1, 0, 0.2)
+	TradeHighlightRecipientEnchant:SetFrameStrata("HIGH")
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(TradeFrameStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tradeskill.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tradeskill.lua
new file mode 100644
index 0000000..77634d4
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/tradeskill.lua
@@ -0,0 +1,122 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+TRADESKILL STYLER
+##########################################################
+]]--
+local function TradeSkillStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.tradeskill ~= true then
+		 return
+	end
+
+	TradeSkillListScrollFrame:RemoveTextures()
+	TradeSkillDetailScrollFrame:RemoveTextures()
+	TradeSkillFrameInset:RemoveTextures()
+	TradeSkillExpandButtonFrame:RemoveTextures()
+	TradeSkillDetailScrollChildFrame:RemoveTextures()
+	TradeSkillRankFrame:RemoveTextures()
+	TradeSkillCreateButton:RemoveTextures(true)
+	TradeSkillCancelButton:RemoveTextures(true)
+	TradeSkillFilterButton:RemoveTextures(true)
+	TradeSkillCreateAllButton:RemoveTextures(true)
+	TradeSkillViewGuildCraftersButton:RemoveTextures(true)
+
+	STYLE:ApplyWindowStyle(TradeSkillFrame, true, true)
+	STYLE:ApplyWindowStyle(TradeSkillGuildFrame)
+
+	TradeSkillGuildFrame:Point("BOTTOMLEFT", TradeSkillFrame, "BOTTOMRIGHT", 3, 19)
+	TradeSkillGuildFrameContainer:RemoveTextures()
+	TradeSkillGuildFrameContainer:SetPanelTemplate("Inset")
+	STYLE:ApplyCloseButtonStyle(TradeSkillGuildFrameCloseButton)
+
+	TradeSkillRankFrame:SetPanelTemplate("Bar", true)
+	TradeSkillRankFrame:SetStatusBarTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\DEFAULT]])
+	TradeSkillListScrollFrame:SetPanelTemplate("Inset")
+	TradeSkillDetailScrollFrame:SetPanelTemplate("Inset")
+
+	TradeSkillCreateButton:SetButtonTemplate()
+	TradeSkillCancelButton:SetButtonTemplate()
+	TradeSkillFilterButton:SetButtonTemplate()
+	TradeSkillCreateAllButton:SetButtonTemplate()
+	TradeSkillViewGuildCraftersButton:SetButtonTemplate()
+
+	STYLE:ApplyScrollFrameStyle(TradeSkillListScrollFrameScrollBar)
+	STYLE:ApplyScrollFrameStyle(TradeSkillDetailScrollFrameScrollBar)
+
+	TradeSkillLinkButton:Size(17, 14)
+	TradeSkillLinkButton:Point("LEFT", TradeSkillLinkFrame, "LEFT", 5, -1)
+	TradeSkillLinkButton:SetButtonTemplate(nil, nil, nil, nil, true)
+	TradeSkillLinkButton:GetNormalTexture():SetTexCoord(0.25, 0.7, 0.45, 0.8)
+
+	TradeSkillFrameSearchBox:SetEditboxTemplate()
+	TradeSkillInputBox:SetEditboxTemplate()
+
+	STYLE:ApplyPaginationStyle(TradeSkillDecrementButton)
+	STYLE:ApplyPaginationStyle(TradeSkillIncrementButton)
+
+	TradeSkillIncrementButton:Point("RIGHT", TradeSkillCreateButton, "LEFT", -13, 0)
+	STYLE:ApplyCloseButtonStyle(TradeSkillFrameCloseButton)
+
+	TradeSkillSkillIcon:SetFixedPanelTemplate("Slot")
+
+	local internalTest = false;
+
+	hooksecurefunc("TradeSkillFrame_SetSelection", function(_)
+		TradeSkillSkillIcon:SetFixedPanelTemplate("Slot")
+		if TradeSkillSkillIcon:GetNormalTexture() then
+			TradeSkillSkillIcon:GetNormalTexture():SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		end
+		for i=1, MAX_TRADE_SKILL_REAGENTS do
+			local u = _G["TradeSkillReagent"..i]
+			local icon = _G["TradeSkillReagent"..i.."IconTexture"]
+			local a1 = _G["TradeSkillReagent"..i.."Count"]
+			icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			icon:SetDrawLayer("OVERLAY")
+			if not icon.backdrop then
+				local a2 = CreateFrame("Frame", nil, u)
+				if u:GetFrameLevel()-1 >= 0 then
+					 a2:SetFrameLevel(u:GetFrameLevel()-1)
+				else
+					 a2:SetFrameLevel(0)
+				end
+				a2:WrapOuter(icon)
+				a2:SetFixedPanelTemplate("Slot")
+				icon:SetParent(a2)
+				icon.backdrop = a2
+			end
+			a1:SetParent(icon.backdrop)
+			a1:SetDrawLayer("OVERLAY")
+			if i > 2 and internalTest == false then
+				local d, a3, f, g, h = u:GetPoint()
+				u:ClearAllPoints()
+				u:Point(d, a3, f, g, h-3)
+				internalTest = true
+			end
+			_G["TradeSkillReagent"..i.."NameFrame"]:Die()
+		end
+	end)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_TradeSkillUI",TradeSkillStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trainer.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trainer.lua
new file mode 100644
index 0000000..f5dbb31
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/trainer.lua
@@ -0,0 +1,93 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local ClassTrainerFrameList = {
+	"ClassTrainerFrame",
+	"ClassTrainerScrollFrameScrollChild",
+	"ClassTrainerFrameSkillStepButton",
+	"ClassTrainerFrameBottomInset"
+};
+local ClassTrainerTextureList = {
+	"ClassTrainerFrameInset",
+	"ClassTrainerFramePortrait",
+	"ClassTrainerScrollFrameScrollBarBG",
+	"ClassTrainerScrollFrameScrollBarTop",
+	"ClassTrainerScrollFrameScrollBarBottom",
+	"ClassTrainerScrollFrameScrollBarMiddle"
+};
+--[[
+##########################################################
+TRAINER STYLER
+##########################################################
+]]--
+local function TrainerStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.trainer ~= true then return end
+
+	ClassTrainerFrame:SetHeight(ClassTrainerFrame:GetHeight() + 42)
+	STYLE:ApplyWindowStyle(ClassTrainerFrame)
+
+	for i=1, 8 do
+		_G["ClassTrainerScrollFrameButton"..i]:RemoveTextures()
+		_G["ClassTrainerScrollFrameButton"..i]:SetFixedPanelTemplate()
+		_G["ClassTrainerScrollFrameButton"..i]:SetButtonTemplate()
+		_G["ClassTrainerScrollFrameButton"..i.."Icon"]:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+		_G["ClassTrainerScrollFrameButton"..i].Panel:WrapOuter(_G["ClassTrainerScrollFrameButton"..i.."Icon"])
+		_G["ClassTrainerScrollFrameButton"..i.."Icon"]:SetParent(_G["ClassTrainerScrollFrameButton"..i].Panel)
+		_G["ClassTrainerScrollFrameButton"..i].selectedTex:SetTexture(1, 1, 1, 0.3)
+		_G["ClassTrainerScrollFrameButton"..i].selectedTex:FillInner()
+	end
+
+	STYLE:ApplyScrollFrameStyle(ClassTrainerScrollFrameScrollBar, 5)
+
+	for _,frame in pairs(ClassTrainerFrameList)do
+		_G[frame]:RemoveTextures()
+	end
+
+	for _,texture in pairs(ClassTrainerTextureList)do
+		_G[texture]:Die()
+	end
+
+	_G["ClassTrainerTrainButton"]:RemoveTextures()
+	_G["ClassTrainerTrainButton"]:SetButtonTemplate()
+	STYLE:ApplyDropdownStyle(ClassTrainerFrameFilterDropDown, 155)
+	ClassTrainerScrollFrame:SetFixedPanelTemplate("Inset")
+	STYLE:ApplyCloseButtonStyle(ClassTrainerFrameCloseButton, ClassTrainerFrame)
+	ClassTrainerFrameSkillStepButton.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	ClassTrainerFrameSkillStepButton:SetFixedPanelTemplate("Button", true)
+	--ClassTrainerFrameSkillStepButton.Panel:WrapOuter(ClassTrainerFrameSkillStepButton.icon)
+	--ClassTrainerFrameSkillStepButton.icon:SetParent(ClassTrainerFrameSkillStepButton.Panel)
+	ClassTrainerFrameSkillStepButtonHighlight:SetTexture(1, 1, 1, 0.3)
+	ClassTrainerFrameSkillStepButton.selectedTex:SetTexture(1, 1, 1, 0.3)
+	ClassTrainerStatusBar:RemoveTextures()
+	ClassTrainerStatusBar:SetStatusBarTexture(SV.Media.bar.default)
+	ClassTrainerStatusBar:SetPanelTemplate("Slot", true, 1, 2, 2)
+	ClassTrainerStatusBar.rankText:ClearAllPoints()
+	ClassTrainerStatusBar.rankText:SetPoint("CENTER", ClassTrainerStatusBar, "CENTER")
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_TrainerUI",TrainerStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/transmog.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/transmog.lua
new file mode 100644
index 0000000..a91f476
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/transmog.lua
@@ -0,0 +1,99 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local TransmogFrameList = {
+	"TransmogrifyModelFrameLines",
+	"TransmogrifyModelFrameMarbleBg",
+	"TransmogrifyFrameButtonFrameButtonBorder",
+	"TransmogrifyFrameButtonFrameButtonBottomBorder",
+	"TransmogrifyFrameButtonFrameMoneyLeft",
+	"TransmogrifyFrameButtonFrameMoneyRight",
+	"TransmogrifyFrameButtonFrameMoneyMiddle"
+};
+local TransmogSlotList = {
+	"Head",
+	"Shoulder",
+	"Chest",
+	"Waist",
+	"Legs",
+	"Feet",
+	"Wrist",
+	"Hands",
+	"Back",
+	"MainHand",
+	"SecondaryHand"
+};
+--[[
+##########################################################
+TRANSMOG STYLER
+##########################################################
+]]--
+local function TransmogStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.transmogrify ~= true then return end
+
+	STYLE:ApplyWindowStyle(TransmogrifyFrame, true)
+
+	for p, texture in pairs(TransmogFrameList)do
+		 _G[texture]:Die()
+	end
+
+	select(2, TransmogrifyModelFrame:GetRegions()):Die()
+
+	TransmogrifyModelFrame:SetFixedPanelTemplate("ModelComic")
+	TransmogrifyFrameButtonFrame:GetRegions():Die()
+	TransmogrifyApplyButton:RemoveTextures()
+	TransmogrifyApplyButton:SetButtonTemplate()
+	TransmogrifyApplyButton:Point("BOTTOMRIGHT", TransmogrifyFrame, "BOTTOMRIGHT", -4, 4)
+	STYLE:ApplyCloseButtonStyle(TransmogrifyArtFrameCloseButton)
+	TransmogrifyArtFrame:RemoveTextures()
+
+	for p, a9 in pairs(TransmogSlotList)do
+		local icon = _G["TransmogrifyFrame"..a9 .."SlotIconTexture"]
+		local a9 = _G["TransmogrifyFrame"..a9 .."Slot"]
+		if a9 then
+			a9:RemoveTextures()
+			a9:SetSlotTemplate(true)
+			a9:SetFrameLevel(a9:GetFrameLevel()+2)
+
+			a9.Panel:SetAllPoints()
+			icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			icon:ClearAllPoints()
+			icon:FillInner()
+		end
+	end
+
+	TransmogrifyConfirmationPopup:SetParent(UIParent)
+	TransmogrifyConfirmationPopup:RemoveTextures()
+	TransmogrifyConfirmationPopup:SetPanelTemplate("Pattern")
+	TransmogrifyConfirmationPopup.Button1:SetButtonTemplate()
+	TransmogrifyConfirmationPopup.Button2:SetButtonTemplate()
+	STYLE:ApplyItemButtonStyle(TransmogrifyConfirmationPopupItemFrame1, true)
+	STYLE:ApplyItemButtonStyle(TransmogrifyConfirmationPopupItemFrame2, true)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_ItemAlterationUI", TransmogStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/voidstorage.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/voidstorage.lua
new file mode 100644
index 0000000..981f67e
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/voidstorage.lua
@@ -0,0 +1,94 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local VoidStorageList = {
+  "VoidStorageBorderFrame",
+  "VoidStorageDepositFrame",
+  "VoidStorageWithdrawFrame",
+  "VoidStorageCostFrame",
+  "VoidStorageStorageFrame",
+  "VoidStoragePurchaseFrame",
+  "VoidItemSearchBox"
+};
+--[[
+##########################################################
+VOIDSTORAGE STYLER
+##########################################################
+]]--
+local function VoidStorageStyle()
+  if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.voidstorage ~= true then
+     return
+  end
+
+  STYLE:ApplyWindowStyle(VoidStorageFrame, true)
+
+  for _,frame in pairs(VoidStorageList)do
+    _G[frame]:RemoveTextures()
+  end
+
+  VoidStoragePurchaseFrame:SetFrameStrata('DIALOG')
+  VoidStoragePurchaseFrame:SetFixedPanelTemplate("Button", true)
+  VoidStorageFrameMarbleBg:Die()
+  VoidStorageFrameLines:Die()
+
+  select(2, VoidStorageFrame:GetRegions()):Die()
+
+  VoidStoragePurchaseButton:SetButtonTemplate()
+  VoidStorageHelpBoxButton:SetButtonTemplate()
+  VoidStorageTransferButton:SetButtonTemplate()
+  STYLE:ApplyCloseButtonStyle(VoidStorageBorderFrame.CloseButton)
+  VoidItemSearchBox:SetPanelTemplate("Inset")
+  VoidItemSearchBox.Panel:Point("TOPLEFT", 10, -1)
+  VoidItemSearchBox.Panel:Point("BOTTOMRIGHT", 4, 1)
+
+  for e = 1, 9 do
+    local f = _G["VoidStorageDepositButton"..e]
+    local g = _G["VoidStorageWithdrawButton"..e]
+    local h = _G["VoidStorageDepositButton"..e.."IconTexture"]
+    local i = _G["VoidStorageWithdrawButton"..e.."IconTexture"]
+    _G["VoidStorageDepositButton"..e.."Bg"]:Hide()
+    _G["VoidStorageWithdrawButton"..e.."Bg"]:Hide()
+    f:SetSlotTemplate(true)
+    g:SetSlotTemplate(true)
+    h:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+    h:FillInner()
+    i:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+    i:FillInner()
+  end
+
+  for e = 1, 80 do
+    local j = _G["VoidStorageStorageButton"..e]
+    local k = _G["VoidStorageStorageButton"..e.."IconTexture"]
+    _G["VoidStorageStorageButton"..e.."Bg"]:Hide()
+    j:SetSlotTemplate(true)
+    k:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+    k:FillInner()
+  end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveBlizzardStyle("Blizzard_VoidStorageUI", VoidStorageStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldmap.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldmap.lua
new file mode 100644
index 0000000..c38c8b2
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldmap.lua
@@ -0,0 +1,241 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+HELPERS
+##########################################################
+]]--
+local function AdjustMapLevel()
+  if InCombatLockdown()then return end
+    WorldMapFrame:SetFrameLevel(4)
+    WorldMapDetailFrame:SetFrameLevel(6)
+    WorldMapFrame:SetFrameStrata('HIGH')
+    WorldMapArchaeologyDigSites:SetFrameLevel(8)
+    WorldMapArchaeologyDigSites:SetFrameStrata('DIALOG')
+end
+
+local function WorldMap_SmallView()
+  WorldMapFrame.Panel:ClearAllPoints()
+  WorldMapFrame.Panel:WrapOuter(WorldMapFrame, 4, 4)
+  WorldMapFrame.Panel.Panel:WrapOuter(WorldMapFrame.Panel)
+end
+
+local function WorldMap_FullView()
+  WorldMapFrame.Panel:ClearAllPoints()
+
+  if(SV.GameVersion >= 60000) then
+    WorldMapFrame.Panel:Point("TOPLEFT", WorldMapDetailFrame, "TOPLEFT", -12, 74)
+    WorldMapFrame.Panel:Point("BOTTOMRIGHT", WorldMapDetailFrame, "BOTTOMRIGHT", 12, -24)
+  else
+    WorldMapFrame.Panel:Point("TOPLEFT", WorldMapDetailFrame, "TOPLEFT", -12, 74)
+    WorldMapFrame.Panel:Point("BOTTOMRIGHT", WorldMapShowDropDown, "BOTTOMRIGHT", 4, -4)
+  end
+  WorldMapFrame.Panel.Panel:SetAllPoints(SV.UIParent)
+end
+
+local function WorldMap_QuestView()
+  WorldMap_FullView()
+  if not WorldMapQuestDetailScrollFrame.Panel then
+    WorldMapQuestDetailScrollFrame:SetFixedPanelTemplate("Inset")
+    WorldMapQuestDetailScrollFrame.Panel:Point("TOPLEFT", -22, 2)
+    WorldMapQuestDetailScrollFrame.Panel:Point("BOTTOMRIGHT", WorldMapShowDropDown, 4, -4)
+    WorldMapQuestDetailScrollFrame.spellTex = WorldMapQuestDetailScrollFrame:CreateTexture(nil, 'ARTWORK')
+    WorldMapQuestDetailScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
+    WorldMapQuestDetailScrollFrame.spellTex:SetPoint("TOPLEFT", WorldMapQuestDetailScrollFrame.Panel, 'TOPLEFT', 2, -2)
+    WorldMapQuestDetailScrollFrame.spellTex:Size(586, 310)
+    WorldMapQuestDetailScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
+  end
+  if not WorldMapQuestRewardScrollFrame.Panel then
+    WorldMapQuestRewardScrollFrame:SetPanelTemplate("Inset")
+    WorldMapQuestRewardScrollFrame.Panel:Point("BOTTOMRIGHT", 22, -4)
+    WorldMapQuestRewardScrollFrame.spellTex = WorldMapQuestRewardScrollFrame:CreateTexture(nil, 'ARTWORK')
+    WorldMapQuestRewardScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
+    WorldMapQuestRewardScrollFrame.spellTex:SetPoint("TOPLEFT", WorldMapQuestRewardScrollFrame.Panel, 'TOPLEFT', 2, -2)
+    WorldMapQuestRewardScrollFrame.spellTex:Size(585, 310)
+    WorldMapQuestRewardScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
+  end
+  if not WorldMapQuestScrollFrame.Panel then
+    WorldMapQuestScrollFrame:SetPanelTemplate("Inset")
+    WorldMapQuestScrollFrame.Panel:Point("TOPLEFT", 0, 2)
+    WorldMapQuestScrollFrame.Panel:Point("BOTTOMRIGHT", 25, -3)
+    WorldMapQuestScrollFrame.spellTex = WorldMapQuestScrollFrame:CreateTexture(nil, 'ARTWORK')
+    WorldMapQuestScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
+    WorldMapQuestScrollFrame.spellTex:SetPoint("TOPLEFT", WorldMapQuestScrollFrame.Panel, 'TOPLEFT', 2, -2)
+    WorldMapQuestScrollFrame.spellTex:Size(520, 1033)
+    WorldMapQuestScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
+  end
+end
+
+local function StripQuestMapFrame()
+  WorldMapFrame.BorderFrame:RemoveTextures(true)
+  WorldMapFrame.BorderFrame.ButtonFrameEdge:SetTexture(0,0,0,0)
+  WorldMapFrame.BorderFrame.InsetBorderTop:SetTexture(0,0,0,0)
+  WorldMapFrame.BorderFrame.Inset:RemoveTextures(true)
+  WorldMapTitleButton:RemoveTextures(true)
+  WorldMapFrameNavBar:RemoveTextures(true)
+  WorldMapFrameNavBarOverlay:RemoveTextures(true)
+  QuestMapFrame:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame:RemoveTextures(true)
+
+  QuestMapFrame.DetailsFrame:SetPanelTemplate("Paper")
+
+  QuestMapFrame.DetailsFrame.CompleteQuestFrame:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame.CompleteQuestFrame.CompleteButton:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame.CompleteQuestFrame.CompleteButton:SetButtonTemplate()
+
+  QuestMapFrame.DetailsFrame.BackButton:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame.BackButton:SetButtonTemplate()
+
+  QuestMapFrame.DetailsFrame.AbandonButton:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame.AbandonButton:SetButtonTemplate()
+
+  QuestMapFrame.DetailsFrame.ShareButton:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame.ShareButton:SetButtonTemplate()
+
+  QuestMapFrame.DetailsFrame.TrackButton:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame.TrackButton:SetButtonTemplate()
+
+  QuestMapFrame.DetailsFrame.RewardsFrame:RemoveTextures(true)
+  QuestMapFrame.DetailsFrame.RewardsFrame:SetPanelTemplate("Paper")
+  QuestMapFrame.DetailsFrame.RewardsFrame:SetPanelColor("dark")
+
+  QuestScrollFrame:RemoveTextures(true)
+
+  local w,h = WorldMapFrame.UIElementsFrame:GetSize()
+  local underlay = CreateFrame("Frame", nil, WorldMapFrame)
+  underlay:Size(w,h)
+  underlay:SetAllPoints(WorldMapFrame.UIElementsFrame)
+  underlay:SetPanelTemplate("Blackout")
+
+  WorldMapFrame.UIElementsFrame:SetParent(underlay)
+
+  local detailWidth = QuestMapFrame.DetailsFrame.RewardsFrame:GetWidth()
+  QuestMapFrame.DetailsFrame:ClearAllPoints()
+  QuestMapFrame.DetailsFrame:SetPoint("TOPLEFT", underlay, "TOPRIGHT", 2, 0)
+  QuestMapFrame.DetailsFrame:SetWidth(detailWidth)
+
+  WorldMapFrameNavBar:ClearAllPoints()
+  WorldMapFrameNavBar:Point("TOPLEFT", WorldMapFrame.Panel, "TOPLEFT", 12, -22)
+  WorldMapFrameNavBar:SetPanelTemplate("Blackout")
+end
+
+local function WorldMap_OnShow()
+
+  if(SV.GameVersion >= 60000) then
+    --StripQuestMapFrame()
+    if WORLDMAP_SETTINGS.size == WORLDMAP_FULLMAP_SIZE then
+      WorldMap_FullView()
+    elseif WORLDMAP_SETTINGS.size == WORLDMAP_WINDOWED_SIZE then
+      WorldMap_SmallView()
+    end
+  else
+    WorldMapFrame:RemoveTextures()
+    if WORLDMAP_SETTINGS.size == WORLDMAP_FULLMAP_SIZE then
+      WorldMap_FullView()
+    elseif WORLDMAP_SETTINGS.size == WORLDMAP_WINDOWED_SIZE then
+      WorldMap_SmallView()
+    elseif WORLDMAP_SETTINGS.size == WORLDMAP_QUESTLIST_SIZE then
+      WorldMap_QuestView()
+    end
+  end
+
+  if not SV.db.SVMap.tinyWorldMap then
+    BlackoutWorld:SetTexture(0, 0, 0, 1)
+  else
+    BlackoutWorld:SetTexture(0,0,0,0)
+  end
+
+  WorldMapFrameAreaLabel:SetFontTemplate(nil, 50, "OUTLINE")
+  WorldMapFrameAreaLabel:SetShadowOffset(2, -2)
+  WorldMapFrameAreaLabel:SetTextColor(0.90, 0.8294, 0.6407)
+  WorldMapFrameAreaDescription:SetFontTemplate(nil, 40, "OUTLINE")
+  WorldMapFrameAreaDescription:SetShadowOffset(2, -2)
+  WorldMapFrameAreaPetLevels:SetFontTemplate(nil, 25, 'OUTLINE')
+  WorldMapZoneInfo:SetFontTemplate(nil, 27, "OUTLINE")
+  WorldMapZoneInfo:SetShadowOffset(2, -2)
+
+  if InCombatLockdown() then return end
+  AdjustMapLevel()
+end
+--[[
+##########################################################
+WORLDMAP STYLER
+##########################################################
+]]--
+local function WorldMapStyle()
+  if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.worldmap ~= true then return end
+
+  WorldMapFrame:SetFrameLevel(4)
+  STYLE:ApplyWindowStyle(WorldMapFrame, true, true)
+  WorldMapFrame.Panel:SetPanelTemplate("Blackout")
+
+  STYLE:ApplyScrollFrameStyle(WorldMapQuestScrollFrameScrollBar)
+  STYLE:ApplyScrollFrameStyle(WorldMapQuestDetailScrollFrameScrollBar, 4)
+  STYLE:ApplyScrollFrameStyle(WorldMapQuestRewardScrollFrameScrollBar, 4)
+
+  WorldMapDetailFrame:SetFrameLevel(6)
+  WorldMapDetailFrame:SetPanelTemplate("Blackout")
+
+  WorldMapArchaeologyDigSites:SetFrameLevel(8)
+
+  WorldMapFrameSizeDownButton:SetFrameLevel(999)
+  WorldMapFrameSizeUpButton:SetFrameLevel(999)
+  WorldMapFrameCloseButton:SetFrameLevel(999)
+
+  STYLE:ApplyCloseButtonStyle(WorldMapFrameCloseButton)
+  STYLE:ApplyArrowButtonStyle(WorldMapFrameSizeDownButton, "down")
+  STYLE:ApplyArrowButtonStyle(WorldMapFrameSizeUpButton, "up")
+
+  STYLE:ApplyDropdownStyle(WorldMapLevelDropDown)
+  STYLE:ApplyDropdownStyle(WorldMapZoneMinimapDropDown)
+  STYLE:ApplyDropdownStyle(WorldMapContinentDropDown)
+  STYLE:ApplyDropdownStyle(WorldMapZoneDropDown)
+  STYLE:ApplyDropdownStyle(WorldMapShowDropDown)
+
+  if(SV.GameVersion < 60000) then
+    WorldMapZoomOutButton:SetButtonTemplate()
+    WorldMapTrackQuest:SetCheckboxTemplate(true)
+    hooksecurefunc("WorldMapFrame_SetFullMapView", WorldMap_FullView)
+    hooksecurefunc("WorldMapFrame_SetQuestMapView", WorldMap_QuestView)
+  else
+    StripQuestMapFrame()
+  end
+
+  WorldMapFrame:HookScript("OnShow", WorldMap_OnShow)
+  hooksecurefunc("WorldMap_ToggleSizeUp", WorldMap_OnShow)
+  BlackoutWorld:SetParent(WorldMapFrame.Panel.Panel)
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(WorldMapStyle)
+
+--[[
+function ArchaeologyDigSiteFrame_OnUpdate()
+    WorldMapArchaeologyDigSites:DrawNone();
+    local numEntries = ArchaeologyMapUpdateAll();
+    for i = 1, numEntries do
+        local blobID = ArcheologyGetVisibleBlobID(i);
+        WorldMapArchaeologyDigSites:DrawBlob(blobID, true);
+    end
+end
+]]
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldstate.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldstate.lua
new file mode 100644
index 0000000..29182bd
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/worldstate.lua
@@ -0,0 +1,43 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+--]]
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+--[[
+##########################################################
+WORLDSTATE STYLER
+##########################################################
+]]--
+local function WorldStateStyle()
+	if SV.db[Schema].blizzard.enable ~= true or SV.db[Schema].blizzard.bgscore ~= true then return end
+	WorldStateScoreScrollFrame:RemoveTextures()
+	WorldStateScoreFrame:RemoveTextures()
+	WorldStateScoreFrame:SetPanelTemplate("Halftone")
+	STYLE:ApplyCloseButtonStyle(WorldStateScoreFrameCloseButton)
+	STYLE:ApplyScrollFrameStyle(WorldStateScoreScrollFrameScrollBar)
+	WorldStateScoreFrameInset:SetAlpha(0)
+	WorldStateScoreFrameLeaveButton:SetButtonTemplate()
+	for b = 1, 3 do
+		STYLE:ApplyTabStyle(_G["WorldStateScoreFrameTab"..b])
+	end
+end
+--[[
+##########################################################
+STYLE LOADING
+##########################################################
+]]--
+STYLE:SaveCustomStyle(WorldStateStyle)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
new file mode 100644
index 0000000..110e7c0
--- /dev/null
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua
@@ -0,0 +1,687 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack 	= _G.unpack;
+local select 	= _G.select;
+local pairs 	= _G.pairs;
+local error 	= _G.error;
+local pcall 	= _G.pcall;
+local tinsert 	= _G.tinsert;
+local string 	= _G.string;
+local table 	= _G.table;
+--[[ STRING METHODS ]]--
+local lower, upper, find = string.lower, string.upper, string.find;
+--[[ TABLE METHODS ]]--
+local twipe = table.wipe;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local SV = _G.SVUI;
+local L = SV.L;
+local STYLE = select(2, ...);
+local Schema = STYLE.Schema;
+local LSM = LibStub("LibSharedMedia-3.0")
+local NewHook = hooksecurefunc;
+--[[
+##########################################################
+ /$$$$$$$$/$$$$$$$   /$$$$$$  /$$      /$$ /$$$$$$$$
+| $$_____/ $$__  $$ /$$__  $$| $$$    /$$$| $$_____/
+| $$     | $$  \ $$| $$  \ $$| $$$$  /$$$$| $$
+| $$$$$  | $$$$$$$/| $$$$$$$$| $$ $$/$$ $$| $$$$$
+| $$__/  | $$__  $$| $$__  $$| $$  $$$| $$| $$__/
+| $$     | $$  \ $$| $$  | $$| $$\  $ | $$| $$
+| $$     | $$  | $$| $$  | $$| $$ \/  | $$| $$$$$$$$
+|__/     |__/  |__/|__/  |__/|__/     |__/|________/
+##########################################################
+]]--
+local levelDiff = 2
+
+local _hook_WindowLevel = function(self, level)
+	local adjustment = level - levelDiff;
+	if(adjustment < 0) then adjustment = 0 end
+	self.Panel:SetFrameLevel(adjustment)
+end
+
+function STYLE:ApplyFrameStyle(this, template, noStripping, fullStripping)
+	if(not this or (this and this.Panel)) then return end
+	if not noStripping then this:RemoveTextures(fullStripping) end
+	template = template or "Transparent"
+	this:SetPanelTemplate(template)
+end
+
+function STYLE:ApplyUnderlayStyle(this, template, noStripping, fullStripping)
+	if(not this or (this and this.Panel)) then return end
+	if not noStripping then this:RemoveTextures(fullStripping) end
+	template = template or "Transparent"
+    this:SetFixedPanelTemplate(template)
+end
+
+function STYLE:ApplyWindowStyle(this, action, fullStrip)
+	if(not this or (this and this.Panel)) then return end
+	local template = action and "Action" or "Halftone"
+	local baselevel = this:GetFrameLevel()
+	if(baselevel < 1) then
+		this:SetFrameLevel(1)
+	end
+
+	this:RemoveTextures(fullStrip)
+	this:SetPanelTemplate(template)
+end
+
+function STYLE:ApplyWindowHolder(this, fullStrip)
+	if(not this or (this and this.Panel)) then return end
+	local baselevel = this:GetFrameLevel()
+	if(baselevel < 1) then
+		this:SetFrameLevel(1)
+	end
+
+	this:RemoveTextures(fullStrip)
+	this:SetPanelTemplate("Blackout")
+end
+--[[
+##########################################################
+ /$$$$$$$  /$$   /$$ /$$$$$$$$/$$$$$$$$/$$$$$$  /$$   /$$
+| $$__  $$| $$  | $$|__  $$__/__  $$__/$$__  $$| $$$ | $$
+| $$  \ $$| $$  | $$   | $$     | $$ | $$  \ $$| $$$$| $$
+| $$$$$$$ | $$  | $$   | $$     | $$ | $$  | $$| $$ $$ $$
+| $$__  $$| $$  | $$   | $$     | $$ | $$  | $$| $$  $$$$
+| $$  \ $$| $$  | $$   | $$     | $$ | $$  | $$| $$\  $$$
+| $$$$$$$/|  $$$$$$/   | $$     | $$ |  $$$$$$/| $$ \  $$
+|_______/  \______/    |__/     |__/  \______/ |__/  \__/
+##########################################################
+]]--
+local Button_OnEnter = function(self)
+    self:SetBackdropColor(0.1, 0.8, 0.8)
+end
+
+local Button_OnLeave = function(self)
+    self:SetBackdropColor(unpack(SV.Media.color.default))
+end
+
+function STYLE:ApplyButtonStyle(this)
+	if not this then return end
+    this:SetButtonTemplate()
+end
+
+local ArrowButton_OnEnter = function(self)
+    self:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+
+local ArrowButton_OnLeave = function(self)
+    self:SetBackdropBorderColor(0,0,0,1)
+end
+
+function STYLE:ApplyArrowButtonStyle(this, direction, anchor)
+	if not this then return end
+	this:RemoveTextures()
+	this:SetButtonTemplate(nil, 1, -7, -7, nil, "green")
+	this:SetFrameLevel(this:GetFrameLevel() + 4)
+	this:SetNormalTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\MOVE-]] .. direction:upper())
+    if not this.hookedColors then
+        this:HookScript("OnEnter", ArrowButton_OnEnter)
+        this:HookScript("OnLeave", ArrowButton_OnLeave)
+        this.hookedColors = true
+    end
+    if anchor then
+    	this:SetPoint("TOPRIGHT", anchor, "TOPRIGHT", 2, 2)
+    end
+end
+
+--[[ CLOSE BUTTON ]]--
+local CloseButton_OnEnter = function(self)
+    self:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+
+local CloseButton_OnLeave = function(self)
+    self:SetBackdropBorderColor(0,0,0,1)
+end
+
+function STYLE:ApplyCloseButtonStyle(this, anchor)
+	if not this then return end
+	this:RemoveTextures()
+	this:SetButtonTemplate(nil, 1, -7, -7, nil, "red")
+	this:SetFrameLevel(this:GetFrameLevel() + 4)
+	this:SetNormalTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\CLOSE-BUTTON]])
+    if not this.hookedColors then
+        this:HookScript("OnEnter", CloseButton_OnEnter)
+        this:HookScript("OnLeave", CloseButton_OnLeave)
+        this.hookedColors = true
+    end
+    if anchor then
+    	this:SetPoint("TOPRIGHT", anchor, "TOPRIGHT", 2, 2)
+    end
+end
+
+--[[ ITEM BUTTON ]]--
+
+function STYLE:ApplyItemButtonStyle(frame, adjust, shrink, noScript)
+	if(not frame or (frame and frame.StyleHooked)) then return end
+
+	local link = frame:GetName()
+
+	frame:RemoveTextures()
+
+	if(not frame.Panel) then
+		if shrink then
+			frame:SetPanelTemplate("Button", true, 1, -2, -2)
+		else
+			frame:SetFixedPanelTemplate("Button")
+		end
+	end
+
+	if(link) then
+		local nameObject = _G[("%sName"):format(link)]
+		local subNameObject = _G[("%sSubName"):format(link)]
+		local arrowObject = _G[("%sFlyoutArrow"):format(link)]
+		local levelObject = _G[("%sLevel"):format(link)]
+		local iconObject = _G[("%sIcon"):format(link)] or _G[("%sIconTexture"):format(link)]
+		local countObject = _G[("%sCount"):format(link)]
+
+		if(iconObject and not frame.IconShadow) then
+			iconObject:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+
+			if adjust then
+				iconObject:FillInner(frame, 2, 2)
+			end
+
+			frame.IconShadow = CreateFrame("Frame", nil, frame)
+			frame.IconShadow:WrapOuter(iconObject)
+			frame.IconShadow:SetBasicPanel(0,0,0,0,true)
+
+			--iconObject:SetParent(frame.IconShadow)
+		end
+
+		if(not frame.Riser) then
+			local fg = CreateFrame("Frame", nil, frame)
+			fg:SetSize(120, 22)
+			fg:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", 0, -11)
+			fg:SetFrameLevel(frame:GetFrameLevel() + 1)
+			frame.Riser = fg
+		end
+
+		if(countObject) then
+			countObject:SetParent(frame.Riser)
+			countObject:SetAllPoints(frame.Riser)
+			countObject:SetFont(LSM:Fetch("font", SV.db.media.fonts.number), SV.db.media.fonts.size, "OUTLINE")
+			countObject:SetDrawLayer("ARTWORK", 7)
+		end
+
+		if(nameObject) then nameObject:SetParent(frame.Riser) end
+		if(subNameObject) then subNameObject:SetParent(frame.Riser) end
+		if(arrowObject) then arrowObject:SetParent(frame.Riser) end
+
+		if(levelObject) then
+			levelObject:SetParent(frame.Riser)
+			levelObject:SetFont(LSM:Fetch("font", SV.db.media.fonts.number), SV.db.media.fonts.size, "OUTLINE")
+			levelObject:SetDrawLayer("ARTWORK", 7)
+		end
+
+		if(not noScript) then
+			frame:HookScript("OnEnter", Button_OnEnter)
+    		frame:HookScript("OnLeave", Button_OnLeave)
+    	end
+	end
+
+	frame.StyleHooked = true
+end
+--[[
+##########################################################
+  /$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$  /$$       /$$
+ /$$__  $$ /$$__  $$| $$__  $$ /$$__  $$| $$      | $$
+| $$  \__/| $$  \__/| $$  \ $$| $$  \ $$| $$      | $$
+|  $$$$$$ | $$      | $$$$$$$/| $$  | $$| $$      | $$
+ \____  $$| $$      | $$__  $$| $$  | $$| $$      | $$
+ /$$  \ $$| $$    $$| $$  \ $$| $$  | $$| $$      | $$
+|  $$$$$$/|  $$$$$$/| $$  | $$|  $$$$$$/| $$$$$$$$| $$$$$$$$
+ \______/  \______/ |__/  |__/ \______/ |________/|________/
+##########################################################
+--]]
+function STYLE:ApplyScrollFrameStyle(this, scale, yOffset)
+	if(not this or (this and this.StyleHooked)) then return end
+
+	scale = scale or 5
+	local scrollName = this:GetName()
+	local bg, track, top, bottom, mid, upButton, downButton
+
+
+	bg = _G[("%sBG"):format(scrollName)]
+	if(bg) then bg:SetTexture(0,0,0,0) end
+
+	track = _G[("%sTrack"):format(scrollName)]
+	if(track) then track:SetTexture(0,0,0,0) end
+
+	top = _G[("%sTop"):format(scrollName)]
+	if(top) then top:SetTexture(0,0,0,0) end
+
+	bottom = _G[("%sBottom"):format(scrollName)]
+	if(bottom) then bottom:SetTexture(0,0,0,0) end
+
+	mid = _G[("%sMiddle"):format(scrollName)]
+	if(mid) then mid:SetTexture(0,0,0,0) end
+
+	upButton = _G[("%sScrollUpButton"):format(scrollName)]
+	downButton = _G[("%sScrollDownButton"):format(scrollName)]
+
+	if(upButton and downButton) then
+		upButton:RemoveTextures()
+		if(not upButton.icon) then
+			local upW, upH = upButton:GetSize()
+			STYLE:ApplyPaginationStyle(upButton)
+			SquareButton_SetIcon(upButton, "UP")
+			upButton:Size(upW + scale, upH + scale)
+			if(yOffset) then
+				local anchor, parent, relative, xBase, yBase = upButton:GetPoint()
+				local yAdjust = (yOffset or 0) + yBase
+				upButton:ClearAllPoints()
+				upButton:SetPoint(anchor, parent, relative, xBase, yAdjust)
+			end
+		end
+
+		downButton:RemoveTextures()
+		if(not downButton.icon) then
+			local dnW, dnH = downButton:GetSize()
+			STYLE:ApplyPaginationStyle(downButton)
+			SquareButton_SetIcon(downButton, "DOWN")
+			downButton:Size(dnW + scale, dnH + scale)
+			if(yOffset) then
+				local anchor, parent, relative, xBase, yBase = downButton:GetPoint()
+				local yAdjust = ((yOffset or 0) * -1) + yBase
+				downButton:ClearAllPoints()
+				downButton:SetPoint(anchor, parent, relative, xBase, yAdjust)
+			end
+		end
+
+		if(not this.ScrollBG) then
+			this.ScrollBG = CreateFrame("Frame", nil, this)
+			this.ScrollBG:SetPoint("TOPLEFT", upButton, "BOTTOMLEFT", 0, -1)
+			this.ScrollBG:SetPoint("BOTTOMRIGHT", downButton, "TOPRIGHT", 0, 1)
+			this.ScrollBG:SetBasicPanel()
+		end
+
+		if(this:GetThumbTexture()) then
+			this:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob")
+		end
+	end
+
+	this.StyleHooked = true
+end
+
+function STYLE:ApplyScrollBarStyle(this)
+	if(not this or (this and not this.GetOrientation)) then return end
+
+	if(this:GetOrientation() == "VERTICAL") then
+		this:SetWidth(12)
+	else
+		this:SetHeight(12)
+		for i=1, this:GetNumRegions() do
+			local child = select(i, this:GetRegions())
+			if(child and child:GetObjectType() == "FontString") then
+				local anchor, parent, relative, x, y = child:GetPoint()
+				if relative:find("BOTTOM") then
+					child:SetPoint(anchor, parent, relative, x, y - 4)
+				end
+			end
+		end
+	end
+
+	this:RemoveTextures()
+	this:SetBackdrop(nil)
+	this:SetFixedPanelTemplate("Component")
+    this.Panel:SetBackdropBorderColor(0.2,0.2,0.2)
+	this:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob")
+
+	this.StyleHooked = true
+end
+--[[
+##########################################################
+ /$$$$$$$$/$$$$$$  /$$$$$$$   /$$$$$$
+|__  $$__/$$__  $$| $$__  $$ /$$__  $$
+   | $$ | $$  \ $$| $$  \ $$| $$  \__/
+   | $$ | $$$$$$$$| $$$$$$$ |  $$$$$$
+   | $$ | $$__  $$| $$__  $$ \____  $$
+   | $$ | $$  | $$| $$  \ $$ /$$  \ $$
+   | $$ | $$  | $$| $$$$$$$/|  $$$$$$/
+   |__/ |__/  |__/|_______/  \______/
+##########################################################
+--]]
+local Tab_OnEnter = function(self)
+	self.backdrop:SetPanelColor("highlight")
+	self.backdrop:SetBackdropBorderColor(0.1, 0.8, 0.8)
+end
+
+local Tab_OnLeave = function(self)
+	self.backdrop:SetPanelColor("dark")
+	self.backdrop:SetBackdropBorderColor(0,0,0,1)
+end
+
+function STYLE:ApplyTabStyle(this, addBackground)
+	if(not this or (this and this.StyleHooked)) then return end
+
+	local tab = this:GetName();
+
+	if _G[tab.."Left"] then _G[tab.."Left"]:SetTexture(0,0,0,0) end
+	if _G[tab.."LeftDisabled"] then _G[tab.."LeftDisabled"]:SetTexture(0,0,0,0) end
+	if _G[tab.."Right"] then _G[tab.."Right"]:SetTexture(0,0,0,0) end
+	if _G[tab.."RightDisabled"] then _G[tab.."RightDisabled"]:SetTexture(0,0,0,0) end
+	if _G[tab.."Middle"] then _G[tab.."Middle"]:SetTexture(0,0,0,0) end
+	if _G[tab.."MiddleDisabled"] then _G[tab.."MiddleDisabled"]:SetTexture(0,0,0,0) end
+
+	if(this.GetHighlightTexture and this:GetHighlightTexture()) then
+		this:GetHighlightTexture():SetTexture(0,0,0,0)
+	end
+
+	this:RemoveTextures()
+
+	if(addBackground) then
+		local nTex = this:GetNormalTexture()
+
+		if(nTex) then
+			nTex:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+			nTex:FillInner()
+		end
+
+		this.pushed = true;
+		this.backdrop = CreateFrame("Frame", nil, this)
+		this.backdrop:WrapOuter(this,1,1)
+		this.backdrop:SetFrameLevel(0)
+		this.backdrop:SetBackdrop({
+			bgFile = [[Interface\BUTTONS\WHITE8X8]],
+	        tile = false,
+	        tileSize = 0,
+	        edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]],
+	        edgeSize = 3,
+	        insets = {
+	            left = 0,
+	            right = 0,
+	            top = 0,
+	            bottom = 0
+	        }
+	    });
+	    this.backdrop:SetBackdropColor(0,0,0,1)
+		this.backdrop:SetBackdropBorderColor(0,0,0,1)
+
+		local initialAnchor, anchorParent, relativeAnchor, xPosition, yPosition = this:GetPoint()
+		this:Point(initialAnchor, anchorParent, relativeAnchor, 1, yPosition)
+	else
+		this.backdrop = CreateFrame("Frame", nil, this)
+		this.backdrop:FillInner(this, 10, 3)
+		this.backdrop:SetFixedPanelTemplate("Component", true)
+		this.backdrop:SetPanelColor("dark")
+
+		if(this:GetFrameLevel() > 0) then
+			this.backdrop:SetFrameLevel(this:GetFrameLevel() - 1)
+		end
+	end
+
+	this:HookScript("OnEnter", Tab_OnEnter)
+	this:HookScript("OnLeave", Tab_OnLeave)
+
+    this.StyleHooked = true
+end
+--[[
+##########################################################
+ /$$$$$$$   /$$$$$$   /$$$$$$  /$$$$$$$$
+| $$__  $$ /$$__  $$ /$$__  $$| $$_____/
+| $$  \ $$| $$  \ $$| $$  \__/| $$
+| $$$$$$$/| $$$$$$$$| $$ /$$$$| $$$$$
+| $$____/ | $$__  $$| $$|_  $$| $$__/
+| $$      | $$  | $$| $$  \ $$| $$
+| $$      | $$  | $$|  $$$$$$/| $$$$$$$$
+|__/      |__/  |__/ \______/ |________/
+##########################################################
+--]]
+function STYLE:ApplyPaginationStyle(button, isVertical)
+	if(not button or (button and not button:GetName()) or (button and button.StyleHooked)) then return end
+
+	local bName = button:GetName()
+	local testName = bName:lower()
+	local leftDown = ((bName and testName:find('left')) or testName:find('prev') or testName:find('decrement')) or false
+
+	button:RemoveTextures()
+	button:SetNormalTexture("")
+	button:SetPushedTexture(0,0,0,0)
+	button:SetHighlightTexture(0,0,0,0)
+	button:SetDisabledTexture("")
+
+	button:SetButtonTemplate()
+	button:Size((button:GetWidth() - 7), (button:GetHeight() - 7))
+
+	if not button.icon then
+		button.icon = button:CreateTexture(nil,'ARTWORK')
+		button.icon:Size(13)
+		button.icon:SetPoint('CENTER')
+		button.icon:SetTexture([[Interface\Buttons\SquareButtonTextures]])
+		button.icon:SetTexCoord(0.02, 0.2, 0.02, 0.2)
+
+		button:SetScript('OnMouseDown',function(self)
+			if self:IsEnabled() then
+				self.icon:SetPoint("CENTER",-1,-1)
+			end
+		end)
+
+		button:SetScript('OnMouseUp',function(self)
+			self.icon:SetPoint("CENTER",0,0)
+		end)
+
+		button:SetScript('OnDisable',function(self)
+			SetDesaturation(self.icon, true)
+			self.icon:SetAlpha(0.5)
+		end)
+
+		button:SetScript('OnEnable',function(self)
+			SetDesaturation(self.icon, false)
+			self.icon:SetAlpha(1.0)
+		end)
+
+		if not button:IsEnabled() then
+			button:GetScript('OnDisable')(button)
+		end
+	end
+
+	if isVertical then
+		if leftDown then SquareButton_SetIcon(button,'UP') else SquareButton_SetIcon(button,'DOWN')end
+	else
+		if leftDown then SquareButton_SetIcon(button,'LEFT') else SquareButton_SetIcon(button,'RIGHT')end
+	end
+
+	button.StyleHooked = true
+end
+--[[
+##########################################################
+ /$$$$$$$  /$$$$$$$   /$$$$$$  /$$$$$$$
+| $$__  $$| $$__  $$ /$$__  $$| $$__  $$
+| $$  \ $$| $$  \ $$| $$  \ $$| $$  \ $$
+| $$  | $$| $$$$$$$/| $$  | $$| $$$$$$$/
+| $$  | $$| $$__  $$| $$  | $$| $$____/
+| $$  | $$| $$  \ $$| $$  | $$| $$
+| $$$$$$$/| $$  | $$|  $$$$$$/| $$
+|_______/ |__/  |__/ \______/ |__/
+ /$$$$$$$   /$$$$$$  /$$      /$$ /$$   /$$
+| $$__  $$ /$$__  $$| $$  /$ | $$| $$$ | $$
+| $$  \ $$| $$  \ $$| $$ /$$$| $$| $$$$| $$
+| $$  | $$| $$  | $$| $$/$$ $$ $$| $$ $$ $$
+| $$  | $$| $$  | $$| $$$$_  $$$$| $$  $$$$
+| $$  | $$| $$  | $$| $$$/ \  $$$| $$\  $$$
+| $$$$$$$/|  $$$$$$/| $$/   \  $$| $$ \  $$
+|_______/  \______/ |__/     \__/|__/  \__/
+##########################################################
+--]]
+local _hook_DropDownButton_SetPoint = function(self, _, _, _, _, _, breaker)
+	if not breaker then
+		self:Point("RIGHT", self.AnchorParent, "RIGHT", -10, 3, true)
+	end
+end
+
+function STYLE:ApplyDropdownStyle(this, width)
+	if(not this or (this and this.StyleHooked)) then return end
+
+	local ddName = this:GetName();
+	local ddText = _G[("%sText"):format(ddName)]
+	local ddButton = _G[("%sButton"):format(ddName)]
+
+	if not width then width = 155 end
+
+	this:RemoveTextures()
+	this:Width(width)
+
+	if(ddButton) then
+		if(ddText) then
+			ddText:SetPoint("RIGHT", ddButton, "LEFT", 2, 0)
+		end
+
+		ddButton:ClearAllPoints()
+		ddButton:Point("RIGHT", this, "RIGHT", -10, 3)
+		ddButton.AnchorParent = this
+
+		NewHook(ddButton, "SetPoint", _hook_DropDownButton_SetPoint)
+
+		STYLE:ApplyPaginationStyle(ddButton, true)
+
+		local currentLevel = this:GetFrameLevel()
+		if(currentLevel == 0) then
+			currentLevel = 1
+		end
+
+		local bg = CreateFrame("Frame", nil, this)
+		bg:Point("TOPLEFT", this, "TOPLEFT", 18, -2)
+		bg:Point("BOTTOMRIGHT", ddButton, "BOTTOMRIGHT", 2, -2)
+		bg:SetBasicPanel()
+		bg:SetBackdropBorderColor(0.2,0.2,0.2)
+		this.Panel = bg
+	end
+
+	this.StyleHooked = true
+end
+--[[
+##########################################################
+ /$$$$$$$$/$$$$$$   /$$$$$$  /$$    /$$$$$$$$/$$$$$$ /$$$$$$$
+|__  $$__/$$__  $$ /$$__  $$| $$   |__  $$__/_  $$_/| $$__  $$
+   | $$ | $$  \ $$| $$  \ $$| $$      | $$    | $$  | $$  \ $$
+   | $$ | $$  | $$| $$  | $$| $$      | $$    | $$  | $$$$$$$/
+   | $$ | $$  | $$| $$  | $$| $$      | $$    | $$  | $$____/
+   | $$ | $$  | $$| $$  | $$| $$      | $$    | $$  | $$
+   | $$ |  $$$$$$/|  $$$$$$/| $$$$$$$$| $$   /$$$$$$| $$
+   |__/  \______/  \______/ |________/|__/  |______/|__/
+##########################################################
+--]]
+local Tooltip_OnShow = function(self)
+	self:SetBackdrop({
+		bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]],
+		edgeFile = [[Interface\BUTTONS\WHITE8X8]],
+		tile = false,
+		edgeSize=1
+	})
+	self:SetBackdropColor(0,0,0,0.8)
+	self:SetBackdropBorderColor(0,0,0)
+end
+
+function STYLE:ApplyTooltipStyle(frame)
+	if(not frame or (frame and frame.StyleHooked)) then return end
+	frame:HookScript('OnShow', Tooltip_OnShow)
+	frame.StyleHooked = true
+end
+--[[
+##########################################################
+  /$$$$$$  /$$       /$$$$$$$$ /$$$$$$$  /$$$$$$$$
+ /$$__  $$| $$      | $$_____/| $$__  $$|__  $$__/
+| $$  \ $$| $$      | $$      | $$  \ $$   | $$
+| $$$$$$$$| $$      | $$$$$   | $$$$$$$/   | $$
+| $$__  $$| $$      | $$__/   | $$__  $$   | $$
+| $$  | $$| $$      | $$      | $$  \ $$   | $$
+| $$  | $$| $$$$$$$$| $$$$$$$$| $$  | $$   | $$
+|__/  |__/|________/|________/|__/  |__/   |__/
+##########################################################
+--]]
+function STYLE:ApplyAlertStyle(frame)
+	if(not frame or (frame and frame.StyleHooked)) then return end
+
+    local alertpanel = CreateFrame("Frame", nil, frame)
+    alertpanel:SetAllPoints(frame)
+    alertpanel:SetFrameLevel(frame:GetFrameLevel() - 1)
+    alertpanel:SetBackdrop({
+        bgFile = [[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BG]]
+    })
+    alertpanel:SetBackdropColor(0.8, 0.2, 0.2)
+
+    --[[ LEFT ]]--
+    local left = alertpanel:CreateTexture(nil, "BORDER")
+    left:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-LEFT]])
+    left:Point("TOPRIGHT", alertpanel,"TOPLEFT", 0, 0)
+    left:Point("BOTTOMRIGHT", alertpanel, "BOTTOMLEFT", 0, 0)
+    left:Width(frame:GetHeight())
+
+    --[[ RIGHT ]]--
+    local right = alertpanel:CreateTexture(nil, "BORDER")
+    right:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-RIGHT]])
+    right:SetVertexColor(0.8, 0.2, 0.2)
+    right:Point("TOPLEFT", alertpanel,"TOPRIGHT", -1, 0)
+    right:Point("BOTTOMLEFT", alertpanel, "BOTTOMRIGHT", -1, 0)
+    right:Width(frame:GetHeight() * 2)
+
+    --[[ TOP ]]--
+    local top = alertpanel:CreateTexture(nil, "BORDER")
+    top:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-TOP]])
+    top:Point("BOTTOMLEFT", alertpanel,"TOPLEFT", 0, 0)
+    top:Point("BOTTOMRIGHT", alertpanel, "TOPRIGHT", 0, 0)
+    top:Height(frame:GetHeight() * 0.5)
+
+    --[[ BOTTOM ]]--
+    local bottom = alertpanel:CreateTexture(nil, "BORDER")
+    bottom:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\Alert\ALERT-BOTTOM]])
+    bottom:Point("TOPLEFT", alertpanel,"BOTTOMLEFT", 0, 0)
+    bottom:Point("TOPRIGHT", alertpanel, "BOTTOMRIGHT", 0, 0)
+    bottom:Width(frame:GetHeight() * 0.5)
+
+    frame.StyleHooked = true
+end
+--[[
+##########################################################
+ /$$      /$$ /$$$$$$  /$$$$$$   /$$$$$$
+| $$$    /$$$|_  $$_/ /$$__  $$ /$$__  $$
+| $$$$  /$$$$  | $$  | $$  \__/| $$  \__/
+| $$ $$/$$ $$  | $$  |  $$$$$$ | $$
+| $$  $$$| $$  | $$   \____  $$| $$
+| $$\  $ | $$  | $$   /$$  \ $$| $$    $$
+| $$ \/  | $$ /$$$$$$|  $$$$$$/|  $$$$$$/
+|__/     |__/|______/ \______/  \______/
+##########################################################
+--]]
+function STYLE:ApplyEditBoxStyle(this, width, height)
+	if not this then return end
+	this:RemoveTextures(true)
+    this:SetEditboxTemplate()
+    if width then this:Width(width) end
+	if height then this:Height(height) end
+end
+
+function STYLE:ApplyTextureStyle(this)
+	if not this then return end
+	this:SetTexCoord(0.1, 0.9, 0.1, 0.9)
+	local parent = this:GetParent()
+	if(parent) then
+		this:FillInner(parent, 1, 1)
+	end
+end
+
+function STYLE:ApplyRotateStyle(this)
+	-- Do stuff
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/Bindings.xml b/Interface/AddOns/SVUI_TrackOMatic/Bindings.xml
new file mode 100644
index 0000000..3295b0f
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/Bindings.xml
@@ -0,0 +1,5 @@
+<Bindings>
+  <Binding name="SVUITRACK_DOODAD" category="ADDONS" header="SVUITRACK" runOnUp="false">
+    SVUIToggleTrackingDoodad()
+  </Binding>
+</Bindings>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/License.txt b/Interface/AddOns/SVUI_TrackOMatic/License.txt
new file mode 100644
index 0000000..6832ca7
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/License.txt
@@ -0,0 +1,34 @@
+###############################################################################
+#_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+# ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+#  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+#   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+#    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+#     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+#      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+#       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+#        ___\///////////___________\///___________\/////////_____\///////////_#
+###############################################################################
+# S U P E R - V I L L A I N - U I   By: Munglunch                             #
+###############################################################################
+
+SVUI_TrackOMatic License Copyright 2014 http://wowinterface.com
+
+The contents of this addon, excluding third-party resources, are
+copyrighted to their authors with all rights reserved.
+
+Authors of this addon hereby grant you the following rights:
+
+1. 	You may NOT make any modification inside this addon. If you want
+	to create your own edited version, please create it from outside.
+
+2. 	Do not modify the name of this addon, including the addon folders.
+
+3. 	This copyright notice shall be included in all copies or substantial
+	portions of the Software.
+
+All rights not explicitly addressed in this license are reserved by
+the copyright holders.
+
+You can write Munglunch at Wowinterface.com for reporting abuse / bugs,
+or regarding grants allowed for this license.
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/Loader.lua b/Interface/AddOns/SVUI_TrackOMatic/Loader.lua
new file mode 100644
index 0000000..d8875c7
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/Loader.lua
@@ -0,0 +1,73 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+local AddonName, AddonObject = ...
+
+assert(LibSuperVillain, AddonName .. " requires LibSuperVillain")
+
+local PLUGIN = LibSuperVillain:NewPlugin(AddonName, AddonObject)
+
+local Schema = PLUGIN.Schema;
+local SV = _G["SVUI"];
+local L = SV.L
+--[[
+##########################################################
+CONFIG DATA
+##########################################################
+]]--
+SV.configs[Schema] = {
+    ["enable"] = true,
+    ["size"] = 75,
+    ["fontSize"] = 12,
+    ["groups"] = true,
+    ["proximity"] = false,
+}
+--[[
+##########################################################
+CONFIG OPTIONS
+##########################################################
+]]--
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["groups"] = {
+    order = 3,
+    name = L["GPS"],
+    desc = L["Use group frame GPS elements"],
+    type = "toggle",
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["proximity"] = {
+    order = 4,
+    name = L["GPS Proximity"],
+    desc = L["Only point to closest low health unit"],
+    type = "toggle",
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
+}
+
+SV.Options.args.plugins.args.pluginOptions.args[Schema].args["fontSize"] = {
+    order = 5,
+    name = L["Font Size"],
+    desc = L["Set the font size of the range text"],
+    type = "range",
+    min = 6,
+    max = 22,
+    step = 1,
+    get = function(key) return SV.db[Schema][key[#key]] end,
+    set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
+}
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua
new file mode 100644
index 0000000..19ca479
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.lua
@@ -0,0 +1,218 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+local pairs     = _G.pairs;
+local type      = _G.type;
+local tostring  = _G.tostring;
+local tonumber  = _G.tonumber;
+local tinsert   = _G.tinsert;
+local tremove   = _G.tremove;
+local string    = _G.string;
+local math      = _G.math;
+local bit       = _G.bit;
+local table     = _G.table;
+--[[ STRING METHODS ]]--
+local format, find, lower, match = string.format, string.find, string.lower, string.match;
+--[[ MATH METHODS ]]--
+local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;  -- Basic
+local fmod, modf, sqrt = math.fmod, math.modf, math.sqrt;   -- Algebra
+local atan2, cos, deg, rad, sin = math.atan2, math.cos, math.deg, math.rad, math.sin;  -- Trigonometry
+local min, huge, random = math.min, math.huge, math.random;  -- Uncommon
+local sqrt2, max = math.sqrt(2), math.max;
+--[[ TABLE METHODS ]]--
+local tcopy, twipe, tsort, tconcat, tdump = table.copy, table.wipe, table.sort, table.concat, table.dump;
+--[[ BINARY METHODS ]]--
+local band = bit.band;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local PLUGIN = select(2, ...)
+local Schema = PLUGIN.Schema;
+local VERSION = PLUGIN.Version;
+
+local SV = _G["SVUI"];
+local L = SV.L;
+--[[
+##########################################################
+LOCALS AND BINDING
+##########################################################
+]]--
+BINDING_HEADER_SVUITRACK = "Supervillain UI: Track-O-Matic";
+BINDING_NAME_SVUITRACK_DOODAD = "Toggle Tracking Device";
+
+local NewHook = hooksecurefunc;
+local playerGUID = UnitGUID('player')
+local classColor = RAID_CLASS_COLORS
+--[[
+##########################################################
+BUILD
+##########################################################
+]]--
+function SVUIToggleTrackingDoodad()
+    if(not SVUI_TrackingDoodad.Trackable) then
+        SVUI_TrackingDoodad.Trackable = true
+        if((UnitInParty("target") or UnitInRaid("target")) and not UnitIsUnit("target", "player")) then
+            SVUI_TrackingDoodad:Show()
+        end
+        SV:AddonMessage("Tracking Device |cff00FF00Enabled|r")
+    else
+        SVUI_TrackingDoodad.Trackable = false
+        SVUI_TrackingDoodad:Hide()
+        SV:AddonMessage("Tracking Device |cffFF0000Disabled|r")
+    end
+end
+--[[
+##########################################################
+MAIN MOVABLE TRACKER
+##########################################################
+]]--
+function PLUGIN:PLAYER_TARGET_CHANGED()
+    if not SVUI_TrackingDoodad then return end
+    if((UnitInParty("target") or UnitInRaid("target")) and not UnitIsUnit("target", "player")) then
+        SVUI_TrackingDoodad.Trackable = true
+        SVUI_TrackingDoodad:Show()
+    else
+        SVUI_TrackingDoodad.Trackable = false
+    end
+end
+
+local Rotate_Arrow = function(self, angle)
+    local radius, ULx, ULy, LLx, LLy, URx, URy, LRx, LRy
+
+    radius = angle - 0.785398163
+    URx = 0.5 + cos(radius) / sqrt2
+    URy =  0.5 + sin(radius) / sqrt2
+    -- (-1)
+    radius = angle + 0.785398163
+    LRx = 0.5 + cos(radius) / sqrt2
+    LRy =  0.5 + sin(radius) / sqrt2
+    -- 1
+    radius = angle + 2.35619449
+    LLx = 0.5 + cos(radius) / sqrt2
+    LLy =  0.5 + sin(radius) / sqrt2
+    -- 3
+    radius = angle + 3.92699082
+    ULx = 0.5 + cos(radius) / sqrt2
+    ULy =  0.5 + sin(radius) / sqrt2
+    -- 5
+
+    self.Arrow:SetTexCoord(ULx, ULy, LLx, LLy, URx, URy, LRx, LRy);
+end
+
+local TargetFrame_OnChange = function()
+    if not SVUI_TrackingDoodad then return end
+    if((UnitInParty("target") or UnitInRaid("target")) and not UnitIsUnit("target", "player")) then
+        SVUI_TrackingDoodad.Trackable = true
+        SVUI_TrackingDoodad:Show()
+    else
+        SVUI_TrackingDoodad.Trackable = false
+    end
+end
+
+local Tracker_OnUpdate = function(self, elapsed)
+    if self.elapsed and self.elapsed > (self.throttle or 0.02) then
+        if(self.Trackable) then
+            local distance, angle = self.Track("target", true)
+            if not angle then
+                self.throttle = 4
+                self.Arrow:SetAlpha(0)
+                self.Radar:SetVertexColor(0.8,0.1,0.1,0.15)
+                self.BG:SetVertexColor(1,0,0,0.15)
+            else
+                self.throttle = 0.02
+                local range = floor(tonumber(distance))
+                self:Spin(angle)
+                if(range > 100) then
+                    self.Arrow:SetVertexColor(1,0.1,0.1,0.4)
+                    self.Radar:SetVertexColor(0.8,0.1,0.1,0.25)
+                    self.BG:SetVertexColor(0.8,0.4,0.1,0.25)
+                elseif(range > 40) then
+                    self.Arrow:SetVertexColor(1,0.8,0.1,0.6)
+                    self.Radar:SetVertexColor(0.8,0.8,0.1,0.5)
+                    self.BG:SetVertexColor(0.4,0.8,0.1,0.5)
+                elseif(range > 5) then
+                    self.Arrow:SetVertexColor(0.1,1,0.8,0.9)
+                    self.Radar:SetVertexColor(0.1,0.8,0.8,0.75)
+                    self.BG:SetVertexColor(0.1,0.8,0.1,0.75)
+                end
+                self.Arrow:SetAlpha(1)
+                self.Range:SetText(range)
+            end
+        else
+            self:Hide()
+        end
+        self.elapsed = 0
+    else
+        self.elapsed = (self.elapsed or 0) + elapsed
+    end
+end
+--[[
+##########################################################
+CORE
+##########################################################
+]]--
+function PLUGIN:ReLoad()
+    if(not SV.db[Schema].enable) then return end
+
+    local frameSize = SV.db[Schema].size or 70
+    local arrowSize = frameSize * 0.5
+    local fontSize = SV.db[Schema].fontSize or 14
+    local frame = _G["SVUI_TrackingDoodad"]
+
+    frame:SetSize(frameSize, frameSize)
+    frame.Arrow:SetSize(arrowSize, arrowSize)
+    frame.Range:SetFont(SV.Media.font.roboto, fontSize, "OUTLINE")
+end
+
+function PLUGIN:Load()
+    if(not SV.db[Schema].enable) then return end
+
+    local _TRACKER = SVUI_TrackingDoodad
+    local _TARGET = SVUI_Target
+
+    if(_TRACKER) then
+
+        _TRACKER.Border:SetGradient(unpack(SV.Media.gradient.special))
+        _TRACKER.Arrow:SetVertexColor(0.1, 0.8, 0.8)
+        _TRACKER.Range:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
+        _TRACKER.Range:SetTextColor(1, 1, 1, 0.75)
+        _TRACKER.Spin = Rotate_Arrow
+        _TRACKER.Track = Triangulate
+
+        _TRACKER:RegisterForDrag("LeftButton");
+        _TRACKER:SetScript("OnUpdate", Tracker_OnUpdate)
+
+        SV.Animate:Orbit(_TRACKER.Radar, 8, true)
+
+        _TRACKER:Hide()
+
+        if(_TARGET) then
+            _TRACKER:SetParent(_TARGET)
+            _TRACKER:SetPoint("LEFT", _TARGET, "RIGHT", 2, 0)
+            _TARGET:HookScript("OnShow", TargetFrame_OnChange)
+        end
+
+        self:RegisterEvent("PLAYER_TARGET_CHANGED")
+    end
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc
new file mode 100644
index 0000000..10c2ffa
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.toc
@@ -0,0 +1,13 @@
+## Interface: 60000
+## Author: Munglunch
+## Version: 4.8
+## Title: |cffFF9900SVUI |r|cffFFEF00Track-O-Matic|r
+## Notes: Supervillain UI [|cff9911FFRaid & Party Member Tracking|r].
+## RequiredDeps: SVUI
+## LoadOnDemand: 1
+## X-Email: munglunch@gmail.com
+## X-oUF: oUF_Villain
+## X-SVUI-Header: Track-O-Matic
+## X-SVUI-Schema: TrackOMatic
+
+SVUI_TrackOMatic.xml
diff --git a/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.xml b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.xml
new file mode 100644
index 0000000..ffe98db
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/SVUI_TrackOMatic.xml
@@ -0,0 +1,46 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Frame name="SVUI_TrackingDoodad" movable="true" frameStrata="DIALOG">
+        <Size x="70" y="70"/>
+        <Anchors>
+            <Anchor point="CENTER" relativeTo="UIParent" relativePoint="CENTER"/>
+        </Anchors>
+        <Layers>
+            <Layer level="BACKGROUND">
+                <Texture parentKey="BG" setAllPoints="true" file="Interface\AddOns\SVUI_TrackOMatic\artwork\DOODAD-BG"/>
+            </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="Border" setAllPoints="true" file="Interface\AddOns\SVUI_TrackOMatic\artwork\DOODAD-BORDER"/>
+                <Texture parentKey="Arrow" file="Interface\AddOns\SVUI_TrackOMatic\artwork\DOODAD-ARROW">
+                    <Size x="35" y="35"/>
+                    <Anchors>
+                        <Anchor point="CENTER" relativeTo="$parent" relativePoint="CENTER"/>
+                    </Anchors>
+                </Texture>
+            </Layer>
+            <Layer level="OVERLAY">
+                <Texture parentKey="Radar" setAllPoints="true" file="Interface\AddOns\SVUI_TrackOMatic\artwork\DOODAD-RADAR"/>
+            </Layer>
+            <Layer level="ARTWORK">
+                <FontString parentKey="Range" inherits="GameFontNormal">
+                    <Anchors>
+                        <Anchor point="TOP" relativeTo="$parent" relativePoint="BOTTOM"/>
+                    </Anchors>
+                </FontString>
+            </Layer>
+        </Layers>
+        <Scripts>
+            <OnDragStart>
+                _G["SVUI_TrackingDoodad"].moving = true;
+                _G["SVUI_TrackingDoodad"]:StartMoving();
+            </OnDragStart>
+            <OnDragStop>
+                _G["SVUI_TrackingDoodad"].moving = nil;
+                _G["SVUI_TrackingDoodad"]:StopMovingOrSizing();
+            </OnDragStop>
+        </Scripts>
+    </Frame>
+
+    <Script file='Loader.lua'/>
+    <Script file='SVUI_TrackOMatic.lua'/>
+    <Include file='components\_load.xml'/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-ARROW.blp b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-ARROW.blp
new file mode 100644
index 0000000..b20f63d
Binary files /dev/null and b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-ARROW.blp differ
diff --git a/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BG.blp b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BG.blp
new file mode 100644
index 0000000..7f60ca2
Binary files /dev/null and b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BG.blp differ
diff --git a/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BORDER.blp b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BORDER.blp
new file mode 100644
index 0000000..c69bd6a
Binary files /dev/null and b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-BORDER.blp differ
diff --git a/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-RADAR.blp b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-RADAR.blp
new file mode 100644
index 0000000..53d920b
Binary files /dev/null and b/Interface/AddOns/SVUI_TrackOMatic/artwork/DOODAD-RADAR.blp differ
diff --git a/Interface/AddOns/SVUI_TrackOMatic/artwork/GPS-ARROW.blp b/Interface/AddOns/SVUI_TrackOMatic/artwork/GPS-ARROW.blp
new file mode 100644
index 0000000..9fb0a32
Binary files /dev/null and b/Interface/AddOns/SVUI_TrackOMatic/artwork/GPS-ARROW.blp differ
diff --git a/Interface/AddOns/SVUI_TrackOMatic/components/_load.xml b/Interface/AddOns/SVUI_TrackOMatic/components/_load.xml
new file mode 100644
index 0000000..de680a2
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/components/_load.xml
@@ -0,0 +1,4 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file="triangulate.lua"/>
+	<Script file="unitframe_gps.lua"/>
+</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/components/triangulate.lua b/Interface/AddOns/SVUI_TrackOMatic/components/triangulate.lua
new file mode 100644
index 0000000..576b5f7
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/components/triangulate.lua
@@ -0,0 +1,448 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+local pairs     = _G.pairs;
+local type      = _G.type;
+local tostring  = _G.tostring;
+local tonumber  = _G.tonumber;
+local tinsert   = _G.tinsert;
+local tremove   = _G.tremove;
+local string    = _G.string;
+local math      = _G.math;
+local bit       = _G.bit;
+local table     = _G.table;
+--[[ STRING METHODS ]]--
+local format, find, lower, match = string.format, string.find, string.lower, string.match;
+--[[ MATH METHODS ]]--
+local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;  -- Basic
+local fmod, modf, sqrt = math.fmod, math.modf, math.sqrt;   -- Algebra
+local atan2, cos, deg, rad, sin = math.atan2, math.cos, math.deg, math.rad, math.sin;  -- Trigonometry
+local min, huge, random = math.min, math.huge, math.random;  -- Uncommon
+local sqrt2, max = math.sqrt(2), math.max;
+--[[ TABLE METHODS ]]--
+local tcopy, twipe, tsort, tconcat, tdump = table.copy, table.wipe, table.sort, table.concat, table.dump;
+--[[ BINARY METHODS ]]--
+local band = bit.band;
+--[[
+##########################################################
+LOCALS
+##########################################################
+]]--
+local radian90 = (3.141592653589793 / 2) * -1;
+local WORLDMAPAREA_DEFAULT_DUNGEON_FLOOR_IS_TERRAIN = 0x00000004
+local WORLDMAPAREA_VIRTUAL_CONTINENT = 0x00000008
+local DUNGEONMAP_MICRO_DUNGEON = 0x00000001
+--[[
+##########################################################
+LOCALIZED BLIZZARD FUNCTIONS
+##########################################################
+]]--
+local GetMapInfo = GetMapInfo
+local GetMapZones = GetMapZones
+local GetPlayerFacing = GetPlayerFacing
+local GetCurrentMapZone = GetCurrentMapZone
+local GetCurrentMapAreaID = GetCurrentMapAreaID
+local GetPlayerMapPosition = GetPlayerMapPosition
+local GetNumDungeonMapLevels = GetNumDungeonMapLevels
+local GetCurrentMapContinent = GetCurrentMapContinent
+local GetWorldMapTransformInfo = GetWorldMapTransformInfo
+--[[
+##########################################################
+MAPPING DATA STORAGE
+##########################################################
+]]--
+local DUNGEON_DATA = {};
+local GEOGRAPHICAL_DATA = {
+    [0] = {
+        height = 22266.74312,
+        system = -1,
+        width = 33400.121,
+        xOffset = 0,
+        yOffset = 0,
+        [1] = {
+            xOffset = -10311.71318,
+            yOffset = -19819.33898,
+            scale = 0.56089997291565,
+        },
+        [0] = {
+            xOffset = -48226.86993,
+            yOffset = -16433.90283,
+            scale = 0.56300002336502,
+        },
+        [571] = {
+            xOffset = -29750.89905,
+            yOffset = -11454.50802,
+            scale = 0.5949000120163,
+        },
+        [870] = {
+            xOffset = -27693.71178,
+            yOffset = -29720.0585,
+            scale = 0.65140002965927,
+        },
+    },
+}
+
+
+do
+    local backup_cache, temp_cache, swap_cache = {}, {}, {};
+
+    local meta_backup = {
+        xOffset = 0,
+        height = 1,
+        yOffset = 0,
+        width = 1,
+        __index = function(t, k)
+            if(type(k) == "number") then
+                return backup_cache;
+            else
+                return rawget(backup_cache, k);
+            end
+        end
+    };
+
+    setmetatable(backup_cache, meta_backup);
+    setmetatable(GEOGRAPHICAL_DATA, backup_cache);
+
+    local transforms = GetWorldMapTransforms()
+
+    for _,id in ipairs(transforms) do
+        local terrain, newterrain, _, _, transformMinY, transformMaxY, transformMinX, transformMaxX, offsetY, offsetX = GetWorldMapTransformInfo(id)
+        if ( offsetX ~= 0 or offsetY ~= 0 ) then
+            swap_cache[id] = {
+                terrain = terrain,
+                newterrain = newterrain,
+                BRy = -transformMinY,
+                TLy = -transformMaxY,
+                BRx = -transformMinX,
+                TLx = -transformMaxX,
+                offsetY = offsetY,
+                offsetX = offsetX,
+            }
+        end
+    end
+
+    local function SetTempData()
+        local map = {}
+        local mapName = GetMapInfo();
+        local id = GetCurrentMapAreaID();
+        local numFloors = GetNumDungeonMapLevels();
+        map.mapName = mapName;
+        map.cont = (GetCurrentMapContinent()) or -100;
+        map.zone = (GetCurrentMapZone()) or -100;
+        map.numFloors = numFloors;
+        local _, TLx, TLy, BRx, BRy = GetCurrentMapZone();
+        if(TLx and TLy and BRx and BRy and (TLx~=0 or TLy~=0 or BRx~=0 or BRy~=0)) then
+            map[0] = {};
+            map[0].TLx = TLx;
+            map[0].TLy = TLy;
+            map[0].BRx = BRx;
+            map[0].BRy = BRy;
+        end
+        if(not map[0] and numFloors == 0 and (GetCurrentMapDungeonLevel()) == 1) then
+            numFloors = 1;
+            map.hiddenFloor = true;
+        end
+        if(numFloors > 0) then
+            for i = 1, numFloors do
+                SetDungeonMapLevel(i);
+                local _, TLx, TLy, BRx, BRy = GetCurrentMapDungeonLevel();
+                if(TLx and TLy and BRx and BRy) then
+                    map[i] = {};
+                    map[i].TLx = TLx;
+                    map[i].TLy = TLy;
+                    map[i].BRx = BRx;
+                    map[i].BRy = BRy;
+                end
+            end
+        end
+
+        temp_cache[id] = map;
+    end
+
+    local continent_map_data = { GetMapContinents() };
+
+    for continent in pairs(continent_map_data) do
+        local zone_map_data = { GetMapZones(continent) };
+        continent_map_data[continent] = zone_map_data;
+        local pass, error = pcall(SetMapZoom, continent, 0)
+        if(pass) then
+            zone_map_data[0] = GetCurrentMapAreaID();
+            SetTempData();
+            for zone in ipairs(zone_map_data) do
+                SetMapZoom(continent, zone);
+                zone_map_data[zone] = GetCurrentMapAreaID();
+                SetTempData();
+            end
+        end
+    end
+
+    local area_maps = GetAreaMaps()
+
+    for _,id in ipairs(area_maps) do
+        if((not temp_cache[id]) and SetMapByID(id)) then
+            SetTempData();
+        end
+    end
+
+    for id, map in pairs(temp_cache) do
+        local terrain, _, _, _, _, _, _, _, _, flags = GetAreaMapInfo(id)
+        local origin = terrain;
+        local data = GEOGRAPHICAL_DATA[id];
+        if not (data) then data = {}; end
+        if(map.numFloors > 0 or map.hiddenFloor) then
+            for f, coords in pairs(map) do
+                if(type(f) == "number" and f > 0) then
+                    if not (data[f]) then
+                        data[f] = {};
+                    end
+                    local flr = data[f]
+                    local TLx, TLy, BRx, BRy = -coords.BRx, -coords.BRy, -coords.TLx, -coords.TLy
+                    if not (flr.width) then
+                        flr.width = BRx - TLx
+                    end
+                    if not (flr.height) then
+                        flr.height = BRy - TLy
+                    end
+                    if not (flr.xOffset) then
+                        flr.xOffset = TLx
+                    end
+                    if not (flr.yOffset) then
+                        flr.yOffset = TLy
+                    end
+                end
+            end
+            for f = 1, map.numFloors do
+                if not (data[f]) then
+                    if(f == 1 and map[0] and map[0].TLx and map[0].TLy and map[0].BRx and map[0].BRy and
+                      band(flags, WORLDMAPAREA_DEFAULT_DUNGEON_FLOOR_IS_TERRAIN) == WORLDMAPAREA_DEFAULT_DUNGEON_FLOOR_IS_TERRAIN) then
+                        data[f] = {};
+                        local flr = data[f]
+                        local coords = map[0]
+                        local TLx, TLy, BRx, BRy = -coords.TLx, -coords.TLy, -coords.BRx, -coords.BRy
+                        flr.width = BRx - TLx
+                        flr.height = BRy - TLy
+                        flr.xOffset = TLx
+                        flr.yOffset = TLy
+                    end
+                end
+            end
+            if(map.hiddenFloor) then
+                data.width = data[1].width
+                data.height = data[1].height
+                data.xOffset = data[1].xOffset
+                data.yOffset = data[1].yOffset
+            end
+        else
+            local coords = map[0]
+            if(coords ~= nil) then
+                local TLx, TLy, BRx, BRy = -coords.TLx, -coords.TLy, -coords.BRx, -coords.BRy
+                for _, trans in pairs(swap_cache) do
+                    if(trans.terrain == terrain) then
+                        if((trans.TLx < TLx and BRx < trans.BRx) and (trans.TLy < TLy and BRy < trans.BRy)) then
+                            TLx = TLx - trans.offsetX;
+                            BRx = BRx - trans.offsetX;
+                            BRy = BRy - trans.offsetY;
+                            TLy = TLy - trans.offsetY;
+                            terrain = trans.newterrain;
+                            break;
+                        end
+                    end
+                end
+                if not (TLx==0 and TLy==0 and BRx==0 and BRy==0) then
+                    if not (TLx < BRx) then
+                        printError("Bad x-axis Orientation (Zone): ", id, TLx, BRx);
+                    end
+                    if not (TLy < BRy) then
+                        printError("Bad y-axis Orientation (Zone): ", id, TLy, BRy);
+                    end
+                end
+                if not (data.width) then
+                    data.width = BRx - TLx
+                end
+                if not (data.height) then
+                    data.height = BRy - TLy
+                end
+                if not (data.xOffset) then
+                    data.xOffset = TLx
+                end
+                if not (data.yOffset) then
+                    data.yOffset = TLy
+                end
+            end
+        end
+
+        if(not next(data, nil)) then
+            data = { xOffset = 0, height = 1, yOffset = 0, width = 1 };
+        end
+
+        if(not data.origin) then
+            data.origin = origin;
+        end
+
+        GEOGRAPHICAL_DATA[id] = data;
+
+        if(data and data ~= backup_cache) then
+            if(not data.system) then
+                data.system = terrain;
+            end
+            if(map.cont > 0 and map.zone > 0) then
+                DUNGEON_DATA[terrain] = {}
+            end
+            setmetatable(data, backup_cache);
+        end
+    end
+end
+
+local function GetCoordinates(map, mapFloor, x, y)
+    if not map then return end
+    if (mapFloor ~= 0) then
+        map = rawget(map, mapFloor) or DUNGEON_DATA[map.origin][mapFloor];
+    end
+    x = x * map.width + map.xOffset;
+    y = y * map.height + map.yOffset;
+    return x, y;
+end
+
+local function GetDistance(map1, floor1, x1, y1, map2, floor2, x2, y2)
+    if not (map1 and map2) then return end
+    floor1 = floor1 or min(#GEOGRAPHICAL_DATA[map1], 1);
+    floor2 = floor2 or min(#GEOGRAPHICAL_DATA[map2], 1);
+    local dist, xDelta, yDelta, angle;
+    if(map1 == map2 and floor1 == floor2) then
+        local chunk = GEOGRAPHICAL_DATA[map1];
+        local tmp = chunk
+        if(floor1 ~= 0) then
+            tmp = rawget(chunk, floor1)
+        end
+        local w,h = 1,1
+        if(not tmp) then
+            if(DUNGEON_DATA[chunk.origin] and DUNGEON_DATA[chunk.origin][floor1]) then
+                chunk = DUNGEON_DATA[chunk.origin][floor1]
+                w = chunk.width
+                h = chunk.height
+            else
+                w = 1
+                h = 1
+            end
+        else
+            w = chunk.width
+            h = chunk.height
+        end
+        xDelta = (x2 - x1) * (w or 1);
+        yDelta = (y2 - y1) * (h or 1);
+    else
+        local map1 = GEOGRAPHICAL_DATA[map1];
+        local map2 = GEOGRAPHICAL_DATA[map2];
+        if(map1.system == map2.system) then
+            x1, y1 = GetCoordinates(map1, floor1, x1, y1);
+            x2, y2 = GetCoordinates(map2, floor2, x2, y2);
+            xDelta = (x2 - x1);
+            yDelta = (y2 - y1);
+        else
+            local s1 = map1.system;
+            local s2 = map2.system;
+            if((map1==0 or GEOGRAPHICAL_DATA[0][s1]) and (map2 == 0 or GEOGRAPHICAL_DATA[0][s2])) then
+                x1, y1 = GetCoordinates(map1, floor1, x1, y1);
+                x2, y2 = GetCoordinates(map2, floor2, x2, y2);
+                if(map1 ~= 0) then
+                    local cont1 = GEOGRAPHICAL_DATA[0][s1];
+                    x1 = (x1 - cont1.xOffset) * cont1.scale;
+                    y1 = (y1 - cont1.yOffset) * cont1.scale;
+                end
+                if(map2 ~= 0) then
+                    local cont2 = GEOGRAPHICAL_DATA[0][s2];
+                    x2 = (x2 - cont2.xOffset) * cont2.scale;
+                    y2 = (y2 - cont2.yOffset) * cont2.scale;
+                end
+                xDelta = x2 - x1;
+                yDelta = y2 - y1;
+            end
+        end
+    end
+
+    if(xDelta and yDelta) then
+        local playerAngle = GetPlayerFacing()
+        dist = sqrt(xDelta * xDelta + yDelta * yDelta);
+        angle = (radian90 - playerAngle) - atan2(yDelta, xDelta)
+    end
+
+    return dist, angle;
+end
+
+function Triangulate(unit, noMapLocation)
+    if(WorldMap and WorldMap:IsShown()) then return end
+
+    local plot1, plot2, plot3, plot4, plot5, plot6, plot7, plot8;
+
+    plot3, plot4 = GetPlayerMapPosition("player");
+
+    if(plot3 <= 0 and plot4 <= 0) then
+        SetMapToCurrentZone();
+        plot3, plot4 = GetPlayerMapPosition("player");
+        if(plot3 <= 0 and plot4 <= 0) then
+                if(ZoomOut()) then
+                elseif(GetCurrentMapZone() ~= WORLDMAP_WORLD_ID) then
+                    SetMapZoom(GetCurrentMapContinent());
+                else
+                    SetMapZoom(WORLDMAP_WORLD_ID);
+                end
+            plot3, plot4 = GetPlayerMapPosition("player");
+            if(plot3 <= 0 and plot4 <= 0) then
+                return;
+            end
+        end
+    end
+
+    plot1 = GetCurrentMapAreaID()
+    plot2 = GetCurrentMapDungeonLevel()
+    plot7, plot8 = GetPlayerMapPosition(unit);
+
+    if(noMapLocation and (plot7 <= 0 and plot8 <= 0)) then
+        local lastMapID, lastFloor = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
+        SetMapToCurrentZone();
+        plot7, plot8 = GetPlayerMapPosition(unit);
+
+        if(plot7 <= 0 and plot8 <= 0) then
+                if(ZoomOut()) then
+                elseif(GetCurrentMapZone() ~= WORLDMAP_WORLD_ID) then
+                    SetMapZoom(GetCurrentMapContinent());
+                else
+                    SetMapZoom(WORLDMAP_WORLD_ID);
+                end
+            plot7, plot8 = GetPlayerMapPosition(unit);
+            if(plot7 <= 0 and plot8 <= 0) then
+                return;
+            end
+        end
+
+        plot5, plot6 = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
+
+        if(plot5 ~= lastMapID or plot6 ~= lastFloor) then
+            SetMapByID(lastMapID);
+            SetDungeonMapLevel(lastFloor);
+        end
+
+        return GetDistance(plot1, plot2, plot3, plot4, plot5, plot6, plot7, plot8)
+    end
+
+    return GetDistance(plot1, plot2, plot3, plot4, plot1, plot2, plot7, plot8)
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua b/Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua
new file mode 100644
index 0000000..b058285
--- /dev/null
+++ b/Interface/AddOns/SVUI_TrackOMatic/components/unitframe_gps.lua
@@ -0,0 +1,329 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+##########################################################
+LOCALIZED LUA FUNCTIONS
+##########################################################
+]]--
+--[[ GLOBALS ]]--
+local _G = _G;
+local unpack    = _G.unpack;
+local select    = _G.select;
+local pairs     = _G.pairs;
+local type      = _G.type;
+local tostring  = _G.tostring;
+local tonumber  = _G.tonumber;
+local tinsert   = _G.tinsert;
+local tremove   = _G.tremove;
+local string    = _G.string;
+local math      = _G.math;
+local bit       = _G.bit;
+local table     = _G.table;
+--[[ STRING METHODS ]]--
+local format, find, lower, match = string.format, string.find, string.lower, string.match;
+--[[ MATH METHODS ]]--
+local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;  -- Basic
+local fmod, modf, sqrt = math.fmod, math.modf, math.sqrt;   -- Algebra
+local atan2, cos, deg, rad, sin = math.atan2, math.cos, math.deg, math.rad, math.sin;  -- Trigonometry
+local min, huge, random = math.min, math.huge, math.random;  -- Uncommon
+local sqrt2, max = math.sqrt(2), math.max;
+--[[ TABLE METHODS ]]--
+local tcopy, twipe, tsort, tconcat, tdump = table.copy, table.wipe, table.sort, table.concat, table.dump;
+--[[ BINARY METHODS ]]--
+local band = bit.band;
+--[[
+##########################################################
+GET ADDON DATA
+##########################################################
+]]--
+local oUF = oUF_Villain or oUF
+assert(oUF, 'oUF not loaded')
+
+local PLUGIN = select(2, ...);
+
+local GPS_UpdateHandler = CreateFrame("Frame");
+
+local playerGUID = UnitGUID("player")
+local _FRAMES, _PROXIMITY = {}, {}
+local minThrottle = 0.02
+local numArrows, inRange, GPS
+local Triangulate = Triangulate
+--[[
+##########################################################
+oUF TAGS
+##########################################################
+]]--
+local taggedUnits = {}
+local groupTagManager = CreateFrame("Frame")
+groupTagManager:RegisterEvent("GROUP_ROSTER_UPDATE")
+groupTagManager:SetScript("OnEvent", function()
+	local group, count;
+	twipe(taggedUnits)
+	if IsInRaid() then
+		group = "raid"
+		count = GetNumGroupMembers()
+	elseif IsInGroup() then
+		group = "party"
+		count = GetNumGroupMembers() - 1;
+		taggedUnits["player"] = true
+	else
+		group = "solo"
+		count = 1
+	end
+	for i = 1, count do
+		local realName = group..i;
+		if not UnitIsUnit(realName, "player") then
+			taggedUnits[realName] = true
+		end
+	end
+end);
+
+oUF.Tags.OnUpdateThrottle['nearbyplayers:8'] = 0.25
+oUF.Tags.Methods["nearbyplayers:8"] = function(unit)
+    local unitsInRange, distance = 0;
+    if UnitIsConnected(unit)then
+        for taggedUnit, _ in pairs(taggedUnits)do
+            if not UnitIsUnit(unit, taggedUnit) and UnitIsConnected(taggedUnit)then
+                distance = Triangulate(unit, taggedUnit, true)
+                if distance and distance <= 8 then
+                    unitsInRange = unitsInRange + 1
+                end
+            end
+        end
+    end
+    return unitsInRange
+end
+
+oUF.Tags.OnUpdateThrottle['nearbyplayers:10'] = 0.25
+oUF.Tags.Methods["nearbyplayers:10"] = function(unit)
+    local unitsInRange, distance = 0;
+    if UnitIsConnected(unit)then
+        for taggedUnit, _ in pairs(taggedUnits)do
+            if not UnitIsUnit(unit, taggedUnit) and UnitIsConnected(taggedUnit)then
+                distance = Triangulate(unit, taggedUnit, true)
+                if distance and distance <= 10 then
+                    unitsInRange = unitsInRange + 1
+                end
+            end
+        end
+    end
+    return unitsInRange
+end
+
+oUF.Tags.OnUpdateThrottle['nearbyplayers:30'] = 0.25
+oUF.Tags.Methods["nearbyplayers:30"] = function(unit)
+    local unitsInRange, distance = 0;
+    if UnitIsConnected(unit)then
+        for taggedUnit, _ in pairs(taggedUnits)do
+            if not UnitIsUnit(unit, taggedUnit) and UnitIsConnected(taggedUnit)then
+                distance = Triangulate(unit, taggedUnit, true)
+                if distance and distance <= 30 then
+                    unitsInRange = unitsInRange + 1
+                end
+            end
+        end
+    end
+    return unitsInRange
+end
+
+oUF.Tags.OnUpdateThrottle['distance'] = 0.25
+oUF.Tags.Methods["distance"] = function(unit)
+    if not UnitIsConnected(unit) or UnitIsUnit(unit, "player")then return "" end
+    local dst = Triangulate("player", unit, true)
+    if dst and dst > 0 then
+        return format("%d", dst)
+    end
+    return ""
+end
+--[[
+##########################################################
+GPS CONSTRUCTOR
+##########################################################
+]]--
+local GPS_Rotate_Arrow = function(self, angle)
+    local radius, ULx, ULy, LLx, LLy, URx, URy, LRx, LRy
+
+    radius = angle - 0.785398163
+    URx = 0.5 + cos(radius) / sqrt2
+    URy =  0.5 + sin(radius) / sqrt2
+    -- (-1)
+    radius = angle + 0.785398163
+    LRx = 0.5 + cos(radius) / sqrt2
+    LRy =  0.5 + sin(radius) / sqrt2
+    -- 1
+    radius = angle + 2.35619449
+    LLx = 0.5 + cos(radius) / sqrt2
+    LLy =  0.5 + sin(radius) / sqrt2
+    -- 3
+    radius = angle + 3.92699082
+    ULx = 0.5 + cos(radius) / sqrt2
+    ULy =  0.5 + sin(radius) / sqrt2
+    -- 5
+
+    self.Arrow:SetTexCoord(ULx, ULy, LLx, LLy, URx, URy, LRx, LRy);
+end
+
+local RefreshGPS = function(self, frame, template)
+    if(frame.GPS) then
+        local config = SV.db[Schema]
+        if(config.groups) then
+            frame.GPS.OnlyProximity = config.proximity
+            local actualSz = min(frame.GPS.DefaultSize, (frame:GetHeight() - 2))
+            if(not frame:IsElementEnabled("GPS")) then
+                frame:EnableElement("GPS")
+            end
+        else
+            if(frame:IsElementEnabled("GPS")) then
+                frame:DisableElement("GPS")
+            end
+        end
+    end
+end
+
+local function CreateGPS(frame)
+    if not frame then return end
+    local size = 32
+
+    local gps = CreateFrame("Frame", nil, frame.InfoPanel)
+    gps:SetFrameLevel(99)
+    gps:Size(size, size)
+    gps.DefaultSize = size
+    gps:Point("RIGHT", frame, "RIGHT", 0, 0)
+
+    gps.Arrow = gps:CreateTexture(nil, "OVERLAY", nil, 7)
+    gps.Arrow:SetTexture([[Interface\AddOns\SVUI_TrackOMatic\artwork\GPS-ARROW]])
+    gps.Arrow:Size(size, size)
+    gps.Arrow:SetPoint("CENTER", gps, "CENTER", 0, 0)
+    gps.Arrow:SetVertexColor(0.1, 0.8, 0.8)
+    gps.Arrow:SetBlendMode("ADD")
+
+    gps.onMouseOver = true
+    gps.OnlyProximity = false
+
+    gps.Spin = GPS_Rotate_Arrow
+
+    frame.GPS = gps
+end
+--[[
+##########################################################
+GPS ELEMENT
+##########################################################
+]]--
+local sortFunc = function(a,b) return a[1] < b[1] end
+
+local Update = function(self, elapsed)
+	if self.elapsed and self.elapsed > (self.throttle or minThrottle) then
+		numArrows = 0
+		twipe(_PROXIMITY)
+		for _, object in next, _FRAMES do
+			if(object:IsShown()) then
+				GPS = object.GPS
+				local unit = object.unit
+				if(unit) then
+					if(GPS.PreUpdate) then GPS:PreUpdate(frame) end
+
+					local outOfRange = GPS.outOfRange and UnitInRange(unit) or false
+
+					if(not unit or not (UnitInParty(unit) or UnitInRaid(unit)) or UnitIsUnit(unit, "player") or not UnitIsConnected(unit) or (not GPS.OnlyProximity and ((GPS.onMouseOver and (GetMouseFocus() ~= object)) or outOfRange))) then
+						GPS:Hide()
+					else
+						local distance, angle = self.Track(unit)
+						if not angle then
+							GPS:Hide()
+						else
+							if(GPS.OnlyProximity == false) then
+								GPS:Show()
+							else
+								GPS:Hide()
+							end
+
+							if GPS.Arrow then
+								if(distance > 40) then
+									GPS.Arrow:SetVertexColor(1,0.1,0.1)
+								else
+									if(distance > 30) then
+										GPS.Arrow:SetVertexColor(0.4,0.8,0.1)
+									else
+										GPS.Arrow:SetVertexColor(0.1,1,0.1)
+									end
+									if(GPS.OnlyProximity and object.Health.percent and object.Health.percent < 80) then
+										local value = object.Health.percent + distance
+										_PROXIMITY[#_PROXIMITY + 1] = {value, GPS}
+									end
+								end
+								GPS:Spin(angle)
+							end
+
+							if GPS.Text then
+								GPS.Text:SetText(floor(distance))
+							end
+
+							if(GPS.PostUpdate) then GPS:PostUpdate(frame, distance, angle) end
+							numArrows = numArrows + 1
+						end
+					end
+				else
+					GPS:Hide()
+				end
+			end
+		end
+
+        if(_PROXIMITY[1]) then
+        	tsort(_PROXIMITY, sortFunc)
+        	if(_PROXIMITY[1][2]) then
+	        	_PROXIMITY[1][2]:Show()
+	        end
+        end
+
+		self.elapsed = 0
+		self.throttle = max(minThrottle, 0.005 * numArrows)
+	else
+		self.elapsed = (self.elapsed or 0) + elapsed
+	end
+end
+
+local Enable = function(self)
+	local unit = self.unit
+	if(unit:find("raid") or unit:find("party")) then
+		if not self.GPS then CreateGPS(self) end
+		tinsert(_FRAMES, self)
+
+		GPS_UpdateHandler:Show()
+		return true
+	end
+end
+
+local Disable = function(self)
+	local GPS = self.GPS
+	if GPS then
+		for k, frame in next, _FRAMES do
+			if(frame == self) then
+				tremove(_FRAMES, k)
+				GPS:Hide()
+				break
+			end
+		end
+
+		if #_FRAMES == 0 and GPS_UpdateHandler then
+			GPS_UpdateHandler:Hide()
+		end
+	end
+end
+
+function PLUGIN:EnableGPS()
+	GPS_UpdateHandler.Track = Triangulate
+	GPS_UpdateHandler:SetScript("OnUpdate", Update)
+    oUF:AddElement('GPS', nil, Enable, Disable)
+    NewHook(SV.SVUnit, "RefreshUnitLayout", RefreshGPS)
+end
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.lua b/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.lua
deleted file mode 100644
index 9e9be5e..0000000
--- a/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.lua
+++ /dev/null
@@ -1,754 +0,0 @@
---[[
-##############################################################################
-_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
- ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
-  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
-   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
-    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
-     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
-      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
-       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
-        ___\///////////___________\///___________\/////////_____\///////////_#
-##############################################################################
-S U P E R - V I L L A I N - U I   By: Munglunch                              #
-##############################################################################
-##########################################################
-LOCALIZED LUA FUNCTIONS
-##########################################################
-]]--
---[[ GLOBALS ]]--
-local _G = _G;
-local unpack    = _G.unpack;
-local select    = _G.select;
-local pairs     = _G.pairs;
-local type      = _G.type;
-local tostring  = _G.tostring;
-local tonumber  = _G.tonumber;
-local tinsert   = _G.tinsert;
-local tremove   = _G.tremove;
-local string    = _G.string;
-local math      = _G.math;
-local bit       = _G.bit;
-local table     = _G.table;
---[[ STRING METHODS ]]--
-local format, find, lower, match = string.format, string.find, string.lower, string.match;
---[[ MATH METHODS ]]--
-local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round;  -- Basic
-local fmod, modf, sqrt = math.fmod, math.modf, math.sqrt;   -- Algebra
-local atan2, cos, deg, rad, sin = math.atan2, math.cos, math.deg, math.rad, math.sin;  -- Trigonometry
-local min, huge, random = math.min, math.huge, math.random;  -- Uncommon
-local sqrt2, max = math.sqrt(2), math.max;
---[[ TABLE METHODS ]]--
-local tcopy, twipe, tsort, tconcat, tdump = table.copy, table.wipe, table.sort, table.concat, table.dump;
---[[ BINARY METHODS ]]--
-local band = bit.band;
---[[
-##########################################################
-GET ADDON DATA
-##########################################################
-]]--
-local SVUIAddOnName, PLUGIN = ...;
-local SV = SVUI
-local L = LibLocale()
-local Registry = LibStub("LibSystemRegistry-1.0");
-
-PLUGIN = Registry:NewPrototype(SVUIAddOnName)
-
-_G["TrackingVillain"] = PLUGIN;
---[[
-##########################################################
-LOCALS AND BINDING
-##########################################################
-]]--
-BINDING_HEADER_SVUITRACK = "Supervillain UI: Tracking Device";
-
-local CONFIGS = SV.private
-local NewHook = hooksecurefunc;
-local playerGUID = UnitGUID('player')
-local classColor = RAID_CLASS_COLORS
-local radian90 = (3.141592653589793  /  2) * -1;
-local GetDistance, GetTarget, GetFromPlayer;
-
-local SCHEMA = PLUGIN.___schema;
-local VERSION = PLUGIN.___version;
---[[
-##########################################################
-BUILD
-##########################################################
-]]--
-function SVUI_TrackingDoodad_OnLoad()
-    local frame = _G["SVUI_TrackingDoodad"]
-    --frame.Border:SetGradient(unpack(SV.Media.gradient.dark))
-    frame.Arrow:SetVertexColor(0.1, 0.8, 0.8)
-    frame.Range:SetFont(SV.Media.font.roboto, 14, "OUTLINE")
-    frame.Range:SetTextColor(1, 1, 1, 0.75)
-    SV.Animate:Orbit(frame.Radar, 8, true)
-    frame:RegisterForDrag("LeftButton");
-    frame:Hide()
-end
-
-do
-    local WORLDMAPAREA_DEFAULT_DUNGEON_FLOOR_IS_TERRAIN = 0x00000004
-    local WORLDMAPAREA_VIRTUAL_CONTINENT = 0x00000008
-    local DUNGEONMAP_MICRO_DUNGEON = 0x00000001
-    local _failsafe, _cache, _dungeons, _transform = {}, {}, {}, {};
-
-    local _mapdata = {
-        [0] = {
-            height = 22266.74312,
-            system = -1,
-            width = 33400.121,
-            xOffset = 0,
-            yOffset = 0,
-            [1] = {
-                xOffset = -10311.71318,
-                yOffset = -19819.33898,
-                scale = 0.56089997291565,
-            },
-            [0] = {
-                xOffset = -48226.86993,
-                yOffset = -16433.90283,
-                scale = 0.56300002336502,
-            },
-            [571] = {
-                xOffset = -29750.89905,
-                yOffset = -11454.50802,
-                scale = 0.5949000120163,
-            },
-            [870] = {
-                xOffset = -27693.71178,
-                yOffset = -29720.0585,
-                scale = 0.65140002965927,
-            },
-        },
-    }
-
-    local _failsafeFunc = function(tbl, key)
-        if(type(key) == "number") then
-            return _failsafe;
-        else
-            return rawget(_failsafe, key);
-        end
-    end
-
-    setmetatable(_failsafe, { xOffset = 0, height = 1, yOffset = 0, width = 1, __index = _failsafeFunc });
-    setmetatable(_mapdata, _failsafe);
-
-    for _, ID in ipairs(GetWorldMapTransforms()) do
-        local terrain, newterrain, _, _, transformMinY, transformMaxY, transformMinX, transformMaxX, offsetY, offsetX = GetWorldMapTransformInfo(ID)
-        if ( offsetX ~= 0 or offsetY ~= 0 ) then
-            _transform[ID] = {
-                terrain = terrain,
-                newterrain = newterrain,
-                BRy = -transformMinY,
-                TLy = -transformMaxY,
-                BRx = -transformMinX,
-                TLx = -transformMaxX,
-                offsetY = offsetY,
-                offsetX = offsetX,
-            }
-        end
-    end
-
-    local function _getmapdata(t)
-        local chunk = {}
-        local mapName = GetMapInfo();
-        local id = GetCurrentMapAreaID();
-        local numFloors = GetNumDungeonMapLevels();
-        chunk.mapName = mapName;
-        chunk.cont = (GetCurrentMapContinent()) or -100;
-        chunk.zone = (GetCurrentMapZone()) or -100;
-        chunk.numFloors = numFloors;
-        local _, TLx, TLy, BRx, BRy = GetCurrentMapZone();
-        if(TLx and TLy and BRx and BRy and (TLx~=0 or TLy~=0 or BRx~=0 or BRy~=0)) then
-            chunk[0] = {};
-            chunk[0].TLx = TLx;
-            chunk[0].TLy = TLy;
-            chunk[0].BRx = BRx;
-            chunk[0].BRy = BRy;
-        end
-        if(not chunk[0] and numFloors == 0 and (GetCurrentMapDungeonLevel()) == 1) then
-            numFloors = 1;
-            chunk.hiddenFloor = true;
-        end
-        if(numFloors > 0) then
-            for f = 1, numFloors do
-                SetDungeonMapLevel(f);
-                local _, TLx, TLy, BRx, BRy = GetCurrentMapDungeonLevel();
-                if(TLx and TLy and BRx and BRy) then
-                    chunk[f] = {};
-                    chunk[f].TLx = TLx;
-                    chunk[f].TLy = TLy;
-                    chunk[f].BRx = BRx;
-                    chunk[f].BRy = BRy;
-                end
-            end
-        end
-
-        t[id] = chunk;
-    end
-
-    do
-        local continents = { GetMapContinents() };
-        for C in pairs(continents) do
-            local zones = { GetMapZones(C) };
-            continents[C] = zones;
-            local pass, error = pcall(SetMapZoom, C, 0)
-            if(pass) then
-                zones[0] = GetCurrentMapAreaID();
-                _getmapdata(_cache);
-                for Z in ipairs(zones) do
-                    SetMapZoom(C, Z);
-                    zones[Z] = GetCurrentMapAreaID();
-                    _getmapdata(_cache);
-                end
-            end
-        end
-
-        for _, id in ipairs(GetAreaMaps()) do
-            if not (_cache[id]) then
-                if(SetMapByID(id)) then
-                    _getmapdata(_cache);
-                end
-            end
-        end
-    end
-
-    for id, map in pairs(_cache) do
-        local terrain, _, _, _, _, _, _, _, _, flags = GetAreaMapInfo(id)
-        local origin = terrain;
-        local chunk = _mapdata[id];
-        if not (chunk) then chunk = {}; end
-        if(map.numFloors > 0 or map.hiddenFloor) then
-            for f, coords in pairs(map) do
-                if(type(f) == "number" and f > 0) then
-                    if not (chunk[f]) then
-                        chunk[f] = {};
-                    end
-                    local flr = chunk[f]
-                    local TLx, TLy, BRx, BRy = -coords.BRx, -coords.BRy, -coords.TLx, -coords.TLy
-                    if not (flr.width) then
-                        flr.width = BRx - TLx
-                    end
-                    if not (flr.height) then
-                        flr.height = BRy - TLy
-                    end
-                    if not (flr.xOffset) then
-                        flr.xOffset = TLx
-                    end
-                    if not (flr.yOffset) then
-                        flr.yOffset = TLy
-                    end
-                end
-            end
-            for f = 1, map.numFloors do
-                if not (chunk[f]) then
-                    if(f == 1 and map[0] and map[0].TLx and map[0].TLy and map[0].BRx and map[0].BRy and
-                      band(flags, WORLDMAPAREA_DEFAULT_DUNGEON_FLOOR_IS_TERRAIN) == WORLDMAPAREA_DEFAULT_DUNGEON_FLOOR_IS_TERRAIN) then
-                        chunk[f] = {};
-                        local flr = chunk[f]
-                        local coords = map[0]
-                        local TLx, TLy, BRx, BRy = -coords.TLx, -coords.TLy, -coords.BRx, -coords.BRy
-                        flr.width = BRx - TLx
-                        flr.height = BRy - TLy
-                        flr.xOffset = TLx
-                        flr.yOffset = TLy
-                    end
-                end
-            end
-            if(map.hiddenFloor) then
-                chunk.width = chunk[1].width
-                chunk.height = chunk[1].height
-                chunk.xOffset = chunk[1].xOffset
-                chunk.yOffset = chunk[1].yOffset
-            end
-        else
-            local coords = map[0]
-            if(coords ~= nil) then
-                local TLx, TLy, BRx, BRy = -coords.TLx, -coords.TLy, -coords.BRx, -coords.BRy
-                for _, trans in pairs(_transform) do
-                    if(trans.terrain == terrain) then
-                        if((trans.TLx < TLx and BRx < trans.BRx) and (trans.TLy < TLy and BRy < trans.BRy)) then
-                            TLx = TLx - trans.offsetX;
-                            BRx = BRx - trans.offsetX;
-                            BRy = BRy - trans.offsetY;
-                            TLy = TLy - trans.offsetY;
-                            terrain = trans.newterrain;
-                            break;
-                        end
-                    end
-                end
-                if not (TLx==0 and TLy==0 and BRx==0 and BRy==0) then
-                    if not (TLx < BRx) then
-                        printError("Bad x-axis Orientation (Zone): ", id, TLx, BRx);
-                    end
-                    if not (TLy < BRy) then
-                        printError("Bad y-axis Orientation (Zone): ", id, TLy, BRy);
-                    end
-                end
-                if not (chunk.width) then
-                    chunk.width = BRx - TLx
-                end
-                if not (chunk.height) then
-                    chunk.height = BRy - TLy
-                end
-                if not (chunk.xOffset) then
-                    chunk.xOffset = TLx
-                end
-                if not (chunk.yOffset) then
-                    chunk.yOffset = TLy
-                end
-            end
-        end
-        if not (next(chunk, nil)) then
-            chunk = { xOffset = 0, height = 1, yOffset = 0, width = 1 };
-        end
-        if not (chunk.origin) then
-            chunk.origin = origin;
-        end
-        _mapdata[id] = chunk;
-        if(chunk and chunk ~= _failsafe) then
-            if not (chunk.system) then
-                chunk.system = terrain;
-            end
-            if(map.cont > 0 and map.zone > 0) then
-                _dungeons[terrain] = {}
-            end
-            setmetatable(chunk, _failsafe);
-        end
-    end
-
-    local function _getpos(map, mapFloor, x, y)
-        if not map then return end
-        if (mapFloor ~= 0) then
-            map = rawget(map, mapFloor) or _dungeons[map.origin][mapFloor];
-        end
-        x = x * map.width + map.xOffset;
-        y = y * map.height + map.yOffset;
-        return x, y;
-    end
-
-    function GetDistance(map1, floor1, x1, y1, map2, floor2, x2, y2)
-        if not (map1 and map2) then return end
-        floor1 = floor1 or min(#_mapdata[map1], 1);
-        floor2 = floor2 or min(#_mapdata[map2], 1);
-        local dist, xDelta, yDelta, angle;
-        if(map1 == map2 and floor1 == floor2) then
-            local chunk = _mapdata[map1];
-            local tmp = chunk
-            if(floor1 ~= 0) then
-                tmp = rawget(chunk, floor1)
-            end
-            local w,h = 1,1
-            if(not tmp) then
-                if(_dungeons[chunk.origin] and _dungeons[chunk.origin][floor1]) then
-                    chunk = _dungeons[chunk.origin][floor1]
-                    w = chunk.width
-                    h = chunk.height
-                else
-                    w = 1
-                    h = 1
-                end
-            else
-                w = chunk.width
-                h = chunk.height
-            end
-            xDelta = (x2 - x1) * (w or 1);
-            yDelta = (y2 - y1) * (h or 1);
-        else
-            local map1 = _mapdata[map1];
-            local map2 = _mapdata[map2];
-            if(map1.system == map2.system) then
-                x1, y1 = _getpos(map1, floor1, x1, y1);
-                x2, y2 = _getpos(map2, floor2, x2, y2);
-                xDelta = (x2 - x1);
-                yDelta = (y2 - y1);
-            else
-                local s1 = map1.system;
-                local s2 = map2.system;
-                if((map1==0 or _mapdata[0][s1]) and (map2 == 0 or _mapdata[0][s2])) then
-                    x1, y1 = _getpos(map1, floor1, x1, y1);
-                    x2, y2 = _getpos(map2, floor2, x2, y2);
-                    if(map1 ~= 0) then
-                        local cont1 = _mapdata[0][s1];
-                        x1 = (x1 - cont1.xOffset) * cont1.scale;
-                        y1 = (y1 - cont1.yOffset) * cont1.scale;
-                    end
-                    if(map2 ~= 0) then
-                        local cont2 = _mapdata[0][s2];
-                        x2 = (x2 - cont2.xOffset) * cont2.scale;
-                        y2 = (y2 - cont2.yOffset) * cont2.scale;
-                    end
-                    xDelta = x2 - x1;
-                    yDelta = y2 - y1;
-                end
-            end
-        end
-
-        if(xDelta and yDelta) then
-            local playerAngle = GetPlayerFacing()
-            dist = sqrt(xDelta * xDelta + yDelta * yDelta);
-            angle = (radian90 - playerAngle) - atan2(yDelta, xDelta)
-        end
-
-        return dist, angle;
-    end
-end
-
-do
-    local function _findunit(unit, doNotCheckMap)
-        local x, y = GetPlayerMapPosition(unit);
-        if(x <= 0 and y <= 0) then
-            if(doNotCheckMap) then return; end
-            local lastMapID, lastFloor = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
-            SetMapToCurrentZone();
-            x, y = GetPlayerMapPosition(unit);
-            if(x <= 0 and y <= 0) then
-                    if(ZoomOut()) then
-                    elseif(GetCurrentMapZone() ~= WORLDMAP_WORLD_ID) then
-                        SetMapZoom(GetCurrentMapContinent());
-                    else
-                        SetMapZoom(WORLDMAP_WORLD_ID);
-                    end
-                x, y = GetPlayerMapPosition(unit);
-                if(x <= 0 and y <= 0) then
-                    return;
-                end
-            end
-            local thisMapID, thisFloor = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
-            if(thisMapID ~= lastMapID or thisFloor ~= lastFloor) then
-                SetMapByID(lastMapID);
-                SetDungeonMapLevel(lastFloor);
-            end
-            return thisMapID, thisFloor, x, y;
-        end
-        return GetCurrentMapAreaID(), GetCurrentMapDungeonLevel(), x, y;
-    end
-
-    local function _findplayer()
-        local x, y = GetPlayerMapPosition("player");
-        if(x <= 0 and y <= 0) then
-            if(WorldMap and WorldMap:IsShown()) then return end
-            SetMapToCurrentZone();
-            x, y = GetPlayerMapPosition("player");
-            if(x <= 0 and y <= 0) then
-                    if(ZoomOut()) then
-                    elseif(GetCurrentMapZone() ~= WORLDMAP_WORLD_ID) then
-                        SetMapZoom(GetCurrentMapContinent());
-                    else
-                        SetMapZoom(WORLDMAP_WORLD_ID);
-                    end
-                x, y = GetPlayerMapPosition("player");
-                if(x <= 0 and y <= 0) then
-                    return;
-                end
-            end
-        end
-        return GetCurrentMapAreaID(), GetCurrentMapDungeonLevel(), x, y;
-    end
-
-    function GetTarget(unit, doNotCheckMap)
-        local plot1, plot2, plot3, plot4;
-        if unit == "player" or UnitIsUnit("player", unit) then
-            plot1, plot2, plot3, plot4 = _findplayer()
-        else
-            plot1, plot2, plot3, plot4 = _findunit(unit, doNotCheckMap or WorldMapFrame:IsVisible())
-        end
-        if not (plot1 and plot4) then
-            return false
-        else
-            return true, plot1, plot2, plot3, plot4
-        end
-    end
-
-    function GetFromPlayer(unit, noMapLocation)
-        if(WorldMap and WorldMap:IsShown()) then return end
-        local plot3, plot4 = GetPlayerMapPosition("player");
-        if(plot3 <= 0 and plot4 <= 0) then
-            SetMapToCurrentZone();
-            plot3, plot4 = GetPlayerMapPosition("player");
-            if(plot3 <= 0 and plot4 <= 0) then
-                    if(ZoomOut()) then
-                    elseif(GetCurrentMapZone() ~= WORLDMAP_WORLD_ID) then
-                        SetMapZoom(GetCurrentMapContinent());
-                    else
-                        SetMapZoom(WORLDMAP_WORLD_ID);
-                    end
-                plot3, plot4 = GetPlayerMapPosition("player");
-                if(plot3 <= 0 and plot4 <= 0) then
-                    return;
-                end
-            end
-        end
-
-        local plot1 = GetCurrentMapAreaID()
-        local plot2 = GetCurrentMapDungeonLevel()
-
-        local plot5, plot6;
-        local plot7, plot8 = GetPlayerMapPosition(unit);
-
-        if(noMapLocation and (plot7 <= 0 and plot8 <= 0)) then
-            local lastMapID, lastFloor = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
-            SetMapToCurrentZone();
-            plot7, plot8 = GetPlayerMapPosition(unit);
-            if(plot7 <= 0 and plot8 <= 0) then
-                    if(ZoomOut()) then
-                    elseif(GetCurrentMapZone() ~= WORLDMAP_WORLD_ID) then
-                        SetMapZoom(GetCurrentMapContinent());
-                    else
-                        SetMapZoom(WORLDMAP_WORLD_ID);
-                    end
-                plot7, plot8 = GetPlayerMapPosition(unit);
-                if(plot7 <= 0 and plot8 <= 0) then
-                    return;
-                end
-            end
-            plot5, plot6 = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel();
-            if(plot5 ~= lastMapID or plot6 ~= lastFloor) then
-                SetMapByID(lastMapID);
-                SetDungeonMapLevel(lastFloor);
-            end
-            local distance, angle = GetDistance(plot1, plot2, plot3, plot4, plot5, plot6, plot7, plot8)
-            return distance, angle
-        end
-
-        local distance, angle = GetDistance(plot1, plot2, plot3, plot4, plot1, plot2, plot7, plot8)
-        return distance, angle
-    end
-end
-
-function Triangulate(unit, noMapLocation)
-    local distance, angle = GetFromPlayer(unit, noMapLocation)
-    return distance, angle
-end
---[[
-##########################################################
-MAIN MOVABLE TRACKER
-##########################################################
-]]--
-function PLUGIN:PLAYER_TARGET_CHANGED()
-    if not SVUI_TrackingDoodad then return end
-    if((UnitInParty("target") or UnitInRaid("target")) and not UnitIsUnit("target", "player")) then
-        SVUI_TrackingDoodad.Trackable = true
-        SVUI_TrackingDoodad:Show()
-    else
-        SVUI_TrackingDoodad.Trackable = false
-    end
-end
-
-local Rotate_Arrow = function(self, angle)
-    local radius, ULx, ULy, LLx, LLy, URx, URy, LRx, LRy
-
-    radius = angle - 0.785398163
-    URx = 0.5 + cos(radius) / sqrt2
-    URy =  0.5 + sin(radius) / sqrt2
-    -- (-1)
-    radius = angle + 0.785398163
-    LRx = 0.5 + cos(radius) / sqrt2
-    LRy =  0.5 + sin(radius) / sqrt2
-    -- 1
-    radius = angle + 2.35619449
-    LLx = 0.5 + cos(radius) / sqrt2
-    LLy =  0.5 + sin(radius) / sqrt2
-    -- 3
-    radius = angle + 3.92699082
-    ULx = 0.5 + cos(radius) / sqrt2
-    ULy =  0.5 + sin(radius) / sqrt2
-    -- 5
-
-    self.Arrow:SetTexCoord(ULx, ULy, LLx, LLy, URx, URy, LRx, LRy);
-end
-
-local TargetFrame_OnChange = function()
-    if not SVUI_TrackingDoodad then return end
-    if((UnitInParty("target") or UnitInRaid("target")) and not UnitIsUnit("target", "player")) then
-        SVUI_TrackingDoodad.Trackable = true
-        SVUI_TrackingDoodad:Show()
-    else
-        SVUI_TrackingDoodad.Trackable = false
-    end
-end
-
-local Tracker_OnUpdate = function(self, elapsed)
-    if self.elapsed and self.elapsed > (self.throttle or 0.02) then
-        if(self.Trackable) then
-            local distance, angle = Triangulate("target", true)
-            local _ARROW = self.Arrow
-            local _SPINNER = self.Radar
-            local _TEXT = self.Range
-            local _BG = self.BG
-            if not angle then
-                self.throttle = 4
-                _ARROW:SetAlpha(0)
-                _SPINNER:SetVertexColor(0.8,0.1,0.1,0.15)
-                _BG:SetVertexColor(1,0,0,0.15)
-            else
-                self.throttle = 0.02
-                local out = floor(tonumber(distance))
-                self:Spin(angle)
-                if(out > 100) then
-                    _ARROW:SetVertexColor(1,0.1,0.1,0.4)
-                    _SPINNER:SetVertexColor(0.8,0.1,0.1,0.25)
-                    _BG:SetVertexColor(0.8,0.4,0.1,0.25)
-                elseif(out > 40) then
-                    _ARROW:SetVertexColor(1,0.8,0.1,0.6)
-                    _SPINNER:SetVertexColor(0.8,0.8,0.1,0.5)
-                    _BG:SetVertexColor(0.4,0.8,0.1,0.5)
-                elseif(out > 5) then
-                    _ARROW:SetVertexColor(0.1,1,0.8,0.9)
-                    _SPINNER:SetVertexColor(0.1,0.8,0.8,0.75)
-                    _BG:SetVertexColor(0.1,0.8,0.1,0.75)
-                end
-                _ARROW:SetAlpha(1)
-                _TEXT:SetText(out)
-            end
-        else
-            self:Hide()
-        end
-        self.elapsed = 0
-    else
-        self.elapsed = (self.elapsed or 0) + elapsed
-    end
-end
---[[
-##########################################################
-GROUP UNIT TRACKERS
-##########################################################
-]]--
-local GPS_Triangulate = function(self, unit)
-    local available = (self.OnlyProximity == false and self.onMouseOver == false)
-    local distance, angle = Triangulate(unit, available)
-    return distance, angle
-end
-
-local RefreshGPS = function(self, frame, template)
-    if(frame.GPS) then
-        local config = PLUGIN.db
-        if(config.groups) then
-            frame.GPS.OnlyProximity = config.proximity
-            local actualSz = min(frame.GPS.DefaultSize, (frame:GetHeight() - 2))
-            if(not frame:IsElementEnabled("GPS")) then
-                frame:EnableElement("GPS")
-            end
-        else
-            if(frame:IsElementEnabled("GPS")) then
-                frame:DisableElement("GPS")
-            end
-        end
-    end
-end
-
-function PLUGIN:CreateGPS(frame)
-    if not frame then return end
-    local size = 32
-
-    local gps = CreateFrame("Frame", nil, frame.InfoPanel)
-    gps:SetFrameLevel(99)
-    gps:Size(size, size)
-    gps.DefaultSize = size
-    gps:Point("RIGHT", frame, "RIGHT", 0, 0)
-
-    gps.Arrow = gps:CreateTexture(nil, "OVERLAY", nil, 7)
-    gps.Arrow:SetTexture([[Interface\AddOns\SVUI_TrackingDevice\artwork\GPS-ARROW]])
-    gps.Arrow:Size(size, size)
-    gps.Arrow:SetPoint("CENTER", gps, "CENTER", 0, 0)
-    gps.Arrow:SetVertexColor(0.1, 0.8, 0.8)
-    gps.Arrow:SetBlendMode("ADD")
-
-    gps.onMouseOver = true
-    gps.OnlyProximity = false
-
-    gps.Spin = Rotate_Arrow
-
-    frame.GPS = gps
-
-    --frame.GPS:Hide()
-end
---[[
-##########################################################
-CORE
-##########################################################
-]]--
-function PLUGIN:ReLoad()
-    if(not SV.db[SCHEMA].enable) then return end
-
-    local frameSize = self.db.size or 70
-    local arrowSize = frameSize * 0.5
-    local fontSize = self.db.fontSize or 14
-    local frame = _G["SVUI_TrackingDoodad"]
-
-    frame:SetSize(frameSize, frameSize)
-    frame.Arrow:SetSize(arrowSize, arrowSize)
-    frame.Range:SetFont(SV.Media.font.roboto, fontSize, "OUTLINE")
-end
-
-function PLUGIN:Load()
-    if(not SV.db[SCHEMA].enable) then return end
-
-    local _TRACKER = SVUI_TrackingDoodad
-    local _TARGET = SVUI_Target
-
-    if(_TRACKER) then
-        self.db = SV.db[SCHEMA]
-
-        _TRACKER.Spin = Rotate_Arrow
-        _TRACKER:SetParent(SVUI_Target)
-        _TRACKER:SetScript("OnUpdate", Tracker_OnUpdate)
-
-        self:RegisterEvent("PLAYER_TARGET_CHANGED")
-    end
-
-    if(_TARGET) then
-        local frame = _G["SVUI_TrackingDoodad"]
-        frame:SetPoint("LEFT", _TARGET, "RIGHT", 2, 0)
-        _TARGET:HookScript("OnShow", TargetFrame_OnChange)
-    end
-
-    NewHook(SV.SVUnit, "RefreshUnitLayout", RefreshGPS)
-
-    local options = {
-        order = 3,
-        name = L["GPS"],
-        desc = L["Use group frame GPS elements"],
-        type = "toggle",
-        get = function() return SV.db.SVTracker.groups end,
-        set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
-    }
-
-    self:AddOption("groups", options)
-
-    options = {
-        order = 4,
-        name = L["GPS Proximity"],
-        desc = L["Only point to closest low health unit"],
-        type = "toggle",
-        get = function() return SV.db.SVTracker.proximity end,
-        set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
-    }
-
-    self:AddOption("proximity", options)
-
-    options = {
-        order = 5,
-        name = L["Font Size"],
-        desc = L["Set the font size of the range text"],
-        type = "range",
-        min = 6,
-        max = 22,
-        step = 1,
-        get = function() return SV.db.SVTracker.fontSize end,
-        set = function(key,value) PLUGIN:ChangeDBVar(value, key[#key]); PLUGIN:UpdateLogWindow() end
-    }
-
-    self:AddOption("fontSize", options)
-end
-
-CONFIGS[SCHEMA] = {
-    ["enable"] = true,
-    ["size"] = 75,
-    ["fontSize"] = 12,
-    ["groups"] = true,
-    ["proximity"] = false,
-}
-
-Registry:NewPlugin(PLUGIN)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.toc b/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.toc
deleted file mode 100644
index 06a59d6..0000000
--- a/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.toc
+++ /dev/null
@@ -1,12 +0,0 @@
-## Interface: 50400
-## Author: Munglunch
-## Version: 4.4
-## Title: |cffFF9900SVUI |r|cffFFEF00Tracking Device|r
-## Notes: Supervillain UI [|cff9911FFRaid & Party Member Tracking|r].
-## RequiredDeps: SVUI
-## LoadOnDemand: 1
-## X-oUF: oUF_Villain
-## X-SVUI-Header: Tracking Device
-## X-SVUI-Schema: SVTracker
-
-SVUI_TrackingDevice.xml
diff --git a/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.xml b/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.xml
deleted file mode 100644
index f53512c..0000000
--- a/Interface/AddOns/SVUI_TrackingDevice/SVUI_TrackingDevice.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/">
-    <Script file='SVUI_TrackingDevice.lua'/>
-    <Script file='libs\oUF_GPS\oUF_GPS.lua'/>
-
-	<Frame name="SVUI_TrackingDoodad" movable="true" frameStrata="DIALOG">
-        <Size x="70" y="70"/>
-        <Anchors>
-            <Anchor point="CENTER" relativeTo="UIParent" relativePoint="CENTER"/>
-        </Anchors>
-        <Layers>
-            <Layer level="BACKGROUND">
-                <Texture parentKey="BG" setAllPoints="true" file="Interface\AddOns\SVUI_TrackingDevice\artwork\DOODAD-BG"/>
-            </Layer>
-            <Layer level="BORDER">
-                <Texture parentKey="Border" setAllPoints="true" file="Interface\AddOns\SVUI_TrackingDevice\artwork\DOODAD-BORDER"/>
-                <Texture parentKey="Arrow" file="Interface\AddOns\SVUI_TrackingDevice\artwork\DOODAD-ARROW">
-                    <Size x="35" y="35"/>
-                    <Anchors>
-                        <Anchor point="CENTER" relativeTo="$parent" relativePoint="CENTER"/>
-                    </Anchors>
-                </Texture>
-            </Layer>
-            <Layer level="OVERLAY">
-                <Texture parentKey="Radar" setAllPoints="true" file="Interface\AddOns\SVUI_TrackingDevice\artwork\DOODAD-RADAR"/>
-            </Layer>
-            <Layer level="ARTWORK">
-                <FontString parentKey="Range" inherits="GameFontNormal">
-                    <Anchors>
-                        <Anchor point="TOP" relativeTo="$parent" relativePoint="BOTTOM"/>
-                    </Anchors>
-                </FontString>
-            </Layer>
-        </Layers>
-        <Scripts>
-            <OnLoad function="SVUI_TrackingDoodad_OnLoad"/>
-            <OnDragStart>
-                _G["SVUI_TrackingDoodad"].moving = true;
-                _G["SVUI_TrackingDoodad"]:StartMoving();
-            </OnDragStart>
-            <OnDragStop>
-                _G["SVUI_TrackingDoodad"].moving = nil;
-                _G["SVUI_TrackingDoodad"]:StopMovingOrSizing();
-            </OnDragStop>
-        </Scripts>
-    </Frame>
-</Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-ARROW.blp b/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-ARROW.blp
deleted file mode 100644
index b20f63d..0000000
Binary files a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-ARROW.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BG.blp b/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BG.blp
deleted file mode 100644
index 7f60ca2..0000000
Binary files a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BG.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BORDER.blp b/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BORDER.blp
deleted file mode 100644
index c69bd6a..0000000
Binary files a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-BORDER.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-RADAR.blp b/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-RADAR.blp
deleted file mode 100644
index 53d920b..0000000
Binary files a/Interface/AddOns/SVUI_TrackingDevice/artwork/DOODAD-RADAR.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_TrackingDevice/artwork/GPS-ARROW.blp b/Interface/AddOns/SVUI_TrackingDevice/artwork/GPS-ARROW.blp
deleted file mode 100644
index 9fb0a32..0000000
Binary files a/Interface/AddOns/SVUI_TrackingDevice/artwork/GPS-ARROW.blp and /dev/null differ
diff --git a/Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.lua b/Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.lua
deleted file mode 100644
index 9bb1282..0000000
--- a/Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.lua
+++ /dev/null
@@ -1,211 +0,0 @@
-local oUF = oUF_Villain or oUF
-assert(oUF, 'oUF not loaded')
-
-local PLUGIN = _G["TrackingVillain"];
-
-local max, floor = math.max, math.floor;
-local tinsert, tremove, tsort, twipe = table.insert, table.remove, table.sort, table.wipe;
-
-local playerGUID = UnitGUID("player")
-local _FRAMES, _PROXIMITY, OnUpdateFrame = {}, {}
-local minThrottle = 0.02
-local numArrows, inRange, GPS
---[[
-##########################################################
-oUF TAGS
-##########################################################
-]]--
-local taggedUnits = {}
-local groupTagManager = CreateFrame("Frame")
-groupTagManager:RegisterEvent("GROUP_ROSTER_UPDATE")
-groupTagManager:SetScript("OnEvent", function()
-	local group, count;
-	twipe(taggedUnits)
-	if IsInRaid() then
-		group = "raid"
-		count = GetNumGroupMembers()
-	elseif IsInGroup() then
-		group = "party"
-		count = GetNumGroupMembers() - 1;
-		taggedUnits["player"] = true
-	else
-		group = "solo"
-		count = 1
-	end
-	for i = 1, count do
-		local realName = group..i;
-		if not UnitIsUnit(realName, "player") then
-			taggedUnits[realName] = true
-		end
-	end
-end);
-
-oUF.Tags.OnUpdateThrottle['nearbyplayers:8'] = 0.25
-oUF.Tags.Methods["nearbyplayers:8"] = function(unit)
-    local unitsInRange, distance = 0;
-    if UnitIsConnected(unit)then
-        for taggedUnit, _ in pairs(taggedUnits)do
-            if not UnitIsUnit(unit, taggedUnit) and UnitIsConnected(taggedUnit)then
-                distance = Triangulate(unit, taggedUnit, true)
-                if distance and distance <= 8 then
-                    unitsInRange = unitsInRange + 1
-                end
-            end
-        end
-    end
-    return unitsInRange
-end
-
-oUF.Tags.OnUpdateThrottle['nearbyplayers:10'] = 0.25
-oUF.Tags.Methods["nearbyplayers:10"] = function(unit)
-    local unitsInRange, distance = 0;
-    if UnitIsConnected(unit)then
-        for taggedUnit, _ in pairs(taggedUnits)do
-            if not UnitIsUnit(unit, taggedUnit) and UnitIsConnected(taggedUnit)then
-                distance = Triangulate(unit, taggedUnit, true)
-                if distance and distance <= 10 then
-                    unitsInRange = unitsInRange + 1
-                end
-            end
-        end
-    end
-    return unitsInRange
-end
-
-oUF.Tags.OnUpdateThrottle['nearbyplayers:30'] = 0.25
-oUF.Tags.Methods["nearbyplayers:30"] = function(unit)
-    local unitsInRange, distance = 0;
-    if UnitIsConnected(unit)then
-        for taggedUnit, _ in pairs(taggedUnits)do
-            if not UnitIsUnit(unit, taggedUnit) and UnitIsConnected(taggedUnit)then
-                distance = Triangulate(unit, taggedUnit, true)
-                if distance and distance <= 30 then
-                    unitsInRange = unitsInRange + 1
-                end
-            end
-        end
-    end
-    return unitsInRange
-end
-
-oUF.Tags.OnUpdateThrottle['distance'] = 0.25
-oUF.Tags.Methods["distance"] = function(unit)
-    if not UnitIsConnected(unit) or UnitIsUnit(unit, "player")then return "" end
-    local dst = Triangulate("player", unit, true)
-    if dst and dst > 0 then
-        return format("%d", dst)
-    end
-    return ""
-end
---[[
-##########################################################
-GPS ELEMENT
-##########################################################
-]]--
-local sortFunc = function(a,b) return a[1] < b[1] end
-
-local Update = function(self, elapsed)
-	if self.elapsed and self.elapsed > (self.throttle or minThrottle) then
-		numArrows = 0
-		twipe(_PROXIMITY)
-		for _, object in next, _FRAMES do
-			if(object:IsShown()) then
-				GPS = object.GPS
-				local unit = object.unit
-				if(unit) then
-					if(GPS.PreUpdate) then GPS:PreUpdate(frame) end
-
-					local outOfRange = GPS.outOfRange and UnitInRange(unit) or false
-
-					if(not unit or not (UnitInParty(unit) or UnitInRaid(unit)) or UnitIsUnit(unit, "player") or not UnitIsConnected(unit) or (not GPS.OnlyProximity and ((GPS.onMouseOver and (GetMouseFocus() ~= object)) or outOfRange))) then
-						GPS:Hide()
-					else
-						local distance, angle = Triangulate(unit)
-						if not angle then
-							GPS:Hide()
-						else
-							if(GPS.OnlyProximity == false) then
-								GPS:Show()
-							else
-								GPS:Hide()
-							end
-
-							if GPS.Arrow then
-								if(distance > 40) then
-									GPS.Arrow:SetVertexColor(1,0.1,0.1)
-								else
-									if(distance > 30) then
-										GPS.Arrow:SetVertexColor(0.4,0.8,0.1)
-									else
-										GPS.Arrow:SetVertexColor(0.1,1,0.1)
-									end
-									if(GPS.OnlyProximity and object.Health.percent and object.Health.percent < 80) then
-										local value = object.Health.percent + distance
-										_PROXIMITY[#_PROXIMITY + 1] = {value, GPS}
-									end
-								end
-								GPS:Spin(angle)
-							end
-
-							if GPS.Text then
-								GPS.Text:SetText(floor(distance))
-							end
-
-							if(GPS.PostUpdate) then GPS:PostUpdate(frame, distance, angle) end
-							numArrows = numArrows + 1
-						end
-					end
-				else
-					GPS:Hide()
-				end
-			end
-		end
-
-        if(_PROXIMITY[1]) then
-        	tsort(_PROXIMITY, sortFunc)
-        	if(_PROXIMITY[1][2]) then
-	        	_PROXIMITY[1][2]:Show()
-	        end
-        end
-
-		self.elapsed = 0
-		self.throttle = max(minThrottle, 0.005 * numArrows)
-	else
-		self.elapsed = (self.elapsed or 0) + elapsed
-	end
-end
-
-local Enable = function(self)
-	local unit = self.unit
-	if(unit:find("raid") or unit:find("party")) then
-		if not self.GPS then PLUGIN:CreateGPS(self) end
-		tinsert(_FRAMES, self)
-
-		if not OnUpdateFrame then
-			OnUpdateFrame = CreateFrame("Frame")
-			OnUpdateFrame:SetScript("OnUpdate", Update)
-		end
-
-		OnUpdateFrame:Show()
-		return true
-	end
-end
-
-local Disable = function(self)
-	local GPS = self.GPS
-	if GPS then
-		for k, frame in next, _FRAMES do
-			if(frame == self) then
-				tremove(_FRAMES, k)
-				GPS:Hide()
-				break
-			end
-		end
-
-		if #_FRAMES == 0 and OnUpdateFrame then
-			OnUpdateFrame:Hide()
-		end
-	end
-end
-
-oUF:AddElement('GPS', nil, Enable, Disable)
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.toc b/Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.toc
deleted file mode 100644
index cdca787..0000000
--- a/Interface/AddOns/SVUI_TrackingDevice/libs/oUF_GPS/oUF_GPS.toc
+++ /dev/null
@@ -1,9 +0,0 @@
-## Interface: 50001
-## Title: oUF GPS
-## Notes: Adds GPS arrow to frames.
-## Author: Omega1970, Munglunch
-## Version: 1.00
-## X-Category: oUF
-## Dependencies: oUF
-
-oUF_GPS.lua
\ No newline at end of file