diff --git a/plugins/content_types/user_form/icon_user_form.png b/plugins/content_types/user_form/icon_user_form.png
new file mode 100644
index 0000000..f0417cb
Binary files /dev/null and b/plugins/content_types/user_form/icon_user_form.png differ
diff --git a/plugins/content_types/user_form/user_form_actions.inc b/plugins/content_types/user_form/user_form_actions.inc
new file mode 100644
index 0000000..e11587d
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_actions.inc
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form actions / buttons'),
+  'description' => t('The user form actions / buttons.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the picture form field.
+ */
+function ctools_user_form_actions_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['actions'])) {
+      $block->content['actions'] = $context->form['actions'];
+      unset($context->form['actions']);
+    }
+    // Because we are adding the submit buttons outside the General form
+    // we can assume the necessary hidden components should be added as well.
+    if (!empty($context->form['form_build_id'])) {
+      $block->content['form_build_id'] = $context->form['form_build_id'];
+      unset($context->form['form_build_id']);
+    }
+    if (!empty($context->form['form_token'])) {
+      $block->content['form_token'] = $context->form['form_token'];
+      unset($context->form['form_token']);
+    }
+    if (!empty($context->form['form_id'])) {
+      $block->content['form_id'] = $context->form['form_id'];
+      unset($context->form['form_id']);
+    }
+  }
+  else {
+    $block->content = t('User actions / buttons form components.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the actions form field.
+ */
+function ctools_user_form_actions_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form actions / buttons field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the actions form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_actions_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_component.inc b/plugins/content_types/user_form/user_form_component.inc
new file mode 100644
index 0000000..b4963f9
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_component.inc
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form: add a specific component'),
+  'description' => t('The user form component by selection.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the picture form field.
+ */
+function ctools_user_form_component_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form[$conf['field']])) {
+      $block->content[$conf['field']] = $context->form[$conf['field']];
+      unset($context->form[$conf['field']]);
+    }
+  }
+  else {
+    $block->content = t('User form edit components.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the a selectable form field.
+ */
+function ctools_user_form_component_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form @field field', array('@s' => $context->identifier, '@field' => $conf['field']));
+}
+
+/**
+ * Ctools plugin configuration edit form for the selectable form field.
+ *
+ * Provide the list of fields in the user profile edit form to select from the
+ * plugin configuration.
+ */
+function ctools_user_form_component_content_type_edit_form($form, &$form_state) {
+  $conf = $form_state['conf'];
+  $user_form = drupal_get_form('user_profile_form');
+
+  $field_keys = element_children($user_form);
+  $options = array_combine($field_keys, $field_keys);
+
+  $form['field'] = array(
+    '#type' => 'select',
+    '#title' => t('User form field'),
+    '#options' => $options,
+    '#description' => t('Select a form field from the current user form to display in this pane.'),
+    '#default_value' => !empty($conf['field']) ? $conf['field'] : '',
+  );
+  return $form;
+}
+
+/**
+ * Ctools plugin configuration edit form submit handler.
+ */
+function ctools_user_form_component_content_type_edit_form_submit($form, &$form_state) {
+  $form_state['conf']['field'] = $form_state['values']['field'];
+}
diff --git a/plugins/content_types/user_form/user_form_email.inc b/plugins/content_types/user_form/user_form_email.inc
new file mode 100644
index 0000000..fc9fa7d
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_email.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form email field'),
+  'description' => t('The user email form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the email form field.
+ */
+function ctools_user_form_email_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['account']['mail'])) {
+      $block->content['mail'] = $context->form['account']['mail'];
+      unset($context->form['account']['mail']);
+    }
+  }
+  else {
+    $block->content = t('User email form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the email form field.
+ */
+function ctools_user_form_email_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form email field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the email form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_email_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_notify.inc b/plugins/content_types/user_form/user_form_notify.inc
new file mode 100644
index 0000000..bb74963
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_notify.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form notify field'),
+  'description' => t('The user notify form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the notify form field.
+ */
+function ctools_user_form_notify_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['account']['notify'])) {
+      $block->content['notify'] = $context->form['account']['notify'];
+      unset($context->form['account']['notify']);
+    }
+  }
+  else {
+    $block->content = t('User notify form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the notify form field.
+ */
+function ctools_user_form_notify_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form notify field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the notify form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_notify_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_password.inc b/plugins/content_types/user_form/user_form_password.inc
new file mode 100644
index 0000000..08ce20c
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_password.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form password field'),
+  'description' => t('The user password form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the password form field.
+ */
+function ctools_user_form_password_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['account']['pass'])) {
+      $block->content['pass'] = $context->form['account']['pass'];
+      unset($context->form['account']['pass']);
+    }
+  }
+  else {
+    $block->content = t('User password form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the password form field.
+ */
+function ctools_user_form_password_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form password field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the password form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_password_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_picture.inc b/plugins/content_types/user_form/user_form_picture.inc
new file mode 100644
index 0000000..ac310be
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_picture.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form picture field'),
+  'description' => t('The user picture form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the picture form field.
+ */
+function ctools_user_form_picture_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['picture'])) {
+      $block->content['picture'] = $context->form['picture'];
+      unset($context->form['picture']);
+    }
+  }
+  else {
+    $block->content = t('User picture form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the picture form field.
+ */
+function ctools_user_form_picture_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form picture field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the picture form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_picture_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_roles.inc b/plugins/content_types/user_form/user_form_roles.inc
new file mode 100644
index 0000000..47a169f
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_roles.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form roles field'),
+  'description' => t('The user roles form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the roles form field.
+ */
+function ctools_user_form_roles_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['account']['roles'])) {
+      $block->content['roles'] = $context->form['account']['roles'];
+      unset($context->form['account']['roles']);
+    }
+  }
+  else {
+    $block->content = t('User roles form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the roles form field.
+ */
+function ctools_user_form_roles_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form roles field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the roles form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_roles_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_signature_settings.inc b/plugins/content_types/user_form/user_form_signature_settings.inc
new file mode 100644
index 0000000..2a69ea0
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_signature_settings.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form signature settings field'),
+  'description' => t('The user signature settings form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the signature settings form field.
+ */
+function ctools_user_form_signature_settings_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['signature_settings'])) {
+      $block->content['signature_settings'] = $context->form['signature_settings'];
+      unset($context->form['signature_settings']);
+    }
+  }
+  else {
+    $block->content = t('User signature settings form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the signature settings form field.
+ */
+function ctools_user_form_signature_settings_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form signature settings field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the signature settings form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_signature_settings_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_status.inc b/plugins/content_types/user_form/user_form_status.inc
new file mode 100644
index 0000000..7c7f872
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_status.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form status field'),
+  'description' => t('The user status form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the status form field.
+ */
+function ctools_user_form_status_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['account']['status'])) {
+      $block->content['status'] = $context->form['account']['status'];
+      unset($context->form['account']['status']);
+    }
+  }
+  else {
+    $block->content = t('User status form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the status form field.
+ */
+function ctools_user_form_status_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form status field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the status form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_status_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_timezone.inc b/plugins/content_types/user_form/user_form_timezone.inc
new file mode 100644
index 0000000..1a00664
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_timezone.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form timezone field'),
+  'description' => t('The user timezone form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the timezone form field.
+ */
+function ctools_user_form_timezone_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['timezone'])) {
+      $block->content['timezone'] = $context->form['timezone'];
+      unset($context->form['timezone']);
+    }
+  }
+  else {
+    $block->content = t('User timezone form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the timezone form field.
+ */
+function ctools_user_form_timezone_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form timezone field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the timezone form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_timezone_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
diff --git a/plugins/content_types/user_form/user_form_username.inc b/plugins/content_types/user_form/user_form_username.inc
new file mode 100644
index 0000000..d649530
--- /dev/null
+++ b/plugins/content_types/user_form/user_form_username.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'single' => TRUE,
+  'icon' => 'icon_user_form.png',
+  'title' => t('User form username field'),
+  'description' => t('The user username form.'),
+  'required context' => new ctools_context_required(t('Form'), 'form'),
+  'category' => t('Form'),
+);
+
+/**
+ * Ctools plugin content type render for the username form field.
+ */
+function ctools_user_form_username_content_type_render($subtype, $conf, $panel_args, &$context) {
+  $block = new stdClass();
+  $block->module = t('user-form');
+
+  $block->delta = 'title-options';
+
+  if (isset($context->form)) {
+    if (!empty($context->form['account']['name'])) {
+      $block->content['name'] = $context->form['account']['name'];
+      unset($context->form['account']['name']);
+    }
+  }
+  else {
+    $block->content = t('User username form.');
+  }
+  return $block;
+}
+
+/**
+ * Ctools plugin admin title function for the username form field.
+ */
+function ctools_user_form_username_content_type_admin_title($subtype, $conf, $context) {
+  return t('"@s" user form username field', array('@s' => $context->identifier));
+}
+
+/**
+ * Ctools plugin configuration edit form for the username form field.
+ *
+ * Provide a blank form so we have a place to have context setting.
+ */
+function ctools_user_form_username_content_type_edit_form($form, &$form_state) {
+  return $form;
+}
