diff --git a/includes/simplenews.subscription.inc b/includes/simplenews.subscription.inc
index e5dc12e..afb20c3 100644
--- a/includes/simplenews.subscription.inc
+++ b/includes/simplenews.subscription.inc
@@ -220,7 +220,6 @@ function simplenews_subscriptions_page_form($form, &$form_state) {
 
   $form['subscriptions'] = array(
     '#type' => 'fieldset',
-    '#description' => t('Select the newsletter(s) to which you want to subscribe or unsubscribe.'),
   );
   $form['subscriptions']['newsletters'] = array(
     '#type' => 'checkboxes',
@@ -232,6 +231,7 @@ function simplenews_subscriptions_page_form($form, &$form_state) {
   // Anonymous users see an email box and will receive confirmations
   if ($subscription->mail) {
     $form['subscriptions']['#title'] = t('Subscriptions for %mail', array('%mail' => $subscription->mail));
+    $form['subscriptions']['#description'] = t('Check the newsletters you want to subscribe to. Uncheck the ones you want to unsubscribe from.');
     $form['subscriptions']['mail'] = array('#type' => 'value', '#value' => $subscription->mail);
     $form['update'] = array(
       '#type' => 'submit',
@@ -242,6 +242,7 @@ function simplenews_subscriptions_page_form($form, &$form_state) {
   }
   else {
     $form['subscriptions']['#title'] = t('Manage your newsletter subscriptions');
+    $form['subscriptions']['#description'] = t('Select the newsletter(s) to which you want to subscribe or unsubscribe.');
     $form['subscriptions']['mail'] = array(
       '#type' => 'textfield',
       '#title' => t('email'),
@@ -278,11 +279,9 @@ function simplenews_subscriptions_page_form_validate($form, &$form_state) {
   if (!$valid_email) {
     form_set_error('mail', t('The email address you supplied is not valid.'));
   }
-  $account = (object) array('mail' => $form_state['values']['mail']);
-  $subscription = simplenews_get_subscription($account);
 
   $checked_newsletters = array_filter($form_state['values']['newsletters']);
-  if (!count($checked_newsletters) && !$subscription) {
+  if (!count($checked_newsletters) && ($form['mail']['#type'] != 'value')) {
     form_set_error('newsletters', t('You must select at least one newsletter.'));
   }
 }
@@ -329,7 +328,7 @@ function simplenews_subscriptions_page_form_submit($form, &$form_state) {
         drupal_set_message(t('You will receive a confirmation email shortly containing further instructions on how to complete your subscription.'));
       }
       else {
-        drupal_set_message(t('You were added to the chosen mailing list.'));
+        drupal_set_message(t('The newsletter subscriptions for %mail have been updated.', array('%mail' => $form_state['values']['mail'])));
       }
       break;
     case t('Unsubscribe'):
@@ -345,7 +344,7 @@ function simplenews_subscriptions_page_form_submit($form, &$form_state) {
         drupal_set_message(t('You will receive a confirmation email shortly containing further instructions on how to cancel your subscription.'));
       }
       else {
-        drupal_set_message(t('You were added to the chosen mailing list.'));
+        drupal_set_message(t('The newsletter subscriptions for %mail have been updated.', array('%mail' => $form_state['values']['mail'])));
       }
       break;
   }
diff --git a/tests/simplenews.test b/tests/simplenews.test
index 6fe7445..c69ce93 100644
--- a/tests/simplenews.test
+++ b/tests/simplenews.test
@@ -251,7 +251,50 @@ class SimplenewsSubscribeTestCase extends SimplenewsTestCase {
     $this->drupalPost($confirm_url, NULL, t('Subscribe'));
     $this->assertRaw(t('%user was added to the %newsletter mailing list.', array('%user' => $mail, '%newsletter' => $newsletter->name)), t('Anonymous subscriber added to newsletter'));
 
-    // @todo 3. Subscribe anonymous via multi block
+    // 3. Subscribe anonymous via multi block
+
+    $this->drupalLogin($admin_user);
+
+    // Enable the multi-sign up block.
+    $this->setupSubscriptionBlock(0);
+
+    // Disable the category block.
+    $edit = array(
+      'blocks[simplenews_' . $tid . '][region]' => -1,
+    );
+    $this->drupalPost(NULL, $edit, t('Save blocks'));
+
+    $this->drupalLogout();
+
+    // Try to submit multi-signup form without selecting a category.
+    $mail = $this->randomEmail(8, 'testmail');
+    $edit = array(
+      'mail' => $mail,
+    );
+    $this->drupalPost(NULL, $edit, t('Subscribe'));
+    $this->assertText(t('You must select at least one newsletter.'));
+
+    // Now fill out the form and try again. The email should still be listed.
+    $edit = array(
+      'newsletters[' . $tid . ']' => TRUE,
+    );
+    $this->drupalPost(NULL, $edit, t('Subscribe'));
+    $this->assertText(t('You will receive a confirmation email shortly containing further instructions on how to complete your subscription.'));
+
+    $mails = $this->drupalGetMails();
+    $body = $mails[2]['body'];
+    $pattern = '@newsletter/confirm/add/[0-9,a-f]+t[0-9]+@';
+    preg_match($pattern, $body, $match);
+    $found= preg_match($pattern, $body, $match);
+    $confirm_url = $match[0];
+    $this->assertTrue($found, t('Confirmation URL found: @url', array('@url' => $confirm_url)));
+
+    $this->drupalGet($confirm_url);
+    $newsletter = taxonomy_term_load($tid);
+    $this->assertRaw(t('Are you sure you want to add %user to the %newsletter mailing list?', array('%user' => $mail, '%newsletter' => $newsletter->name)), t('Subscription confirmation found.'));
+
+    $this->drupalPost($confirm_url, NULL, t('Subscribe'));
+    $this->assertRaw(t('%user was added to the %newsletter mailing list.', array('%user' => $mail, '%newsletter' => $newsletter->name)), t('Anonymous subscriber added to newsletter'));
   }
 
 
@@ -401,7 +444,49 @@ class SimplenewsSubscribeTestCase extends SimplenewsTestCase {
     $this->drupalPost($url, $edit, t('Save'));
     $this->assertRaw(t('The changes have been saved.', array('%mail' => $subscriber_user->mail)), t('Authenticated user unsubscribed on the account page.'));
 
-    // @todo 6. Subscribe authenticated via multi block
+    // Subscribe authenticated via multi block
+    $this->drupalLogin($admin_user);
+
+    // Enable the multi-sign up block.
+    $this->setupSubscriptionBlock(0);
+
+    // Disable the category block.
+    $edit = array(
+      'blocks[simplenews_' . $tid . '][region]' => -1,
+    );
+    $this->drupalPost(NULL, $edit, t('Save blocks'));
+
+    $this->drupalLogout();
+
+    // Try to submit multi-signup form without selecting a category.
+    $subscriber_user2 = $this->drupalCreateUser(array('subscribe to newsletters'));
+    $this->drupalLogin($subscriber_user2);
+
+    $this->assertNoField('mail');
+    $this->drupalPost(NULL, array(), t('Update'));
+    $this->assertText(t('The newsletter subscriptions for @mail have been updated.', array('@mail' => $subscriber_user2->mail)));
+
+    // Nothing should have happened.
+    $this->assertNoFieldChecked('edit-newsletters-' . $tid);
+
+    // Now fill out the form and try again.
+    $edit = array(
+      'newsletters[' . $tid . ']' => TRUE,
+    );
+    $this->drupalPost(NULL, $edit, t('Update'));
+    $this->assertText(t('The newsletter subscriptions for @mail have been updated.', array('@mail' => $subscriber_user2->mail)));
+
+    $this->assertFieldChecked('edit-newsletters-' . $tid);
+
+    // Unsubscribe.
+        // Now fill out the form and try again.
+    $edit = array(
+      'newsletters[' . $tid . ']' => FALSE,
+    );
+    $this->drupalPost(NULL, $edit, t('Update'));
+    $this->assertText(t('The newsletter subscriptions for @mail have been updated.', array('@mail' => $subscriber_user2->mail)));
+
+    $this->assertNoFieldChecked('edit-newsletters-' . $tid);
   }
 
 }
