diff --git a/esoui/ingame/campaign/campaignbrowser.lua b/esoui/ingame/campaign/campaignbrowser.lua
index 075a31f..af73b03 100755
--- a/esoui/ingame/campaign/campaignbrowser.lua
+++ b/esoui/ingame/campaign/campaignbrowser.lua
@@ -55,8 +55,6 @@ function CampaignBrowser:New(control)
     return manager
 end
 
-
-
 function CampaignBrowser:InitializeTree()
     self.tree = ZO_Tree:New(GetControl(self.control, "CategoriesScrollChild"), 60, -10, 255)
 
@@ -198,7 +196,7 @@ function CampaignBrowser:DoEnter()
         local data = ZO_ScrollList_GetData(self.mouseOverRow)
         if(data.type == self.campaignBrowser:GetQueueType()) then
             if(data.state == CAMPAIGN_QUEUE_REQUEST_STATE_CONFIRMING) then
-                ZO_Dialogs_ShowDialog("CAMPAIGN_QUEUE_READY", {campaignId = data.id, isGroup = data.isGroup}, {mainTextParams = {data.name}})
+                self.campaignBrowser:ShowCampaignQueueReadyDialog(data.id, data.isGroup, data.name)
             end
         end
     end
@@ -233,6 +231,10 @@ function CampaignBrowser:DoLeave()
     end
 end
 
+function CampaignBrowser:GetCampaignBrowser()
+    return self.campaignBrowser
+end
+
 function CampaignBrowser:InitializeKeybindDescriptors()
     self.keybindStripDescriptor =
     {
@@ -314,9 +316,9 @@ function CampaignBrowser:InitializeKeybindDescriptors()
     }
 end
 
-function CampaignBrowser:SetupAllianceControl(control, population)
-    control.population = population
-    control:SetTexture(ZO_CampaignBrowser_GetPopulationIcon(population))
+function CampaignBrowser:SetupAllianceControl(control, data)
+    control.data = data
+    control:SetTexture(ZO_CampaignBrowser_GetPopulationIcon(data.population))
 end
 
 function CampaignBrowser:SetupCampaign(control, data)
@@ -337,13 +339,13 @@ function CampaignBrowser:SetupCampaign(control, data)
     end
 
     local alliancePopulation1 = GetControl(control, "AlliancePopulation1")
-    self:SetupAllianceControl(alliancePopulation1, data.alliancePopulation1)
+    self:SetupAllianceControl(alliancePopulation1, {population = data.alliancePopulation1, campaignId = data.id, alliance = ALLIANCE_ALDMERI_DOMINION})
 
     local alliancePopulation2 = GetControl(control, "AlliancePopulation2")
-    self:SetupAllianceControl(alliancePopulation2, data.alliancePopulation2)
+    self:SetupAllianceControl(alliancePopulation2, {population = data.alliancePopulation2, campaignId = data.id, alliance = ALLIANCE_EBONHEART_PACT})
 
     local alliancePopulation3 = GetControl(control, "AlliancePopulation3")
-    self:SetupAllianceControl(alliancePopulation3, data.alliancePopulation3)
+    self:SetupAllianceControl(alliancePopulation3, {population = data.alliancePopulation3, campaignId = data.id, alliance = ALLIANCE_DAGGERFALL_COVENANT})
 
     GetControl(control, "GroupMembers"):SetHidden(data.numGroupMembers == 0)
     GetControl(control, "Friends"):SetHidden(data.numFriends == 0)
@@ -404,14 +406,20 @@ function CampaignBrowser:RefreshQueueRows(data)
 
     local hasConfirmingQueues = self.numConfirmingQueues > 0
     if(hasConfirmingQueues and not hadConfirmingQueues) then
-        self:SetUpdateInterval(1)
+        self.control:SetHandler("OnUpdate", function(control, seconds)
+                -- Ensure that refresh only occurs on second boundaries
+                if not self.nextUpdateTimeSeconds or seconds > self.nextUpdateTimeSeconds then
+                    self.nextUpdateTimeSeconds  = zo_floor(seconds + 1)
+                    self:RefreshVisible()
+                end
+            end)
     elseif(not hasConfirmingQueues and hadConfirmingQueues) then
-        self:ClearUpdateInterval()
+        self.control:SetHandler("OnUpdate", nil)
     end
 end
 
 function CampaignBrowser:BuildMasterList()
-    self:ClearUpdateInterval()
+    self.control:SetHandler("OnUpdate", nil)
     self.numConfirmingQueues = 0
 
     self.masterList = self.campaignBrowser:BuildMasterList()
@@ -653,7 +661,25 @@ end
 
 function CampaignBrowser:RowAlliancePopulation_OnMouseEnter(control)
     InitializeTooltip(InformationTooltip, control, BOTTOM, 0, 0)
-    SetTooltipText(InformationTooltip, GetString("SI_CAMPAIGNPOPULATIONTYPE", control.population))
+
+    local data = control.data
+    
+    local textPopulation = GetString("SI_CAMPAIGNPOPULATIONTYPE", data.population)
+    InformationTooltip:AddLine(textPopulation, "", ZO_NORMAL_TEXT:UnpackRGB())
+
+    if data.alliance == GetUnitAlliance("player") then
+        local queueWaitSeconds = GetSelectionCampaignQueueWaitTime(data.campaignId)
+        if queueWaitSeconds > 0 then
+            --We don't want to show an estimate for seconds
+            if queueWaitSeconds < 60 then
+                queueWaitSeconds = 60
+            end
+            queueWaitMs = queueWaitSeconds * 1000
+            local textEstimatedTime = ZO_GetSimplifiedTimeEstimateText(queueWaitMs, TIME_FORMAT_STYLE_SHOW_LARGEST_UNIT, nil, ZO_TIME_ESTIMATE_STYLE.ARITHMETIC)
+            textEstimatedTime = zo_strformat(SI_CAMPAIGN_BROWSER_TOOLTIP_ESTIMATED_TIME, textEstimatedTime)
+            InformationTooltip:AddLine(textEstimatedTime, "", ZO_NORMAL_TEXT:UnpackRGB())
+        end
+    end
 
     self:EnterRow(control:GetParent())
 end