diff --git a/twitter.lib.php b/twitter.lib.php
index bcbc746..816565d 100644
--- a/twitter.lib.php
+++ b/twitter.lib.php
@@ -436,6 +436,8 @@ class TwitterUser {
 
   public $status;
 
+  public $authenticated;
+
   protected $password;
 
   protected $oauth_token;
@@ -468,6 +470,9 @@ class TwitterUser {
       $this->created_time = $created_time;
     }
     $this->utc_offset = $values['utc_offset']?$values['utc_offset']:0;
+    if (!empty($values['oauth_token_secret'])) {
+      $this->authenticated = TRUE;
+    }
 
     if (isset($values['status'])) {
       $this->status = new TwitterStatus($values['status']);
diff --git a/twitter.pages.inc b/twitter.pages.inc
index b4cbc70..73b0126 100644
--- a/twitter.pages.inc
+++ b/twitter.pages.inc
@@ -150,15 +150,27 @@ function _twitter_account_list_row($account) {
     '#markup' => empty($account->protected) ? t('No') : t('Yes'),
   );
 
+  $form['authenticated'] = array(
+    '#markup' => isset($account->authenticated) ? t('Yes') : t('No'),
+  );
+
   // Here we use user_access('import own tweets') to check permission
   // instead of user_access('import own tweets', $account->uid)
   // because we allow roles with sufficient permission to overwrite
   // the user's import settings.
   if (variable_get('twitter_import', TRUE) && user_access('import own tweets')) {
-    $form['import'] = array(
-      '#type' => 'checkbox',
-      '#default_value' => user_access('import own tweets') ? $account->import : '',
-    );
+    if (!$account->protected || $account->authenticated) {
+      $form['import'] = array(
+        '#type' => 'checkbox',
+        '#default_value' => user_access('import own tweets') ? $account->import : '',
+      );
+    }
+    else {
+      $form['import'] = array(
+        '#type' => 'markup',
+        '#markup' => t('-')
+      );
+    }
   }
 
   $form['delete'] = array(
@@ -176,10 +188,10 @@ function theme_twitter_account_list_form($variables) {
   $form = $variables['form'];
 
   if (variable_get('twitter_import', TRUE) && user_access('import own tweets')) {
-    $header = array('', t('Name'), t('Description'), t('Private'), t('Import'), t('Delete'));
-  } 
+    $header = array('', t('Name'), t('Description'), t('Private'), t('Authenticated'), t('Import'), t('Delete'));
+  }
   else {
-    $header = array('', t('Name'), t('Description'), t('Private'), t('Delete'));
+    $header = array('', t('Name'), t('Description'), t('Private'), t('Private'), t('Delete'));
   }
 
   if (user_access('make twitter accounts global')) {
@@ -196,6 +208,7 @@ function theme_twitter_account_list_form($variables) {
         drupal_render($element['id']) . drupal_render($element['screen_name']) . drupal_render($element['visible_name']),
         drupal_render($element['description']),
         drupal_render($element['protected']),
+        drupal_render($element['authenticated']),
         drupal_render($element['import']),
         drupal_render($element['delete']),
       );
@@ -206,6 +219,7 @@ function theme_twitter_account_list_form($variables) {
         drupal_render($element['id']) . drupal_render($element['screen_name']) . drupal_render($element['visible_name']),
         drupal_render($element['description']),
         drupal_render($element['protected']),
+        drupal_render($element['authenticated']),
         drupal_render($element['delete']),
       );
     }
@@ -232,11 +246,11 @@ function twitter_account_list_form_submit($form, &$form_state) {
   foreach ($accounts as $account) {
     if (empty($account['delete'])) {
       twitter_account_save($account);
-      drupal_set_message(t('The Twitter account settings were updated.'));
+      drupal_set_message(t('The Twitter account settings for @name were updated.', array('@name' => $account['screen_name'])));
     }
     else {
       twitter_account_delete($account['id']);
-      drupal_set_message(t('The Twitter account was deleted.'));
+      drupal_set_message(t('The Twitter account @name was deleted.', array('@name' => $account['screen_name'])));
     }
   }
 }
@@ -306,44 +320,62 @@ function twitter_account_form($form, $form_state, $account = NULL) {
   );
 
   if (_twitter_use_oauth()) {
-    $form['#validate'] = array('twitter_account_oauth_validate');
-  }
-  else {
-    $form['screen_name'] = array(
-      '#type' => 'textfield',
-      '#required' => TRUE,
-      '#title' => t('Twitter user name'),
-    );
-
-    $form['import'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Import statuses from this account'),
-      '#default_value' => TRUE,
-      '#access' => FALSE,
+    $form['authenticate'] = array(
+      '#type' => 'submit',
+      '#value' => t('Add account via authentication'),
+      '#description' => t('Use this button to add an account by authenticating it with Twitter.com'),
+      '#validate' => array('twitter_account_oauth_validate')
     );
   }
 
-  $form['submit'] = array(
+  $form['screen_name'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Twitter user name'),
+    '#description' => t('Use this textfield to follow an account by reading its public stream.'),
+  );
+
+  // @TODO
+  $form['import'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Import statuses from this account'),
+    '#default_value' => TRUE,
+    '#access' => FALSE,
+  );
+
+  $form['follow'] = array(
     '#type' => 'submit',
-    '#value' => t('Add account'),
+    '#value' => t('Add account via public stream'),
   );
 
   return $form;
 }
 
 /**
+ * Validate callback for twitter_account_form().
+ */
+function twitter_account_form_validate(&$form, $form_state) {
+  if ($form_state['values']['op'] == t('Add account via public stream')) {
+    if (empty($form_state['values']['screen_name'])) {
+      form_set_error('screen_name', 'Twitter user name field is required.');
+    }
+  }
+}
+
+/**
  * Implements hook_FORM_ID_submit()
  *
  * Loads Twitter account details and adds them to the user account
  */
 function twitter_account_form_submit($form, &$form_state) {
-  module_load_include('lib.php', 'twitter');
-  module_load_include('inc', 'twitter');
-
-  $name = $form_state['values']['screen_name'];
-  $twitter = new Twitter($name);
-  $account = $twitter->users_show($name, FALSE);
-  twitter_account_save($account, TRUE, user_load($form_state['values']['uid']));
+  if ($form_state['values']['op'] == t('Add account via public stream')) {
+    module_load_include('lib.php', 'twitter');
+    module_load_include('inc', 'twitter');
+
+    $name = $form_state['values']['screen_name'];
+    $twitter = new Twitter($name);
+    $account = $twitter->users_show($name, FALSE);
+    twitter_account_save($account, TRUE, user_load($form_state['values']['uid']));
+  }
 }
 
 /**
@@ -351,22 +383,24 @@ function twitter_account_form_submit($form, &$form_state) {
  * user/%/edit/twitter page and redirect to Twitter for auth.
  */
 function twitter_account_oauth_validate($form, &$form_state) {
-  module_load_include('lib.php', 'oauth_common');
-  module_load_include('lib.php', 'twitter');
-
-  $key = variable_get('twitter_consumer_key', '');
-  $secret = variable_get('twitter_consumer_secret', '');
-  if ($key == '' || $secret == '') {
-    form_set_error('', t('Please configure your Twitter consumer key and secret.'));
-  }
+  if ($form_state['values']['op'] == t('Add account via authentication')) {
+    module_load_include('lib.php', 'oauth_common');
+    module_load_include('lib.php', 'twitter');
+
+    $key = variable_get('twitter_consumer_key', '');
+    $secret = variable_get('twitter_consumer_secret', '');
+    if ($key == '' || $secret == '') {
+      form_set_error('', t('Please configure your Twitter consumer key and secret.'));
+    }
 
-  $twitter = new TwitterOAuth($key, $secret);
-  $token = $twitter->get_request_token();
+    $twitter = new TwitterOAuth($key, $secret);
+    $token = $twitter->get_request_token();
 
-  $_SESSION['twitter_oauth']['account'] = user_load($form['uid']['#value']);  
-  $_SESSION['twitter_oauth']['token'] = $token;
-  $_SESSION['twitter_oauth']['destination'] = $_GET['q'];
-  drupal_goto($twitter->get_authorize_url($token));
+    $_SESSION['twitter_oauth']['account'] = user_load($form['uid']['#value']);
+    $_SESSION['twitter_oauth']['token'] = $token;
+    $_SESSION['twitter_oauth']['destination'] = $_GET['q'];
+    drupal_goto($twitter->get_authorize_url($token));
+  }
 }
 
 /**
