diff --git a/esoui/ingame/unitframes/unitframes.lua b/esoui/ingame/unitframes/unitframes.lua
index 7992c0d..dca1701 100755
--- a/esoui/ingame/unitframes/unitframes.lua
+++ b/esoui/ingame/unitframes/unitframes.lua
@@ -54,8 +54,6 @@ local KEYBOARD_CONSTANTS =
     RAID_FRAME_PAD_X = 2,
     RAID_FRAME_PAD_Y = 2,
 
-    RAID_FRAME_ANCHOR_HEIGHT = 20,
-
     GROUP_BAR_FONT = "ZoFontGameOutline",
     RAID_BAR_FONT = "ZoFontGameOutline",
 
@@ -63,8 +61,9 @@ local KEYBOARD_CONSTANTS =
 }
 
 ZO_GAMEPAD_GROUP_FRAME_WIDTH = 160
+ZO_GAMEPAD_GROUP_FRAME_HEIGHT = 70
 ZO_GAMEPAD_RAID_FRAME_WIDTH = 175
-ZO_GAMEPAD_RAID_FRAME_HEIGHT = 9
+ZO_GAMEPAD_RAID_FRAME_HEIGHT = 40
 
 local GAMEPAD_CONSTANTS =
 {
@@ -75,14 +74,14 @@ local GAMEPAD_CONSTANTS =
 
     GROUP_STRIDE = 3,
 
-    GROUP_FRAME_BASE_OFFSET_X = 96,
+    GROUP_FRAME_BASE_OFFSET_X = 105,
     GROUP_FRAME_BASE_OFFSET_Y = 50,
 
-    RAID_FRAME_BASE_OFFSET_X = 114,
-    RAID_FRAME_BASE_OFFSET_Y = 30,
+    RAID_FRAME_BASE_OFFSET_X = 100,
+    RAID_FRAME_BASE_OFFSET_Y = 50,
 
     GROUP_FRAME_SIZE_X = ZO_GAMEPAD_GROUP_FRAME_WIDTH,
-    GROUP_FRAME_SIZE_Y = 70,
+    GROUP_FRAME_SIZE_Y = ZO_GAMEPAD_GROUP_FRAME_HEIGHT,
 
     GROUP_FRAME_PAD_X = 2,
     GROUP_FRAME_PAD_Y = 9,
@@ -90,13 +89,11 @@ local GAMEPAD_CONSTANTS =
     RAID_FRAME_SIZE_X = ZO_GAMEPAD_RAID_FRAME_WIDTH,
     RAID_FRAME_SIZE_Y = ZO_GAMEPAD_RAID_FRAME_HEIGHT,
 
-    RAID_FRAME_PAD_X = 24,
-    RAID_FRAME_PAD_Y = 31,
-
-    RAID_FRAME_ANCHOR_HEIGHT = 46,
+    RAID_FRAME_PAD_X = 8,
+    RAID_FRAME_PAD_Y = 2,
 
     GROUP_BAR_FONT = "ZoFontGamepad34",
-    RAID_BAR_FONT = "ZoFontGamepad20",
+    RAID_BAR_FONT = "ZoFontGamepad18",
 
     SHOW_GROUP_LABELS = false,
 }
@@ -116,7 +113,7 @@ local function CalculateDynamicPlatformConstants()
         constants.RAID_FRAME_OFFSET_Y = constants.RAID_FRAME_SIZE_Y + constants.RAID_FRAME_PAD_Y
 
         constants.RAID_FRAME_ANCHOR_CONTAINER_WIDTH = constants.RAID_FRAME_SIZE_X
-        constants.RAID_FRAME_ANCHOR_CONTAINER_HEIGHT = constants.RAID_FRAME_ANCHOR_HEIGHT + ((constants.RAID_FRAME_SIZE_Y + constants.RAID_FRAME_PAD_Y) * constants.GROUP_FRAMES_PER_COLUMN)
+        constants.RAID_FRAME_ANCHOR_CONTAINER_HEIGHT = (constants.RAID_FRAME_SIZE_Y + constants.RAID_FRAME_PAD_Y) * constants.GROUP_FRAMES_PER_COLUMN
     end
 end
 
@@ -147,7 +144,7 @@ local function GetGroupFrameAnchor(groupIndex, groupSize)
             row = zo_floor((groupIndex - 1) / 2)
         end
         groupFrameAnchor:SetTarget(GetControl("ZO_LargeGroupAnchorFrame"..(column + 1)))
