diff --git a/inline_entity_form.module b/inline_entity_form.module
index 60a9cdb..26f3ca0 100644
--- a/inline_entity_form.module
+++ b/inline_entity_form.module
@@ -890,7 +890,18 @@ function inline_entity_form_entity_form($controller, $entity_form, &$form_state)
   elseif ($entity_form['#op'] == 'add') {
     // Create a new entity that will be passed to the form.
     $form_settings = $form_state['inline_entity_form'][$entity_form['#ief_id']]['form settings'];
-    $entity_form['#entity'] = inline_entity_form_create_entity($entity_form['#entity_type'], $form_settings['bundle'], $entity_form['#parent_language']);
+
+    // Allow to get an entity object from a $form_state. Key MUST be the
+    // same as an entity machine name. This needed for allowing usage IEF
+    // widget inside another IEF widget. Otherwise, an empty object will
+    // be initialized on every AJAX query.
+    if (empty($form_state[$entity_form['#entity_type']])) {
+      $entity_form['#entity'] = inline_entity_form_create_entity($entity_form['#entity_type'], $form_settings['bundle'], $entity_form['#parent_language']);
+    }
+    else {
+      $entity_form['#entity'] = $form_state[$entity_form['#entity_type']];
+    }
+
     $entity_form['#title'] = t('Add new @type_singular', array('@type_singular' => $labels['singular']));
     $save_label = t('Create @type_singular', array('@type_singular' => $labels['singular']));
   }
