Quantcast

More Ace3 Cleanup!

Xruptor [08-24-16 - 02:31]
More Ace3 Cleanup!
Filename
BagSync.lua
modules/test.lua
diff --git a/BagSync.lua b/BagSync.lua
index 96be191..3d82e00 100644
--- a/BagSync.lua
+++ b/BagSync.lua
@@ -11,30 +11,8 @@

 local BSYC = select(2, ...) --grab the addon namespace
 BSYC = LibStub("AceAddon-3.0"):NewAddon(BSYC, "BagSync", "AceEvent-3.0", "AceConsole-3.0")
-
 local L = LibStub("AceLocale-3.0"):GetLocale("BagSync", true)

-local lastItem
-local lastDisplayed = {}
-local currentPlayer
-local currentRealm
-local playerClass
-local playerFaction
-local NUM_EQUIPMENT_SLOTS = 19
-local BS_DB
-local BS_GD
-local BS_TD
-local BS_CD
-local BS_BL
-local BS_RK
-local MAX_GUILDBANK_SLOTS_PER_TAB = 98
-local doTokenUpdate = 0
-local guildTabQueryQueue = {}
-local atBank = false
-local atVoidBank = false
-local atGuildBank = false
-local isCheckingMail = false
-
 local strsub, strsplit, strlower, strmatch, strtrim = string.sub, string.split, string.lower, string.match, string.trim
 local format, tonumber, tostring, tostringall = string.format, tonumber, tostring, tostringall
 local tsort, tinsert, unpack = table.sort, table.insert, unpack
@@ -47,10 +25,6 @@ function BSYC:Debug(...)
     if debugf then debugf:AddMessage(string.join(", ", tostringall(...))) end
 end

-
---sometimes I just want to debug some BagSync DB data someone gives me lol
-local debugging = false
-
 ------------------------------
 --    LibDataBroker-1.1	    --
 ------------------------------
@@ -146,66 +120,63 @@ end
 function BSYC:StartupDB()

 	BagSyncOpt = BagSyncOpt or {}
-
-	if BagSyncOpt.showTotal == nil then BagSyncOpt.showTotal = true end
-	if BagSyncOpt.showGuildNames == nil then BagSyncOpt.showGuildNames = false end
-	if BagSyncOpt.enableGuild == nil then BagSyncOpt.enableGuild = true end
-	if BagSyncOpt.enableMailbox == nil then BagSyncOpt.enableMailbox = true end
-	if BagSyncOpt.enableUnitClass == nil then BagSyncOpt.enableUnitClass = false end
-	if BagSyncOpt.enableMinimap == nil then BagSyncOpt.enableMinimap = true end
-	if BagSyncOpt.enableFaction == nil then BagSyncOpt.enableFaction = true end
-	if BagSyncOpt.enableAuction == nil then BagSyncOpt.enableAuction = true end
-	if BagSyncOpt.tooltipOnlySearch == nil then BagSyncOpt.tooltipOnlySearch = false end
-	if BagSyncOpt.enableTooltips == nil then BagSyncOpt.enableTooltips = true end
-	if BagSyncOpt.enableTooltipSeperator == nil then BagSyncOpt.enableTooltipSeperator = true end
-	if BagSyncOpt.enableCrossRealmsItems == nil then BagSyncOpt.enableCrossRealmsItems = true end
-	if BagSyncOpt.enableBNetAccountItems == nil then BagSyncOpt.enableBNetAccountItems = false end
-
+	self.options = BagSyncOpt
+
+	if self.options.showTotal == nil then self.options.showTotal = true end
+	if self.options.showGuildNames == nil then self.options.showGuildNames = false end
+	if self.options.enableGuild == nil then self.options.enableGuild = true end
+	if self.options.enableMailbox == nil then self.options.enableMailbox = true end
+	if self.options.enableUnitClass == nil then self.options.enableUnitClass = false end
+	if self.options.enableMinimap == nil then self.options.enableMinimap = true end
+	if self.options.enableFaction == nil then self.options.enableFaction = true end
+	if self.options.enableAuction == nil then self.options.enableAuction = true end
+	if self.options.tooltipOnlySearch == nil then self.options.tooltipOnlySearch = false end
+	if self.options.enableTooltips == nil then self.options.enableTooltips = true end
+	if self.options.enableTooltipSeperator == nil then self.options.enableTooltipSeperator = true end
+	if self.options.enableCrossRealmsItems == nil then self.options.enableCrossRealmsItems = true end
+	if self.options.enableBNetAccountItems == nil then self.options.enableBNetAccountItems = false end
+
 	--setup the default colors
-	if BagSyncOpt.colors == nil then BagSyncOpt.colors = {} end
-	if BagSyncOpt.colors.first == nil then BagSyncOpt.colors.first = { r = 128/255, g = 1, b = 0 }  end
-	if BagSyncOpt.colors.second == nil then BagSyncOpt.colors.second = { r = 199/255, g = 199/255, b = 207/255 }  end
-	if BagSyncOpt.colors.total == nil then BagSyncOpt.colors.total = { r = 244/255, g = 164/255, b = 96/255 }  end
-	if BagSyncOpt.colors.guild == nil then BagSyncOpt.colors.guild = { r = 101/255, g = 184/255, b = 192/255 }  end
-	if BagSyncOpt.colors.cross == nil then BagSyncOpt.colors.cross = { r = 1, g = 125/255, b = 10/255 }  end
-	if BagSyncOpt.colors.bnet == nil then BagSyncOpt.colors.bnet = { r = 53/255, g = 136/255, b = 1 }  end
-
-	--new format, get rid of old
-	if not BagSyncOpt.dbversion or not tonumber(BagSyncOpt.dbversion) or tonumber(BagSyncOpt.dbversion) < 7 then
-		BagSyncDB = {}
-		BagSyncGUILD_DB = {}
-		self:Print(L["You have been updated to latest database version!  You will need to rescan all your characters again!|r"])
-	end
+	if self.options.colors == nil then self.options.colors = {} end
+	if self.options.colors.first == nil then self.options.colors.first = { r = 128/255, g = 1, b = 0 }  end
+	if self.options.colors.second == nil then self.options.colors.second = { r = 199/255, g = 199/255, b = 207/255 }  end
+	if self.options.colors.total == nil then self.options.colors.total = { r = 244/255, g = 164/255, b = 96/255 }  end
+	if self.options.colors.guild == nil then self.options.colors.guild = { r = 101/255, g = 184/255, b = 192/255 }  end
+	if self.options.colors.cross == nil then self.options.colors.cross = { r = 1, g = 125/255, b = 10/255 }  end
+	if self.options.colors.bnet == nil then self.options.colors.bnet = { r = 53/255, g = 136/255, b = 1 }  end
+
+	self.db = {}

+	--the player DB defaults to the current realm, if you want more then you need to iterate BagSyncDB
 	BagSyncDB = BagSyncDB or {}
-	BagSyncDB[currentRealm] = BagSyncDB[currentRealm] or {}
-	BagSyncDB[currentRealm][currentPlayer] = BagSyncDB[currentRealm][currentPlayer] or {}
-	BS_DB = BagSyncDB[currentRealm][currentPlayer]
+	BagSyncDB[self.currentRealm] = BagSyncDB[self.currentRealm] or {}
+	BagSyncDB[self.currentRealm][self.currentPlayer] = BagSyncDB[self.currentRealm][self.currentPlayer] or {}
+	self.db.player = BagSyncDB[self.currentRealm][self.currentPlayer]

 	BagSyncGUILD_DB = BagSyncGUILD_DB or {}
