diff --git a/modules/mailchimp_lists/mailchimp_lists.admin.inc b/modules/mailchimp_lists/mailchimp_lists.admin.inc
index 5b007f8..57acee3 100644
--- a/modules/mailchimp_lists/mailchimp_lists.admin.inc
+++ b/modules/mailchimp_lists/mailchimp_lists.admin.inc
@@ -15,8 +15,8 @@ function mailchimp_lists_overview_page() {
       l(t('Delete'), 'admin/config/services/mailchimp/lists/' . $list->id . '/delete')
     );
     if ($list->list_type === MAILCHIMP_LISTTYPE_REQUIRED && isset($list->settings['cron']) && $list->settings['cron'] ) {
-      $actions[] = l(t('Queue exsiting'), 'mailchimp/lists/' . $list->id . '/queue_existing');         
-    }    
+      $actions[] = l(t('Queue exsiting'), 'mailchimp/lists/' . $list->id . '/queue_existing');
+    }
     $rows[] = array(
       l($list->label, 'admin/config/services/mailchimp/lists/' . $list->id . '/edit'),
       l($mc_list['name'], 'https://admin.mailchimp.com/lists/dashboard/overview?id=' . $mc_list['web_id']),
@@ -152,6 +152,7 @@ function mailchimp_lists_list_form($form, &$form_state, $list = NULL) {
       ),
     ),
   );
