diff --git a/rigify/operators/upgrade_face.py b/rigify/operators/upgrade_face.py
index 1dc3cf2c7b820c8a8f35cc551f9f06c4574fc2ed..082393531d268c3ec552cba39de44bd82e1b0196 100644
--- a/rigify/operators/upgrade_face.py
+++ b/rigify/operators/upgrade_face.py
@@ -435,7 +435,7 @@ class POSE_OT_rigify_upgrade_face(bpy.types.Operator):
     @classmethod
     def poll(cls, context):
         obj = context.object
-        return obj and obj.type == 'ARMATURE' and obj.mode in {'POSE', 'OBJECT'} and find_face_bone(obj)
+        return obj and obj.type == 'ARMATURE' and find_face_bone(obj)
 
     def invoke(self, context, event):
         return context.window_manager.invoke_confirm(self, event)
diff --git a/rigify/ui.py b/rigify/ui.py
index eac8b6731457357aae18a4ed63af0a2dae1ce667..a411d68b78e6f972318ba8086c4e9e9a13980101 100644
--- a/rigify/ui.py
+++ b/rigify/ui.py
@@ -60,8 +60,8 @@ def build_type_list(context, rigify_types):
             a.name = r
 
 
-class DATA_PT_rigify_generate(bpy.types.Panel):
-    bl_label = "Rigify Generation"
+class DATA_PT_rigify(bpy.types.Panel):
+    bl_label = "Rigify"
     bl_space_type = 'PROPERTIES'
     bl_region_type = 'WINDOW'
     bl_context = "data"
@@ -72,76 +72,79 @@ class DATA_PT_rigify_generate(bpy.types.Panel):
         if not context.object:
             return False
         return obj.type == 'ARMATURE' \
-            and obj.data.get("rig_id") is None \
-            and obj.mode in {'POSE', 'OBJECT'}
+            and obj.data.get("rig_id") is None
 
     def draw(self, context):
         C = context
         layout = self.layout
         obj = C.object
 
-        if obj.mode in {'POSE', 'OBJECT'}:
-            WARNING = "Warning: Some features may change after generation"
-            show_warning = False
-            show_update_metarig = False
-            show_not_updatable = False
-            show_upgrade_face = False
+        WARNING = "Warning: Some features may change after generation"
+        show_warning = False
+        show_update_metarig = False
+        show_not_updatable = False
+        show_upgrade_face = False
 
-            check_props = ['IK_follow', 'root/parent', 'FK_limb_follow', 'IK_Stretch']
+        check_props = ['IK_follow', 'root/parent', 'FK_limb_follow', 'IK_Stretch']
 
-            for bone in obj.pose.bones:
-                if bone.bone.layers[30] and (list(set(bone.keys()) & set(check_props))):
-                    show_warning = True
+        for posebone in obj.pose.bones:
+            bone = posebone.bone
+            if not bone:
+                # If we are in edit mode and the bone was just created,
+                # a pose bone won't exist yet.
+                continue
+            if bone.layers[30] and (list(set(posebone.keys()) & set(check_props))):
+                show_warning = True
+                break
+
+        for b in obj.pose.bones:
+            if b.rigify_type in outdated_types.keys():
+                old_bone = b.name
+                old_rig = b.rigify_type
+                if outdated_types[b.rigify_type]:
+                    show_update_metarig = True
+                else:
+                    show_update_metarig = False
+                    show_not_updatable = True
                     break
+            elif b.rigify_type == 'faces.super_face':
+                show_upgrade_face = True
 
-            for b in obj.pose.bones:
-                if b.rigify_type in outdated_types.keys():
-                    old_bone = b.name
-                    old_rig = b.rigify_type
-                    if outdated_types[b.rigify_type]:
-                        show_update_metarig = True
-                    else:
-                        show_update_metarig = False
-                        show_not_updatable = True
-                        break
-                elif b.rigify_type == 'faces.super_face':
-                    show_upgrade_face = True
-
-            if show_warning:
-                layout.label(text=WARNING, icon='ERROR')
-
-            enable_generate = not (show_not_updatable or show_update_metarig)
-
-            if show_not_updatable:
-                layout.label(text="WARNING: This metarig contains deprecated rigify rig-types and cannot be upgraded automatically.", icon='ERROR')
-                layout.label(text="("+old_rig+" on bone "+old_bone+")")
-            elif show_update_metarig:
-                layout.label(text="This metarig contains old rig-types that can be automatically upgraded to benefit of rigify's new features.", icon='ERROR')
-                layout.label(text="("+old_rig+" on bone "+old_bone+")")
-                layout.operator("pose.rigify_upgrade_types", text="Upgrade Metarig")
-            elif show_upgrade_face:
-                layout.label(text="This metarig uses the old face rig.", icon='INFO')
-                layout.operator("pose.rigify_upgrade_face")
+        if show_warning:
+            layout.label(text=WARNING, icon='ERROR')
 
