diff --git a/tfa_basic.module b/tfa_basic.module
index c3a7ffe..0fecb38 100644
--- a/tfa_basic.module
+++ b/tfa_basic.module
@@ -451,7 +451,6 @@ function tfa_basic_form_tfa_admin_settings_alter(&$form, &$form_state, $form_id)
   global $cookie_domain;
   // Disallow recovery codes and SMS from being used as default validation.
   unset($form['tfa_validate']['#options']['tfa_basic_recovery_code']);
-  unset($form['tfa_validate']['#options']['tfa_basic_sms']);
   unset($form['tfa_validate']['#options']['tfa_basic_help']);
 
   // Add cookie domain field to TFA admin settings.
@@ -468,38 +467,35 @@ function tfa_basic_form_tfa_admin_settings_alter(&$form, &$form_state, $form_id)
   );
   // Add Twilio configuration if SMS plugin is enabled.
   if (class_exists('Services_Twilio')) {
+    $sms_states = array(
+      'visible' => array(
+        array(
+          array(':input[name="tfa_fallback[tfa_basic_sms][enable]"]' => array('checked' => TRUE)),
+          'or',
+          array(':input[name="tfa_validate"]' => array('value' => 'tfa_basic_sms'))
+        )
+      )
+    );
     $form['tfa_basic_twilio_account_sid'] = array(
       '#type' => 'textfield',
       '#title' => t('Twilio account SID'),
       '#default_value' => variable_get('tfa_basic_twilio_account_sid', ''),
       '#description' => t('Twilio account SID from twilio.com.'),
-      '#states' => array(
-        'visible' => array(
-          ':input[name="tfa_fallback[tfa_basic_sms][enable]"]' => array('checked' => TRUE),
-        ),
-      ),
+      '#states' => $sms_states
     );
     $form['tfa_basic_twilio_account_token'] = array(
       '#type' => 'textfield',
       '#title' => t('Twilio account token'),
       '#default_value' => variable_get('tfa_basic_twilio_account_token', ''),
       '#description' => t('Private Twilio account token from twilio.com.'),
-      '#states' => array(
-        'visible' => array(
-          ':input[name="tfa_fallback[tfa_basic_sms][enable]"]' => array('checked' => TRUE),
-        ),
-      ),
+      '#states' => $sms_states
     );
     $form['tfa_basic_twilio_account_number'] = array(
       '#type' => 'textfield',
       '#title' => t('Twilio account number'),
       '#default_value' => variable_get('tfa_basic_twilio_account_number', ''),
       '#description' => t('Private Twilio account number from twilio.com.'),
-      '#states' => array(
-        'visible' => array(
-          ':input[name="tfa_fallback[tfa_basic_sms][enable]"]' => array('checked' => TRUE),
-        ),
-      ),
+      '#states' => $sms_states
     );
     $form['tfa_basic_twilio_message_text'] = array(
       '#type' => 'textfield',
@@ -507,11 +503,7 @@ function tfa_basic_form_tfa_admin_settings_alter(&$form, &$form_state, $form_id)
       '#default_value' => variable_get('tfa_basic_twilio_message_text',
         'Login code: !code'),
       '#description' => t('Text to be sent to the user. Use !code for the verification code.'),
-      '#states' => array(
-        'visible' => array(
-          ':input[name="tfa_fallback[tfa_basic_sms][enable]"]' => array('checked' => TRUE),
-        ),
-      ),
+      '#states' => $sms_states
     );
 
     // Mobile phone storage field. Set variable to FALSE to ignore.
@@ -521,11 +513,7 @@ function tfa_basic_form_tfa_admin_settings_alter(&$form, &$form_state, $form_id)
         '#title' => t('SMS mobile number'),
         '#type' => 'container',
         '#children'  => t('<div class="error messages">A mobile number account field is required to use the Twilio SMS plugin. Consult the <a href="!url">help documentation for more info</a>.</div>', array('!url' => url('admin/help/tfa'))),
-        '#states' => array(
-          'visible' => array(
-            ':input[name="tfa_fallback[tfa_basic_sms][enable]"]' => array('checked' => TRUE),
-          ),
-        ),
+        '#states' => $sms_states
       );
 
       $instances = field_info_instances('user');
@@ -543,6 +531,7 @@ function tfa_basic_form_tfa_admin_settings_alter(&$form, &$form_state, $form_id)
       }
     }
   }
+  // SMS is disabled if the Twilio class is not available.
   else {
     $form['tfa_fallback']['tfa_basic_sms']['enable']['#disabled'] = TRUE;
     $form['tfa_fallback']['tfa_basic_sms']['enable']['#description'] = t('Not available for use because Twilio PHP library is not installed. See TFA Basic README.txt.');
@@ -584,7 +573,7 @@ function tfa_basic_form_validate($form, &$form_state) {
       form_set_error('tfa_basic_cookie_domain', t('Cookie domain is required if Trusted Browser plugin is enabled.'));
     }
   }
-  if (!empty($values['tfa_fallback']) && !empty($values['tfa_fallback']['tfa_basic_sms']['enable'])) {
+  if (!empty($values['tfa_fallback']) && (!empty($values['tfa_fallback']['tfa_basic_sms']['enable']) || $values['tfa_validate'] === 'tfa_basic_sms')) {
     if (empty($values['tfa_basic_twilio_account_sid'])) {
       form_set_error('tfa_basic_twilio_account_sid', t('Account SID is required if Twilio SMS plugin is enabled.'));
     }
