diff --git a/lib/campaignmonitor.class.inc b/lib/campaignmonitor.class.inc
index ebe5f13..1b1fb14 100644
--- a/lib/campaignmonitor.class.inc
+++ b/lib/campaignmonitor.class.inc
@@ -932,6 +932,73 @@ class CampaignMonitor {
     }
   }

+ /**
+   * Updates the subscriber for a given list including custom fields.
+   *
+   * @param string $list_id
+   *   The unique Campaign Monitor list ID.
+   * @param string $old_email
+   *   The original e-mail address.
+   * @param string $email
+   *   Optionally the new e-mail address.
+   *   e-mail will only update if $email is not null and is different to $old_email.
+   * @param string $name
+   *   Optionally the new name.
+   *   Name will only update if $name is not null.
+   * @param array $custom_fields
+   *   Optionally the updated custom fields
+   *   Will only update if $custom_fields is not null and is an array.
+   *
+   * @return bool
+   *   TRUE on success, FALSE otherwise.
+   */
+  public function updateSubscriber($list_id, $old_email, $email = NULL, $name = NULL, $custom_fields = NULL) {
+    if ($obj = $this->createSubscriberObj($list_id)) {
+      $subscriber =  array(
+        'Resubscribe' => TRUE,
+      );
+      if (!is_null($email) && $email != $old_email) {
+        $subscriber['EmailAddress'] = $email;
+      }
+      if (!is_null($name)) {
+        $subscriber['Name'] = $name;
+      }
+      if (!is_null($custom_fields) && is_array($custom_fields)) {
+        $subscriber['CustomFields'] = $custom_fields;
+      }
+      $result = $obj->update($old_email, $subscriber);
+
+      if (!$result->was_successful()) {
+        $this->addError(WATCHDOG_ERROR, $result->response->Message, $result->http_status_code);
+        return FALSE;
+      }
+      // Remove the old e-mail address from the subscriber cache.
+      $this->removeSubscriberFromCache($list_id, $old_email);
+      return TRUE;
+    }
+  }
+
+  /**
+   * Check if a given user, identified by e-mail address, is Unconfirmed.
+   *
+   * @param string $list_id
+   *   The unique Campaign Monitor list ID.
+   * @param string $email
+   *   The user's e-mail address.
+   *
+   * @return bool
+   *   TRUE if Unconfirmed, FALSE if not.
+   */
+  public function isUnconfirmed($list_id, $email) {
+    $result = $this->getSubscriber($list_id, $email);
+    if (!empty($result)) {
+      if ($result['State'] == 'Unconfirmed') {
+        return TRUE;
+      }
+    }
+    return FALSE;
+  }
+
   /**
    * Clears all the caches used by this wrapper object.
    */