-        groupFrameAnchor:SetOffsets(0, (row * constants.RAID_FRAME_OFFSET_Y) + constants.RAID_FRAME_ANCHOR_HEIGHT)
+        groupFrameAnchor:SetOffsets(0, row * constants.RAID_FRAME_OFFSET_Y)
         return groupFrameAnchor
     else
         groupFrameAnchor:SetTarget(ZO_SmallGroupAnchorFrame)
@@ -373,7 +370,7 @@ local UNITFRAME_BAR_STYLES =
             gamepad =
             {
                 template = "ZO_GroupUnitFrameStatus",
-                barHeight = 5,
+                barHeight = 8,
                 barWidth = ZO_GAMEPAD_GROUP_FRAME_WIDTH,
                 barAnchors = { ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 0, 45) },
                 hideBgIfOffline = true,
@@ -388,17 +385,17 @@ local UNITFRAME_BAR_STYLES =
             keyboard =
             {
                 template = "ZO_UnitFrameStatus",
-                barHeight = 33,
+                barHeight = 34,
                 barWidth = 90,
-                barAnchors = { ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 3, 3) },
+                barAnchors = { ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 2, 2) },
             },
 
             gamepad =
             {
                 template = "ZO_UnitFrameStatus",
-                barHeight = ZO_GAMEPAD_RAID_FRAME_HEIGHT - 4,
-                barWidth = ZO_GAMEPAD_RAID_FRAME_WIDTH - 4,
-                barAnchors = { ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 2, 2) },
+                barHeight = ZO_GAMEPAD_RAID_FRAME_HEIGHT - 2,
+                barWidth = ZO_GAMEPAD_RAID_FRAME_WIDTH - 2,
+                barAnchors = { ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 1, 1) },
             },
         },
     },
@@ -692,7 +689,7 @@ local UNITFRAME_LAYOUT_DATA =
             nameAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 5, 4),
             nameWidth = 86,
 
-            indentedNameAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 16, 4),
+            indentedNameAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 19, 4),
             indentedNameWidth = 75,
 
             statusData = { anchor1 = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 5, 20), anchor2 = ZO_Anchor:New(TOPRIGHT, nil, TOPRIGHT, -4, 20), height = 15, },
@@ -709,11 +706,12 @@ local UNITFRAME_LAYOUT_DATA =
                 icon = { width = 14, height = 14, customAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 66, 7) },
             },
 
-            nameAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 0, -25),
-            nameWidth = ZO_GAMEPAD_RAID_FRAME_WIDTH - 5,
+            nameAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 6, 2),
+            nameWidth = ZO_GAMEPAD_RAID_FRAME_WIDTH - 6,
+            indentedNameAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 20, 3),
+            indentedNameWidth = ZO_GAMEPAD_RAID_FRAME_WIDTH - 20 - 2,
 
-            indentedNameAnchor = ZO_Anchor:New(TOPLEFT, nil, TOPLEFT, 17, -25),
-            leaderIconData = {width = 18, height = 18, offsetX = 0, offsetY = -20}
+            leaderIconData = {width = 18, height = 18, offsetX = 2, offsetY = 7}
         },
     },
 
@@ -844,6 +842,7 @@ function UnitFrame:New(unitTag, anchors, showBarText, style)
 
     local DONT_COLOR_RANK_ICON = false
     newFrame.rankIcon = newFrame:AddFadeComponent("RankIcon", DONT_COLOR_RANK_ICON)
+    newFrame.roleIcon = newFrame:AddFadeComponent("RoleIcon", DONT_COLOR_RANK_ICON)
     newFrame.veteranIcon = newFrame:AddFadeComponent("VeteranIcon")
     newFrame.leftBracket = newFrame:AddFadeComponent("LeftBracket")
     newFrame.leftBracketGlow = GetControl(newFrame.frame, "LeftBracketGlow")
@@ -881,18 +880,6 @@ function UnitFrame:ApplyVisualStyle()
     self:DoAlphaUpdate(IsUnitInGroupSupportRange(self.unitTag), isOnline, isLeader)
     self:UpdateDifficulty()
 
-    if isLeader then
-        local layoutData = GetPlatformLayoutData(self.style)
-        if layoutData.leaderIconData then
-            local data = layoutData.leaderIconData
-            ZO_UnitFrames_Leader:SetDimensions(data.width, data.height)
-            ZO_UnitFrames_Leader:SetAnchor(TOPLEFT, self.frame, TOPLEFT, data.offsetX, data.offsetY)
-            self:SetTextIndented(true)
-        end
-
-        ZO_UnitFrames_Leader:SetHidden(not layoutData.leaderIconData)
-    end
-
     local healthBar = self.healthBar
     local barData = GetPlatformBarStyle(healthBar.style, healthBar.mechanic)
     if barData.template then
