diff --git a/modules/mailchimp_lists/mailchimp_lists.admin.inc b/modules/mailchimp_lists/mailchimp_lists.admin.inc
index 386e16c..2125e31 100644
--- a/modules/mailchimp_lists/mailchimp_lists.admin.inc
+++ b/modules/mailchimp_lists/mailchimp_lists.admin.inc
@@ -173,6 +173,19 @@ function mailchimp_lists_list_form($form, &$form_state, $list = NULL) {
       ),
     ),
   );
+
+  $form['list_settings']['settings']['show_user_edit_form'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show Subscription Options in the user edit form'),
+    '#default_value' => isset($list->settings['show_user_edit_form']) ? $list->settings['show_user_edit_form'] : FALSE,
+    '#states' => array(
+      // only show for optional lists
+      'visible' => array(
+        ':input[name="list_type"]' => array('value' => MAILCHIMP_LISTTYPE_OPTIONAL),
+      ),
+    ),
+  );
+
   $form['list_settings']['settings']['default_register_form_optin'] = array(
     '#type' => 'checkbox',
     '#title' => t('Default to opt-in on registration form.'),
diff --git a/modules/mailchimp_lists/mailchimp_lists.module b/modules/mailchimp_lists/mailchimp_lists.module
index fc8dc84..ed8329c 100644
--- a/modules/mailchimp_lists/mailchimp_lists.module
+++ b/modules/mailchimp_lists/mailchimp_lists.module
@@ -587,7 +587,7 @@ function mailchimp_lists_auth_newsletter_form(&$form, $list, $account) {
  * Submit handler to add users to lists when editing/creating a user
  */
 function mailchimp_lists_user_subscribe_form_submit($form, &$form_state) {
-  $account = $form_state['values']['account'];
+  $account = isset($form_state['user']) ? $form_state['user'] : $form_state['values']['account'];
   $mcapi = mailchimp_get_api_object();
   foreach ($form_state['values']['mailchimp_lists'] as $form_list) {
     $list = $form_list['list'];
@@ -899,3 +899,56 @@ function mailchimp_lists_queue_existing($list) {
 
   return $count;
 }
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function mailchimp_lists_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
+  $account = $form['#user'];
+
+  // need to force feed the authenticated role to this account object so the
+  // right newseletters are avaialble
+  $account->roles[DRUPAL_AUTHENTICATED_RID] = 'authenticated user';
+
+  $lists = mailchimp_lists_get_available_lists($account,
+    MAILCHIMP_LISTTYPE_OPTIONAL, array('show_user_edit_form' => 1));
+
+  if (!empty($lists)) {
+    // wrap in a fieldset
+    $form['mailchimp_lists'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Newsletters'),
+      '#tree' => TRUE,
+    );
+    foreach ($lists as $list) {
+      mailchimp_lists_auth_newsletter_form($form['mailchimp_lists'], $list, $account);
+    }
+
+    // Add the submit handler.
+    $form['#submit'][] = 'mailchimp_lists_user_subscribe_form_submit';
+  }
+
+}
+
+/**
+ * Implement hook_field_extra_fields().
+ */
+function mailchimp_lists_field_extra_fields() {
+  $extra['user']['user'] = array(
+    'form' => array(
+      'mailchimp_lists' => array(
+        'label' => t('Newsletters'),
+        'description' => t('Mailchimp lists'),
+        'weight' => -4,
+      ),
+    ),
+    'display' => array(
+      'mailchimp_lists' => array(
+        'label' => t('Newsletters'),
+        'description' => t('Mailchimp lists'),
+        'weight' => 0,
+      ),
+    ),
+  );
+  return $extra;
+}
