wip for bil

git [09-19-18 - 13:08]
wip for bil
Filename
FurCControlBridge.lua
FurCData.lua
FurCDatabaseQuery.lua
FurCEvents.lua
FurCFilter.lua
FurCGui.lua
FurCSettingsAdapter.lua
FurCTooltip.lua
FurnitureCatalogue.txt
FurnitureCatalogue_DevUtility/ContextMenu.lua
data/01_Homestead/H_Rolis.lua
data/02_Morrowind/M_Recipes.lua
data/03_Reach/HotR_LuxuryFurnisher.lua
data/03_Reach/HotR_Recipes.lua
data/03_Reach/HotR_Rollis.lua
data/100025.lua
data/AchievementVendors.lua
data/MiscItemSources.lua
data/RecipeSources.lua
data/Recipes.lua
data/Rolis.lua
data/RumourRecipes.lua
locale/en.lua
startup.lua
xml/FurnitureCatalogue.xml
diff --git a/FurCControlBridge.lua b/FurCControlBridge.lua
index b4b9533..114a2b7 100644
--- a/FurCControlBridge.lua
+++ b/FurCControlBridge.lua
@@ -18,6 +18,7 @@ function FurC.LoadFrameInfo(calledFrom)
 	FurCGui:SetWidth(settings.width)
 	FurCGui:SetHeight(settings.height)

+	if calledFrom then return end
 	zo_callLater(function() FurC.UpdateInventoryScroll() end, 100)

 end
@@ -103,16 +104,11 @@ function FurC.GuiOnSearchBoxClick(control, mouseButton, doubleClick)
 		control:SetText("")
 	end
 end
-
-local FURC_S_FILTERDEFAULT = GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT)
-
 function FurC.GuiOnSearchBoxFocusOut(control)
-	if control:GetText() and control:GetText() ~= "" then
-        FurC.GuiOnSliderUpdate(FurCGui_ListHolder_Slider, 0)
-		FurC.UpdateGui()
-    end
-    local text = FurC_SearchBox:GetText()
+    control = control or FurC_SearchBox
+	local text = control:GetText()
     FurC_SearchBoxText:SetText((#text == 0 and FURC_S_FILTERDEFAULT) or "")
+	FurC.RefreshFilters()
 end

 function FurC.GuiOnScroll(control, delta)
diff --git a/FurCData.lua b/FurCData.lua
index c7d17d3..c7d4c41 100644
--- a/FurCData.lua
+++ b/FurCData.lua
@@ -57,6 +57,9 @@ FurC.PrintItemLink = printItemLink

 local function addDatabaseEntry(recipeKey, recipeArray)
 	if recipeKey and recipeArray and {} ~= recipeArray then
+		if tonumber(recipeKey) == 10 or tonumber(recipeKey) == 125 or tonumber(recipeKey) == 500 then
+			error(debug.traceback())
+		end
 		FurC.settings.data[recipeKey] = recipeArray
 	end
 end
@@ -105,20 +108,17 @@ end
 local function parseFurnitureItem(itemLink, override)					-- saves to DB, returns recipeArray

 	if not (
-	override or IsItemLinkPlaceableFurniture(itemLink)
-	or  GetItemLinkItemType(itemLink) == ITEMTYPE_FURNITURE
+		override or IsItemLinkPlaceableFurniture(itemLink)
+		or  GetItemLinkItemType(itemLink) == ITEMTYPE_FURNITURE
 	) then return end

 	local recipeKey 					= getItemId(itemLink)
 	local recipeArray 					= FurC.settings.data[recipeKey]
 	if nil ~= recipeArray then return recipeArray end

-	recipeArray = {}
-
-	addDatabaseEntry(recipeKey, recipeArray)
-
-	return recipeArray
+	return {}
 end
+FurC.ParseFurnitureItem = parseFurnitureItem

 local function parseBlueprint(blueprintLink)				-- saves to DB, returns recipeArray

@@ -151,7 +151,7 @@ function FurC.Find(itemOrBlueprintLink)						-- sets recipeArray, returns it - c

 	if tonumber(itemOrBlueprintLink) == itemOrBlueprintLink then itemOrBlueprintLink = FurC.GetItemLink(itemOrBlueprintLink) end
 	if nil == itemOrBlueprintLink or #itemOrBlueprintLink == 0 then return end
-	p("scanItemLink(<<1>>)...", itemOrBlueprintLink)		-- do not return empty arrays. If this returns nil, abort!
+	-- p("scanItemLink(<<1>>)...", itemOrBlueprintLink)		-- do not return empty arrays. If this returns nil, abort!

 	if itemOrBlueprintLink == lastLink and nil ~= recipeArray then
 		return recipeArray
@@ -204,6 +204,7 @@ function FurC.Fave(itemLink, recipeArray)
 	FurC.UpdateGui()
 end

+local isPts = "PTS" == GetWorldName()
 local function scanRecipeIndices(recipeListIndex, recipeIndex)		-- returns recipeArray or nil, initialises

 	local itemLink = GetRecipeResultItemLink(recipeListIndex, recipeIndex, LINK_STYLE_BRACKETS)
@@ -212,6 +213,11 @@ local function scanRecipeIndices(recipeListIndex, recipeIndex)		-- returns recip
 	local recipeKey = getItemId(itemLink)

 	local recipeArray 			= FurC.settings.data[recipeKey] or {}
+
+	if not isPts and {} ~= recipeArray and recipeArray.origin == FURC_RUMOUR then
+		p("overwriting rumour recipe <<1>> (<<2>>)", recipeArray.blueprint, itemLink)
+	end
+
 	recipeArray.origin 			= FURC_CRAFTING
 	recipeArray.version			= recipeArray.version or 2
 	recipeArray.recipeListIndex = recipeArray.recipeListIndex or recipeListIndex
@@ -304,8 +310,8 @@ local function scanFromFiles(shouldScanCharacter)
 			for itemId, itemData in pairs(vendorData) do

 				recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId), true)
-				if not recipeArray then
-						p("Error when scanning <<1>>", itemId)
+				if not recipeArray or itemId < 10 then
+						p("parseZoneData: Error when scanning <<1>>", itemId)
 					else

 					recipeArray.origin			= origin
@@ -319,50 +325,53 @@ local function scanFromFiles(shouldScanCharacter)

 	local function scanRecipeFile()
 		local recipeKey, recipeArray
-		local function scanArray(ary, versionNumber, origin)
+		local function scanArray(ary, versionNumber, origin, itemIdIsKey)
 			if nil == ary then return end

-			for key, recipeId in ipairs(ary) do
+			for key, recipeId in pairs(ary) do
+				if itemIdIsKey then recipeId = key end
 				local recipeLink = FurC.GetItemLink(recipeId)
 				local itemLink = GetItemLinkRecipeResultItemLink(recipeLink) or FurC.GetItemLink(recipeId)
 				recipeArray = FurC.Find(itemLink) or parseBlueprint(recipeLink) or parseFurnitureItem(itemLink)
-				local recipeListIndex, recipeIndex = GetItemLinkGrantedRecipeIndices(recipeLink)
 				if nil == recipeArray then
-					p("scanRecipeFile: error for <<1>> (ID was <<2>>)", recipeLink, recipeId)
+					p("scanRecipeFile: error for <<1>> (<<2>>)", recipeId, recipeLink)
 				else
+					local recipeListIndex, recipeIndex = GetItemLinkGrantedRecipeIndices(recipeLink)
 					recipeKey 					= getItemId(itemLink)
 					recipeArray.version 	 	= versionNumber
 					recipeArray.origin 			= origin
 					recipeArray.blueprint		= recipeId
+					recipeArray.recipeListIndex = recipeArray.recipeListIndex or recipeListIndex
+					recipeArray.recipeIndex 	= recipeArray.recipeIndex or recipeIndex
 					addDatabaseEntry(recipeKey, recipeArray)
 				end
 			end
-		end
+		end

 		for versionNumber, versionData in pairs(FurC.Recipes) do
 			scanArray(versionData, versionNumber, FURC_CRAFTING)
 		end
 		for versionNumber, versionData in pairs(FurC.RolisRecipes) do
-			scanArray(versionData, versionNumber, FURC_CRAFTING)
+			scanArray(versionData, versionNumber, FURC_CRAFTING, true)
 		end
 		for versionNumber, versionData in pairs(FurC.FaustinaRecipes) do
-			scanArray(versionData, versionNumber, FURC_CRAFTING)
+			scanArray(versionData, versionNumber, FURC_CRAFTING, true)
 		end
 	end

 	local function scanRolis()
 		for versionNumber, versionData in pairs(FurC.Rolis) do
-			for itemId, itemSource in pairs(versionData) do
+			for itemId, itemPrice in pairs(versionData) do
 				recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId), true)
 				if nil ~= recipeArray then
-					recipeArray.version = versionNumber
+					recipeArray.version = versionNumber
 					recipeArray.origin = FURC_ROLIS
 					addDatabaseEntry(itemId, recipeArray)
 				end
 			end
 		end
 		for versionNumber, versionData in pairs(FurC.Faustina) do
-			for itemId, itemSource in pairs(versionData) do
+			for itemId, itemPrice in pairs(versionData) do
 				recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId), true)
 				if nil ~= recipeArray then
 					recipeArray.version = versionNumber
@@ -395,12 +404,12 @@ local function scanFromFiles(shouldScanCharacter)
 				for itemId, itemSource in pairs(originData) do
 					local itemLink = FurC.GetItemLink(itemId)
 					recipeArray = parseFurnitureItem(FurC.GetItemLink(itemId))
-					if nil ~= recipeArray then
+					if not recipeArray or itemId < 10 then
+						p("scanMiscItemFile: Error when scanning <<1>> (origin <<2>>) -> <<3>>", itemId, origin, itemLink)
+					else
 						recipeArray.version = versionNumber
 						recipeArray.origin  = origin
 						addDatabaseEntry(itemId, recipeArray)
-					else
-						p("scanMiscItemFile: Error when scanning <<1>> (<<2>>) -> <<3>>", itemLink, itemId, origin)
 					end
 				end
 			end
@@ -420,8 +429,7 @@ local function scanFromFiles(shouldScanCharacter)

 		for versionNumber, vendorData in pairs(FurC.LuxuryFurnisher) do
 			for itemId, itemData in pairs(vendorData) do
-					 local recipeArray 			= {}
-
+					local recipeArray 			= {}
 					recipeArray.origin			= FURC_LUXURY
 					recipeArray.version			= versionNumber
 					addDatabaseEntry(itemId, recipeArray)
diff --git a/FurCDatabaseQuery.lua b/FurCDatabaseQuery.lua
index 52f9a31..2d52eb3 100644
--- a/FurCDatabaseQuery.lua
+++ b/FurCDatabaseQuery.lua
@@ -165,25 +165,26 @@ function FurC.GetMiscItemSource(recipeKey, recipeArray, attachItemLink)
 	return (not attachItemLink and originData[recipeKey]) or string.format("%s: %s", FurC.GetItemLink(recipeKey), originData[recipeKey])
 end

+
+function FurC.getRumourSource(recipeKey, recipeArray)
+	return (recipeArray.blueprint and GetString(SI_FURC_RUMOUR_SOURCE_RECIPE)) or GetString(SI_FURC_RUMOUR_SOURCE_ITEM)
+end
+
+
 local function getRecipeSource(recipeKey, recipeArray)
-	if nil == recipeKey and nil == recipeArray then return end
-	if nil == FurC.RecipeSources then return end
+	if nil == recipeKey or nil == FurC.RecipeSources then return end
+
     if nil ~= FurC.RecipeSources[recipeKey] then return FurC.RecipeSources[recipeKey] end
-
     recipeArray = recipeArray or FurC.Find(recipeKey)
+
+	if nil == recipeArray then return end

-	recipeKey = recipeArray.blueprint or recipeKey
-
-    -- d(recipeKey)
-	return (recipeArray.origin == FURC_RUMOUR and FurC.getRumourSource(recipeKey, recipeArray))
-        or FurC.RecipeSources[recipeKey]
+	if recipeArray.origin == FURC_RUMOUR then return FurC.getRumourSource(recipeKey, recipeArray) end
+
+	return FurC.RecipeSources[recipeArray.blueprint or recipeKey]
 end
 FurC.getRecipeSource = getRecipeSource

-function FurC.getRumourSource(recipeKey, recipeArray)
-	return (recipeArray.blueprint and GetString(SI_FURC_RUMOUR_SOURCE_RECIPE)) or GetString(SI_FURC_RUMOUR_SOURCE_ITEM)
-end
-
 function FurC.GetCrafterList(itemLink, recipeArray)
 	if nil == recipeArray and nil == itemLink then return end
 	recipeArray = recipeArray or FurC.Find(itemLink)
diff --git a/FurCEvents.lua b/FurCEvents.lua
index 1d66965..f7b42fd 100644
--- a/FurCEvents.lua
+++ b/FurCEvents.lua
@@ -1,19 +1,21 @@
 local em	= EVENT_MANAGER
 local p 	= FurC.DebugOut -- debug function calling zo_strformat with up to 10 args

-local function onRecipeLearned(eventCode, recipeListIndex, recipeIndex)
-	p(FURC_STRING_RECIPELEARNED, GetRecipeResultItemLink(recipeListIndex, recipeIndex, LINK_STYLE_BRACKETS), recipeListIndex, recipeIndex)
-	FurC.TryCreateRecipeEntry(recipeListIndex, recipeIndex)
-	FurC.UpdateGui()
+
+local function executeRecipeScan()
+	FurC.ScanCharacter()
+	em:RegisterForEvent("FurnitureCatalogue", EVENT_RECIPE_LEARNED, onRecipeLearned)
+end
+local function onRecipeLearned(eventCode, recipeListIndex, recipeIndex)
+	em:UnregisterForEvent("FurnitureCatalogue", EVENT_RECIPE_LEARNED)
+	zo_callLater(executeRecipeScan, 500)
 end

 local wm = WINDOW_MANAGER
-
 local function createIcon(control)
-	local icon
-	icon = wm:CreateControlFromVirtual(control:GetName().."FurCIcon", control, "FurC_SlotIconKnownYes")
-	if FurC.settings["showIconOnLeft"] == nil or
-	   FurC.settings["showIconOnLeft"] == true then
+	local icon = wm:CreateControlFromVirtual(control:GetName().."FurCIcon", control, "FurC_SlotIconKnownYes")
+	local showLeft = FurC.settings.showIconOnLeft
+	if showLeft or nil == showLeft then
 		icon:SetAnchor(BOTTOMLEFT, control:GetNamedChild("Button"), BOTTOMLEFT, -15, -10)
 	else
 		icon:SetAnchor(TOPLEFT, control:GetNamedChild("TraitInfo"), TOPLEFT, 0, 0)
