diff --git a/author-pane.tpl.php b/author-pane.tpl.php
index 3364805..afb338d 100644
--- a/author-pane.tpl.php
+++ b/author-pane.tpl.php
@@ -79,9 +79,11 @@
     <?php /* General section */ ?>
     <div class="author-pane-section author-pane-general">
       <?php /* Account name */ ?>
-      <div class="author-pane-line author-name">
-        <?php print $account_name; ?>
-      </div>
+      <?php if (!empty($account_name)): ?>
+        <div class="author-pane-line author-name">
+          <?php print $account_name; ?>
+        </div>
+      <?php endif; ?>
 
       <?php /* User picture / avatar (has div in variable) */ ?>
       <?php if (!empty($picture)): ?>
diff --git a/author_pane.module b/author_pane.module
index 699ebe8..92adc1f 100644
--- a/author_pane.module
+++ b/author_pane.module
@@ -8,6 +8,32 @@
 // DRUPAL HOOKS **************************************************************/
 
 /**
+ * Implements hook_menu().
+ */
+function author_pane_menu() {
+  $items['admin/config/people/accounts/authorpane'] = array(
+    'title' => 'Author pane',
+    'description' => 'Select which information is displayed in the Author Pane.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('author_pane_admin'),
+    'access arguments' => array('administer users'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 10,
+  );
+  return $items;
+}
+
+/**
+ * Implements hook_help().
+ */
+function author_pane_help($path, $arg) {
+  switch ($path) {
+    case 'admin/config/people/accounts/authorpane':
+      return '<p>Select which information is displayed in the author panes.</p>';
+  }
+}
+
+/**
  * Implements hook_theme().
  */
 function author_pane_theme() {
@@ -115,6 +141,36 @@ function author_pane_block_view($delta) {
 }
 
 /**
+ * Menu callback; Displays the administration for Author Pane.
+ */
+function author_pane_admin() {
+  author_pane_include('author-pane.inc');
+  $options = module_invoke_all('author_pane_allow_preprocess_disable');
+  $callers = module_invoke_all('author_pane_caller_info');
+
+  // Display disable caller settings for each caller.
+  $form['author_pane_disable'] = array(
+    '#type' => 'vertical_tabs',
+    '#title' => t('Disable components'),
+  );
+  foreach ($callers as $caller => $title) {
+    $form["author_pane_$caller"] = array(
+      '#title' => t($title),
+      '#type' => 'fieldset',
+      '#group' => 'author_pane_disable',
+    );
+    $form["author_pane_$caller"]["author_pane_disable_for_$caller"] = array(
+      '#title' => t('Disable components for %title', array('%title' => $title)),
+      '#options' => $options,
+      '#type' => 'checkboxes',
+      '#default_value' => variable_get("author_pane_disable_for_$caller", array()),
+      '#description' => t('Select which Author Pane components are disabled when viewed with %title.', array('%title' => $title)),
+    );
+  }
+  return system_settings_form($form);
+}
+
+/**
  * Load Author Pane files on behalf of modules.
  *
  * This function, taken from the views include system, allows us to include
@@ -164,7 +220,8 @@ function author_pane_include($file) {
  */
 function template_preprocess_author_pane(&$variables) {
   // Indicates who called the theme function.
-  $caller = (!empty($variables['caller'])) ? $variables['caller'] : '';
+  $caller = (!empty($variables['caller'])) ? $variables['caller'] : 'author_pane';
+  $disable = variable_get("author_pane_disable_for_$caller", array());
 
   /* Add CSS */
   if (empty($variables['disable_css'])) {
@@ -180,38 +237,48 @@ function template_preprocess_author_pane(&$variables) {
   $account = $variables['account'];
   $account_id = $account->uid;
 
-  $variables['account_name'] =  theme('username', array('account' => $account));
-  $variables['account_id'] = $account_id;
+  if (!isset($disable['account_name']) || empty($disable['account_name'])) {
+    $variables['account_name'] =  theme('username', array('account' => $account));
+    $variables['account_id'] = $account_id;
+  }
 
   /* Avatar */
   static $user_pictures;
-  if (!empty($user_pictures[$account_id])) {
-    // This user's picture is cached so pull it from there.
-    $variables['picture'] = $user_pictures[$account_id];
-  }
-  else {
-    $style = (!empty($variables['picture_preset'])) ? $variables['picture_preset'] : '';
-    $variables['picture'] = theme('author_pane_user_picture', array('account' => $variables['account'], 'caller' => $caller, 'picture_preset' => $style));
-    $user_pictures[$account_id] = $variables['picture'];
+  if (!isset($disable['picture']) || empty($disable['picture'])) {
+    if (!empty($user_pictures[$account_id])) {
+      // This user's picture is cached so pull it from there.
+      $variables['picture'] = $user_pictures[$account_id];
+    }
+    else {
+      $style = (!empty($variables['picture_preset'])) ? $variables['picture_preset'] : '';
+      $variables['picture'] = theme('author_pane_user_picture', array('account' => $variables['account'], 'caller' => $caller, 'picture_preset' => $style));
+      $user_pictures[$account_id] = $variables['picture'];
+    }
   }
 
   /* Join date & online status */
   if ($account_id != 0) {
-    // Join date (uses short date format) / since
-    $just_date = str_replace(array('H:i', 'g:ia', ' - '), '', variable_get('date_format_short', 'm/d/Y - H:i'));
-    $variables['joined'] = format_date($account->created, 'custom', $just_date);
-    $variables['joined_ago'] = format_interval(REQUEST_TIME - $account->created);
+    if (!isset($disable['joined']) || empty($disable['joined'])) {
+      // Join date (uses short date format) / since
+      $just_date = str_replace(array('H:i', 'g:ia', ' - '), '', variable_get('date_format_short', 'm/d/Y - H:i'));
+      $variables['joined'] = format_date($account->created, 'custom', $just_date);
+      $variables['joined_ago'] = format_interval(REQUEST_TIME - $account->created);
+    }
 
     // Online status - uses the settings for the who's online block.
-    $variables['last_active'] = ($account->access) ? format_interval(time() - $account->access) : t("Never");
-
-    if ((REQUEST_TIME -$account->access) < variable_get('user_block_seconds_online', 900)) {
-      $variables['online_status'] = t('Online');
-      $variables['online_status_class'] = 'author-online';
+    if (!isset($disable['last_active']) || empty($disable['last_active'])) {
+      $variables['last_active'] = ($account->access) ? format_interval(time() - $account->access) : t("Never");
     }
-    else {
-      $variables['online_status'] = t('Offline');
-      $variables['online_status_class'] = 'author-offline';
+
+    if (!isset($disable['online_status']) || empty($disable['online_status'])) {
+      if ((REQUEST_TIME -$account->access) < variable_get('user_block_seconds_online', 900)) {
+        $variables['online_status'] = t('Online');
+        $variables['online_status_class'] = 'author-online';
+      }
+      else {
+        $variables['online_status'] = t('Offline');
+        $variables['online_status_class'] = 'author-offline';
+      }
     }
   }
   else {
@@ -227,7 +294,6 @@ function template_preprocess_author_pane(&$variables) {
   author_pane_include('author-pane.inc');
 }
 
-
 /**
  * Preprocesses template variables for the author pane picture template.
  *
@@ -343,6 +409,19 @@ function author_pane_get_block() {
 }
 
 /**
+ * Implements hook_author_pane_allow_preprocess_disable().
+ */
+function author_pane_author_pane_allow_preprocess_disable() {
+  return array(
+    'account_name' => t('Account name'),
+    'picture' => t('Picture'),
+    'online_status' => t('Online status'),
+    'joined' => t('Joined'),
+    'last_active' => t('Last active'),
+  );
+}
+
+/**
  * Determines if a given preprocess should run for a given caller.
  */
 function author_pane_run_preprocess($module, $caller) {
@@ -355,4 +434,18 @@ function author_pane_run_preprocess($module, $caller) {
   }
 
   return TRUE;
-}
\ No newline at end of file
+}
+
+/**
+ * Implements hook_author_pane_caller_info().
+ */
+function author_pane_author_pane_caller_info() {
+  $callers = array(
+    'author_pane_block' => t('Author Pane Block'),
+    'author_pane' => t('Generic view'),
+  );
+  if (module_exists('advanced_forum')) {
+    $callers['advanced_forum'] = t('Advanced Forum');
+  }
+  return $callers;
+}