-	BagSyncGUILD_DB[currentRealm] = BagSyncGUILD_DB[currentRealm] or {}
-	BS_GD = BagSyncGUILD_DB[currentRealm]
+	BagSyncGUILD_DB[self.currentRealm] = BagSyncGUILD_DB[self.currentRealm] or {}
+	self.db.guild = BagSyncGUILD_DB

 	BagSyncTOKEN_DB = BagSyncTOKEN_DB or {}
-	BagSyncTOKEN_DB[currentRealm] = BagSyncTOKEN_DB[currentRealm] or {}
-	BS_TD = BagSyncTOKEN_DB[currentRealm]
+	BagSyncTOKEN_DB[self.currentRealm] = BagSyncTOKEN_DB[self.currentRealm] or {}
+	self.db.token = BagSyncTOKEN_DB

 	BagSyncCRAFT_DB = BagSyncCRAFT_DB or {}
-	BagSyncCRAFT_DB[currentRealm] = BagSyncCRAFT_DB[currentRealm] or {}
-	BagSyncCRAFT_DB[currentRealm][currentPlayer] = BagSyncCRAFT_DB[currentRealm][currentPlayer] or {}
-	BS_CD = BagSyncCRAFT_DB[currentRealm][currentPlayer]
+	BagSyncCRAFT_DB[self.currentRealm] = BagSyncCRAFT_DB[self.currentRealm] or {}
+	BagSyncCRAFT_DB[self.currentRealm][self.currentPlayer] = BagSyncCRAFT_DB[self.currentRealm][self.currentPlayer] or {}
+	self.db.profession = BagSyncCRAFT_DB

 	BagSyncBLACKLIST_DB = BagSyncBLACKLIST_DB or {}
-	BagSyncBLACKLIST_DB[currentRealm] = BagSyncBLACKLIST_DB[currentRealm] or {}
-	BS_BL = BagSyncBLACKLIST_DB[currentRealm]
+	BagSyncBLACKLIST_DB[self.currentRealm] = BagSyncBLACKLIST_DB[self.currentRealm] or {}
+	self.db.blacklist = BagSyncBLACKLIST_DB

 	BagSync_REALMKEY = BagSync_REALMKEY or {}
-	BagSync_REALMKEY[currentRealm] = GetRealmName()
-	BS_RK = BagSync_REALMKEY
+	BagSync_REALMKEY[self.currentRealm] = GetRealmName()
+	self.db.realmkey = BagSync_REALMKEY

 end

-function BSYC:FixDB_Data(onlyChkGuild)
+function BSYC:FixDB(onlyChkGuild)
 	--Removes obsolete character information
 	--Removes obsolete guild information
 	--Removes obsolete characters from tokens db
@@ -327,21 +298,64 @@ function BSYC:FixDB_Data(onlyChkGuild)
 	end
 end

-function BSYC:getFilteredDB()
+function BSYC:CleanAuctionsDB()
+	--this function will remove expired auctions for all characters in every realm
+	local timestampChk = { 30*60, 2*60*60, 12*60*60, 48*60*60 }
+
+	for realm, rd in pairs(BagSyncDB) do
+		--realm
+		for k, v in pairs(rd) do
+			--users k=name, v=values
+			if BagSyncDB[realm][k].AH_LastScan and BagSyncDB[realm][k].AH_Count then --only proceed if we have an auction house time to work with
+				--check to see if we even have something to work with
+				if BagSyncDB[realm][k]["auction"] then
+					--we do so lets do a loop
+					local bVal = BagSyncDB[realm][k].AH_Count
+					--do a loop through all of them and check to see if any expired
+					for x = 1, bVal do
+						if BagSyncDB[realm][k]["auction"][0][x] then
+							--check for expired and remove if necessary
+							--it's okay if the auction count is showing more then actually stored, it's just used as a means
+							--to scan through all our items.  Even if we have only 3 and the count is 6 it will just skip the last 3.
+							local dblink, dbcount, dbtimeleft = strsplit(",", BagSyncDB[realm][k]["auction"][0][x])
+
+							--only proceed if we have everything to work with, otherwise this auction data is corrupt
+							if dblink and dbcount and dbtimeleft then
+								if tonumber(dbtimeleft) < 1 or tonumber(dbtimeleft) > 4 then dbtimeleft = 4 end --just in case
+								--now do the time checks
+								local diff = time() - BagSyncDB[realm][k].AH_LastScan
+								if diff > timestampChk[tonumber(dbtimeleft)] then
+									--technically this isn't very realiable.  but I suppose it's better the  nothing
+									BagSyncDB[realm][k]["auction"][0][x] = nil
+								end
+							else
+								--it's corrupt delete it
+								BagSyncDB[realm][k]["auction"][0][x] = nil
+							end
+						end
+					end
+				end
+			end
+		end
+	end
+
+end
+
+function BSYC:FilterDB()

 	local xIndex = {}

 	--add more realm names if necessary based on BNet or Cross Realms
-	if BagSyncOpt.enableBNetAccountItems then
+	if self.options.enableBNetAccountItems then
 		for k, v in pairs(BagSyncDB) do
 			for q, r in pairs(v) do
 				--we do this incase there are multiple characters with same name
 				xIndex[q.."^"..k] = r
 			end
 		end
-	elseif BagSyncOpt.enableCrossRealmsItems then
+	elseif self.options.enableCrossRealmsItems then
 		for k, v in pairs(BagSyncDB) do
-			if k == currentRealm or self.crossRealmNames[k] then
+			if k == self.currentRealm or self.crossRealmNames[k] then
 				for q, r in pairs(v) do
 					----we do this incase there are multiple characters with same name
 					xIndex[q.."^"..k] = r
@@ -349,64 +363,63 @@ function BSYC:getFilteredDB()
 			end
 		end
 	else
-		xIndex = BagSyncDB[currentRealm]
+		xIndex = BagSyncDB[self.currentRealm]
 	end

 	return xIndex
 end

-function BSYC:getCharacterRealmInfo(charName, charRealm)
+function BSYC:GetCharacterRealmInfo(charName, charRealm)

 	local yName, yRealm  = strsplit("^", charName)
-	local realmFullName = charRealm
+	local realmFullName = charRealm --default to shortened realm first

-	if BS_RK[charRealm] then realmFullName = BS_RK[charRealm] end
+	if self.db.realmkey[charRealm] then realmFullName = self.db.realmkey[charRealm] end --second, if we have a realmkey with a true realm name then use it

 	--add Cross-Realm and BNet identifiers to Characters not on same realm
-	if BagSyncOpt.enableBNetAccountItems then
-		if charRealm and charRealm ~= currentRealm then
+	if self.options.enableBNetAccountItems then
+		if charRealm and charRealm ~= self.currentRealm then
 			if not self.crossRealmNames[charRealm] then
-				charName = yName.." "..rgbhex(BagSyncOpt.colors.bnet).."[BNet-"..realmFullName.."]|r"
+				charName = yName.." "..rgbhex(self.options.colors.bnet).."[BNet-"..realmFullName.."]|r"
 			else
-				charName = yName.." "..rgbhex(BagSyncOpt.colors.cross).."[XR-"..realmFullName.."]|r"
+				charName = yName.." "..rgbhex(self.options.colors.cross).."[XR-"..realmFullName.."]|r"
 			end
 		else
 			charName = yName
 		end
