diff --git a/webform_hints.module b/webform_hints.module
index f302fed..b4ea555 100644
--- a/webform_hints.module
+++ b/webform_hints.module
@@ -120,13 +120,21 @@ function webform_hints_form_alter(&$form, $form_state, $form_id) {
  *   The string appended to the end of a required element's hint.
  */
 function webform_hints_add_title(&$element, $key, $required_label) {
+  // Ignore theme configuration items.
+  if ($key[0] == '#') {
+    return;
+  }
+  // Perform a recursive call on fieldset form items.
+  if (isset($element['#type']) && $element['#type'] == 'fieldset') {
+    array_walk($element, 'webform_hints_add_title', $required_label);
+  }
   // Skip the boolean #tree.
-  if (is_array($element)) {
+  elseif (is_array($element)) {
     // Element isn't required.
-    if (!$element['#required']) {
+    if (isset($element['#required']) && !$element['#required']) {
       $required_label = '';
     }
-
+    // Define the field types to act on.
     $fieldtypes = array('textfield', 'textarea', 'webform_email', 'email');
     if (in_array($element['#type'], $fieldtypes)) {
       // Add attributes and classes to the element.