+
   $form['list_settings']['settings']['show_account_form'] = array(
     '#type'           => 'checkbox',
     '#title'          => t('Show Subscription Options on User Edit Screen'),
@@ -165,6 +166,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']['include_interest_groups'] = array(
     '#type'           => 'checkbox',
     '#title'          => t('Include interest groups on subscription form.'),
@@ -415,6 +429,7 @@ function mailchimp_lists_list_form_submit($form, &$form_state) {
     'doublein' => $form_state['values']['doublein'],
     'show_register_form' => $form_state['values']['show_register_form'],
     'show_account_form' => $form_state['values']['show_account_form'],
+    'show_user_edit_form' => $form_state['values']['show_user_edit_form'],
     'include_interest_groups' => $form_state['values']['include_interest_groups'],
     'interest_groups_label' => $form_state['values']['interest_groups_label'],
     'cron' => $form_state['values']['cron'],
@@ -479,8 +494,8 @@ function mailchimp_lists_queue_existing_form($form, &$form_state, $list) {
   return confirm_form($form,
     t('Are you sure you want to queue existing users in %name?', array('%name' => $list->label)),
     'admin/config/services/mailchimp/lists',
-    t('This action will queue all users who belong in this list based on roles 
-       for processing and cannot be undone. If you have lots of users, it could 
+    t('This action will queue all users who belong in this list based on roles
+       for processing and cannot be undone. If you have lots of users, it could
        take some time and possibly timeout.'),
     t('Queue existing users'));
 }
@@ -488,8 +503,8 @@ function mailchimp_lists_queue_existing_form($form, &$form_state, $list) {
 /**
  * Submit handler for mailchimp_lists_queue_existing_form();
  *
- * @param string $form 
- * @param string $form_state 
+ * @param string $form
+ * @param string $form_state
  */
 function mailchimp_lists_queue_existing_form_submit($form, &$form_state) {
   $list = $form_state['list'];
diff --git a/modules/mailchimp_lists/mailchimp_lists.module b/modules/mailchimp_lists/mailchimp_lists.module
index 06523bc..1318632 100644
--- a/modules/mailchimp_lists/mailchimp_lists.module
+++ b/modules/mailchimp_lists/mailchimp_lists.module
@@ -110,7 +110,7 @@ function mailchimp_lists_queue_existing_access($list) {
   $ret = FALSE;
   if ($list->list_type === MAILCHIMP_LISTTYPE_REQUIRED && $list->settings['cron'] && user_access('administer mailchimp')) {
     $ret = TRUE;
-  }  
+  }
   return $ret;
 }
 
@@ -138,7 +138,7 @@ function mailchimp_lists_freeform_subscribe_page_access() {
 function mailchimp_lists_cron() {
   $queue = DrupalQueue::get(MAILCHIMP_QUEUE_CRON);
   $queue->createQueue();
-  
+
   if ($queue->numberOfItems() > 0 ) {
     $batches_add = array();
     $batches_rem = array();
@@ -155,18 +155,18 @@ function mailchimp_lists_cron() {
         else {
           $batches_rem[$list->mc_list_id][] = $account->mail;
         }
-        
+
         $queue->deleteItem($item);
       }
       $count ++;
     }
-    
+
     $mcapi = mailchimp_get_api_object();
-    
+
     // Remove if necessary
     $rem_count = 0;
     $ret = array();
-   
+
     foreach ($batches_rem as $listid => $batch) {
       if (count($batch)) {
         $ret = $mcapi->listBatchUnsubscribe($listid, $batch, FALSE, TRUE);
@@ -183,7 +183,7 @@ function mailchimp_lists_cron() {
 
     watchdog('mailchimp', 'Removed !rem_count records in MailChimp',
       array('!rem_count' => $rem_count), WATCHDOG_NOTICE);
-    
+
     // Add if necessary
     $add_count = $update_count = 0;
     foreach ($batches_add as $listid => $batch) {
@@ -232,6 +232,59 @@ function mailchimp_lists_form_user_register_form_alter(&$form, &$form_state, $fo
 }
 
 /**
+ * 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;
+}
+
+/**
  * Implements hook_user_insert().
  *   Subscribe users to optional and required newsletters.
  */
@@ -297,7 +350,7 @@ function mailchimp_lists_user_delete($account) {
  */
 function mailchimp_lists_user_update(&$edit, $account, $category) {
   $removed_roles = array_diff_key($edit['original']->roles, $edit['roles']);
-  
+
   mailchimp_lists_user_sync($account, isset($edit['mail']) ? $edit['mail'] : '', $removed_roles);
 }
 
@@ -349,7 +402,7 @@ function mailchimp_lists_user_sync($account, $new_email = '', $removed_roles = a
           $queue = DrupalQueue::get(MAILCHIMP_QUEUE_CRON);
           $queue->createQueue();
           $queue->createItem(array(
-            'uid' => $account->uid, 
+            'uid' => $account->uid,
             'list_id' => $list->id,
             'op' => 'add',
           ));
@@ -383,7 +436,7 @@ function mailchimp_lists_user_sync($account, $new_email = '', $removed_roles = a
 function mailchimp_lists_user_subscribe_page($account) {
   // get all available non-required lists
   $lists = mailchimp_lists_get_available_lists($account, MAILCHIMP_LISTTYPE_OPTIONAL, array('show_account_form' => 1));
-  
+
   if (count($lists) == 0) {
     return (t('There are no available newsletter subscriptions.'));
   }
@@ -558,7 +611,14 @@ 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'];
+
+  if (isset($form_state['user'])) {
+    $account = $form_state['user'];
+  }
+  else {
+    $account = $form_state['values']['account'];
+  }
+
   $mcapi = mailchimp_get_api_object();
   foreach ($form_state['values']['mailchimp_lists'] as $form_list) {
     $list = $form_list['list'];
@@ -675,8 +735,8 @@ function mailchimp_lists_load_user_mergevars($account, $list) {
 /**
  * Implements hook_mailchimp_lists_merge_values().
  *
- * @param array $mergevars 
- * @param object $account 
+ * @param array $mergevars
+ * @param object $account
  * @return array
  */
 function mailchimp_lists_mailchimp_lists_merge_values($mergevars, $account) {
@@ -834,7 +894,7 @@ function mailchimp_lists_forms($form_id, $args) {
 /**
  * Queue existing users in a list.
  *
- * @param object $list 
+ * @param object $list
  * @return $count Number of users queued
  */
 function mailchimp_lists_queue_existing($list) {
@@ -862,4 +922,4 @@ function mailchimp_lists_queue_existing($list) {
   }
 
   return $count;
-}
+}
\ No newline at end of file