-	elseif BagSyncOpt.enableCrossRealmsItems then
-		if charRealm and charRealm ~= currentRealm then
-			charName = yName.." "..rgbhex(BagSyncOpt.colors.cross).."[XR-"..realmFullName.."]|r"
+	elseif self.options.enableCrossRealmsItems then
+		if charRealm and charRealm ~= self.currentRealm then
+			charName = yName.." "..rgbhex(self.options.colors.cross).."[XR-"..realmFullName.."]|r"
 		else
 			charName = yName
 		end
 	else
-		--to cover our buttocks lol, JUST IN CASE
 		charName = yName
 	end

 	return charName
 end

-function BSYC:getGuildRealmInfo(guildName, guildRealm)
+function BSYC:GetGuildRealmInfo(guildName, guildRealm)

 	local realmFullName = guildRealm

-	if BS_RK[guildRealm] then realmFullName = BS_RK[guildRealm] end
+	if self.db.realmkey[guildRealm] then realmFullName = self.db.realmkey[guildRealm] end

 	--add Cross-Realm and BNet identifiers to Guilds not on same realm
-	if BagSyncOpt.enableBNetAccountItems then
-		if guildRealm and guildRealm ~= currentRealm then
+	if self.options.enableBNetAccountItems then
+		if guildRealm and guildRealm ~= self.currentRealm then
 			if not self.crossRealmNames[guildRealm] then
-				guildName = guildName.." "..rgbhex(BagSyncOpt.colors.bnet).."[BNet-"..realmFullName.."]|r"
+				guildName = guildName.." "..rgbhex(self.options.colors.bnet).."[BNet-"..realmFullName.."]|r"
 			else
-				guildName = guildName.." "..rgbhex(BagSyncOpt.colors.cross).."[XR-"..realmFullName.."]|r"
+				guildName = guildName.." "..rgbhex(self.options.colors.cross).."[XR-"..realmFullName.."]|r"
 			end
 		else
 			guildName = guildName
 		end
-	elseif BagSyncOpt.enableCrossRealmsItems then
-		if guildRealm and guildRealm ~= currentRealm then
-			guildName = guildName.." "..rgbhex(BagSyncOpt.colors.cross).."[XR-"..realmFullName.."]|r"
+	elseif self.options.enableCrossRealmsItems then
+		if guildRealm and guildRealm ~= self.currentRealm then
+			guildName = guildName.." "..rgbhex(self.options.colors.cross).."[XR-"..realmFullName.."]|r"
 		else
 			guildName = guildName
 		end
@@ -423,14 +436,12 @@ end
 ----------------------

 function BSYC:SaveBag(bagname, bagid)
-	if debugging then return end
 	if not bagname or not bagid then return nil end
-	if not BS_DB then self:StartupDB() end
-	BS_DB[bagname] = BS_DB[bagname] or {}
+	self.db.player[bagname] = self.db.player[bagname] or {}

 	--reset our tooltip data since we scanned new items (we want current data not old)
-	lastItem = nil
-	lastDisplayed = {}
+	self.PreviousItemLink = nil
+	self.PreviousItemTotals = {}

 	if GetContainerNumSlots(bagid) > 0 then
 		local slotItems = {}
@@ -445,22 +456,22 @@ function BSYC:SaveBag(bagname, bagid)
 				end
 			end
 		end
-		BS_DB[bagname][bagid] = slotItems
+		self.db.player[bagname][bagid] = slotItems
 	else
-		BS_DB[bagname][bagid] = nil
+		self.db.player[bagname][bagid] = nil
 	end
 end

 function BSYC:SaveEquipment()
-	if debugging then return end
+	self.db.player["equip"] = self.db.player["equip"] or {}
+
 	--reset our tooltip data since we scanned new items (we want current data not old)
-	lastItem = nil
-	lastDisplayed = {}
+	self.PreviousItemLink = nil
+	self.PreviousItemTotals = {}

-	if not BS_DB then self:StartupDB() end
-	BS_DB["equip"] = BS_DB["equip"] or {}
-
 	local slotItems = {}
+	local NUM_EQUIPMENT_SLOTS = 19
+
 	--start at 1, 0 used to be the old range slot (not needed anymore)
 	for slot = 1, NUM_EQUIPMENT_SLOTS do
 		local link = GetInventoryItemLink("player", slot)
@@ -474,7 +485,7 @@ function BSYC:SaveEquipment()
 			end
 		end
 	end
-	BS_DB["equip"][0] = slotItems
+	self.db.player["equip"][0] = slotItems
 end

 function BSYC:ScanEntireBank()
@@ -489,13 +500,13 @@ function BSYC:ScanEntireBank()
 end

 function BSYC:ScanVoidBank()
-	if VoidStorageFrame and VoidStorageFrame:IsShown() then
-		if not BS_DB then self:StartupDB() end
-		BS_DB["void"] = BS_DB["void"] or {}
+	self.db.player["void"] = self.db.player["void"] or {}

+	if VoidStorageFrame and VoidStorageFrame:IsShown() then
+
 		--reset our tooltip data since we scanned new items (we want current data not old)
-		lastItem = nil
-		lastDisplayed = {}
+		self.PreviousItemLink = nil
+		self.PreviousItemTotals = {}

 		local numTabs = 2
 		local index = 0
@@ -511,20 +522,18 @@ function BSYC:ScanVoidBank()
 			end
 		end

-		BS_DB["void"][0] = slotItems
+		self.db.player["void"][0] = slotItems
 	end
 end

 function BSYC:ScanGuildBank()
-	--GetCurrentGuildBankTab()
 	if not IsInGuild() then return end

-	if not BS_GD then self:StartupDB() end
-	BS_GD[BS_DB.guild] = BS_GD[BS_DB.guild] or {}
-
+	local MAX_GUILDBANK_SLOTS_PER_TAB = 98
+
 	--reset our tooltip data since we scanned new items (we want current data not old)
-	lastItem = nil
-	lastDisplayed = {}
+	self.PreviousItemLink = nil
+	self.PreviousItemTotals = {}

 	local numTabs = GetNumGuildBankTabs()
 	local index = 0
@@ -553,29 +562,28 @@ function BSYC:ScanGuildBank()
 		end
 	end

-	BS_GD[BS_DB.guild] = slotItems
+	self.db.guild[self.currentRealm][self.db.player.guild] = slotItems

 end

 function BSYC:ScanMailbox()
 	--this is to prevent buffer overflow from the CheckInbox() function calling ScanMailbox too much :)
-	if isCheckingMail then return end
-	isCheckingMail = true
+	if self.isCheckingMail then return end
+	self.isCheckingMail = true

 	 --used to initiate mail check from server, for some reason GetInboxNumItems() returns zero sometimes
 	 --even though the user has mail in the mailbox.  This can be attributed to lag.
 	CheckInbox()

-	if not BS_DB then self:StartupDB() end
-	BS_DB["mailbox"] = BS_DB["mailbox"] or {}
+	self.db.player["mailbox"] = self.db.player["mailbox"] or {}

 	local slotItems = {}
 	local mailCount = 0
 	local numInbox = GetInboxNumItems()

 	--reset our tooltip data since we scanned new items (we want current data not old)
-	lastItem = nil
-	lastDisplayed = {}
+	self.PreviousItemLink = nil
+	self.PreviousItemTotals = {}

 	--scan the inbox
 	if (numInbox > 0) then
@@ -597,21 +605,20 @@ function BSYC:ScanMailbox()
 		end
 	end

-	BS_DB["mailbox"][0] = slotItems
-	isCheckingMail = false
+	self.db.player["mailbox"][0] = slotItems
+	self.isCheckingMail = false
 end

 function BSYC:ScanAuctionHouse()
