using System.Collections.Immutable;
 using System.Linq;
 using Dalamud.Game.Text;
+using FFXIVClientStructs.FFXIV.Client.UI.Agent;
 using JetBrains.Annotations;
 using ExcelQuest = Lumina.Excel.GeneratedSheets.Quest;
 
         CompletesInstantly = quest.ToDoCompleteSeq[0] == 0;
         PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.Row).Where(x => x != 0).ToList();
         PreviousInstanceContentJoin = (QuestJoin)quest.InstanceContentJoin;
+        GrandCompany = (GrandCompany)quest.GrandCompany.Row;
     }
 
 
     public bool IsRepeatable { get; }
     public ImmutableList<ushort> PreviousQuests { get; }
     public QuestJoin PreviousQuestJoin { get; }
-    public ImmutableList<ushort> QuestLocks { get; set; }
-    public QuestJoin QuestLockJoin { get; set; }
-    public List<ushort> PreviousInstanceContent { get; set; }
-    public QuestJoin PreviousInstanceContentJoin { get; set; }
+    public ImmutableList<ushort> QuestLocks { get; }
+    public QuestJoin QuestLockJoin { get; }
+    public List<ushort> PreviousInstanceContent { get; }
+    public QuestJoin PreviousInstanceContentJoin { get; }
     public bool IsMainScenarioQuest { get; }
-    public bool CompletesInstantly { get; set; }
+    public bool CompletesInstantly { get; }
+    public GrandCompany GrandCompany { get; }
 
     public string SimplifiedName => Name
         .TrimStart(SeIconChar.QuestSync.ToIconChar(), SeIconChar.QuestRepeatable.ToIconChar(), ' ');
 
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Globalization;
 using System.Linq;
 using System.Numerics;
 using Dalamud.Plugin.Services;
 using FFXIVClientStructs.FFXIV.Client.Game.UI;
 using FFXIVClientStructs.FFXIV.Client.UI;
+using FFXIVClientStructs.FFXIV.Client.UI.Agent;
 using ImGuiNET;
 using LLib.GameUI;
 using LLib.ImGui;
                         }
 
                         if (quest.PreviousQuests.Count > 0)
-                        {
-                            ImGui.Separator();
                             DrawQuestUnlocks(quest, 0);
-                        }
                     }
                 }
             }
 
         if (quest.PreviousQuests.Count > 0)
         {
+            if (counter == 0)
+                ImGui.Separator();
+
             if (quest.PreviousQuests.Count > 1)
             {
                 if (quest.PreviousQuestJoin == QuestInfo.QuestJoin.All)
             {
                 var qInfo = _questData.GetQuestInfo(q);
                 var (iconColor, icon, _) = _uiUtils.GetQuestStyle(q);
-                // ReSharper disable once UnusedVariable
-                using (var font = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
-                {
-                    if (_questRegistry.IsKnownQuest(qInfo.QuestId))
-                        ImGui.TextColored(iconColor, icon.ToIconString());
-                    else
-                        ImGui.TextColored(ImGuiColors.DalamudGrey, icon.ToIconString());
-                }
+                if (!_questRegistry.IsKnownQuest(qInfo.QuestId))
+                    iconColor = ImGuiColors.DalamudGrey;
 
-                ImGui.SameLine();
-                ImGui.TextUnformatted(FormatQuestUnlockName(qInfo));
+                _uiUtils.ChecklistItem(FormatQuestUnlockName(qInfo), iconColor, icon);
 
                 DrawQuestUnlocks(qInfo, counter + 1);
             }
 
         if (counter == 0 && quest.QuestLocks.Count > 0)
         {
+            ImGui.Separator();
             if (quest.QuestLocks.Count > 1)
             {
                 if (quest.QuestLockJoin == QuestInfo.QuestJoin.All)
-                    ImGui.Text("Blocked if all completed:");
+                    ImGui.Text("Blocked by (if all completed):");
                 else if (quest.QuestLockJoin == QuestInfo.QuestJoin.AtLeastOne)
-                    ImGui.Text("Blocked if at least completed:");
+                    ImGui.Text("Blocked by (if at least completed):");
             }
             else
                 ImGui.Text("Blocked by (if completed):");
             {
                 var qInfo = _questData.GetQuestInfo(q);
                 var (iconColor, icon, _) = _uiUtils.GetQuestStyle(q);
-                // ReSharper disable once UnusedVariable
-                using (var font = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
-                {
-                    if (_questRegistry.IsKnownQuest(qInfo.QuestId))
-                        ImGui.TextColored(iconColor, icon.ToIconString());
-                    else
-                        ImGui.TextColored(ImGuiColors.DalamudGrey, icon.ToIconString());
-                }
+                if (!_questRegistry.IsKnownQuest(qInfo.QuestId))
+                    iconColor = ImGuiColors.DalamudGrey;
 
-                ImGui.SameLine();
-                ImGui.TextUnformatted(FormatQuestUnlockName(qInfo));
+                _uiUtils.ChecklistItem(FormatQuestUnlockName(qInfo), iconColor, icon);
             }
         }
 
         if (counter == 0 && quest.PreviousInstanceContent.Count > 0)
         {
+            ImGui.Separator();
             if (quest.PreviousInstanceContent.Count > 1)
             {
                 if (quest.PreviousQuestJoin == QuestInfo.QuestJoin.All)
             {
                 string instanceName = _territoryData.GetInstanceName(instanceId) ?? "?";
                 var (iconColor, icon) = UiUtils.GetInstanceStyle(instanceId);
-
-                // ReSharper disable once UnusedVariable
-                using (var font = _pluginInterface.UiBuilder.IconFontFixedWidthHandle.Push())
-                {
-                    ImGui.TextColored(iconColor, icon.ToIconString());
-                }
-
-                ImGui.SameLine();
-                ImGui.TextUnformatted(instanceName);
+                _uiUtils.ChecklistItem(instanceName, iconColor, icon);
             }
         }
 
+        if (counter == 0 && quest.GrandCompany != GrandCompany.None)
+        {
+            ImGui.Separator();
+            string gcName = quest.GrandCompany switch
+            {
+                GrandCompany.Maelstrom => "Maelstrom",
+                GrandCompany.TwinAdder => "Twin Adder",
+                GrandCompany.ImmortalFlames => "Immortal Flames",
+                _ => "None",
+            };
+
+            GrandCompany currentGrandCompany = _gameFunctions.GetGrandCompany();
+            _uiUtils.ChecklistItem($"Grand Company: {gcName}", quest.GrandCompany == currentGrandCompany);
+        }
+
         if (counter > 0)
             ImGui.Unindent();
     }