diff --git a/esoui/common/gamepad/genericfooters/genericfooters.lua b/esoui/common/gamepad/genericfooters/genericfooters.lua
index a8e96d3..1097b47 100755
--- a/esoui/common/gamepad/genericfooters/genericfooters.lua
+++ b/esoui/common/gamepad/genericfooters/genericfooters.lua
@@ -4,11 +4,13 @@ ZO_GAMEPAD_FOOTER_CONTROLS =
 {
     DATA1               = 1,
     DATA1HEADER         = 2,
-    DATA2           = 3,
-    DATA2HEADER     = 4,
-    DATA3           = 5,
-    DATA3HEADER     = 6,
-    LOADINGICON     = 7,
+    DATA1LOADINGICON    = 3,
+    DATA2               = 4,
+    DATA2HEADER         = 5,
+    DATA2LOADINGICON    = 6,
+    DATA3               = 7,
+    DATA3HEADER         = 8,
+    DATA3LOADINGICON    = 9,
 }
 
 local EMPTY_TABLE       = {}
@@ -16,11 +18,13 @@ local EMPTY_TABLE       = {}
 -- Alias the control names to make the code less verbose and more readable.
 local DATA1             = ZO_GAMEPAD_FOOTER_CONTROLS.DATA1
 local DATA1HEADER       = ZO_GAMEPAD_FOOTER_CONTROLS.DATA1HEADER
+local DATA1LOADINGICON  = ZO_GAMEPAD_FOOTER_CONTROLS.DATA1LOADINGICON
 local DATA2             = ZO_GAMEPAD_FOOTER_CONTROLS.DATA2
 local DATA2HEADER       = ZO_GAMEPAD_FOOTER_CONTROLS.DATA2HEADER
+local DATA2LOADINGICON  = ZO_GAMEPAD_FOOTER_CONTROLS.DATA2LOADINGICON
 local DATA3             = ZO_GAMEPAD_FOOTER_CONTROLS.DATA3
 local DATA3HEADER       = ZO_GAMEPAD_FOOTER_CONTROLS.DATA3HEADER
-local LOADINGICON       = ZO_GAMEPAD_FOOTER_CONTROLS.LOADINGICON
+local DATA3LOADINGICON  = ZO_GAMEPAD_FOOTER_CONTROLS.DATA3LOADINGICON
 
 function GenericFooter:New(...)
     local object = ZO_Object.New(self)
@@ -35,11 +39,13 @@ function GenericFooter:Initialize(control)
     {
         [DATA1]             = control:GetNamedChild("Data1"),
         [DATA1HEADER]       = control:GetNamedChild("Data1Header"),
+        [DATA1LOADINGICON]  = control:GetNamedChild("Data1LoadingIcon"),
         [DATA2]             = control:GetNamedChild("Data2"),
         [DATA2HEADER]       = control:GetNamedChild("Data2Header"),
+        [DATA2LOADINGICON]  = control:GetNamedChild("Data2LoadingIcon"),
         [DATA3]             = control:GetNamedChild("Data3"),
         [DATA3HEADER]       = control:GetNamedChild("Data3Header"),
-        [LOADINGICON]       = control:GetNamedChild("LoadingIcon"),
+        [DATA3LOADINGICON]  = control:GetNamedChild("Data3LoadingIcon"),
     }
 
     control.OnHidden = function()
@@ -79,17 +85,19 @@ end
 function GenericFooter:Refresh(data)
     local controls = self.controls
 
+    local loadingIcon1Offset = data.data1ShowLoading and ZO_GAMEPAD_LOADING_ICON_FOOTER_SIZE or 0
+    controls[DATA1LOADINGICON]:SetHidden(not data.data1ShowLoading)
+    local loadingIcon2Offset = data.data2ShowLoading and ZO_GAMEPAD_LOADING_ICON_FOOTER_SIZE or 0
+    controls[DATA2LOADINGICON]:SetHidden(not data.data2ShowLoading)
+    local loadingIcon3Offset = data.data3ShowLoading and ZO_GAMEPAD_LOADING_ICON_FOOTER_SIZE or 0
+    controls[DATA3LOADINGICON]:SetHidden(not data.data3ShowLoading)
+
     ProcessData(controls[DATA1], data.data1Text)
-    ProcessData(controls[DATA1HEADER], data.data1HeaderText, controls[DATA1], -ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING)
+    ProcessData(controls[DATA1HEADER], data.data1HeaderText, controls[DATA1], -ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING - loadingIcon1Offset)
     ProcessData(controls[DATA2], data.data2Text, controls[DATA1HEADER], -ZO_GAMEPAD_CONTENT_INSET_X)
-    ProcessData(controls[DATA2HEADER], data.data2HeaderText, controls[DATA2], -ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING)
+    ProcessData(controls[DATA2HEADER], data.data2HeaderText, controls[DATA2], -ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING - loadingIcon2Offset)
     ProcessData(controls[DATA3], data.data3Text, controls[DATA2HEADER], -ZO_GAMEPAD_CONTENT_INSET_X)
-    ProcessData(controls[DATA3HEADER], data.data3HeaderText, controls[DATA3], -ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING)
-
-    controls[DATA3HEADER]:ClearAnchors()
-    local target = data.showLoading and controls[LOADINGICON] or controls[DATA3]
-    controls[DATA3HEADER]:SetAnchor(BOTTOMRIGHT, target, BOTTOMLEFT, -ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING, -1)
-    controls[LOADINGICON]:SetHidden(not data.showLoading)
+    ProcessData(controls[DATA3HEADER], data.data3HeaderText, controls[DATA3], -ZO_GAMEPAD_DEFAULT_HEADER_DATA_PADDING - loadingIcon3Offset)
 end
 
 function ZO_GenericFooter_Gamepad_OnInitialized(self)