-	if not BS_DB then self:StartupDB() end
-	BS_DB["auction"] = BS_DB["auction"] or {}
+	self.db.player["auction"] = self.db.player["auction"] or {}

 	local slotItems = {}
 	local ahCount = 0
 	local numActiveAuctions = GetNumAuctionItems("owner")

 	--reset our tooltip data since we scanned new items (we want current data not old)
-	lastItem = nil
-	lastDisplayed = {}
+	self.PreviousItemLink = nil
+	self.PreviousItemTotals = {}

 	--scan the auction house
 	if (numActiveAuctions > 0) then
@@ -629,59 +636,15 @@ function BSYC:ScanAuctionHouse()
 		end
 	end

-	BS_DB["auction"][0] = slotItems
-	BS_DB.AH_Count = ahCount
-end
-
---this method is global for all toons, removes expired auctions on login
-function BSYC:RemoveExpiredAuctions()
-	if debugging then return end
-	local timestampChk = { 30*60, 2*60*60, 12*60*60, 48*60*60 }
-
-	for realm, rd in pairs(BagSyncDB) do
-		--realm
-		for k, v in pairs(rd) do
-			--users k=name, v=values
-			if BagSyncDB[realm][k].AH_LastScan and BagSyncDB[realm][k].AH_Count then --only proceed if we have an auction house time to work with
-				--check to see if we even have something to work with
-				if BagSyncDB[realm][k]["auction"] then
-					--we do so lets do a loop
-					local bVal = BagSyncDB[realm][k].AH_Count
-					--do a loop through all of them and check to see if any expired
-					for x = 1, bVal do
-						if BagSyncDB[realm][k]["auction"][0][x] then
-							--check for expired and remove if necessary
-							--it's okay if the auction count is showing more then actually stored, it's just used as a means
-							--to scan through all our items.  Even if we have only 3 and the count is 6 it will just skip the last 3.
-							local dblink, dbcount, dbtimeleft = strsplit(",", BagSyncDB[realm][k]["auction"][0][x])
-
-							--only proceed if we have everything to work with, otherwise this auction data is corrupt
-							if dblink and dbcount and dbtimeleft then
-								if tonumber(dbtimeleft) < 1 or tonumber(dbtimeleft) > 4 then dbtimeleft = 4 end --just in case
-								--now do the time checks
-								local diff = time() - BagSyncDB[realm][k].AH_LastScan
-								if diff > timestampChk[tonumber(dbtimeleft)] then
-									--technically this isn't very realiable.  but I suppose it's better the  nothing
-									BagSyncDB[realm][k]["auction"][0][x] = nil
-								end
-							else
-								--it's corrupt delete it
-								BagSyncDB[realm][k]["auction"][0][x] = nil
-							end
-						end
-					end
-				end
-			end
-		end
-	end
-
+	self.db.player["auction"][0] = slotItems
+	self.db.player.AH_Count = ahCount
 end

 ------------------------
 --   Money Tooltip    --
 ------------------------

-function BSYC:buildMoneyString(money, color)
+function BSYC:CreateMoneyString(money, color)

 	local iconSize = 14
 	local goldicon = string.format("\124TInterface\\MoneyFrame\\UI-GoldIcon:%d:%d:1:0\124t ", iconSize, iconSize)
@@ -753,11 +716,11 @@ function BSYC:ShowMoneyTooltip()
 	tooltip:AddLine(" ")

 	--loop through our characters
-	local xDB = self:getFilteredDB()
+	local xDB = self:FilterDB()

 	for k, v in pairs(xDB) do
 		if v.gold then
-			k = self:getCharacterRealmInfo(k, v.realm)
+			k = self:GetCharacterRealmInfo(k, v.realm)
 			table.insert(usrData, { name=k, gold=v.gold } )
 		end
 	end
@@ -766,12 +729,12 @@ function BSYC:ShowMoneyTooltip()
 	local gldTotal = 0

 	for i=1, table.getn(usrData) do
-		tooltip:AddDoubleLine(usrData[i].name, self:buildMoneyString(usrData[i].gold, false), 1, 1, 1, 1, 1, 1)
+		tooltip:AddDoubleLine(usrData[i].name, self:CreateMoneyString(usrData[i].gold, false), 1, 1, 1, 1, 1, 1)
 		gldTotal = gldTotal + usrData[i].gold
 	end
-	if BagSyncOpt.showTotal and gldTotal > 0 then
+	if self.options.showTotal and gldTotal > 0 then
 		tooltip:AddLine(" ")
-		tooltip:AddDoubleLine(tooltipColor(BagSyncOpt.colors.total, L["Total:"]), self:buildMoneyString(gldTotal, false), 1, 1, 1, 1, 1, 1)
+		tooltip:AddDoubleLine(tooltipColor(self.options.colors.total, L["Total:"]), self:CreateMoneyString(gldTotal, false), 1, 1, 1, 1, 1, 1)
 	end

 	tooltip:AddLine(" ")
@@ -783,20 +746,18 @@ end
 ------------------------

 function BSYC:ScanTokens()
-self:Print("tokens")
-	if debugging then return end
 	--LETS AVOID TOKEN SPAM AS MUCH AS POSSIBLE
-	if doTokenUpdate == 1 then return end
+	if self.doTokenUpdate and self.doTokenUpdate > 0 then return end
 	if IsInBG() or IsInArena() or InCombatLockdown() or UnitAffectingCombat("player") then
 		--avoid (Honor point spam), avoid (arena point spam), if it's world PVP...well then it sucks to be you
-		doTokenUpdate = 1
+		self.doTokenUpdate = 1
 		BSYC:RegisterEvent("PLAYER_REGEN_ENABLED")
 		return
 	end

 	local lastHeader
 	local limit = GetCurrencyListSize()
-
+
 	for i=1, limit do

 		local name, isHeader, isExpanded, _, _, count, icon = GetCurrencyListInfo(i)
@@ -811,13 +772,10 @@ self:Print("tokens")
 				lastHeader = name
 			end
 			if (not isHeader) then
-				if BS_TD then
-					BS_TD = BS_TD or {}
-					BS_TD[name] = BS_TD[name] or {}
-					BS_TD[name].icon = icon
-					BS_TD[name].header = lastHeader
-					BS_TD[name][currentPlayer] = count
-				end
+				self.db.token[self.currentRealm][name] = self.db.token[self.currentRealm][name] or {}
+				self.db.token[self.currentRealm][name].icon = icon
+				self.db.token[self.currentRealm][name].header = lastHeader
+				self.db.token[self.currentRealm][name][self.currentPlayer] = count
 			end
 		end
 	end
@@ -825,17 +783,15 @@ self:Print("tokens")
 end

 ------------------------
---      Tooltip!      --
--- (Special thanks to tuller)
+--      Tooltip       --
 ------------------------

---a function call to reset these local variables outside the scope ;)
-function BSYC:resetTooltip()
-	lastDisplayed = {}
-	lastItem = nil
+function BSYC:ResetTooltip()
+	self.PreviousItemTotals = {}
+	self.PreviousItemLink = nil
 end

-function BSYC:CountsToInfoString(countTable)
+function BSYC:CreateItemTotals(countTable)
 	local info
 	local total = 0

@@ -874,7 +830,7 @@ function BSYC:CountsToInfoString(countTable)
 		total = total + countTable["equip"]
 	end

