diff --git a/includes/user.inline_entity_form.inc b/includes/user.inline_entity_form.inc
new file mode 100644
index 0000000..1220ebe
--- /dev/null
+++ b/includes/user.inline_entity_form.inc
@@ -0,0 +1,123 @@
+<?php
+
+class UserInlineEntityFormController extends EntityInlineEntityFormController {
+
+  public function __construct($entityType, array $settings) {
+    parent::__construct($entityType, $settings);
+    $this->settings['allow_existing'] = 0;
+    $this->settings['needs_save'] = 0;
+  }
+
+
+  /**
+   * Overrides EntityInlineEntityFormController::labels().
+   */
+  public function labels() {
+    return array_merge(parent::labels(), array('singular' => 'user', 'plural' => 'users'));
+  }
+
+  /**
+   * Overrides EntityInlineEntityFormController::tableFields().
+   */
+  public function tableFields($bundles) {
+    $metadata = entity_get_property_info($this->entityType);
+    $label_key = 'name';
+
+    return array(
+      $label_key => array(
+        'type' => 'property',
+        'label' => $metadata ? $metadata['properties'][$label_key]['label'] : t('Label'),
+        'weight' => 1,
+      )
+    );
+  }
+
+  /**
+   * Overrides EntityInlineEntityFormController::entityForm().
+   */
+  public function entityForm($entity_form, &$form_state) {
+    $entity_form = parent::entityForm($entity_form, $form_state);
+    $account = $entity_form['#entity'];
+    $entity_form['#user_category'] = 'account';
+
+    if ($account->uid === FALSE) {
+      $entity_form = user_register_form($entity_form, $form_state);
+      $this->invokeAlterHooks('user_register_form',$entity_form,$form_state );
+    } else {
+      require_once drupal_get_path('module', 'user').'/user.pages.inc';
+      $form_state['user'] = $account;
+      $entity_form  = user_profile_form($entity_form,$form_state,$account);
+      $this->invokeAlterHooks('user_profile_form',$entity_form,$form_state );
+    }
+
+    return $entity_form;
+  }
+
+  /**
+   * Overrides EntityInlineEntityFormController::entityFormValidate().
+   */
+  public function entityFormValidate($entity_form, &$form_state) {
+    parent::entityFormValidate($entity_form, $form_state);
+    $child_form_state = $this->getFormState($form_state, $entity_form);
+    drupal_static_reset('form_set_error:limit_validation_errors');
+    user_account_form_validate($entity_form, $child_form_state);
+    entity_form_field_validate('user', $entity_form, $form_state);
+  }
+
+  /**
+   * Overrides EntityInlineEntityFormController::entityFormSubmit().
+   */
+  public function entityFormSubmit(&$entity_form, &$form_state) {
+    $entity_form['#parents'][] = 'account';
+    parent::entityFormSubmit($entity_form, $form_state);
+    $child_form_state = $this->getFormState($form_state, $entity_form);
+    $account = &$entity_form['#entity'];
+
+    if ($account->uid === FALSE || $account->uid == 0) {
+      $this->invokeAdditionSubmits($entity_form, $child_form_state);
+      user_register_submit($entity_form, $child_form_state);
+      $account->is_new = FALSE;
+      $account->uid = $child_form_state['values']['uid'];
+    } else {
+      require_once drupal_get_path('module', 'user').'/user.pages.inc';
+      $child_form_state['user']=$account;
+      $this->invokeAdditionSubmits($entity_form, $child_form_state);
+      user_profile_form_submit($entity_form, $child_form_state);
+    }
+  }
+
+  private function invokeAlterHooks($form_id,&$entity_form,&$form_state) {
+    $hooks = array('form');
+    $hooks[] = 'form_' . $form_id;
+    drupal_alter($hooks, $entity_form, $form_state, $form_id);
+  }
+
+  private function invokeAdditionSubmits($entity_form, &$child_form_state) {
+    array_pop($entity_form['#submit']);
+    //invoke addition submit handlers
+    foreach($entity_form['#submit'] as $handler) {
+      $handler($entity_form, $child_form_state);
+    }
+  }
+
+  private function getFormState($form_state,$entity_form) {
+    $child_form_state = form_state_defaults();
+    if (end($entity_form['#parents']) != 'account') {
+      $entity_form['#parents'][] = 'account';
+    }
+    $child_form_state['values'] = drupal_array_get_nested_value($form_state['values'], $entity_form['#parents']);
+    $child_form_state['values']['administer_users'] = user_access('administer users');
+    return $child_form_state;
+  }
+
+  /**
+   * Overrides EntityInlineEntityFormController::save()
+   */
+  public function save($entity, $context) {
+    if (! isset($entity->uid)) {
+      entity_save($this->entityType, $entity);
+    }
+  }
+
+}
+
diff --git a/inline_entity_form.info b/inline_entity_form.info
index fb48058..9acb250 100644
--- a/inline_entity_form.info
+++ b/inline_entity_form.info
@@ -10,6 +10,7 @@ files[] = includes/node.inline_entity_form.inc
 files[] = includes/taxonomy_term.inline_entity_form.inc
 files[] = includes/commerce_product.inline_entity_form.inc
 files[] = includes/commerce_line_item.inline_entity_form.inc
+files[] = includes/user.inline_entity_form.inc
 
 ; Information added by Drupal.org packaging script on 2014-03-22
 version = "7.x-1.5+3-dev"
diff --git a/inline_entity_form.module b/inline_entity_form/inline_entity_form.module
index 70935fb..ebd114c 100644
--- a/inline_entity_form.module
+++ b/inline_entity_form.module
@@ -127,6 +127,7 @@ function inline_entity_form_entity_info_alter(&$entity_info) {
       'controller' => 'CommerceLineItemInlineEntityFormController',
     );
   }
+  $entity_info['user']['inline entity form']['controller'] = 'UserInlineEntityFormController';
 }
 
 /**
@@ -1304,6 +1305,7 @@ function inline_entity_form_open_form($form, &$form_state) {
       'bundle' => $form_values['actions']['bundle'],
     );
   }
+  $entity_info['user']['inline entity form'] = 'UserInlineEntityFormController';
 }
 
 /**
@@ -1581,6 +1583,9 @@ function inline_entity_form_create_entity($entity_type, $bundle, $language = NUL
     $language_key = $entity_info['entity keys']['language'];
     $default_values[$language_key] = $language;
   }
+  if ($entity_type == 'user') {
+    $default_values['uid'] = FALSE;
+  }
 
   return entity_create($entity_type, $default_values);
 }