-            row = layout.row()
-            # Rig type field
+        enable_generate = not (show_not_updatable or show_update_metarig)
 
-            col = layout.column(align=True)
-            col.active = (not 'rig_id' in C.object.data)
+        if show_not_updatable:
+            layout.label(text="WARNING: This metarig contains deprecated rigify rig-types and cannot be upgraded automatically.", icon='ERROR')
+            layout.label(text="("+old_rig+" on bone "+old_bone+")")
+        elif show_update_metarig:
+            layout.label(text="This metarig contains old rig-types that can be automatically upgraded to benefit of rigify's new features.", icon='ERROR')
+            layout.label(text="("+old_rig+" on bone "+old_bone+")")
+            layout.operator("pose.rigify_upgrade_types", text="Upgrade Metarig")
+        elif show_upgrade_face:
+            layout.label(text="This metarig uses the old face rig.", icon='INFO')
+            layout.operator("pose.rigify_upgrade_face")
 
-            col.separator()
-            row = col.row()
-            text = "Re-Generate Rig" if obj.data.rigify_target_rig else "Generate Rig"
-            row.operator("pose.rigify_generate", text=text, icon='POSE_HLT')
-            row.enabled = enable_generate
+        row = layout.row()
+        # Rig type field
 
+        col = layout.column(align=True)
+        col.active = (not 'rig_id' in C.object.data)
 
-class DATA_PT_rigify_generate_advanced(bpy.types.Panel):
+        col.separator()
+        row = col.row()
+        text = "Re-Generate Rig" if obj.data.rigify_target_rig else "Generate Rig"
+        row.operator("pose.rigify_generate", text=text, icon='POSE_HLT')
+        row.enabled = enable_generate
+
+
+class DATA_PT_rigify_advanced(bpy.types.Panel):
     bl_space_type = 'PROPERTIES'
     bl_region_type = 'WINDOW'
     bl_context = "data"
     bl_label = "Advanced"
-    bl_parent_id = 'DATA_PT_rigify_generate'
+    bl_parent_id = 'DATA_PT_rigify'
     bl_options = {'DEFAULT_CLOSED'}
 
     def draw(self, context):
@@ -163,10 +166,12 @@ class DATA_PT_rigify_generate_advanced(bpy.types.Panel):
 
 
 class DATA_PT_rigify_samples(bpy.types.Panel):
-    bl_label = "Rigify Samples"
+    bl_label = "Samples"
     bl_space_type = 'PROPERTIES'
     bl_region_type = 'WINDOW'
     bl_context = "data"
+    bl_parent_id = "DATA_PT_rigify"
+    bl_options = {'DEFAULT_CLOSED'}
 
     @classmethod
     def poll(cls, context):
@@ -202,11 +207,12 @@ class DATA_PT_rigify_samples(bpy.types.Panel):
 
 
 class DATA_PT_rigify_layer_names(bpy.types.Panel):
-    bl_label = "Rigify Layer Names"
+    bl_label = "Layer Names"
     bl_space_type = 'PROPERTIES'
     bl_region_type = 'WINDOW'
     bl_context = "data"
     bl_options = {'DEFAULT_CLOSED'}
+    bl_parent_id = "DATA_PT_rigify"
 
     @classmethod
     def poll(cls, context):
@@ -540,11 +546,12 @@ class DATA_MT_rigify_bone_groups_context_menu(bpy.types.Menu):
 
 
 class DATA_PT_rigify_bone_groups(bpy.types.Panel):
-    bl_label = "Rigify Bone Groups"
+    bl_label = "Bone Groups"
     bl_space_type = 'PROPERTIES'
     bl_region_type = 'WINDOW'
     bl_context = "data"
     bl_options = {'DEFAULT_CLOSED'}
+    bl_parent_id = "DATA_PT_rigify"
 
     @classmethod
     def poll(cls, context):
@@ -1387,10 +1394,10 @@ classes = (
     DATA_OT_rigify_bone_group_remove_all,
     DATA_UL_rigify_bone_groups,
     DATA_MT_rigify_bone_groups_context_menu,
+    DATA_PT_rigify,
+    DATA_PT_rigify_advanced,
     DATA_PT_rigify_bone_groups,
     DATA_PT_rigify_layer_names,
-    DATA_PT_rigify_generate,
-    DATA_PT_rigify_generate_advanced,
     DATA_PT_rigify_samples,
     BONE_PT_rigify_buttons,
     VIEW3D_PT_rigify_animation_tools,