-	if countTable["guild"] > 0 and BagSyncOpt.enableGuild and not BagSyncOpt.showGuildNames then
+	if countTable["guild"] > 0 and self.options.enableGuild and not self.options.showGuildNames then
 		local count = L["Guild: %d"]:format(countTable["guild"])
 		if info then
 			info = strjoin(", ", info, count)
@@ -884,7 +840,7 @@ function BSYC:CountsToInfoString(countTable)
 		total = total + countTable["guild"] --add the guild count only if we don't have showguildnames on, otherwise it's counted twice
 	end

-	if countTable["mailbox"] > 0 and BagSyncOpt.enableMailbox then
+	if countTable["mailbox"] > 0 and self.options.enableMailbox then
 		local count = L["Mail: %d"]:format(countTable["mailbox"])
 		if info then
 			info = strjoin(", ", info, count)
@@ -904,7 +860,7 @@ function BSYC:CountsToInfoString(countTable)
 		total = total + countTable["void"]
 	end

-	if countTable["auction"] > 0 and BagSyncOpt.enableAuction then
+	if countTable["auction"] > 0 and self.options.enableAuction then
 		local count = L["AH: %d"]:format(countTable["auction"])
 		if info then
 			info = strjoin(", ", info, count)
@@ -925,41 +881,33 @@ function BSYC:CountsToInfoString(countTable)
 		end

 		if not totalPass then
-			local totalStr = tooltipColor(BagSyncOpt.colors.first, total)
-			return totalStr .. tooltipColor(BagSyncOpt.colors.second, format(" (%s)", info))
+			local totalStr = tooltipColor(self.options.colors.first, total)
+			return totalStr .. tooltipColor(self.options.colors.second, format(" (%s)", info))
 		else
-			return tooltipColor(BagSyncOpt.colors.first, info)
+			return tooltipColor(self.options.colors.first, info)
 		end
 	end
 end

-function BSYC:getNameColor(sName, sClass)
-	if not BagSyncOpt.enableUnitClass then
-		return tooltipColor(BagSyncOpt.colors.first, sName)
+function BSYC:GetClassColor(sName, sClass)
+	if not self.options.enableUnitClass then
+		return tooltipColor(self.options.colors.first, sName)
 	else
 		if sName ~= "Unknown" and sClass and RAID_CLASS_COLORS[sClass] then
 			return rgbhex(RAID_CLASS_COLORS[sClass])..sName.."|r"
 		end
 	end
-	return tooltipColor(BagSyncOpt.colors.first, sName)
-end
-
-function BSYC:getPlayerNameColor(sName)
-	if BagSyncDB[currentRealm][sName] then
-		local sClass = BagSyncDB[currentRealm][sName].class
-		return self:getNameColor(sName, sClass)
-	end
-	return tooltipColor(BagSyncOpt.colors.first, sName)
+	return tooltipColor(self.options.colors.first, sName)
 end

 function BSYC:AddCurrencyToTooltip(frame, currencyName)
-	if BS_TD and currencyName and BS_TD[currencyName] then
-		if BagSyncOpt.enableTooltipSeperator then
+	if currencyName and self.db.token[self.currentRealm][currencyName] then
+		if self.options.enableTooltipSeperator then
 			frame:AddLine(" ")
 		end
-		for charName, count in pairsByKeys(BS_TD[currencyName]) do
+		for charName, count in pairsByKeys(self.db.token[self.currentRealm][currencyName]) do
 			if charName ~= "icon" and charName ~= "header" and count > 0 then
-				frame:AddDoubleLine(self:getPlayerNameColor(charName), count)
+				frame:AddDoubleLine(charName, count)
 			end
 		end
 		frame:Show()
@@ -976,22 +924,22 @@ function BSYC:AddItemToTooltip(frame, link) --workaround
 	end

 	--only show tooltips in search frame if the option is enabled
-	if BagSyncOpt.tooltipOnlySearch and frame:GetOwner() and frame:GetOwner():GetName() and string.sub(frame:GetOwner():GetName(), 1, 16) ~= "BagSyncSearchRow" then
+	if self.options.tooltipOnlySearch and frame:GetOwner() and frame:GetOwner():GetName() and string.sub(frame:GetOwner():GetName(), 1, 16) ~= "BagSyncSearchRow" then
 		frame:Show()
 		return
 	end

 	--ignore the hearthstone and blacklisted items
-	-- if itemLink and tonumber(itemLink) and (tonumber(itemLink) == 6948 or tonumber(itemLink) == 110560 or tonumber(itemLink) == 140192 or BS_BL[tonumber(itemLink)]) then
+	-- if itemLink and tonumber(itemLink) and (tonumber(itemLink) == 6948 or tonumber(itemLink) == 110560 or tonumber(itemLink) == 140192 or self.db.blacklist[self.currentRealm][tonumber(itemLink)]) then
 		-- frame:Show()
 		-- return
 	-- end

 	--lag check (check for previously displayed data) if so then display it
-	if lastItem and itemLink and itemLink == lastItem then
-		if table.getn(lastDisplayed) > 0 then
-			for i = 1, #lastDisplayed do
-				local ename, ecount  = strsplit("@", lastDisplayed[i])
+	if self.PreviousItemLink and itemLink and itemLink == self.PreviousItemLink then
+		if table.getn(self.PreviousItemTotals) > 0 then
+			for i = 1, #self.PreviousItemTotals do
+				local ename, ecount  = strsplit("@", self.PreviousItemTotals[i])
 				if ename and ecount then
 					frame:AddDoubleLine(ename, ecount)
 				end
@@ -1002,15 +950,15 @@ function BSYC:AddItemToTooltip(frame, link) --workaround
 	end

 	--reset our last displayed
-	lastDisplayed = {}
-	lastItem = itemLink
+	self.PreviousItemTotals = {}
+	self.PreviousItemLink = itemLink

 	--this is so we don't scan the same guild multiple times
 	local previousGuilds = {}
 	local grandTotal = 0
 	local first = true

-	local xDB = BSYC:getFilteredDB()
+	local xDB = BSYC:FilterDB()

 	--loop through our characters
 	--k = player, v = stored data for player
@@ -1028,10 +976,10 @@ function BSYC:AddItemToTooltip(frame, link) --workaround
 		}

 		local infoString
-		local pFaction = v.faction or playerFaction --just in case ;) if we dont know the faction yet display it anyways
+		local pFaction = v.faction or self.playerFaction --just in case ;) if we dont know the faction yet display it anyways

 		--check if we should show both factions or not
-		if BagSyncOpt.enableFaction or pFaction == playerFaction then
+		if self.options.enableFaction or pFaction == self.playerFaction then

 			--now count the stuff for the user
 			--q = bag name, r = stored data for bag name
@@ -1054,19 +1002,19 @@ function BSYC:AddItemToTooltip(frame, link) --workaround
 				end
 			end

-			if BagSyncOpt.enableGuild then
+			if self.options.enableGuild then
 				local guildN = v.guild or nil

 				--check the guild bank if the character is in a guild