diff --git a/FurCFilter.lua b/FurCFilter.lua
index c4af6d1..45000af 100644
--- a/FurCFilter.lua
+++ b/FurCFilter.lua
@@ -3,7 +3,7 @@ local p 						= FurC.DebugOut -- debug function calling zo_strformat with up to
 local searchString 				= ""
 local dropdownChoiceVersion		= 1
 local dropdownTextVersion		= "All"
-local ddSource		= 1
+local ddSource					= 1
 local dropdownTextSource		= "All"
 local dropdownChoiceCharacter	= 1
 local ddTextCharacter			= "Accountwide"
@@ -20,7 +20,19 @@ local sourceIndices

 local recipeArray, itemId, itemLink, itemType, sItemType, itemName, recipeIndex, recipeListIndex

-function FurC.SetFilter(useDefaults, skipRefresh)
+local useDefaults
+local filterTask = FurC.FilterTask
+function FurC.RefreshFilters(filterUseDefaults, skipRefresh)
+	useDefaults = filterUseDefaults
+	filterTask:Cancel()
+	filterTask:Call(FurC.SetFilter)
+	if skipRefresh then return end
+	filterTask:Then(FurC.RefreshContainer)
+end
+
+function FurC.SetFilter()
+
+	p("FurC.SetFilter(<<1>>)", tostring(useDefaults))

     ClearTooltip(InformationTooltip)
 	sourceIndices 					= FurC.SourceIndices
@@ -42,27 +54,24 @@ function FurC.SetFilter(useDefaults, skipRefresh)
 	qualityFilter 				= FurC.GetFilterQuality()
 	craftingTypeFilter			= FurC.GetFilterCraftingType()
 	hideBooks					= FurC.GetHideBooks()
-	hideRumours					= FurC.GetHideRumourRecipes()
 	mergeLuxuryAndSales 		= FurC.GetMergeLuxuryAndSales()
-	hideCrownStore 				= FurC.GetHideCrownStoreItems()
-
-    -- ignore filtered items when no dropdown filter is set and there's a text search?
-    filterAllOnTextSearch       = FurC.GetFilterAllOnText() and #searchString > 0 and
-                                    FURC_NONE == ddSource and
-                                    FURC_NONE == dropdownChoiceVersion and
-                                    FURC_NONE == dropdownChoiceCharacter
+
+	-- p("Version: <<1>>, Source: <<2>>, Character: <<3>>, qualityFilter: <<4>>, ",
+	-- dropdownChoiceVersion, ddSource, dropdownChoiceCharacter, qualityFilter)

-	if not skipRefresh then
-		zo_callLater(FurC.UpdateLineVisibility, 200)
-	end
-end
+
+    -- ignore filtered items when there's a text search?
+	-- TODO this is broken
+	showBooksOnTextSearch, showRumoursOnTextSearch, showCrownStoreOnTextSearch = false, false, false
+
+	if #searchString > 0 and FurC.GetFilterAllOnText() then
+		showBooksOnTextSearch		= not FurC.GetFilterAllOnTextNoBooks()
+		showRumoursOnTextSearch		= not FurC.GetFilterAllOnTextNoRumour() and FurC.GetHideRumourRecipes() and ddSource ~= FURC_RUMOUR
+		showCrownStoreOnTextSearch 	= not FurC.GetFilterAllOnTextNoCrown() and FurC.GetHideCrownStoreItems() and ddSource ~= FURC_CROWN
+	end

-function FurC.InitFilters()
-	FurC.SetFilterCraftingType(0)
-	FurC.SetFilterQuality(0)
-	FurC.SetDropdownChoice("Source", FurC.GetDefaultDropdownChoiceText("Source"), FurC.GetDefaultDropdownChoice("Source"))
-	FurC.SetDropdownChoice("Character", FurC.GetDefaultDropdownChoiceText("Character"), FurC.GetDefaultDropdownChoice("Character"))
-	FurC.SetDropdownChoice("Version", FurC.GetDefaultDropdownChoiceText("Version"), FurC.GetDefaultDropdownChoice("Version"))
+	p("showRumours: <<1>>, showCrownStore: <<2>>", tostring(showRumoursOnTextSearch), tostring(showCrownStoreOnTextSearch))
+
 end

 local function isRecipeArrayKnown()
@@ -82,10 +91,6 @@ local function matchVersionDropdown()
 	return dropdownChoiceVersion == 1 or recipeArray.version == dropdownChoiceVersion
 end

-local function shouldBeHidden()
-	return (ddSource ~= FURC_RUMOUR and recipeArray.origin == FURC_RUMOUR and hideRumours) or
-	(ddSource ~= FURC_CROWN and recipeArray.origin == FURC_CROWN and hideCrownStore)
-end

 local validSourcesForOther = {
     [FURC_FESTIVAL_DROP]    = true,
@@ -119,9 +124,9 @@ local function matchSourceDropdown()
 	if FURC_OTHER					    == ddSource then
 		return validSourcesForOther[recipeArray.origin]
     end
-	-- we're checking character knowledge
-	return recipeArray.origin  == ddSource
-
+
+	-- we're checking character knowledge
+	return recipeArray.origin  == ddSource

 end

@@ -146,8 +151,14 @@ local function matchQualityFilter()
 	return qualityFilter[GetItemLinkQuality(itemLink)]
 end

-local function filterBooks(itemId, recipeArray)
-	if not (hideBooks or filterAllOnTextSearch and FurC.GetFilterAllOnTextNoBooks()) then return false end
+local function shouldBeHidden()
+	if recipeArray.origin == FURC_RUMOUR then
+		return not (showRumours or ddSource == FURC_RUMOUR)
+	end
+	if recipeArray.origin == FURC_CROWN then
+		return not (showCrownStore or ddSource == FURC_CROWN)
+	end
+	if (not hideBooks) or showBooksOnTextSearch then return false end
 	local versionData = FurC.Books[recipeArray.version]
 	if nil == versionData then return end
 	return nil ~= versionData[itemId]
@@ -158,27 +169,19 @@ function FurC.MatchFilter(currentItemId, currentRecipeArray)
 	itemId = currentItemId
 	itemLink = FurC.GetItemLink(itemId)
 	recipeArray = currentRecipeArray or FurC.Find(itemLink)
+
+	-- hide rumour, crown store items and books?
+	if shouldBeHidden(itemId, recipeArray) then return false end
+
 	itemType, sItemType = GetItemLinkItemType(itemLink)
     if 0 == itemType and 0 == sItemType then
-        p("invalid item type for <<1>>", currentItemId)
+        p("invalid item type for <<1>> (<<2>>)", currentItemId, FurC.GetItemLink(currentItemId))
         return false
     end
-    if  filterBooks(itemId, recipeArray)			                        then return false end


-    if recipeArray.origin == FURC_RUMOUR then
-        if filterAllOnTextSearch and not FurC.GetFilterAllOnTextNoRumour() then
-            return false
-        end
-        if hideRumours and ddSource ~= FURC_RUMOUR then return false end
-    end
-
-    if recipeArray.origin == FURC_CROWN then
-        if filterAllOnTextSearch and FurC.GetFilterAllOnTextNoCrown() then return false end
-        if hideCrownStore and ddSource ~= FURC_CROWN then return false end
-    end

-    if not (filterAllOnTextSearch  or  matchDropdownFilter()) then return false end
+	if not matchDropdownFilter() then return false end


     if not matchSearchString() 												    then return false end
diff --git a/FurCGui.lua b/FurCGui.lua
index 5cc45be..58890e3 100644
--- a/FurCGui.lua
+++ b/FurCGui.lua
@@ -1,12 +1,12 @@
-FurC.SlotTemplate		= "FurC_SlotTemplate"
-FurC.KnowledgeFilter 	= "All (Accountwide)"
-FurC.SearchString 		= ""
-FurC.ScrollSortUp 		= true
-local checkWasUpdated	= false
-local task 				= LibStub("LibAsync"):Create("FurnitureCatalogue_updateLineVisibility")
-local otherTask 		= LibStub("LibAsync"):Create("FurnitureCatalogue_ToggleGui")
-local async 			= LibStub("LibAsync"):Create("FurnitureCatalogue_forLoop")
-
+FurC.SlotTemplate			= "FurC_SlotTemplate"
+FurC.KnowledgeFilter 		= "All (Accountwide)"
+FurC.SearchString 			= ""
+FurC.ScrollSortUp 			= true
+local task 					= LibStub("LibAsync"):Create("FurnitureCatalogue_updateLineVisibility")
+local otherTask 			= LibStub("LibAsync"):Create("FurnitureCatalogue_ToggleGui")
+local async 				= LibStub("LibAsync"):Create("FurnitureCatalogue_forLoop")
+local FURC_S_FILTERDEFAULT 	= GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT)
+local cachedDefaults

 local p 		= FurC.DebugOut -- debug function calling zo_strformat with up to 10 args
 local sortTable = FurC.SortTable
@@ -26,65 +26,68 @@ function FurC.CalculateMaxLines()
 	return FurCGui_ListHolder.maxLines
 end

-local function updateLineVisibility()
-
-
-	local function fillLine(curLine, curData, lineIndex)
-		if nil == curLine then return end
-
-		local dataLines = FurCGui_ListHolder.dataLines
-		local maxLines = FurCGui_ListHolder.maxLines
-
-		local hidden = lineIndex > #dataLines or lineIndex > maxLines
-		curLine:SetHidden(hidden)
-		if nil == curData or curLine:IsHidden() then
-			curLine.itemLink = ""
-			curLine.itemId 	 = 0
-			curLine.icon:SetTexture(nil)
-			curLine.icon:SetAlpha(0)
-			curLine.text:SetText("")
-			curLine.mats:SetText("")
-		else
-			curLine.itemLink 	= curData.itemLink
-			curLine.itemId 	 	= curData.itemId
-			curLine.icon:SetTexture(GetItemLinkIcon(curData.itemLink))
-			curLine.icon:SetAlpha(1)
-			local text 			=  curData.itemLink:gsub("H1", "H0")
-			curLine.text:SetText(((curData.favorite and "* ") or "").. text)
-			local mats = FurC.GetItemDescription(curData.itemId, curData)
-			curLine.mats:SetText(mats)
-		end
+local function fillLine(curLine, curData, lineIndex)
+	if nil == curLine or nil == curData then return end
+
+	local dataLines = FurCGui_ListHolder.dataLines
+	local maxLines = FurCGui_ListHolder.maxLines
+
+	local hidden = lineIndex > #dataLines or lineIndex > maxLines
+	curLine:SetHidden(hidden)
+	if nil == curData or curLine:IsHidden() then
+		curLine.itemLink = ""
+		curLine.itemId 	 = 0
+		curLine.icon:SetTexture(nil)
+		curLine.icon:SetAlpha(0)
+		curLine.text:SetText("")
+		curLine.mats:SetText("")
+	else
+		curLine.itemLink 	= curData.itemLink
+		curLine.itemId 	 	= curData.itemId
+		curLine.icon:SetTexture(GetItemLinkIcon(curData.itemLink))
+		curLine.icon:SetAlpha(1)
+		local text 			=  curData.itemLink:gsub("H1", "H0")
+		curLine.text:SetText(((curData.favorite and "* ") or "").. text)
+		local mats = FurC.GetItemDescription(curData.itemId, curData)
+		curLine.mats:SetText(mats)
 	end
+end

-	local isEmpty = #FurCGui_ListHolder.dataLines == 0
+local function refreshLineContainer()
+	p("refreshLineContainer")
+	local maxLines 	= FurC.CalculateMaxLines()
+	local dataLines = FurCGui_ListHolder.dataLines

-	FurCGui_ListHolder:SetHidden(	isEmpty)
-	FurCGui_Empty:SetHidden(		not	isEmpty)
+	local offset =	FurCGui_ListHolder_Slider:GetValue()
+	if offset > #dataLines then offset = 0 end
+	FurCGui_ListHolder_Slider:SetValue(offset)

-	if isEmpty then return end
+	local curLine, curData

-	FurC.CalculateMaxLines()
-
-	task:Call(function()
-		local maxLines = FurCGui_ListHolder.maxLines
-		local dataLines = FurCGui_ListHolder.dataLines
+	for i=1, FurCGui_ListHolder:GetNumChildren() do
+		curLine = FurCGui_ListHolder.lines[i]
+		curData = FurCGui_ListHolder.dataLines[offset + i]
+		fillLine(curLine, curData, i)
+	end
+	FurCGui_ListHolder_Slider:SetMinMax(0, #dataLines)
+end

-		local offset =	FurCGui_ListHolder_Slider:GetValue()
-		if offset > #dataLines then offset = 0 end
-		FurCGui_ListHolder_Slider:SetValue(offset)
+function FurC.UpdateLineVisibility()
+	if FurCGui:IsHidden() then return end
+
+	p("FurC.UpdateLineVisibility()")
+

-		local curLine, curData
+	local isEmpty = #FurCGui_ListHolder.dataLines == 0

-		for i=1, FurCGui_ListHolder:GetNumChildren() do
-			curLine = FurCGui_ListHolder.lines[i]
-			curData = FurCGui_ListHolder.dataLines[offset + i]
-			fillLine(curLine, curData, i)
-		end
-		FurCGui_ListHolder_Slider:SetMinMax(0, #dataLines)
+	FurCGui_ListHolder:SetHidden(	isEmpty)
+	FurCGui_Empty:SetHidden(		not	isEmpty)

-	end)
+	if isEmpty then return end
+
+	refreshLineContainer()
 end
-FurC.UpdateLineVisibility =	updateLineVisibility
+local updateLineVisibility = FurC.UpdateLineVisibility

 function FurC.IsLoading(isBuffering)

@@ -129,32 +132,44 @@ local function updateScrollDataLinesData()
 	end)

 end
-local FURC_S_FILTERDEFAULT = GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT)
-local cachedDefaults
+
+
+
 local function startLoading()
     FurC.IsLoading(true)
