diff --git a/conditional_fields.api.inc b/conditional_fields.api.inc
index ea5f492..21da436 100644
--- a/conditional_fields.api.inc
+++ b/conditional_fields.api.inc
@@ -100,7 +100,21 @@ function conditional_fields_form_after_build($form, FormStateInterface &$form_st
       }
 
       conditional_fields_add_state_to_group($states, $state, $options);
-
+      if (in_array($options['state'], ['required', '!required'])
+        && $dependent_form_field['#type'] === 'container') {
+        if (isset($dependent_form_field['widget'][0]['value'])) {
+          $dependent_location = array_merge($dependent_location, [
+            'widget',
+            0,
+            'value'
+          ]);
+          $dependent_form_field = $dependent_form_field['widget'][0]['value'];
+        }
+        elseif (isset($dependent_form_field['widget']['#type'])) {
+          $dependent_location = array_merge($dependent_location, ['widget']);
+          $dependent_form_field = $dependent_form_field['widget'];
+        }
+      }
       $selector = conditional_fields_field_selector(NestedArray::getValue($form, array($dependent_location[0])));
       $effects[$selector] = conditional_fields_get_effect($options);
 
@@ -574,7 +588,7 @@ function conditional_fields_evaluate_dependency($context, $values, $options) {
     // thus checking this field requires a different handling in case of
     // 'checked or '!checked' conditions, where $value has 0 or 1.
     if ($options['condition'] === 'checked' || $options['condition'] === '!checked') {
-      $dependency_values = (int) ($options['condition'] === 'checked');
+      $dependency_values = array('value' => ($options['condition'] === 'checked'));
     }
 
 