@@ -927,12 +914,6 @@ function UnitFrame:ApplyVisualStyle()
         healthBar.rightText:SetFont(font)
     end
 
-    local bg = self.frame:GetNamedChild("BG")
-    if bg then
-        local mungeOverlay = bg:GetNamedChild("MungeOverlay")
-        mungeOverlay:SetHidden(IsInGamepadPreferredMode())
-    end
-
     if self.attributeVisualizer then
         self.attributeVisualizer:ApplyPlatformStyle()
     end
@@ -1066,6 +1047,7 @@ function UnitFrame:RefreshControls()
 
             self:UpdateStatus(IsUnitDead(self.unitTag), IsUnitOnline(self.unitTag))
             self:UpdateRank()
+            self:UpdateRole()
             self:UpdateDifficulty()
             self:DoAlphaUpdate(IsUnitInGroupSupportRange(self.unitTag), IsUnitOnline(self.unitTag), IsUnitGroupLeader(unitTag))
         end
@@ -1233,6 +1215,18 @@ function UnitFrame:UpdateRank()
     end
 end
 
+function UnitFrame:UpdateRole()
+    if self.roleIcon then
+        local unitTag = self:GetUnitTag()
+        local assignedRole = GetGroupMemberAssignedRole(unitTag)
+        local hasAssignedRole = assignedRole ~= LFG_ROLE_INVALID
+        if hasAssignedRole then
+            self.roleIcon:SetTexture(GetRoleIcon(assignedRole))
+        end
+        self.roleIcon:SetHidden(not hasAssignedRole)
+    end
+end
+
 local DIFFICULTY_BRACKET_LEFT_TEXTURE =
 {
     [MONSTER_DIFFICULTY_NORMAL] = "EsoUI/Art/UnitFrames/targetUnitFrame_bracket_level2_left.dds",
@@ -1445,36 +1439,6 @@ local function CreateGroupAnchorFrames()
     end
 end
 
-local BACKGROUND_OFFSET_X = -26
-local BACKGROUND_SMALL_GROUP_PADDING_X = 60
-local BACKGROUND_SMALL_PADDING_Y = -20
-local BACKGROUND_LARGE_GROUP_PADDING_X = 32
-local BACKGROUND_PADDING_Y = 40
-
-local function UpdateGroupFramesBackground()
-    local background = ZO_UnitFramesScalableBackground
-    local groupSize = GetGroupSize()
-    local showBackground = IsInGamepadPreferredMode() and groupSize > SMALL_GROUP_SIZE_THRESHOLD
-    if showBackground then
-        local constants = GAMEPAD_CONSTANTS
-        background:ClearAnchors()
-        background:SetAnchor(TOPLEFT, ZO_LargeGroupAnchorFrame1, TOPLEFT, BACKGROUND_OFFSET_X)
-
-        local width, height
-        if groupSize > SMALL_GROUP_SIZE_THRESHOLD then
-            width = 2 * constants.RAID_FRAME_OFFSET_X + BACKGROUND_LARGE_GROUP_PADDING_X
-            height = zo_ceil(groupSize / 2) * constants.RAID_FRAME_OFFSET_Y
-        else
-            width = constants.GROUP_FRAME_OFFSET_X + BACKGROUND_SMALL_GROUP_PADDING_X
-            height = groupSize * constants.GROUP_FRAME_OFFSET_Y
-        end
-
-        ZO_ScalableBackgroundWithEdge_SetSize(background, width, height - BACKGROUND_PADDING_Y)
-    end
-
-    background:SetHidden(not showBackground)
-end
-
 local function UpdateLeaderIndicator()
     ZO_UnitFrames_Leader:SetHidden(true)
 
@@ -1509,7 +1473,6 @@ end
 local function DoGroupUpdate(eventCode)
     UpdateLeaderIndicator()
     UnitFrames:UpdateGroupAnchorFrames()
-    UpdateGroupFramesBackground()
 end
 
 local function GetCastBar(unitTag)
@@ -1970,8 +1933,6 @@ local function RegisterForEvents()
     local function OnGroupMemberLeft(eventCode, characterName, reason, wasLocalPlayer, amLeader)
         if(wasLocalPlayer) then
             RefreshGroups(eventCode)
-        else
-            UpdateGroupFramesBackground()
         end
     end
 
@@ -2059,7 +2020,7 @@ function ZO_UnitFrames_Initialize()
             local function OnGamepadPreferredModeChanged()
                 UnitFrames:ApplyVisualStyle()
                 UpdateGroupFramesVisualStyle()
-                UpdateGroupFramesBackground()
+                UpdateLeaderIndicator()
             end
             ZO_PlatformStyle:New(OnGamepadPreferredModeChanged)