-    local text = FurC_SearchBox:GetText()
-    FurC_SearchBoxText:SetText((#text == 0 and FURC_S_FILTERDEFAULT) or "")
-    FurC.LastFilter = useDefaults
-    FurC.SetFilter(useDefaults, true)
+    FurC.RefreshFilters(cachedDefaults, true)
 end
 local function stopLoading()
     FurC.IsLoading(false)
-    updateLineVisibility()
+    FurC.UpdateLineVisibility()
 end
 local function stopLoadingWithDelay()
     zo_callLater(stopLoading, 500)
 end

-function FurC.UpdateGui(useDefaults)
+
+function FurC.RefreshContainer()
+	cachedDefaults = false
+	otherTask:Cancel()
+	otherTask:Call(startLoading)
+	:Then(updateScrollDataLinesData)
+	:Then(stopLoadingWithDelay)
+end
+
+-- will do a full UI refresh
+function FurC.UpdateGui(useDefaults, skipRefresh)
+
 	if FurCGui:IsHidden() then return end
+	p("FurC.UpdateGui(<<1>>)", tostring(useDefaults))
     cachedDefaults = useDefaults
+	otherTask:Cancel()
 	otherTask:Call(startLoading)
 	:Then(updateScrollDataLinesData)
 	:Then(stopLoadingWithDelay)
 end

 function FurC.UpdateInventoryScroll()
+	p("FurC.UpdateInventoryScroll()")
 	local index = 0
 	FurCGui_ListHolder.dataOffset = FurCGui_ListHolder.dataOffset or 0
 	FurCGui_ListHolder.dataOffset = math.max(FurCGui_ListHolder.dataOffset, 0)
@@ -165,7 +180,6 @@ function FurC.UpdateInventoryScroll()
 	if total > 0 then
 		FurCGui_ListHolder_Slider:SetMinMax(0, total)
 	end
-
 	updateLineVisibility()
 end

@@ -449,21 +463,31 @@ local function createGui()
 	createInventoryDropdown("Character")
 	FurC.ChangeTemplateFromButton(FurC.GetTinyUi())
 	FurC.SetFontSize(FurC.GetFontSize())
-	FurC.LoadFrameInfo()
-	FurC.InitFilters()
+	FurC.LoadFrameInfo(true)
+	-- FurC.InitFilters()
+end

+local function showGui()
+	FurC.UpdateGui(FurC.GetResetDropdownChoice())
 end

 function FurnitureCatalogue_Toggle()
+
+	p("\n")
+	p("\n")
 	SCENE_MANAGER:ToggleTopLevel(FurCGui)
-	if FurCGui:IsHidden() then return end
+	if FurCGui:IsHidden() then
+		FurC.FilterTask:Cancel()
+		return
+	end
 	FurCGui_Empty:SetHidden(true)
-	zo_callLater(function() FurC.UpdateGui(FurC.GetResetDropdownChoice()) end, 500)
+	zo_callLater(showGui, 500)
 end


 function FurC.InitGui()

+	p("FurC.InitGui()")
 	local control = FurCGui
 	local settings = FurC.settings["gui"]
 	FurC.GuiElements = {}
@@ -483,5 +507,7 @@ function FurC.InitGui()
 	FurC_Label:GetNamedChild("_2"):SetText(GetString(SI_FURC_LABEL_ENTRIES))

 	SCENE_MANAGER:RegisterTopLevel(FurCGui, false)
+
+	FurC.RefreshFilters(true, true)
 end

diff --git a/FurCSettingsAdapter.lua b/FurCSettingsAdapter.lua
index 60af629..fd19ac6 100644
--- a/FurCSettingsAdapter.lua
+++ b/FurCSettingsAdapter.lua
@@ -50,7 +50,7 @@ end
 function FurC.GetFilterAllOnTextNoBooks()
 	return FurC.settings["filterAllOnTextNoBooks"]
 end
-function FurC.GetFilterAllOnTextNoBooks(value)
+function FurC.SetFilterAllOnTextNoBooks(value)
 	FurC.settings["filterAllOnTextNoBooks"] = value
 	FurC.UpdateGui()
 end
@@ -58,7 +58,7 @@ end
 function FurC.GetFilterAllOnTextNoCrown()
 	return FurC.settings["filterAllOnTextNoCrown"]
 end
-function FurC.GetFilterAllOnTextNoCrown(value)
+function FurC.SetFilterAllOnTextNoCrown(value)
 	FurC.settings["filterAllOnTextNoCrown"] = value
 	FurC.UpdateGui()
 end
@@ -80,8 +80,6 @@ function FurC.SetFontSize(value)


 	FurC.SetLineHeight()
-
-	task:Call(function()	FurC.UpdateGui() end)
 end


@@ -199,8 +197,7 @@ function FurC.SetFilterQuality(quality)
 		control:SetState((filterArray[key-1] and BSTATE_PRESSED) or BSTATE_NORMAL)
 	end
 	FurC.GuiOnScroll(nil, 0)
-	FurC.SetFilter()
-	FurC.UpdateGui()
+	FurC.RefreshFilters()
 end

 function FurC.GetFilterCraftingType()
@@ -226,13 +223,11 @@ function FurC.SetFilterCraftingType(craftingType)
 	end

 	FurC.GuiOnScroll(FurCGui_ListHolder_Slider, 0)
-	FurC.SetFilter()
-	FurC.UpdateGui()
+	FurC.RefreshFilters()
 end


 local FURC_S_FILTERDEFAULT = GetString(SI_FURC_TEXTBOX_FILTER_DEFAULT)
-
 function FurC.GetSearchFilter()
 	if (not FurC.SearchFilter) or FurC.SearchFilter == FURC_S_FILTERDEFAULT then
 		FurC.SearchFilter = FurC_SearchBox:GetText() or ""
@@ -240,33 +235,11 @@ function FurC.GetSearchFilter()
 	return FurC.SearchFilter or ""
 end

-local alreadySearching  = false
-local alreadyReset      = false
-local function resetSearch()
-    alreadySearching = false
-    alreadyReset     = false
-end
-local function doSearchOnUpdate()
-
-    if alreadyReset then return end
-    if alreadySearching then
-        alreadyReset = true
-        zo_callLater(resetSearch, 200)
-        return
-    end
-    local text = FurC_SearchBox:GetText()
-    FurC_SearchBoxText:SetText((#text == 0 and FURC_S_FILTERDEFAULT) or "")
-
-    FurC.SearchFilter = text
-
-    FurC.GuiOnSliderUpdate(FurCGui_ListHolder_Slider, 0)
-    FurC.UpdateGui()
-end

 function FurC.GuiSetSearchboxTextFrom(control)
     control = control or FurC_SearchBox
-	-- call asynchronely to prevent lagging. Praise votan.
-	task:Call(doSearchOnUpdate)
+	FurC.SearchFilter = control:GetText()
+	FurC.RefreshFilters()
 end

 function FurC.GetHideBooks()
@@ -274,14 +247,14 @@ function FurC.GetHideBooks()
 end
 function FurC.SetHideBooks(value)
 	FurC.settings["hideBooks"] = value
-	FurC.UpdateGui()
+	FurC.RefreshFilters()
 end
 function FurC.GetMergeLuxuryAndSales()
 	return FurC.settings["mergeLuxuryAndSales"]
 end
 function FurC.SetMergeLuxuryAndSales(value)
-	FurC.settings["mergeLuxuryAndSales"] = value
-	FurC.UpdateGui()
+	FurC.settings["mergeLuxuryAndSales"] = value
+	FurC.RefreshFilters()
 end


diff --git a/FurCTooltip.lua b/FurCTooltip.lua
index c7acbb0..a270823 100644
--- a/FurCTooltip.lua
+++ b/FurCTooltip.lua
@@ -47,7 +47,7 @@ local function addTooltipData(control, itemLink)
 		if not isRecipe and (not FurC.GetHideCraftingStation()) then
 			stringTable = add(stringTable, FurC.PrintCraftingStation(itemId, recipeArray))
 		end
-		if isRecipe then
+		if isRecipe or recipeArray.origin == FURC_CRAFTING then
 			stringTable = add(stringTable, FurC.getRecipeSource(itemId, recipeArray))
 		end
 		-- check if we should show mats
diff --git a/FurnitureCatalogue.txt b/FurnitureCatalogue.txt
index 6e93364..9ef5a6b 100644
--- a/FurnitureCatalogue.txt
+++ b/FurnitureCatalogue.txt
@@ -1,7 +1,7 @@
- ## Title: FurnitureCatalogue
+## Title: FurnitureCatalogue
 ## Author: manavortex
-## Version: 2.65
-## APIVersion: 100024
+## Version: 2.66
+## APIVersion: 100024 100025
 ## SavedVariables: FurnitureCatalogue_Settings
 ## OptionalDependsOn: pChat

@@ -60,7 +60,6 @@ data\04_Clockwork\CC_LuxuryFurnisher.lua
 data\05_Dragonbones\DragonB_LuxuryFurnisher.lua

 data\01_Homestead\H_Rolis.lua
-data\03_Reach\HotR_Rolis.lua
 data\Rolis.lua

 data\01_Homestead\H_EventItems.lua
@@ -69,12 +68,13 @@ data\EventItems.lua

 data\MiscItemSources.lua
 data\Recipes.lua
-data\RecipeSources.lua

 data\RumourRecipes.lua

 data\$(APIVersion).lua

+data\RecipeSources.lua
+
 FurCUtil.lua

 FurCDatabaseQuery.lua
diff --git a/FurnitureCatalogue_DevUtility/ContextMenu.lua b/FurnitureCatalogue_DevUtility/ContextMenu.lua
index 18514d3..e9a21ed 100644
--- a/FurnitureCatalogue_DevUtility/ContextMenu.lua
+++ b/FurnitureCatalogue_DevUtility/ContextMenu.lua
@@ -61,7 +61,7 @@ local function makeOutput()
     local isRecipe      = IsItemLinkFurnitureRecipe(cachedItemLink)
     local debugString   = (isRecipe and s_forRecipe) or s_default

-    cachedName          = cachedName or GetItemLinkName(cachedItemLink)
+    cachedName          = cachedName or GetItemLinkName(cachedItemLink) or ""

     if 0 < (cachedPrice or 0)           then debugString = s_withPrice end
     if not (cachedCanBuy or isRecipe)   then debugString = s_withAchievement  end
@@ -69,42 +69,39 @@ local function makeOutput()
     if #(textbox:GetText() or "") == 0 then
         debugString = debugString:sub(5, #debugString)
     end
-
-    return string.format(debugString .. "\n", FurC.GetItemId(cachedItemLink), cachedName, cachedPrice)
+    local itemId = GetItemLinkItemId(cachedItemLink) or 0
+	return string.format(debugString .. "\n", itemId, (cachedName or 0), (cachedPrice or 0))
 end

 local function isItemIdCached()
     local itemId = FurC.GetItemId(cachedItemLink)
+	if not itemId then return false end
     if cachedItemIds[itemId] then return true end
     cachedItemIds[itemId] = true
     return false
 end

 local function concatToTextbox(itemId)
-
     if (not isMana) or isItemIdCached() then return end
     local textSoFar = this.textbox:GetText() or ""
     this.textbox:SetText(textSoFar .. makeOutput())
     showTextbox()
 end
-function this.concatToTextbox (itemId)
-    if itemId then
-        cachedItemLink  = FurC.GetItemLink(itemId)
-        cachedCanBuy    = true
-        cachedName      = GetItemLinkName(cachedItemLink)
-        cachedPrice     = 0
-    end
-    concatToTextbox()
+local function idToChat(itemId)
+	d("idToChat " .. itemId)
+	d(itemId)
+	FurC.ToChat(itemId, true)
 end

-
 local function doNothing() return end

 local S_ADD_TO_BOX  = "Add data to textbox"
+local S_ID_TO_CHAT  = "ID to chat"
 local S_DIVIDER     = "-"
 local function addMenuItems()
-	AddCustomMenuItem(S_DIVIDER,    doNothing, MENU_ADD_OPTION_LABEL)
-	AddCustomMenuItem(S_ADD_TO_BOX, concatToTextbox, MENU_ADD_OPTION_LABEL)
+	AddCustomMenuItem(S_DIVIDER,    doNothing,		 MENU_ADD_OPTION_LABEL)
+	AddCustomMenuItem(S_ADD_TO_BOX,	concatToTextbox, MENU_ADD_OPTION_LABEL)
+	AddCustomMenuItem(S_ID_TO_CHAT,	idToChat, 		 MENU_ADD_OPTION_LABEL)
 end


@@ -112,6 +109,8 @@ function FurCDevControl_HandleClickEvent(itemLink, button, control)		-- button b
     if not isMana   then return end

     if (type(itemLink) == 'string' and #itemLink > 0) then
+		cachedItemLink = itemLink
+		cachedName = GetItemLinkName(itemLink)
 		local handled = LINK_HANDLER:FireCallbacks(LINK_HANDLER.LINK_MOUSE_UP_EVENT, itemLink, button, ZO_LinkHandler_ParseLink(itemLink))
 		if (not handled) then
 			FurCDevControl_LinkHandlerBackup_OnLinkMouseUp(itemLink, button, control)
@@ -170,7 +169,7 @@ function this.OnControlMouseUp(control, button)
 	if not control.itemLink or #control.itemLink == 0 then return end

     cachedItemLink  = control.itemLink
-
+    d(cachedItemLink)
 	zo_callLater(function()
 		ItemTooltip:SetHidden(true)
 		ClearMenu()
diff --git a/data/01_Homestead/H_Rolis.lua b/data/01_Homestead/H_Rolis.lua
deleted file mode 100644
index 131ec7c..0000000
--- a/data/01_Homestead/H_Rolis.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-FurC.Rolis 		    = FurC.Rolis or {}
-FurC.Rolis_Recipes  = FurC.Rolis_Recipes or {}
-
-
-FurC.Rolis[FURC_HOMESTEAD] = {
-	-- Alchemy station
-	[118328] = 35,
-	-- Blacksmithing station
-	[119781] = 35,
-	-- Clothing station
-	[119707] = 35,
-	-- Dye Station
-	[118329] = 35,
-	-- Enchanting station
-	[118330] = 35,
-	-- Provisioning station
-	[118327] = 35,
-	-- Woodworking station
-	[119744] = 35,
-
-	-- Attunable Blacksmithing station
-	[119594] = 250,
-	-- Attunable Clothing station
-	[119821] = 250,
-	-- Attunable Woodworking station
-	[119822] = 250,
-}
-
-FurC.Rolis_Recipes[FURC_HOMESTEAD] = {
-	 121207,	-- Target Skeleton
-	 121315,	-- Robust Target Skeleton
-	 126582,	-- Target Centurion
-	 126583,	-- Robust Target Centurion
-}
diff --git a/data/02_Morrowind/M_Recipes.lua b/data/02_Morrowind/M_Recipes.lua
index 8760ab1..3517d4a 100644
--- a/data/02_Morrowind/M_Recipes.lua
+++ b/data/02_Morrowind/M_Recipes.lua
@@ -274,7 +274,6 @@ FurC.Recipes[FURC_MORROWIND] = {
 	126583, -- Target Centurion, Robust Refabricated
 	126884, -- Dwarven Vessel, Sealed
 	121189, -- Haj Mota Head, Wall Mount
-	121188, -- Echatere Horns, Wall Mount
 	121184, -- Antlers, Wall Mount
 	127091, -- Hlaalu Lantern, Oversized Vellum
 	121174, -- Sack of Grain
diff --git a/data/03_Reach/HotR_LuxuryFurnisher.lua b/data/03_Reach/HotR_LuxuryFurnisher.lua
index 372d040..46c2074 100644
--- a/data/03_Reach/HotR_LuxuryFurnisher.lua
+++ b/data/03_Reach/HotR_LuxuryFurnisher.lua
@@ -46,7 +46,7 @@ FurC.LuxuryFurnisher[FURC_REACH] = {
 		itemPrice 	= 35000,
 		itemDate	= "2017-10-13",
 	},
-
+
 	-- Oct. 7
 	[132145] = { -- Orsinium Tent, Chief’s
 		itemPrice 	= 15000,
diff --git a/data/03_Reach/HotR_Recipes.lua b/data/03_Reach/HotR_Recipes.lua
index 5ea7019..7583080 100644
--- a/data/03_Reach/HotR_Recipes.lua
+++ b/data/03_Reach/HotR_Recipes.lua
@@ -1,48 +1,30 @@
 FurC.Recipes = FurC.Recipes or {}
 FurC.Recipes[FURC_REACH] = {
-	132179,
-	132168,
-	132178,
-	132176,
-	132177,
-	132188,
-	132180,
-	132169,
-	132195,
-	132194,
-	132186,
-	132170,
-	132192,
-	132167,
-	132193,
-	132191,
-	132182,
-	132190,
-	132183,
-	132181,
-	132189,
-	132196,
-	132187,
-	132184,
-	132175,
-	132185,
-	132173,
-	132174,
-	132172,
-	132171,
-
-
-	-- witches festival ayleid stuff
-	132342, -- Ayleid Table, Carved
-	132343, -- Ayleid Bench, Carved
-	132344, -- Ayleid Brazier, Welkynd Holder
-	132187, -- Ayleid Bookcase, Cluttered
-	132188, -- Ayleid Bookshelf, Cluttered
-	132189, -- Ayleid Brazier, Fiery
-
-	-- witches festival
-	132167,	-- Praxis, Hagraven Cauldron, Rough Stone
-	132196, -- Pattern: Witches Corpse, Wrapped",
-	132173, -- Blueprint: Witches Brazier, Primitive Log",
-	132179, -- Blueprint: Witches Totem, Antler Charms",
+	132179, -- Blueprint: Witches Totem, Antler Charms
+	132188, -- Praxis: Ayleid Bookshelf, Cluttered
+	132195, -- Blueprint: Telvanni Candelabra, Masterwork
+	132194, -- Design: Mammoth Cheese, Mastercrafted
+	132186, -- Diagram: Daedric Cage, Hanging
+	132192, -- Pattern: Dres Sewing Kit, Master's
+	132167, -- Praxis: Hagraven Cauldron, Rough Stone
+	132193, -- Praxis: Hlaalu Bath Tub, Masterwork
+	132191, -- Diagram: Dwarven Gyroscope, Masterwork
+	132190, -- Formula: Mages Apparatus, Master
+	132183, -- Diagram: Daedric Fence, Section
+	132189, -- Diagram: Ayleid Brazier, Fiery
+	132196, -- Pattern: Witches Corpse, Wrapped
+	132187, -- Praxis: Ayleid Bookcase, Cluttered
+	132184, -- Praxis: Daedric Doorway, Spiked
+	132185, -- Diagram: Daedric Brazier, Coldharbour
+	132173, -- Blueprint: Witches Brazier, Primitive Log
+	132342, -- Praxis: Ayleid Table, Carved
+	132343, -- Praxis: Ayleid Bench, Carved
+	132344, -- Diagram: Ayleid Brazier, Welkynd Holder
+	132187, -- Praxis: Ayleid Bookcase, Cluttered
+	132188, -- Praxis: Ayleid Bookshelf, Cluttered
+	132189, -- Diagram: Ayleid Brazier, Fiery
+	132167, -- Praxis: Hagraven Cauldron, Rough Stone
+	132196, -- Pattern: Witches Corpse, Wrapped
+	132173, -- Blueprint: Witches Brazier, Primitive Log
+	132179, -- Blueprint: Witches Totem, Antler Charms
 }
diff --git a/data/03_Reach/HotR_Rollis.lua b/data/03_Reach/HotR_Rollis.lua
deleted file mode 100644
index f421cad..0000000
--- a/data/03_Reach/HotR_Rollis.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-FurC.Rolis_Recipes = FurC.Rolis_Recipes or {}
-
-FurC.Rolis_Recipes[FURC_REACH] = {
-	[132195] = true, -- Telvanni Candelabra, Masterwork
-	[132194] = true, -- Mammoth Cheese, Mastercrafted
-	[132191] = true, -- Dwarven Gyroscope
-	[132190] = true, -- Mages Apparatus, Master
-	[132192] = true, -- Dres Sewing Kit
-	[132193] = true, -- Hlaalu Bathtub, Masterwork
-}
diff --git a/data/100025.lua b/data/100025.lua
new file mode 100644
index 0000000..df1778c
--- /dev/null
+++ b/data/100025.lua
@@ -0,0 +1,351 @@
+local function getCrownPrice(price)
+    return string.format("%s (PTS, %u)", GetString(SI_FURC_CROWNSTORESOURCE), price)
+end
+
+FurC.MiscItemSources[FURC_SLAVES]	= {
+    [FURC_RUMOUR]   = {
+		[146048] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Festive Fir
+		[146049] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Winter Festival Hearth
+		[146050] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Winter Festival Hearthfire
+		[145923] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Lies of the Dread-Father
+		[146052] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Vvardvark Ice Sculpture
+		[146053] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Guar Ice Sculpture
+		[145926] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- That of Void
+		[145927] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Acts of Honoring
+		[145928] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Speakers of Nothing
+		[146057] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Snowmortal, Human
+		[146058] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Snowmortal, Argonian
+		[146060] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Ladle
+		[146062] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Winter Ouroboros Wreath
+		[145553] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Small Glyphed
+		[145426] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Felucca, Canopied
+		[145427] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Serpent Skull, Colossal
+		[145428] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Lantern Post, Covered
+		[145429] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant Cluster, Cardinal Flower Large
+		[145430] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Star Blossom
+		[145431] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Nigella
+		[145432] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Canna Lily
+		[146061] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Triptych Banner
+		[145434] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Large Lantern Flower
+		[145435] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Mani Flower
+		[145436] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Canopied Felucca, Double Hulled
+		[145437] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Reed Felucca, Double Hulled
+		[145438] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Glyphed
+		[145439] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Fearsome
+		[145440] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Skull
+		[145441] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Serpent
+		[145442] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Grave Stake, Large Twinned
+		[145443] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Shrine, Sithis Looming
+		[145444] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Totem, Hist Guardian
+		[145445] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- The Sharper Tongue: A Jel Primer
+		[145446] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Sithis, the Hungering Dark
+		[145447] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Dais, Engraved
+		[145448] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Throne, Engraved
+		[145449] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Stele, Hist Guardians
+		[145450] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Stele, Hist Cultivation
+		[145451] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Shrine, Sithis Figure Anointed
+		[145452] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Shrine, Sithis Looming Anointed
+		[145453] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Aloe
+		[145454] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Marsh Aloe Pod
+		[145455] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Dendritic Hist Bulb
+		[145456] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Hist Bulb
+		[145457] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Banyan
+		[145458] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Ancient Banyan
+		[141875] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Witches Festival Scarecrow
+		[145462] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Cardinal Flower
+		[146059] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Snowmortal, Khajiit
+		[146051] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Mudcrab Ice Sculpture
+		[146054] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Garland
+		[145467] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- The Way of Shadow
+		[145468] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Wedding Lantern, Hanging
+		[145469] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Redguard Gazebo, Palatial Domed
+		[145470] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Redguard Vase, Golden
+		[145471] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Redguard Raincatcher, Golden
+		[145472] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Antler Coral, Crimson
+		[145473] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Antler Coral, Stout Crimson
+		[145474] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Flytrap
+		[145475] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Plant, Soulsplinter Weed
+		[145476] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Alinor Shrine, Trinimac
+		[145477] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Alinor Pedestal, Shrine
+		[145478] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Alinor Shrine, Y'ffre
+		[145479] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Iron Maiden, Occupied
+		[145480] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Corpse, Burned Seated
+		[145481] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Corpse, Burned Sprawled
+		[145482] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Wheelbarrow, Bones
+		[145483] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Column, Ossuary
+		[145484] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Dark Elf Statue, Ordinator
+		[145485] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Dark Elf Statue, Knight
+		[145486] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Door, Sweet Mother
+		[145487] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Banner, Order of the Hour
+		[145488] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Banner, Jewelry Crafting
+		[146055] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Garland Wreath
+		[146056] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- New Life Cookies and Ale
+		[145491] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Static Pitcher
+		[145492] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Gas Blossom
+		[145493] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Lantern Mantis
+		[141854] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Decorative Hollowjack Flame-Skull
+		[145554] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Towering Snowy Fir
+		[145555] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Snowy Fir
+		[145597] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Scales of Shadow
+		[145595] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Scuttlebloom
+		[145322] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Music Box, Blood and Glory
+		[145576] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Timid Vine-Tongue
+		[145318] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Gravestone, Small Broken
+		[145317] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Gravestone, Broken
+		[141920] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Brazier, Ceremonial
+		[141921] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Bowl, Geometric Pattern
+		[141922] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Dish, Geometric Pattern
+		[141923] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Amphora, Seed Pattern
+		[141924] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Vase, Scale Pattern
+		[141925] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Hearth Shrine, Sithis Relief
+		[141926] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Hearth Shrine, Sithis Figure
+		[145550] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Hunting Lure, Grisly
+		[145549] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Totem, Stone Head
+		[141870] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Raven-Perch Cemetery Wreath
+		[142235] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Music Box, Flickering Shadows
+		[141856] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Decorative Hollowjack Daedra-Skull
+		[141855] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Decorative Hollowjack Wraith-Lantern
+		[145556] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Tree, Tall Snowy Fir
+		[145396] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Tapestry, Hist Gathering Worn
+		[145397] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Hist Gathering Worn
+		[145398] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Supine Turtle Worn
+		[145399] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Crawling Serpents Worn
+		[145400] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Rug, Lurking Lizard Worn
+		[145401] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Murkmire Tapestry, Xanmeer Worn
+		[145402] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Fish, Black Marsh
+		[145403] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- Jel Parchment
+		[146047] = GetString(SI_FURC_RUMOUR_SOURCE_ITEM), -- From Old Life To New
+    },
+
+    [FURC_CROWN]	= {
+		[145433] = getCrownPrice(1), -- Plant, Rafflesia
+		[145459] = getCrownPrice(1), -- Murkmire Kiln, Ancient Stone
+		[145460] = getCrownPrice(1), -- Plant, Canna Leaves
+		[145461] = getCrownPrice(1), -- Plant Cluster, Cardinal Flower Small
+		[145463] = getCrownPrice(1), -- Plant Cluster, Red Sister Ti
+		[145464] = getCrownPrice(1), -- Plant, Red Sister Ti
+		[145465] = getCrownPrice(1), -- Plant Cluster, Wilted Hist Bulb
+		[145466] = getCrownPrice(1), -- Plant, Wilted Hist Bulb
+		[141939] = getCrownPrice(1), -- Grave, Grasping
+		[145411] = getCrownPrice(1), -- Plant, Lantern Flower
+		[141965] = getCrownPrice(1), -- Hollowjack Lantern, Soaring Dragon
+		[141966] = getCrownPrice(1), -- Hollowjack Lantern, Toothy Grin
+		[141967] = getCrownPrice(1), -- Hollowjack Lantern, Ouroboros
+		[142004] = getCrownPrice(1), -- Specimen Jar, Spare Brain
+		[142005] = getCrownPrice(1), -- Specimen Jar, Monstrous Remains
+		[142003] = getCrownPrice(1), -- Specimen Jar, Eyes
+		[141869] = getCrownPrice(1), -- Alinor Potted Plant, Cypress
+		[141976] = getCrownPrice(1), -- Pumpkin Patch, Display
+		[141853] = getCrownPrice(1), -- Statue of Hircine's Bitter Mercy
+
+    },
+    [FURC_FISHING] 	= {
+        -- fishing
+        -- [118902] = GetString(SI_FURC_CANBEFISHED), 		-- Coral, Sun
+    },
+    [FURC_DROP]		= {
+        -- [121058] = FURC_DB_SNEAKY, 						-- Candles of Silence
+    },
+
+}
+
+
+FurC.Recipes[FURC_SLAVES] = {
+
+	145944, -- Praxis: Murkmire Chair, Engraved
+	145945, -- Praxis: Murkmire Bench, Wide
+	145946, -- Praxis: Murkmire Bench, Armless
+	145947, -- Praxis: Murkmire Bed, Enclosed
+	145948, -- Praxis: Murkmire Pedestal, Low
+	145949, -- Praxis: Murkmire Table, Engraved
+	145950, -- Praxis: Murkmire Brazier, Engraved
+	145951, -- Praxis: Murkmire Bookshelf, Grand
+	145952, -- Praxis: Murkmire Bookshelf, Grand Full
+	145953, -- Praxis: Murkmire Sarcophagus, Empty
+	145954, -- Praxis: Murkmire Sarcophagus Lid
+	145955, -- Praxis: Murkmire Bookshelf
+	145956, -- Praxis: Murkmire Bookshelf, Full
+	145957, -- Praxis: Murkmire Platform, Sectioned
+	145958, -- Praxis: Murkmire Pedestal, Winged
+	145959, -- Praxis: Murkmire Totem, Beacon
+	145960, -- Diagram: Murkmire Brazier, Bowl
+	145961, -- Praxis: Murkmire Hearth Shrine, Sithis Rearing
+	145962, -- Praxis: Murkmire Hearth Shrine, Sithis Coiled
+	145963, -- Praxis: Murkmire Hearth Shrine, Sithis Looming
+	145964, -- Praxis: Murkmire Shrine, Sithis Relief
+	145965, -- Praxis: Murkmire Shrine, Sithis Rearing
+	145966, -- Praxis: Murkmire Shrine, Sithis Figure
+	145967, -- Praxis: Murkmire Shrine, Sithis Coiled
+	145968, -- Design: Murkmire Pot, Large Carved
+	145969, -- Design: Bowl of Worms
+	145970, -- Design: Bowl of Guts
+	145971, -- Design: Bowl of Worms, Large
+	145972, -- Design: Grub Kebabs
+	145973, -- Design: Murkmire Berry Strand
+	145974, -- Design: Murkmire Pot, Handmade
+	145975, -- Design: Melon, Wax
+	145976, -- Design: Dragonfruit, Wax
+	145977, -- Blueprint: Murkmire Platter, Large
+	145978, -- Blueprint: Murkmire Plate, Charger
+	145979, -- Praxis: Murkmire Wall, Stone
+	145980, -- Blueprint: Murkmire Bonding Chimes, Domed
+	145981, -- Formula: Murkmire Lantern, Covered
+	145982, -- Formula: Murkmire Lamp, Hanging Bottle
+	145983, -- Formula: Murkmire Lamp, Hanging Conch
+	145984, -- Formula: Murkmire Sconce, Shell
+	145985, -- Formula: Murkmire Brazier, Shell
+	145986, -- Formula: Murkmire Lamp, Shell
+	145987, -- Design: Murkmire Candlepost, Timber
+	145988, -- Design: Murkmire Candlepost, Driftwood
+	145989, -- Design: Murkmire Candles, Bone Group
+	145990, -- Design: Murkmire Candle, Bone Tall
+	145991, -- Design: Murkmire Candle, Bone Squat
+	145992, -- Blueprint: Murkmire Bed, Carved
+	145993, -- Blueprint: Murkmire Wardrobe, Woven
+	145994, -- Blueprint: Murkmire Chair, Woven
+	141899, -- Praxis: Sacrificial Altar, Hircine
+	141900, -- Blueprint: Ritual Fetish, Hircine
+	146004, -- Blueprint: Murkmire Ramp, Reed
+	146005, -- Blueprint: Murkmire Platform, Reed
+	146006, -- Blueprint: Murkmire Gate, Arched
+	146007, -- Blueprint: Murkmire Wall, Straight
+	146008, -- Blueprint: Murkmire Totem Post, Carved
+	146009, -- Blueprint: Murkmire Wall, Corner Curve
+	146010, -- Pattern: Murkmire Tapestry, Hist Gathering
+	146011, -- Pattern: Murkmire Rug, Hist Gathering
+	146012, -- Pattern: Murkmire Rug, Supine Turtle
+	146013, -- Pattern: Murkmire Rug, Crawling Serpents
+	146014, -- Pattern: Murkmire Rug, Lurking Lizard
+	146015, -- Pattern: Murkmire Tapestry, Xanmeer
+	146016, -- Blueprint: Murkmire Bonding Chimes, Simple
+	146017, -- Blueprint: Murkmire Totem, Wolf-Lizard
+	141898, -- Praxis: Ritual Stone, Hircine
+	141897, -- Praxis: Obelisk, Lord Hircine Ritual
+	141896, -- Sketch: Figurine, The Dragon's Glare
+	145995, -- Blueprint: Murkmire Trunk, Leatherbound
+	145999, -- Blueprint: Murkmire Shelf, Reed
+	145996, -- Blueprint: Murkmire Counter, Cabinet
+	145997, -- Blueprint: Murkmire Counter, Low Cabinet
+	145998, -- Blueprint: Murkmire Table, Woven
+	145915, -- Praxis: Murkmire Desk, Engraved
+	146000, -- Blueprint: Murkmire Shelves, Woven
+	146001, -- Blueprint: Murkmire Shelf, Woven Hanging
+	146002, -- Blueprint: Murkmire Ramp, Marshwood
+	146003, -- Blueprint: Murkmire Walkway, Reed
+}
+
+
+
+FurC.AchievementVendors[FURC_SLAVES] = {
+	-- ["the Undaunted Enclaves"] = {
+		-- ["Undaunted Quartermaster"] = {
+			-- [141858] = {        --Banner of the Silver Dawn
+                -- itemPrice   = 15000,
+                -- achievement = 2152,
+            -- },
+            -- [141857] = {        --Ritual Chalice, Hircine
+                -- itemPrice   = 5000,
+                -- achievement = 2162,
+            -- },
+		-- },
+	-- },
+	["Murkmire"] = {
+		[GetString(FURC_AV_HAR)] = {
+			[145408] = {        	--Argon Pedestal, Replica
+				itemPrice   = 15000,
+				achievement = 0,	-- The river of rebirth
+			},
+			[145406] = {        	--Banner, Bright-Throat
+				itemPrice   = 10000,
+				achievement = 2353,	-- murky marketeer
+			},
+			[145404] = {        	--Banner, Dead-Water
+				itemPrice   = 10000,
+				achievement = 2354, -- Cold Blood, Warm Heart
+			},
+			[145405] = {        	--Banner, Rootwater
+				itemPrice   = 10000,
+				achievement = 0,	-- Resplendent Rootmender
+			},
+			[145553] = {        	--Grave Stake, Small Glyphed
+				itemPrice   = 5000,
+				achievement = 2330,	-- Surreptiliously Shadowed
+			},
+			[145549] = {       		--Murkmire Totem, Stone Head
+				itemPrice   = 12000,
+				achievement = 0,	-- Art of the Nisswo
+			},
+			[145407] = {        	-- Remnant of Argon, Replica
+				itemPrice   = 75000,
+				achievement = 2339,	-- River of Rebirth
+			},
+			[145412] = {        	--Seed Doll, Turtle
+				itemPrice   = 20000,
+				achievement = 2336,	-- Sap-Sleeper
+			},
+			[145576] = {        	--Timid Vine-Tongue
+				itemPrice   = 40000,
+				achievement = 2357,	--	Vine-Tongue Traveler
+			},
+
+		},
+		[GetString(FURC_AV_ADO)] = {
+			[145551] = {        -- Murkmire Kiln, Derelict
+				itemPrice   = 450,
+			},
+			[145557] = {        -- Plant Cluster, Spadeleaf
+				itemPrice   = 350,
+			},
+			[145414] = {        -- Plant Cluster, Marsh Saplings
+				itemPrice   = 250,
+			},
+			[145417] = {        -- Plant, Bramblebrush
+				itemPrice   = 250,
+			},
+			[145413] = {        -- Plant, Marsh Palm
+				itemPrice   = 350,
+			},
+			[145419] = {        -- Plant, Marshfrond
+				itemPrice   = 400,
+			},
+			[145547] = {        -- Plant, Moorstalk Hive
+				itemPrice   = 1250,
+			},
+			[145416] = {        -- Plant, Purple Spadeleaf
+				itemPrice   = 300,
+			},
+			[145420] = {        -- Plant, Thorny Swamp Lily
+				itemPrice   = 400,
+			},
+			[145418] = {        -- Plant, Young Marshfrond
+				itemPrice   = 250,
+			},
+			[145425] = {        -- Rock, Mossy Marsh
+				itemPrice   = 250,
+			},
+			[145424] = {        -- Rocks, Mossy Marsh Cluster
+				itemPrice   = 750,
+			},
+			[145422] = {        -- Tree Cluster, Young Sycamore
+				itemPrice   = 450,
+			},
+			[145421] = {        -- Tree, Marsh Cypress
+				itemPrice   = 350,
+			},
+			[145423] = {        -- Tree, Mire Mangrove
+				itemPrice   = 4000,
+			},
+			[145415] = {        -- Tree, Mossy Sycamore
+				itemPrice   = 2000,
+			},
+
+		}
+	}
+}
+
+-- local versionData = FurC.MiscItemSources[FURC_SLAVES]
+
+-- d(zo_strformat("num entries in FurC.MiscItemSources[FURC_SLAVES]: <<1>>", NonContiguousCount(versionData)))
+-- for origin, originData in pairs(versionData) do
+	-- d(zo_strformat("origin <<1>>, <<2>> entries", origin, NonContiguousCount(originData)))
+-- end
\ No newline at end of file
diff --git a/data/AchievementVendors.lua b/data/AchievementVendors.lua
index 8b8936c..1622207 100644
--- a/data/AchievementVendors.lua
+++ b/data/AchievementVendors.lua
@@ -1,14 +1,14 @@
 FurC.AchievementVendors[FURC_WEREWOLF] = {
 	["the Undaunted Enclaves"] = {
 		["Undaunted Quartermaster"] = {
+			[141857] = {        --Ritual Chalice, Hircine
+                itemPrice   = 5000,
+                achievement = 2162,
+            },
 			[141858] = {        --Banner of the Silver Dawn
                 itemPrice   = 15000,
                 achievement = 2152,
             },
-            [141857] = {        --Ritual Chalice, Hircine
-                itemPrice   = 5000,
-                achievement = 2162,
-            },
 		},
 	},

@@ -20,8 +20,7 @@ FurC.AchievementVendors[FURC_WEREWOLF] = {
 			},
 			[119971] = {        -- Statue of Shadows
 				itemPrice   = 25000,
-			},
-
+			},
 		}
 	},

diff --git a/data/MiscItemSources.lua b/data/MiscItemSources.lua
index 08637db..db6e86b 100644
--- a/data/MiscItemSources.lua
+++ b/data/MiscItemSources.lua
@@ -51,13 +51,6 @@ FurC.MiscItemSources[FURC_WEREWOLF] = {

 	},
 	[FURC_RUMOUR] = {
-		--  found on TTC [141825] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Relic Vault, Impenetrable
-		--  found on TTC [141826] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Alinor Bed, Levitating
-		--  found on TTC [141827] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Alinor Bookshelf, Grand Full
-		--  found on TTC [141828] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Alinor Gaming Table, Punctilious Conflict
-		--  found on TTC [141829] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Artist's Palette, Pigment
-		--  found on TTC [141830] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Alinor Grape Stomping Tub
-		--  found on TTC [141831] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Figurine, The Dragon's Glare
 		[141832] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Tree, Robust Fig
 		[141833] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Tree, Ancient Fig
 		[141834] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Tree, Towering Fig
@@ -74,7 +67,6 @@ FurC.MiscItemSources[FURC_WEREWOLF] = {
 		[141854] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Decorative Hollowjack Flame-Skull
 		[141855] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Decorative Hollowjack Wraith-Lantern
 		[141856] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Decorative Hollowjack Daedra-Skull
-		[141857] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Ritual Chalice, Hircine
 		[141869] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Alinor Potted Plant, Cypress
 		[141870] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Raven-Perch Cemetery Wreath
 		[141875] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), 	-- Witches Festival Scarecrow
diff --git a/data/RecipeSources.lua b/data/RecipeSources.lua
index 0026c9e..9c76f89 100644
--- a/data/RecipeSources.lua
+++ b/data/RecipeSources.lua
@@ -42,60 +42,31 @@ FurC.RecipeSources = {
     [139494] = soldBy(nalirsewen, artaeum, 20000,   rank(7)),  -- Praxis: Psijic Table, Six-Fold Symmetry
 }

-local rolisRecipes = {
-    [126582] = 275, -- Praxis: Target Centurion, Dwarf-Brass
-    [126583] = 450, -- Praxis: Target Centurion, Robust Refabricated
-    [119592] = 125, -- Praxis: Target Skeleton, Humanoid
-    [121315] = 200, -- Praxis: Target Skeleton, Robust Humanoid
-	[141904] = 125, -- Blueprint: Alinor Bookshelf, Grand Full,
-    [141905] = 125, -- Praxis: Alinor Gaming Table, Punctilious Conflict,
-    [141906] = 125, -- Formula: Artist's Palette, Pigment,
-    [141907] = 125, -- Design: Alinor Grape Stomping Tub,
-    [141901] = 125, -- Pattern: Psijic Banner, Long,
-    [141903] = 125, -- Pattern: Alinor Bed, Levitating,
-    [141902] = 125, -- Schematic: Relic Vault, Impenetrable,
-
-}
-local faustinaRecipes = {
-    [121200] = 100, -- Blueprint: Cabinet, Poisonmaker's
-    [121166] = 100, -- Blueprint: Podium, Skinning
-    [132195] = 100, -- Blueprint: Telvanni Candelabra, Masterwork
-    [121168] = 100, -- Blueprint: Tools, Case
-    [132194] = 100, -- Design: Mammoth Cheese, Mastercrafted
-    [121199] = 100, -- Design: Mortar and Pestle
-    [121214] = 100, -- Design: Orcish Skull Goblet, Full
-    [121163] = 100, -- Diagram: Apparatus, Boiler
-    [121165] = 100, -- Diagram: Apparatus, Gem Calipers
-    [132191] = 100, -- Diagram: Dwarven Gyroscope, Masterwork
-    [121197] = 100, -- Formula: Bottle, Poison Elixir
-    [121164] = 100, -- Formula: Case of Vials
-    [132190] = 100, -- Formula: Mages Apparatus, Master
-    [132192] = 100, -- Pattern: Dres Sewing Kit, Master's
-    [121209] = 100, -- Pattern: Orcish Tapestry, Spear
-    [132193] = 100, -- Praxis: Hlaalu Bath Tub, Masterwork
-    [121207] = 100, -- Praxis: Orcish Table with Fur
-    [134986] = 100, -- Design: Miniature Garden, Bottled
-    [134982] = 100, -- Formula: Alchemical Apparatus, Master
-    [134984] = 100, -- Pattern: Clothier's Form, Brass
-    [134985] = 100, -- Praxis: Hlaalu Trinket Box, Curious Turtle
-	[134987] = 100, -- Blueprint: Hlaalu Gaming Table, "Foxes & Felines"
-    [134986] = 100, -- Design: Miniature Garden, Bottled
-    [134983] = 100, -- Diagram: Hlaalu Gong
-    [134984] = 100, -- Pattern: Clothier's Form, Brass
-    [139486] = 100, -- Sketch: High Elf Ancestor Clock, Celestial

-}
+local function getItemLink(itemId)
+	return zo_strformat("|H1:item:<<1>>:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0|h|h", itemId)
+end
+
+local function getRecipeResultItemId(recipeId)
+	local recipeLink = getItemLink(recipeId)
+	local resultLink = GetItemLinkRecipeResultItemLink(recipeLink)
+	return GetItemLinkItemId(resultLink)
+end

-for itemId, itemPrice in pairs(rolisRecipes) do
-    local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor)
-    FurC.RecipeSources[itemId] = zo_strformat(GetString(SI_FURC_STRING_Rolis), priceString)
+for versionNo, rolisRecipes in pairs(FurC.RolisRecipes) do
+for recipeId, itemPrice in pairs(rolisRecipes) do
+		local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor)
+		FurC.RecipeSources[recipeId] = zo_strformat(GetString(SI_FURC_STRING_Rolis), priceString)
+	end
 end


-for itemId, itemPrice in pairs(faustinaRecipes) do
-    local unsurpassedCrafter = GetAchievementLink(1801)
-    local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor)
-    local soldByFaustinaFor = zo_strformat(GetString(SI_FURC_STRING_FAUSTINA), priceString)
-    FurC.RecipeSources[itemId] = soldByFaustinaFor .. requires .. unsurpassedCrafter
+for versionNo, faustinaRecipes in pairs(FurC.FaustinaRecipes) do
+	for recipeId, itemPrice in pairs(faustinaRecipes) do
+		local unsurpassedCrafter = GetAchievementLink(1801)
+		local priceString = zo_strformat(GetString(SI_FURC_STRING_FOR_VOUCHERS), itemPrice, voucherColor)
+		local soldByFaustinaFor = zo_strformat(GetString(SI_FURC_STRING_FAUSTINA), priceString)
+		FurC.RecipeSources[recipeId] = soldByFaustinaFor .. requires .. unsurpassedCrafter
+	end
 end

diff --git a/data/Recipes.lua b/data/Recipes.lua
index 98246ab..e19065c 100644
--- a/data/Recipes.lua
+++ b/data/Recipes.lua
@@ -1,200 +1,189 @@
 FurC.Recipes = FurC.Recipes or {}

 FurC.Recipes[FURC_WEREWOLF] = {
-    141896, -- Sketch: Figurine, The Dragon's Glare,
-    141897, -- Praxis: Obelisk, Lord Hircine Ritual,
-    141898, -- Praxis: Ritual Stone, Hircine,
-    141899, -- Praxis: Sacrificial Altar, Hircine,
-    141900, -- Blueprint: Ritual Fetish, Hircine item drops, blueprint not?
-    141904, -- Blueprint: Alinor Bookshelf, Grand Full,
-    141905, -- Praxis: Alinor Gaming Table, Punctilious Conflict,
-    141906, -- Formula: Artist's Palette, Pigment,
-    141907, -- Design: Alinor Grape Stomping Tub,
-    141901, -- Pattern: Psijic Banner, Long,
-    141903, -- Pattern: Alinor Bed, Levitating,
-    141902, -- Schematic: Relic Vault, Impenetrable,
+	141896, -- Sketch: Figurine, The Dragon's Glare
+	141897, -- Praxis: Obelisk, Lord Hircine Ritual
+	141898, -- Praxis: Ritual Stone, Hircine
+	141899, -- Praxis: Sacrificial Altar, Hircine
+	141900, -- Blueprint: Ritual Fetish, Hircine
 }

 FurC.Recipes[FURC_ALTMER] = {

-    139573, --Sketch: Figurine, the Fish and the Unicorn
-    139571, --Sketch: Figurine, the Sea-Monster's Surprise
-    139572, --Sketch: Figurine, the Taming of the Gryphon
-    139486, --Sketch: Alinor Ancestor Clock, Celestial
-    139613, --Sketch: Alinor Chalice, Delicate
-    139615, --Sketch: Alinor Chalice, Ornate
-    139616, --Sketch: Alinor Goblet, Silver Ornate
-    139612, --Sketch: Alinor Goblet, Silver Plain
-    139614, --Sketch: Alinor Goblet, Silver Stamped
-    139611, --Sketch: Alinor Goblet, Simple
-    139257, --Sketch: Scrimshaw Jewelery Box, Floral
-    139252, --Sketch: Scrimshaw Jewelery Box, Verdant Oval
-    139251, --Sketch: Scrimshaw Jewelery Box, Vineyard
-    139256, --Sketch: Scrimshaw, Ancient Vessel
-    139255, --Sketch: Scrimshaw, Octopus
-    139253, --Sketch: Scrimshaw, Sea Monster
-    139254, --Sketch: Scrimshaw, Ship
-
-    139514, -- Praxis: Alinor Wall, Stone Long,
-    139546, -- Praxis: Alinor Bench, Marble,
-    139556, -- Blueprint: Alinor Nightstand, Noble,
-    139538, -- Blueprint: Alinor Bed, Overhang Full,
-    139640, -- Pattern: Alinor Rug, Alinor Seal,
-    139524, -- Diagram: Alinor Sconce, Arched Glass,
-    139565, -- Blueprint: Alinor Trunk, Noble,
-    139540, -- Blueprint: Alinor Bed, Polished Full,
-    139550, -- Blueprint: Alinor Armchair, Polished,
-    139631, -- Praxis: Alinor Potted Plant, Twin Saplings,
-    139512, -- Praxis: Alinor Post, Stone Wall,
-    139511, -- Praxis: Alinor Wall, Stone Corner,
-    139609, -- Diagram: Alinor Table Setting, Complete,
-    139536, -- Blueprint: Alinor Bed, Noble Full,
-    139585, -- Diagram: Fireplace Grate, Wrought Iron,
-    139604, -- Praxis: Alinor Shrine,  Limestone Raised,
-    139575, -- Sketch: Scrimshaw Jewelry Box, Verdant Oval,
-    139588, -- Praxis: Alinor Fountain, Four-Way Timeworn,
-    139608, -- Praxis: Alinor Wall Shrine, Marble,
-    139569, -- Blueprint: Alinor Jewelry Box, Peaked,
-    139541, -- Blueprint: Alinor Bed, Noble Single,
-    139601, -- Praxis: Alinor Bowl, Stemmed Limestone,
-    139574, -- Sketch: Scrimshaw Jewelry Box, Vineyard,
-    139579, -- Sketch: Scrimshaw, Ancient Vessel,
-    139548, -- Blueprint: Alinor Armchair, Overhang,
-    139632, -- Praxis: Alinor Windowbox, Purple Wisteria,
-    139587, -- Praxis: Alinor Fireplace, Ornate,
-    139577, -- Sketch: Scrimshaw, Ship,
-    139582, -- Diagram: Alinor Pot, Patterned,
-    139486, -- Sketch: Alinor Ancestor Clock, Celestial,
-    139581, -- Diagram: Alinor Pot, Hanging Stamped,
-    139558, -- Blueprint: Alinor Counter, Polished Drawers,
-    139622, -- Blueprint: Alinor Bowl, Carved Wood,
-    139498, -- Praxis: Alinor Archway, Timeworn,
-    139593, -- Blueprint: Alinor Table, Noble Intimate,
-    139637, -- Pattern: Alinor Carpet, Alinor Crescent,
-    139634, -- Pattern: Alinor Curtains, Tall Drawn,
-    139534, -- Diagram: Alinor Streetlight, Paired Wrought Iron,
-    139503, -- Praxis: Alinor Floor, Ballroom Timeworn,
-    139544, -- Blueprint: Alinor Bench, Verdant,
-    139649, -- Blueprint: Alinor Cabinet, Noble,
-    139559, -- Blueprint: Alinor Counter, Polished Corner,
-    139490, -- Blueprint: Psijic Table, Small,
-    139520, -- Diagram: Alinor Sconce, Crenellated,
-    139487, -- Praxis: Book Row, Levitating,
-    139485, -- Blueprint: Alinor Pew, Polished,
-    139647, -- Praxis: Alinor Statue, Orator,
-    139603, -- Praxis: Alinor Shrine, Limestone,
-    139529, -- Diagram: Alinor Sconce, Candles,
-    139532, -- Blueprint: Alinor Candles, Stand,
-    139494, -- Praxis: Psijic Table, Six-fold Symmetry,
-    139525, -- Diagram: Alinor Sconce, Lantern,
-    139627, -- Blueprint: Display Case, Large,
-    139516, -- Praxis: Alinor Fence, Tall,
-    139572, -- Sketch: Figurine, The Taming of the Gryphon,
-    139557, -- Blueprint: Alinor Winerack, Polished,
-    139617, -- Diagram: Alinor Plate, Embossed,
-    139518, -- Praxis: Alinor Archway, Tall,
-    139630, -- Praxis: Alinor Potted Plant, Double Tiered,
-    139620, -- Diagram: Alinor Bread Basket, Wrought Iron,
-    139613, -- Sketch: Alinor Chalice, Delicate,
-    139519, -- Diagram: Alinor Sconce, Arched,
-    139505, -- Praxis: Alinor Sarcophagus, Wedge,
-    139545, -- Blueprint: Alinor Armchair, Backless Verdant,
-    139586, -- Diagram: Fireplace Tools, Wrought Iron,
-    139506, -- Praxis: Alinor Sarcophagus, Peaked,
-    139497, -- Praxis: Psijic Table, Grand,
-    139642, -- Pattern: Alinor Carpet, Intricate,
-    139625, -- Blueprint: Display Case, Standing Arched,
-    139612, -- Sketch: Alinor Goblet, Silver Plain,
-    139598, -- Design: Alinor Amphora, Embossed,
-    139599, -- Diagram: Alinor Urn, Bronze,
-    139638, -- Pattern: Alinor Carpet, Verdant,
-    139583, -- Blueprint: Alinor Divider, Noble,
-    139639, -- Pattern: Alinor Carpet, Vibrant,
-    139619, -- Design: Alinor Meal, Individual,
-    139614, -- Sketch: Alinor Goblet, Silver Stamped,
-    139495, -- Praxis: Psijic Lighting Globe, Large,
-    139646, -- Praxis: Alinor Statue, Kinlord,
-    139645, -- Pattern: Alinor Tapestry, Royal Gryphons,
-    139595, -- Design: Alinor Amphora, Delicate,
-    139542, -- Blueprint: Alinor Bookshelf, Polished,
-    139644, -- Pattern: Alinor Tapestry, Alinor Dusk,
-    139643, -- Pattern: Alinor Tapestry, Alinor Dawn,
-    139571, -- Sketch: Figurine, The Sea-Monster's Surprise,
-    139530, -- Diagram: Alinor Sconce, Candles Tall,
-    139605, -- Praxis: Alinor Pot, Limestone,
-    139566, -- Blueprint: Alinor Trunk, Spired,
-    139624, -- Blueprint: Display Case, Standing,
-    139513, -- Praxis: Alinor Wall, Stone,
-    139635, -- Pattern: Alinor Curtains, Drawn,
-    139539, -- Blueprint: Alinor Bed, Polished Single,
-    139567, -- Blueprint: Alinor Jewelry Box, Noble,
-    139629, -- Praxis: Alinor Potted Plant, Triple Tiered,
-    139628, -- Praxis: Alinor Potted Plant, Perpetual Bloom,
-    139626, -- Blueprint: Display Case, Specimen,
-    139636, -- Pattern: Alinor Drapes, Noble,
-    139543, -- Blueprint: Alinor Wardrobe, Polished,
-    139493, -- Pattern: Psijic Banner,
-    139623, -- Design: Alinor Bowl, Millet,
-    139584, -- Blueprint: Alinor Divider, Polished,
-    139510, -- Praxis: Alinor Stairway, Timeworn Wide,
-    139488, -- Praxis: Book Stack, Levitating,
-    139621, -- Design: Alinor Pie Dish, Cherry Pie,
-    139618, -- Diagram: Alinor Platter, Scalloped,
-    139564, -- Blueprint: Alinor Trunk, Engraved,
-    139501, -- Praxis: Alinor Bookshelf Wall, Timeworn,
-    139535, -- Diagram: Alinor Streetlight, Wrought Iron,
-    139615, -- Sketch: Alinor Chalice, Ornate,
-    139537, -- Blueprint: Alinor Bed, Canopy Full,
-    139533, -- Diagram: Alinor Brazier, Hanging Coals,
-    139492, -- Praxis: Psijic Table, Scalloped,
-    139594, -- Design: Alinor Urn, Gilded,
-    139528, -- Diagram: Alinor Candelabra, Wrought Iron,
-    139633, -- Praxis: Alinor Windowbox, Blue Wisteria,
-    139531, -- Blueprint: Alinor Candles, Tall Stand,
-    139504, -- Praxis: Alinor Column, Timeworn,
-    139641, -- Pattern: Alinor Runner, Royal,
-    139611, -- Sketch: Alinor Goblet, Simple,
-    139610, -- Design: Alinor Meal, Complete Setting,
-    139554, -- Blueprint: Alinor Nightstand, Scalloped,
-    139551, -- Blueprint: Alinor Armchair, Backless Polished,
-    139521, -- Diagram: Alinor Lantern, Hanging,
-    139499, -- Praxis: Alinor Column, Heavy Timeworn,
-    139607, -- Praxis: Alinor Display Stand, Marble,
-    139500, -- Praxis: Alinor Pedestal, Timeworn,
-    139606, -- Praxis: Alinor Display Stand, Marble Wide,
-    139527, -- Diagram: Alinor Brazier, Noble,
-    139602, -- Praxis: Alinor Urn, Limestone Large,
-    139547, -- Blueprint: Alinor Armchair, Noble,
-    139508, -- Praxis: Alinor Sarcophagus, Open,
-    139573, -- Sketch: Figurine, The Fish and the Unicorn,
-    139553, -- Blueprint: Alinor Desk, Mirrored,
-    139597, -- Design: Alinor Urn, Stemmed,
-    139517, -- Praxis: Alinor Fence, Tall Long,
-    139491, -- Praxis: Psijic Lighting Globe, Small,
-    139489, -- Blueprint: Psijic Chair, Arched,
-    139596, -- Design: Alinor Amphora, Slender,
-    139600, -- Praxis: Alinor Bowl, Shallow Limestone,
-    139509, -- Praxis: Alinor Stairway, Timeworn,
-    139515, -- Praxis: Alinor Post, Tall Fence,
-    139591, -- Praxis: Alinor Table, Decorative Marble,
-    139590, -- Praxis: Alinor Table, Round Marble,
-    139589, -- Praxis: Alinor Fountain, Timeworn,
-    139592, -- Blueprint: Alinor Table, Noble Grand,
-    139552, -- Blueprint: Alinor Desk, Polished,
-    139578, -- Sketch: Scrimshaw, Octopus,
-    139580, -- Sketch: Scrimshaw Jewelry Box, Floral,
-    139549, -- Blueprint: Alinor Chair, Polished,
-    139496, -- Pattern: Psijic Banner, Large,
-    139576, -- Sketch: Scrimshaw, Sea Monster,
-    139502, -- Praxis: Alinor Column, Slender Timeworn,
-    139568, -- Blueprint: Alinor Jewelry Box, Polished,
-    139523, -- Diagram: Alinor Sconce, Wrought Glass,
-    139616, -- Sketch: Alinor Goblet, Silver Ornate,
-    139563, -- Blueprint: Alinor Trunk, Peaked,
-    139522, -- Diagram: Alinor Lantern, Stationary,
-    139555, -- Blueprint: Alinor Nightstand, Octagonal,
-    139570, -- Blueprint: Alinor Jewelry Box, Octagonal,
-    139648, -- Design: Alinor Amphora, Portrait,
-    139484, -- Blueprint: Alinor Writing Desk, Noble,
+	139573, -- Sketch: Figurine, The Fish and the Unicorn
+	139571, -- Sketch: Figurine, The Sea-Monster's Surprise
+	139572, -- Sketch: Figurine, The Taming of the Gryphon
+	139613, -- Sketch: Alinor Chalice, Delicate
+	139615, -- Sketch: Alinor Chalice, Ornate
+	139616, -- Sketch: Alinor Goblet, Silver Ornate
+	139612, -- Sketch: Alinor Goblet, Silver Plain
+	139614, -- Sketch: Alinor Goblet, Silver Stamped
+	139611, -- Sketch: Alinor Goblet, Simple
+	139575, -- Sketch: Scrimshaw Jewelry Box, Verdant Oval
+	139574, -- Sketch: Scrimshaw Jewelry Box, Vineyard
+	139579, -- Sketch: Scrimshaw, Ancient Vessel
+	139578, -- Sketch: Scrimshaw, Octopus
+	139576, -- Sketch: Scrimshaw, Sea Monster
+	139577, -- Sketch: Scrimshaw, Ship
+	139514, -- Praxis: Alinor Wall, Stone Long
+	139546, -- Praxis: Alinor Bench, Marble
+	139556, -- Blueprint: Alinor Nightstand, Noble
+	139538, -- Blueprint: Alinor Bed, Overhang Full
+	139640, -- Pattern: Alinor Rug, Alinor Seal
+	139524, -- Diagram: Alinor Sconce, Arched Glass
+	139565, -- Blueprint: Alinor Trunk, Noble
+	139540, -- Blueprint: Alinor Bed, Polished Full
+	139550, -- Blueprint: Alinor Armchair, Polished
+	139631, -- Praxis: Alinor Potted Plant, Twin Saplings
+	139512, -- Praxis: Alinor Post, Stone Wall
+	139511, -- Praxis: Alinor Wall, Stone Corner
+	139609, -- Diagram: Alinor Table Setting, Complete
+	139536, -- Blueprint: Alinor Bed, Noble Full
+	139585, -- Diagram: Fireplace Grate, Wrought Iron
+	139604, -- Praxis: Alinor Shrine, Limestone Raised
+	139575, -- Sketch: Scrimshaw Jewelry Box, Verdant Oval
+	139588, -- Praxis: Alinor Fountain, Four-Way Timeworn
+	139608, -- Praxis: Alinor Wall Shrine, Marble
+	139569, -- Blueprint: Alinor Jewelry Box, Peaked
+	139541, -- Blueprint: Alinor Bed, Noble Single
+	139601, -- Praxis: Alinor Bowl, Stemmed Limestone
+	139574, -- Sketch: Scrimshaw Jewelry Box, Vineyard
+	139579, -- Sketch: Scrimshaw, Ancient Vessel
+	139548, -- Blueprint: Alinor Armchair, Overhang
+	139632, -- Praxis: Alinor Windowbox, Purple Wisteria
+	139587, -- Praxis: Alinor Fireplace, Ornate
+	139577, -- Sketch: Scrimshaw, Ship
+	139582, -- Diagram: Alinor Pot, Patterned
+	139581, -- Diagram: Alinor Pot, Hanging Stamped
+	139558, -- Blueprint: Alinor Counter, Polished Drawers
+	139622, -- Blueprint: Alinor Bowl, Carved Wood
+	139498, -- Praxis: Alinor Archway, Timeworn
+	139593, -- Blueprint: Alinor Table, Noble Intimate
+	139637, -- Pattern: Alinor Carpet, Alinor Crescent
+	139634, -- Pattern: Alinor Curtains, Tall Drawn
+	139534, -- Diagram: Alinor Streetlight, Paired Wrought Iron
+	139503, -- Praxis: Alinor Floor, Ballroom Timeworn
+	139544, -- Blueprint: Alinor Bench, Verdant
+	139649, -- Blueprint: Alinor Cabinet, Noble
+	139559, -- Blueprint: Alinor Counter, Polished Corner
+	139490, -- Blueprint: Psijic Table, Small
+	139520, -- Diagram: Alinor Sconce, Crenellated
+	139487, -- Praxis: Book Row, Levitating
+	139485, -- Blueprint: Alinor Pew, Polished
+	139647, -- Praxis: Alinor Statue, Orator
+	139603, -- Praxis: Alinor Shrine, Limestone
+	139529, -- Diagram: Alinor Sconce, Candles
+	139532, -- Blueprint: Alinor Candles, Stand
+	139494, -- Praxis: Psijic Table, Six-fold Symmetry
+	139525, -- Diagram: Alinor Sconce, Lantern
+	139627, -- Blueprint: Display Case, Large
+	139516, -- Praxis: Alinor Fence, Tall
+	139572, -- Sketch: Figurine, The Taming of the Gryphon
+	139557, -- Blueprint: Alinor Winerack, Polished
+	139617, -- Diagram: Alinor Plate, Embossed
+	139518, -- Praxis: Alinor Archway, Tall
+	139630, -- Praxis: Alinor Potted Plant, Double Tiered
+	139620, -- Diagram: Alinor Bread Basket, Wrought Iron
+	139613, -- Sketch: Alinor Chalice, Delicate
+	139519, -- Diagram: Alinor Sconce, Arched
+	139505, -- Praxis: Alinor Sarcophagus, Wedge
+	139545, -- Blueprint: Alinor Armchair, Backless Verdant
+	139586, -- Diagram: Fireplace Tools, Wrought Iron
+	139506, -- Praxis: Alinor Sarcophagus, Peaked
+	139497, -- Praxis: Psijic Table, Grand
+	139642, -- Pattern: Alinor Carpet, Intricate
+	139625, -- Blueprint: Display Case, Standing Arched
+	139612, -- Sketch: Alinor Goblet, Silver Plain
+	139598, -- Design: Alinor Amphora, Embossed
+	139599, -- Diagram: Alinor Urn, Bronze
+	139638, -- Pattern: Alinor Carpet, Verdant
+	139583, -- Blueprint: Alinor Divider, Noble
+	139639, -- Pattern: Alinor Carpet, Vibrant
+	139619, -- Design: Alinor Meal, Individual
+	139614, -- Sketch: Alinor Goblet, Silver Stamped
+	139495, -- Praxis: Psijic Lighting Globe, Large
+	139646, -- Praxis: Alinor Statue, Kinlord
+	139645, -- Pattern: Alinor Tapestry, Royal Gryphons
+	139595, -- Design: Alinor Amphora, Delicate
+	139542, -- Blueprint: Alinor Bookshelf, Polished
+	139644, -- Pattern: Alinor Tapestry, Alinor Dusk
+	139643, -- Pattern: Alinor Tapestry, Alinor Dawn
+	139571, -- Sketch: Figurine, The Sea-Monster's Surprise
+	139530, -- Diagram: Alinor Sconce, Candles Tall
+	139605, -- Praxis: Alinor Pot, Limestone
+	139566, -- Blueprint: Alinor Trunk, Spired
+	139624, -- Blueprint: Display Case, Standing
+	139513, -- Praxis: Alinor Wall, Stone
+	139635, -- Pattern: Alinor Curtains, Drawn
+	139539, -- Blueprint: Alinor Bed, Polished Single
+	139567, -- Blueprint: Alinor Jewelry Box, Noble
+	139629, -- Praxis: Alinor Potted Plant, Triple Tiered
+	139628, -- Praxis: Alinor Potted Plant, Perpetual Bloom
+	139626, -- Blueprint: Display Case, Specimen
+	139636, -- Pattern: Alinor Drapes, Noble
+	139543, -- Blueprint: Alinor Wardrobe, Polished
+	139493, -- Pattern: Psijic Banner
+	139623, -- Design: Alinor Bowl, Millet
+	139584, -- Blueprint: Alinor Divider, Polished
+	139510, -- Praxis: Alinor Stairway, Timeworn Wide
+	139488, -- Praxis: Book Stack, Levitating
+	139621, -- Design: Alinor Pie Dish, Cherry Pie
+	139618, -- Diagram: Alinor Platter, Scalloped
+	139564, -- Blueprint: Alinor Trunk, Engraved
+	139501, -- Praxis: Alinor Bookshelf Wall, Timeworn
+	139535, -- Diagram: Alinor Streetlight, Wrought Iron
+	139615, -- Sketch: Alinor Chalice, Ornate
+	139537, -- Blueprint: Alinor Bed, Canopy Full
+	139533, -- Diagram: Alinor Brazier, Hanging Coals
+	139492, -- Praxis: Psijic Table, Scalloped
+	139594, -- Design: Alinor Urn, Gilded
+	139528, -- Diagram: Alinor Candelabra, Wrought Iron
+	139633, -- Praxis: Alinor Windowbox, Blue Wisteria
+	139531, -- Blueprint: Alinor Candles, Tall Stand
+	139504, -- Praxis: Alinor Column, Timeworn
+	139641, -- Pattern: Alinor Runner, Royal
+	139611, -- Sketch: Alinor Goblet, Simple
+	139610, -- Design: Alinor Meal, Complete Setting
+	139554, -- Blueprint: Alinor Nightstand, Scalloped
+	139551, -- Blueprint: Alinor Armchair, Backless Polished
+	139521, -- Diagram: Alinor Lantern, Hanging
+	139499, -- Praxis: Alinor Column, Heavy Timeworn
+	139607, -- Praxis: Alinor Display Stand, Marble
+	139500, -- Praxis: Alinor Pedestal, Timeworn
+	139606, -- Praxis: Alinor Display Stand, Marble Wide
+	139527, -- Diagram: Alinor Brazier, Noble
+	139602, -- Praxis: Alinor Urn, Limestone Large
+	139547, -- Blueprint: Alinor Armchair, Noble
+	139508, -- Praxis: Alinor Sarcophagus, Open
+	139573, -- Sketch: Figurine, The Fish and the Unicorn
+	139553, -- Blueprint: Alinor Desk, Mirrored
+	139597, -- Design: Alinor Urn, Stemmed
+	139517, -- Praxis: Alinor Fence, Tall Long
+	139491, -- Praxis: Psijic Lighting Globe, Small
+	139489, -- Blueprint: Psijic Chair, Arched
+	139596, -- Design: Alinor Amphora, Slender
+	139600, -- Praxis: Alinor Bowl, Shallow Limestone
+	139509, -- Praxis: Alinor Stairway, Timeworn
+	139515, -- Praxis: Alinor Post, Tall Fence
+	139591, -- Praxis: Alinor Table, Decorative Marble
+	139590, -- Praxis: Alinor Table, Round Marble
+	139589, -- Praxis: Alinor Fountain, Timeworn
+	139592, -- Blueprint: Alinor Table, Noble Grand
+	139552, -- Blueprint: Alinor Desk, Polished
+	139578, -- Sketch: Scrimshaw, Octopus
+	139580, -- Sketch: Scrimshaw Jewelry Box, Floral
+	139549, -- Blueprint: Alinor Chair, Polished
+	139496, -- Pattern: Psijic Banner, Large
+	139576, -- Sketch: Scrimshaw, Sea Monster
+	139502, -- Praxis: Alinor Column, Slender Timeworn
+	139568, -- Blueprint: Alinor Jewelry Box, Polished
+	139523, -- Diagram: Alinor Sconce, Wrought Glass
+	139616, -- Sketch: Alinor Goblet, Silver Ornate
+	139563, -- Blueprint: Alinor Trunk, Peaked
+	139522, -- Diagram: Alinor Lantern, Stationary
+	139555, -- Blueprint: Alinor Nightstand, Octagonal
+	139570, -- Blueprint: Alinor Jewelry Box, Octagonal
+	139648, -- Design: Alinor Amphora, Portrait
+	139484, -- Blueprint: Alinor Writing Desk, Noble
 }

diff --git a/data/Rolis.lua b/data/Rolis.lua
index 8a491e5..1ead059 100644
--- a/data/Rolis.lua
+++ b/data/Rolis.lua
@@ -1,4 +1,4 @@
-FurC.Rolis_Recipes      = FurC.Rolis_Recipes 		or {}
+FurC.RolisRecipes      = FurC.RolisRecipes 		or {}
 FurC.FaustinaRecipes	= FurC.FaustinaRecipes 	or {}
 FurC.Faustina			= FurC.Faustina 		or {}

@@ -9,55 +9,83 @@ FurC.Faustina[FURC_ALTMER] = {
 }


+FurC.RolisRecipes[FURC_DRAGONS] = {
+ 	[141904] = 125, -- Blueprint: Alinor Bookshelf, Grand Full,
+    [141905] = 125, -- Praxis: Alinor Gaming Table, Punctilious Conflict,
+    [141906] = 125, -- Formula: Artist's Palette, Pigment,
+    [141907] = 125, -- Design: Alinor Grape Stomping Tub,
+    [141901] = 125, -- Pattern: Psijic Banner, Long,
+    [141903] = 125, -- Pattern: Alinor Bed, Levitating,
+    [141902] = 125, -- Schematic: Relic Vault, Impenetrable,
+}
 FurC.FaustinaRecipes[FURC_DRAGONS] = {
-	 121200,	-- Cabinet, Poisonmaker's
-	 121166,	-- Heirloom Podium, Skinning
-	 121168,	-- Tools, Case
-	 121214,	-- Mortar + Pestle
-	 121163,	-- Orcish Skull Goblet, Full
-	 121163,	-- Apparatus, Boiler
-	 121165,	-- Apparatus, Gem Caliper
-	 121197,	-- Bottle, Poison Elixir
-	 121164,	-- Case of Vials
-	 121209,	-- Orcish Tapestry, Spear
-	 132194,	-- Mammoth Cheese
-	 132191,	-- Dwarven Gyroscope, Masterwork
-	 132190,	-- Mages' Apparatus, Master
-	 132192,	-- Dres Sewing Kit
-	 132193,	-- Hlaalu Bathtub
-	 132195,	-- Telvanni Candelabra
-	 121166,	-- Podium, Skinning
-	 134986,	-- Podium, Skinning
+
+	[121200] = 100, -- Blueprint: Cabinet, Poisonmaker's
+    [121166] = 100, -- Blueprint: Podium, Skinning
+    [132195] = 100, -- Blueprint: Telvanni Candelabra, Masterwork
+    [121168] = 100, -- Blueprint: Tools, Case
+    [132194] = 100, -- Design: Mammoth Cheese, Mastercrafted
+    [121199] = 100, -- Design: Mortar and Pestle
+    [121214] = 100, -- Design: Orcish Skull Goblet, Full
+    [121163] = 100, -- Diagram: Apparatus, Boiler
+    [121165] = 100, -- Diagram: Apparatus, Gem Calipers
+    [132191] = 100, -- Diagram: Dwarven Gyroscope, Masterwork
+    [121197] = 100, -- Formula: Bottle, Poison Elixir
+    [121164] = 100, -- Formula: Case of Vials
+    [132190] = 100, -- Formula: Mages Apparatus, Master
+    [132192] = 100, -- Pattern: Dres Sewing Kit, Master's
+    [121209] = 100, -- Pattern: Orcish Tapestry, Spear
+    [132193] = 100, -- Praxis: Hlaalu Bath Tub, Masterwork
+    [121207] = 100, -- Praxis: Orcish Table with Fur
+    [134986] = 100, -- Design: Miniature Garden, Bottled
+    [134982] = 100, -- Formula: Alchemical Apparatus, Master
+    [134984] = 100, -- Pattern: Clothier's Form, Brass
+    [134985] = 100, -- Praxis: Hlaalu Trinket Box, Curious Turtle
+	[134987] = 100, -- Blueprint: Hlaalu Gaming Table, "Foxes & Felines"
+    [134986] = 100, -- Design: Miniature Garden, Bottled
+    [134983] = 100, -- Diagram: Hlaalu Gong
+    [134984] = 100, -- Pattern: Clothier's Form, Brass
+    [139486] = 100, -- Sketch: High Elf Ancestor Clock, Celestial
+
 }

+
 FurC.Faustina[FURC_DRAGONS] = {
 	[134675] = 500,
 }

 FurC.Rolis[FURC_DRAGONS] = {
-	134983,
-	134984,
-	134985,
-	134986,
-	134987,
 	[133576] = 1250,
 }


+FurC.Rolis[FURC_HOMESTEAD] = {
+	-- Alchemy station
+	[118328] = 35,
+	-- Blacksmithing station
+	[119781] = 35,
+	-- Clothing station
+	[119707] = 35,
+	-- Dye Station
+	[118329] = 35,
+	-- Enchanting station
+	[118330] = 35,
+	-- Provisioning station
+	[118327] = 35,
+	-- Woodworking station
+	[119744] = 35,

-FurC.Rolis_Recipes[FURC_HOMESTEAD] = {
-	-- Rolis's recipes
-	121200, -- Cabinet, Poisonmaker's
-	121166, -- Podium, Skinning
-	121168, -- Tools, Case
-	121199, -- Mortar and Pestle
-	121214, -- Orcish Skull Goblet, Full
-	121163, -- Apparatus, Boiler
-	121197, -- Bottle, Poison Elixir
-	121164, -- Case of Vials
-	121209, -- Orcish Tapestry, Spear
-	121207, -- Orcish Table with Fur
-	121207, -- Orcish Table with Fur
-	121315, -- Target Skeleton, Robust Humanoid
-	119592, -- Target Skeleton, Humanoid
-}
\ No newline at end of file
+	-- Attunable Blacksmithing station
+	[119594] = 250,
+	-- Attunable Clothing station
+	[119821] = 250,
+	-- Attunable Woodworking station
+	[119822] = 250,
+}
+
+FurC.RolisRecipes[FURC_HOMESTEAD] = {
+    [126582] = 275, -- Praxis: Target Centurion, Dwarf-Brass
+    [126583] = 450, -- Praxis: Target Centurion, Robust Refabricated
+    [119592] = 125, -- Praxis: Target Skeleton, Humanoid
+    [121315] = 200, -- Praxis: Target Skeleton, Robust Humanoid
+}
diff --git a/data/RumourRecipes.lua b/data/RumourRecipes.lua
index 70930ea..0797c81 100644
--- a/data/RumourRecipes.lua
+++ b/data/RumourRecipes.lua
@@ -34,9 +34,7 @@ FurC.RumourRecipes = {
 	119355, -- Garlic String, Display
 	121203, -- Khajiit Brazier, Enchanted
 	121091, -- Stool, Carved
-	119447, -- Candles, Lasting
-
-
+	119447, -- Candles, Lasting
 }
 local function getCrownStorePriceString(price)
     return string.format("%s (%u)", GetString(SI_FURC_CROWNSTORESOURCE), price)
@@ -46,18 +44,6 @@ end
 FurC.MiscItemSources[FURC_ALTMER] = FurC.MiscItemSources[FURC_ALTMER] or {}
 FurC.MiscItemSources[FURC_ALTMER][FURC_RUMOUR] = {

-
-    [139099] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Dark Elf Brazier, Ancestral Tomb
-    [139100] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Dark Elf Ash Garden, Familial
-
-    [139101] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Blue Crystal Cluster, Large
-    [139102] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Blue Crystal Spire, Large
-
-    [139103] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Craglorn Display Case, Sealed
-    [139104] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Craglorn Relief, Serpent
-
-    [139106] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Reach Briarheart, Corpse Blue
-
     [139137] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Tapestry, Nocturnal
     [139138] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Banner, Nocturnal
     [139139] = GetString(SI_FURC_ITEMSOURCE_UNKNOWN_YET), -- Nocturnal, Mistress of Shadows
diff --git a/locale/en.lua b/locale/en.lua
index e50d8a6..8e6fd32 100644
--- a/locale/en.lua
+++ b/locale/en.lua
@@ -18,6 +18,8 @@ local strings = {
 	FURC_AV_ATH									= "Athragor",
 	FURC_AV_MAL									= "Maladdiq",
 	FURC_AV_KRR									= "Krrztrrb",
+	FURC_AV_HAR									= "Harnwulf",
+	FURC_AV_ADO									= "Adosa Veralor",
 	FURC_AV_ENC									= "enchanters",
 	FURC_AV_ALC									= "alchemists",
 	FURC_AV_OUT									= "Outlaw Refuge, Merchant",
@@ -195,6 +197,7 @@ local strings = {
 	SI_FURC_FILTER_VERSION_DRAGON					= "Dragon Bones",
 	SI_FURC_FILTER_VERSION_ALTMER					= "Summerset",
 	SI_FURC_FILTER_VERSION_WEREWOLF					= "Wolfhunter",
+	SI_FURC_FILTER_VERSION_SLAVES					= "Murkmire",


 	-- =============================== --
@@ -221,6 +224,7 @@ local strings = {
 	SI_FURC_FILTER_VERSION_DRAGON_TT				= "If you got this from Narsis Dren, well...",
 	SI_FURC_FILTER_VERSION_ALTMER_TT                = "Still think the Dunmer are bad?",
 	SI_FURC_FILTER_VERSION_WEREWOLF_TT              = "In Soviet Hunting Ground, werewolf hunt you",
+	SI_FURC_FILTER_VERSION_SLAVES_TT              	= "ToDo: Think of horrible pun about Argonians",

 	SI_FURC_FILTER_CHAR_OFF							= "Character filter: off",
 	SI_FURC_FILTER_CHAR_OFF_TT						= filterDisabled,
diff --git a/startup.lua b/startup.lua
index 4f47c22..77dc2e1 100644
--- a/startup.lua
+++ b/startup.lua
@@ -1,7 +1,7 @@
 FurnitureCatalogue 					= {}
 FurnitureCatalogue.name				= "FurnitureCatalogue"
 FurnitureCatalogue.author			= "manavortex"
-FurnitureCatalogue.version          = 2.65
+FurnitureCatalogue.version          = 2.66
 FurnitureCatalogue.CharacterName	= nil
 FurnitureCatalogue.settings			= {}

@@ -19,6 +19,9 @@ FurC.EventItems						= {}
 FurC.PVP							= {}
 FurC.MiscItemSources                = {}

+-- for search so it doesn't lag
+FurC.FilterTask =  LibStub("LibAsync"):Create("FurnitureCatalogue_FilterOnTextSearch")
+
 -- versioning
 FURC_HOMESTEAD						= 2
 FURC_MORROWIND						= 3
@@ -27,6 +30,7 @@ FURC_CLOCKWORK						= 5
 FURC_DRAGONS						= 6
 FURC_ALTMER						    = 7
 FURC_WEREWOLF					    = 8
+FURC_SLAVES						    = 9

 FurC.Const                          = {
     vendorColor     = "d68957",
@@ -155,27 +159,32 @@ local function getTooltipsSource()
     tooltipsSource[FURC_LUXURY] 				    = GetString(SI_FURC_LUXURY_TT)
 	tooltipsSource[FURC_OTHER] 				        = GetString(SI_FURC_OTHER_TT)

-	return tooltipsSource
+return tooltipsSource
 end

 FurnitureCatalogue.DropdownData = {
+
 	ChoicesVersion	= {
-		[1] = GetString(SI_FURC_FILTER_VERSION_OFF),
-		[2] = GetString(SI_FURC_FILTER_VERSION_HS	),
-		[3] = GetString(SI_FURC_FILTER_VERSION_M	),
-		[4] = GetString(SI_FURC_FILTER_VERSION_R	),
-		[5] = GetString(SI_FURC_FILTER_VERSION_CC	),
-		[6] = GetString(SI_FURC_FILTER_VERSION_DRAGON),
-		[7] = GetString(SI_FURC_FILTER_VERSION_ALTMER),
+		[1] 				= GetString(SI_FURC_FILTER_VERSION_OFF),
+		[FURC_HOMESTEAD] 	= GetString(SI_FURC_FILTER_VERSION_HS	),
+		[FURC_MORROWIND] 	= GetString(SI_FURC_FILTER_VERSION_M	),
+		[FURC_REACH] 		= GetString(SI_FURC_FILTER_VERSION_R	),
+		[FURC_CLOCKWORK] 	= GetString(SI_FURC_FILTER_VERSION_CC	),
+		[FURC_DRAGONS] 		= GetString(SI_FURC_FILTER_VERSION_DRAGON),
+		[FURC_ALTMER] 		= GetString(SI_FURC_FILTER_VERSION_ALTMER),
+		[FURC_WEREWOLF] 	= GetString(SI_FURC_FILTER_VERSION_WEREWOLF),
+		[FURC_SLAVES] 		= GetString(SI_FURC_FILTER_VERSION_SLAVES),
 	},
 	TooltipsVersion	= {
-		[1] =  GetString(SI_FURC_FILTER_VERSION_OFF_TT),
-		[2] =  GetString(SI_FURC_FILTER_VERSION_HS_TT),
-		[3] =  GetString(SI_FURC_FILTER_VERSION_M_TT),
-		[4] =  GetString(SI_FURC_FILTER_VERSION_R_TT),
-		[5] =  GetString(SI_FURC_FILTER_VERSION_CC_TT),
-		[6] =  GetString(SI_FURC_FILTER_VERSION_DRAGON_TT),
-		[7] = GetString(SI_FURC_FILTER_VERSION_ALTMER_TT),
+		[1] 				=  GetString(SI_FURC_FILTER_VERSION_OFF_TT),
+		[FURC_HOMESTEAD] 	=  GetString(SI_FURC_FILTER_VERSION_HS_TT),
+		[FURC_MORROWIND] 	=  GetString(SI_FURC_FILTER_VERSION_M_TT),
+		[FURC_REACH] 		=  GetString(SI_FURC_FILTER_VERSION_R_TT),
+		[FURC_CLOCKWORK] 	=  GetString(SI_FURC_FILTER_VERSION_CC_TT),
+		[FURC_DRAGONS] 		=  GetString(SI_FURC_FILTER_VERSION_DRAGON_TT),
+		[FURC_ALTMER] 		= GetString(SI_FURC_FILTER_VERSION_ALTMER_TT),
+		[FURC_WEREWOLF] 	= GetString(SI_FURC_FILTER_VERSION_WEREWOLF_TT),
+		[FURC_SLAVES] 		= GetString(SI_FURC_FILTER_VERSION_SLAVES_TT),
 	},
 	ChoicesCharacter  = {
 		[1]	= GetString(SI_FURC_FILTER_CHAR_OFF),
@@ -270,7 +279,7 @@ function FurnitureCatalogue_Initialize(eventCode, addOnName)

 	local scanFiles = false
 	if FurC.settings.version 		< FurC.version then
-			FurC.settings.version 		= FurC.version
+		FurC.settings.version 		= FurC.version
 		scanFiles = true
 	end

@@ -278,8 +287,6 @@ function FurnitureCatalogue_Initialize(eventCode, addOnName)
 	FurC.settings.databaseVersion 	= FurC.version
 	SLASH_COMMANDS["/fur"] 			= FurnitureCatalogue_Toggle

-	FurC.SetFilter(true)
-
 	EVENT_MANAGER:UnregisterForEvent("FurnitureCatalogue", EVENT_ADD_ON_LOADED)

 end
diff --git a/xml/FurnitureCatalogue.xml b/xml/FurnitureCatalogue.xml
index 79f723c..de384c3 100644
--- a/xml/FurnitureCatalogue.xml
+++ b/xml/FurnitureCatalogue.xml
@@ -168,16 +168,16 @@
 									<Anchor point="BOTTOMLEFT" 	relativeTo="FurC_TypeFilter" relativePoint="BOTTOMRIGHT" offsetX="9" />
 									<Dimensions x="215" />
 									<Controls>
-
+
 										<EditBox name="$(parent)Box"  inherits="ZO_InventorySearchBox" >

 											<Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="-40" offsetY="-10"/>
 											<Anchor point="TOPRIGHT" relativeTo="$(parent)" relativePoint="TOPRIGHT" offsetX="-20" offsetY="0"/>

-											<OnTextChanged>FurC.GuiSetSearchboxTextFrom(self)</OnTextChanged>
-											<OnMouseUp>FurC.GuiOnSearchBoxClick(self, button)</OnMouseUp>
-											<OnMouseDoubleClick>FurC.GuiOnSearchBoxClick(self, nil, true)</OnMouseDoubleClick>
-											<OnFocusLost>FurC.GuiOnSearchBoxFocusOut(self)</OnFocusLost>
+											<OnTextChanged> FurC.GuiSetSearchboxTextFrom(self) </OnTextChanged>
+											<OnMouseUp> FurC.GuiOnSearchBoxClick(self, button) </OnMouseUp>
+											<OnMouseDoubleClick> FurC.GuiOnSearchBoxClick(self, nil, true) </OnMouseDoubleClick>
+											<OnFocusLost> FurC.GuiOnSearchBoxFocusOut(self) </OnFocusLost>

 										</EditBox>
 									</Controls>