-				if BagSyncGUILD_DB and guildN and BagSyncGUILD_DB[v.realm][guildN] then
+				if guildN and self.db.guild[v.realm][guildN] then
 					--check to see if this guild has already been done through this run (so we don't do it multiple times)
-					--check for XR/B.Net support
-					local gName = BSYC:getGuildRealmInfo(guildN, v.realm)
+					--check for XR/B.Net support, you can have multiple guilds with same names on different servers
+					local gName = BSYC:GetGuildRealmInfo(guildN, v.realm)

 					if not previousGuilds[gName] then
 						--we only really need to see this information once per guild
 						local tmpCount = 0
-						for q, r in pairs(BagSyncGUILD_DB[v.realm][guildN]) do
+						for q, r in pairs(self.db.guild[v.realm][guildN]) do
 							local dblink, dbcount = strsplit(",", r)
 							if dblink and dblink == itemLink then
 								allowList["guild"] = allowList["guild"] + (dbcount or 1)
@@ -1081,11 +1029,11 @@ function BSYC:AddItemToTooltip(frame, link) --workaround

 			--get class for the unit if there is one
 			local pClass = v.class or nil
-			infoString = self:CountsToInfoString(allowList)
+			infoString = self:CreateItemTotals(allowList)

 			if infoString and infoString ~= "" then
-				k = BSYC:getCharacterRealmInfo(k, v.realm)
-				table.insert(lastDisplayed, self:getNameColor(k or "Unknown", pClass).."@"..(infoString or "unknown"))
+				k = BSYC:GetCharacterRealmInfo(k, v.realm)
+				table.insert(self.PreviousItemTotals, self:GetClassColor(k or "Unknown", pClass).."@"..(infoString or "unknown"))
 			end

 		end
@@ -1093,33 +1041,33 @@ function BSYC:AddItemToTooltip(frame, link) --workaround
 	end

 	--sort it
-	table.sort(lastDisplayed, function(a,b) return (a < b) end)
+	table.sort(self.PreviousItemTotals, function(a,b) return (a < b) end)

 	--show guildnames last
-	if BagSyncOpt.enableGuild and BagSyncOpt.showGuildNames then
+	if self.options.enableGuild and self.options.showGuildNames then
 		for k, v in pairsByKeys(previousGuilds) do
 			--only print stuff higher then zero
 			if v > 0 then
-				table.insert(lastDisplayed, tooltipColor(BagSyncOpt.colors.guild, k).."@"..tooltipColor(BagSyncOpt.colors.second, v))
+				table.insert(self.PreviousItemTotals, tooltipColor(self.options.colors.guild, k).."@"..tooltipColor(self.options.colors.second, v))
 			end
 		end
 	end

 	--show grand total if we have something
 	--don't show total if there is only one item
-	if BagSyncOpt.showTotal and grandTotal > 0 and getn(lastDisplayed) > 1 then
-		table.insert(lastDisplayed, tooltipColor(BagSyncOpt.colors.total, L["Total:"]).."@"..tooltipColor(BagSyncOpt.colors.second, grandTotal))
+	if self.options.showTotal and grandTotal > 0 and getn(self.PreviousItemTotals) > 1 then
+		table.insert(self.PreviousItemTotals, tooltipColor(self.options.colors.total, L["Total:"]).."@"..tooltipColor(self.options.colors.second, grandTotal))
 	end

 	--now check for seperater and only add if we have something in the table already
-	if table.getn(lastDisplayed) > 0 and BagSyncOpt.enableTooltipSeperator then
-		table.insert(lastDisplayed, 1 , " @ ")
+	if table.getn(self.PreviousItemTotals) > 0 and self.options.enableTooltipSeperator then
+		table.insert(self.PreviousItemTotals, 1 , " @ ")
 	end

 	--add it all together now
-	if table.getn(lastDisplayed) > 0 then
-		for i = 1, #lastDisplayed do
-			local ename, ecount  = strsplit("@", lastDisplayed[i])
+	if table.getn(self.PreviousItemTotals) > 0 then
+		for i = 1, #self.PreviousItemTotals do
+			local ename, ecount  = strsplit("@", self.PreviousItemTotals[i])
 			if ename and ecount then
 				frame:AddDoubleLine(ename, ecount)
 			end
@@ -1129,11 +1077,11 @@ function BSYC:AddItemToTooltip(frame, link) --workaround
 	frame:Show()
 end

---simplified tooltip function, similar to the past HookTip that was used before Jan 06, 2011 (commit:a89046f844e24585ab8db60d10f2f168498b9af4)
+--simplified tooltip function, similar to the past HookTooltip that was used before Jan 06, 2011 (commit:a89046f844e24585ab8db60d10f2f168498b9af4)
 --Honestly we aren't going to care about throttleing or anything like that anymore.  The lastdisplay array token should take care of that
 --Special thanks to Tuller for tooltip hook function

-function BSYC:hookTip(tooltip)
+function BSYC:HookTooltip(tooltip)

 	tooltip.isModified = false

@@ -1289,16 +1237,16 @@ function BSYC:OnEnable()
 	local ver = GetAddOnMetadata("BagSync","Version") or 0

 	--load our player info after login
-	currentPlayer = UnitName("player")
-	currentRealm = select(2, UnitFullName("player")) --get shortend realm name with no spaces and dashes
-	playerClass = select(2, UnitClass("player"))
-	playerFaction = UnitFactionGroup("player")
+	self.currentPlayer = UnitName("player")
+	self.currentRealm = select(2, UnitFullName("player")) --get shortend realm name with no spaces and dashes
+	self.playerClass = select(2, UnitClass("player"))
+	self.playerFaction = UnitFactionGroup("player")

-	local autoCompleteRealms = GetAutoCompleteRealms() or { currentRealm }
+	local autoCompleteRealms = GetAutoCompleteRealms() or { self.currentRealm }

 	self.crossRealmNames = {}
 	for k, v in pairs(autoCompleteRealms) do
-		if v ~= currentRealm then
+		if v ~= self.currentRealm then
 			self.crossRealmNames[v] = true
 		end
 	end
@@ -1307,30 +1255,30 @@ function BSYC:OnEnable()
 	self:StartupDB()

 	--do DB cleanup check by version number
-	if not BagSyncOpt.dbversion or BagSyncOpt.dbversion ~= ver then
-		self:FixDB_Data()
-		BagSyncOpt.dbversion = ver
+	if not self.options.dbversion or self.options.dbversion ~= ver then
+		self:FixDB()
+		self.options.dbversion = ver
 	end

 	--save the current user money (before bag update)
-	BS_DB.gold = GetMoney()
+	self.db.player.gold = GetMoney()

 	--save the class information
-	BS_DB.class = playerClass
+	self.db.player.class = self.playerClass

 	--save the faction information
 	--"Alliance", "Horde" or nil
-	BS_DB.faction = playerFaction
+	self.db.player.faction = self.playerFaction

 	--save player Realm for quick access later
-	BS_DB.realm = currentRealm
+	self.db.player.realm = self.currentRealm

 	--check for player not in guild
 	if IsInGuild() or GetNumGuildMembers(true) > 0 then
 		GuildRoster()
-	elseif BS_DB.guild then
-		BS_DB.guild = nil
-		self:FixDB_Data(true)
+	elseif self.db.player.guild then
+		self.db.player.guild = nil
+		self:FixDB(true)
 	end

 	--save all inventory data, including backpack(0)
@@ -1346,12 +1294,12 @@ function BSYC:OnEnable()
 	self:ScanTokens()

 	--clean up old auctions
-	self:RemoveExpiredAuctions()
+	self:CleanAuctionsDB()

 	--check for minimap toggle
-	if BagSyncOpt.enableMinimap and BagSync_MinimapButton and not BagSync_MinimapButton:IsVisible() then
+	if self.options.enableMinimap and BagSync_MinimapButton and not BagSync_MinimapButton:IsVisible() then
 		BagSync_MinimapButton:Show()
-	elseif not BagSyncOpt.enableMinimap and BagSync_MinimapButton and BagSync_MinimapButton:IsVisible() then
+	elseif not self.options.enableMinimap and BagSync_MinimapButton and BagSync_MinimapButton:IsVisible() then
 		BagSync_MinimapButton:Hide()
 	end

@@ -1385,8 +1333,8 @@ function BSYC:OnEnable()
 	self:RegisterEvent("TRADE_SKILL_SHOW")

 	--hook the tooltips
-	self:hookTip(GameTooltip)
-	self:hookTip(ItemRefTooltip)
+	self:HookTooltip(GameTooltip)
+	self:HookTooltip(ItemRefTooltip)

 	SLASH_BAGSYNC1 = "/bagsync"
 	SLASH_BAGSYNC2 = "/bgs"
@@ -1434,7 +1382,7 @@ function BSYC:OnEnable()
 				end
 				return true
 			elseif c and c:lower() == L["fixdb"] then
-				self:FixDB_Data()
+				self:FixDB()
 				return true
 			elseif c and c:lower() == L["config"] then
 				LibStub("AceConfigDialog-3.0"):Open("BagSync")
@@ -1470,40 +1418,36 @@ end
 ------------------------------

 function BSYC:CURRENCY_DISPLAY_UPDATE()
-	if debugging then return end
 	if IsInBG() or IsInArena() or InCombatLockdown() or UnitAffectingCombat("player") then return end
-	doTokenUpdate = 0
+	self.doTokenUpdate = 0
 	self:ScanTokens()
 end

 function BSYC:PLAYER_REGEN_ENABLED()
-	if debugging then return end
 	if IsInBG() or IsInArena() or InCombatLockdown() or UnitAffectingCombat("player") then return end
 	self:UnregisterEvent("PLAYER_REGEN_ENABLED")
 	--were out of an arena or battleground scan the points
-	doTokenUpdate = 0
+	self.doTokenUpdate = 0
 	self:ScanTokens()
 end

 function BSYC:GUILD_ROSTER_UPDATE()
-	if debugging then return end
-	if not IsInGuild() and BS_DB.guild then
-		BS_DB.guild = nil
-		self:FixDB_Data(true)
+	if not IsInGuild() and self.db.player.guild then
+		self.db.player.guild = nil
+		self:FixDB(true)
 	elseif IsInGuild() then
 		--if they don't have guild name store it or update it
 		if GetGuildInfo("player") then
-			if not BS_DB.guild or BS_DB.guild ~= GetGuildInfo("player") then
-				BS_DB.guild = GetGuildInfo("player")
-				self:FixDB_Data(true)
+			if not self.db.player.guild or self.db.player.guild ~= GetGuildInfo("player") then
+				self.db.player.guild = GetGuildInfo("player")
+				self:FixDB(true)
 			end
 		end
 	end
 end

 function BSYC:PLAYER_MONEY()
-	if debugging then return end
-	BS_DB.gold = GetMoney()
+	self.db.player.gold = GetMoney()
 end

 ------------------------------
@@ -1511,7 +1455,6 @@ end
 ------------------------------

 function BSYC:BAG_UPDATE(event, bagid)
-	if debugging then return end
 	-- -1 happens to be the primary bank slot ;)
 	if (bagid > BANK_CONTAINER) then

@@ -1528,7 +1471,7 @@ function BSYC:BAG_UPDATE(event, bagid)
 			return
 		end

-		if bagname == "bank" and not atBank then return; end
+		if bagname == "bank" and not self.atBank then return; end
 		--now save the item information in the bag from bagupdate, this could be bag or bank
 		self:SaveBag(bagname, bagid)

@@ -1536,7 +1479,6 @@ function BSYC:BAG_UPDATE(event, bagid)
 end

 function BSYC:UNIT_INVENTORY_CHANGED(event, unit)
-	if debugging then return end
 	if unit == "player" then
 		self:SaveEquipment()
 	end
@@ -1547,20 +1489,17 @@ end
 ------------------------------

 function BSYC:BANKFRAME_OPENED()
-	if debugging then return end
-	atBank = true
+	self.atBank = true
 	self:ScanEntireBank()
 end

 function BSYC:BANKFRAME_CLOSED()
-	if debugging then return end
-	atBank = false
+	self.atBank = false
 end

 function BSYC:PLAYERBANKSLOTS_CHANGED(event, slotid)
-	if debugging then return end
-	--Remove atBank when/if Blizzard allows Bank access without being at the bank
-	if atBank then
+	--Remove self.atBank when/if Blizzard allows Bank access without being at the bank
+	if self.atBank then
 		self:SaveBag("bank", BANK_CONTAINER)
 	end
 end
@@ -1570,7 +1509,6 @@ end
 ------------------------------

 function BSYC:PLAYERREAGENTBANKSLOTS_CHANGED()
-	if debugging then return end
 	self:SaveBag("reagentbank", REAGENTBANK_CONTAINER)
 end

@@ -1579,28 +1517,23 @@ end
 ------------------------------

 function BSYC:VOID_STORAGE_OPEN()
-	if debugging then return end
-	atVoidBank = true
+	self.atVoidBank = true
 	self:ScanVoidBank()
 end

 function BSYC:VOID_STORAGE_CLOSE()
-	if debugging then return end
-	atVoidBank = false
+	self.atVoidBank = false
 end

 function BSYC:VOID_STORAGE_UPDATE()
-	if debugging then return end
 	self:ScanVoidBank()
 end

 function BSYC:VOID_STORAGE_CONTENTS_UPDATE()
-	if debugging then return end
 	self:ScanVoidBank()
 end

 function BSYC:VOID_TRANSFER_DONE()
-	if debugging then return end
 	self:ScanVoidBank()
 end

@@ -1609,35 +1542,33 @@ end
 ------------------------------

 function BSYC:GUILDBANKFRAME_OPENED()
-	if debugging then return end
-	atGuildBank = true
-	if not BagSyncOpt.enableGuild then return end
+	self.atGuildBank = true
+	if not self.options.enableGuild then return end
+	if not self.GuildTabQueryQueue then self.GuildTabQueryQueue = {} end

 	local numTabs = GetNumGuildBankTabs()
 	for tab = 1, numTabs do
 		-- add this tab to the queue to refresh; if we do them all at once the server bugs and sends massive amounts of events
 		local name, icon, isViewable, canDeposit, numWithdrawals, remainingWithdrawals = GetGuildBankTabInfo(tab)
 		if isViewable then
-			guildTabQueryQueue[tab] = true
+			self.GuildTabQueryQueue[tab] = true
 		end
 	end
 end

 function BSYC:GUILDBANKFRAME_CLOSED()
-	if debugging then return end
-	atGuildBank = false
+	self.atGuildBank = false
 end

 function BSYC:GUILDBANKBAGSLOTS_CHANGED()
-	if debugging then return end
-	if not BagSyncOpt.enableGuild then return end
+	if not self.options.enableGuild then return end

-	if atGuildBank then
+	if self.atGuildBank then
 		-- check if we need to process the queue
-		local tab = next(guildTabQueryQueue)
+		local tab = next(self.GuildTabQueryQueue)
 		if tab then
 			QueryGuildBankTab(tab)
-			guildTabQueryQueue[tab] = nil
+			self.GuildTabQueryQueue[tab] = nil
 		else
 			-- the bank is ready for reading
 			self:ScanGuildBank()
@@ -1650,16 +1581,14 @@ end
 ------------------------------

 function BSYC:MAIL_SHOW()
-	if debugging then return end
-	if isCheckingMail then return end
-	if not BagSyncOpt.enableMailbox then return end
+	if self.isCheckingMail then return end
+	if not self.options.enableMailbox then return end
 	self:ScanMailbox()
 end

 function BSYC:MAIL_INBOX_UPDATE()
-	if debugging then return end
-	if isCheckingMail then return end
-	if not BagSyncOpt.enableMailbox then return end
+	if self.isCheckingMail then return end
+	if not self.options.enableMailbox then return end
 	self:ScanMailbox()
 end

@@ -1668,15 +1597,13 @@ end
 ------------------------------

 function BSYC:AUCTION_HOUSE_SHOW()
-	if debugging then return end
-	if not BagSyncOpt.enableAuction then return end
+	if not self.options.enableAuction then return end
 	self:ScanAuctionHouse()
 end

 function BSYC:AUCTION_OWNED_LIST_UPDATE()
-	if debugging then return end
-	if not BagSyncOpt.enableAuction then return end
-	BS_DB.AH_LastScan = time()
+	if not self.options.enableAuction then return end
+	self.db.player.AH_LastScan = time()
 	self:ScanAuctionHouse()
 end

@@ -1687,13 +1614,11 @@ end
 function BSYC:doRegularTradeSkill(numIndex, dbIdx)
 	local name, icon, skillLevel, maxSkillLevel, numAbilities, spelloffset, skillLine, skillModifier = GetProfessionInfo(numIndex)
 	if name and skillLevel then
-		BS_CD[dbIdx] = format("%s,%s", name, skillLevel)
+		self.db.profession[self.currentRealm][self.currentPlayer][dbIdx] = format("%s,%s", name, skillLevel)
 	end
 end

 function BSYC:TRADE_SKILL_SHOW()
-	if debugging then return end
-
 	--IsTradeSkillLinked() returns true only if trade window was opened from chat link (meaning another player)
 	if (not C_TradeSkillUI.IsTradeSkillLinked()) then

@@ -1713,59 +1638,59 @@ function BSYC:TRADE_SKILL_SHOW()
 		--prof1
 		if prof1 and (GetProfessionInfo(prof1) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then
 			local skill = select(3, GetProfessionInfo(prof1))
-			BS_CD[1] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
+			self.db.profession[self.currentRealm][self.currentPlayer][1] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
 		elseif prof1 and iconProf1 and noLinkTS[iconProf1] then
 			--only store if it's herbalism, skinning, or mining
 			self:doRegularTradeSkill(prof1, 1)
-		elseif not prof1 and BS_CD[1] then
+		elseif not prof1 and self.db.profession[self.currentRealm][self.currentPlayer][1] then
 			--they removed a profession
-			BS_CD[1] = nil
+			self.db.profession[self.currentRealm][self.currentPlayer][1] = nil
 		end

 		--prof2
 		if prof2 and (GetProfessionInfo(prof2) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then
 			local skill = select(3, GetProfessionInfo(prof2))
-			BS_CD[2] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
+			self.db.profession[self.currentRealm][self.currentPlayer][2] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
 		elseif prof2 and iconProf2 and noLinkTS[iconProf2] then
 			--only store if it's herbalism, skinning, or mining
 			self:doRegularTradeSkill(prof2, 2)
-		elseif not prof2 and BS_CD[2] then
+		elseif not prof2 and self.db.profession[self.currentRealm][self.currentPlayer][2] then
 			--they removed a profession
-			BS_CD[2] = nil
+			self.db.profession[self.currentRealm][self.currentPlayer][2] = nil
 		end

 		--archaeology
 		if archaeology then
 			self:doRegularTradeSkill(archaeology, 3)
-		elseif not archaeology and BS_CD[3] then
+		elseif not archaeology and self.db.profession[self.currentRealm][self.currentPlayer][3] then
 			--they removed a profession
-			BS_CD[3] = nil
+			self.db.profession[self.currentRealm][self.currentPlayer][3] = nil
 		end

 		--fishing
 		if fishing then
 			self:doRegularTradeSkill(fishing, 4)
-		elseif not fishing and BS_CD[4] then
+		elseif not fishing and self.db.profession[self.currentRealm][self.currentPlayer][4] then
 			--they removed a profession
-			BS_CD[4] = nil
+			self.db.profession[self.currentRealm][self.currentPlayer][4] = nil
 		end

 		--cooking
 		if cooking and (GetProfessionInfo(cooking) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then
 			local skill = select(3, GetProfessionInfo(cooking))
-			BS_CD[5] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
-		elseif not cooking and BS_CD[5] then
+			self.db.profession[self.currentRealm][self.currentPlayer][5] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
+		elseif not cooking and self.db.profession[self.currentRealm][self.currentPlayer][5] then
 			--they removed a profession
-			BS_CD[5] = nil
+			self.db.profession[self.currentRealm][self.currentPlayer][5] = nil
 		end

 		--firstAid
 		if firstAid and (GetProfessionInfo(firstAid) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then
 			local skill = select(3, GetProfessionInfo(firstAid))
-			BS_CD[6] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
-		elseif not firstAid and BS_CD[6] then
+			self.db.profession[self.currentRealm][self.currentPlayer][6] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill }
+		elseif not firstAid and self.db.profession[self.currentRealm][self.currentPlayer][6] then
 			--they removed a profession
-			BS_CD[6] = nil
+			self.db.profession[self.currentRealm][self.currentPlayer][6] = nil
 		end

 	end
diff --git a/modules/test.lua b/modules/test.lua
index da12e03..9db7647 100644
--- a/modules/test.lua
+++ b/modules/test.lua
@@ -22,21 +22,6 @@ frame:AddChild(scrollframe)

 --:ReleaseChildren()

---[[ local itemTexture = select(10, GetItemInfo(71354))
-
-local myILabel
-
-for i = 1, 50 do
-	myILabel = AceGUI:Create("InteractiveLabel")
-	--myILabel:SetText("20")
-	myILabel:SetWidth(48)
-	myILabel:SetHeight(48)
-	myILabel:SetImage(itemTexture)
-	myILabel:SetImageSize(48,48)
-	myILabel:SetText("lala")
-	scrollframe:AddChild(myILabel)
-end ]]
-

 local function addEntry(entry, counter)

@@ -213,35 +198,4 @@ frame:AddChild(OKbutton)

 frame:Show()

---[[ scrollcontainer = AceGUI:Create("SimpleGroup") -- "InlineGroup" is also good
-scrollcontainer:SetFullWidth(true)
-scrollcontainer:SetFullHeight(true) -- probably?
-scrollcontainer:SetLayout("Fill") -- important!
-
-topContainer:AddChild(scrollcontainer)
-
-scroll = AceGUI:Create("ScrollFrame")
-scroll:SetLayout("Flow") -- probably?
-scrollcontainer:AddChild(scroll) ]]
-
---[[ 		scrollframe = AceGUI:Create("ScrollFrame");
-		scrollframe:SetLayout("Flow");
-		scrollframe:SetFullHeight(true);
-		scrollframe:SetWidth(80);
-
-		LMMainFrame_Loot_BottomLeftCntr:AddChild(scrollframe);
-
-		local _, _, _, _, _, _, _, _, _, itemTexture = GetItemInfo(71354);
-
-		for i = 1, 5 do
-			myILabel = AceGUI:Create("InteractiveLabel");
-			--myILabel:SetText("20");
-			myILabel:SetWidth(48);
-			myILabel:SetHeight(48);
-			myILabel:SetImage(itemTexture);
-			myILabel:SetImageSize(48,48);
-			scrollframe:AddChild(myILabel);
-		end
- ]]
-

\ No newline at end of file