diff --git a/modules/system/system.admin.css b/modules/system/system.admin.css
index 7299484..ba5bb7a 100644
--- a/modules/system/system.admin.css
+++ b/modules/system/system.admin.css
@@ -211,9 +211,13 @@ table.screenshot {
 .system-themes-list-disabled .theme-info {
   min-height: 170px;
 }
-.theme-selector .incompatible {
+.theme-selector .theme_info_error {
   margin-top: 10px;
+  padding: 0.5em;
   font-weight: bold;
+  color: #8c2e0b;
+  border: 1px solid #ed541d;
+  background-color: #fef5f1;
 }
 .theme-selector .operations {
   margin: 10px 0 0 0;
diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc
index b08f418..4ee5f26 100644
--- a/modules/system/system.admin.inc
+++ b/modules/system/system.admin.inc
@@ -164,15 +164,43 @@ function system_themes_page() {
     }
 
     if (empty($theme->status)) {
+     // Test disabled and new themes for errors in their .info file.
      // Ensure this theme is compatible with this version of core.
      // Require the 'content' region to make sure the main page
      // content has a common place in all themes.
-      $theme->incompatible_core = !isset($theme->info['core']) || ($theme->info['core'] != DRUPAL_CORE_COMPATIBILITY) || (!isset($theme->info['regions']['content']));
-      $theme->incompatible_php = version_compare(phpversion(), $theme->info['php']) < 0;
+     // Require a value be provided for Name.
+     // Require that the base theme specified in a subtheme
+     // actually exist.
+    $theme->theme_info_error = '';
+      if (!isset($theme->info['core']) || ($theme->info['core'] != DRUPAL_CORE_COMPATIBILITY)) {
+         $theme->theme_info_error .= '<p>' . t('The specified value of  CORE = !core_value is not compatible with this version of Drupal = !core_version.', array('!core_value' => $theme->info['core'], '!core_version' => VERSION)) . '</p>';
+          }
+      if (version_compare(phpversion(), $theme->info['php']) < 0) {
+          if (substr_count($theme->info['php'], '.') < 2) {
+          $theme->info['php'] .= '.*';
+          }
+         $theme->theme_info_error .= '<p>' . t("The specified version of PHP = @php_specified is incompatible with this server's PHP version = !php_version .", array('@php_specified' => $theme->info['php'], '!php_version' => phpversion())) . '</p>';
+          }
+      if (!isset($theme->info['regions']['content'])) {
+         $theme->theme_info_error .= '<p>' . t("'regions[content]' must be specified in the .info file if defaults are not used.") . '</p>';
+          }
+      if ($theme->info['name'] == '???????') {
+         $theme->theme_info_error .= '<p>' . t('A value for NAME is required in the .info file.') . '</p>';
+          }
+      if (isset($theme->info['base theme'])) {
+      	$this_theme = $theme->info['name'];
+      	$base_key = $themes[$this_theme]->info['base theme'];
+      	if (!isset($themes[$base_key])) {
+      	$theme->theme_info_error .= '<p>' . t("This theme is a subtheme but the base theme = @basetheme doesn't exist.", array('@basetheme' => $theme->info['base theme'])) . '</p>';
+      	  }
+        }
+      if (!empty($theme->theme_info_error)) {
+        drupal_set_message(t('One or more errors were detected in one or more theme .info files. Please check below for error messages.'), 'error', FALSE);
+        }
     }
     $query['token'] = drupal_get_token('system-theme-operation-link');
     $theme->operations = array();
-    if (!empty($theme->status) || !$theme->incompatible_core && !$theme->incompatible_php) {
+    if (!empty($theme->status) || !empty($theme->theme_info_error)) {
       // Create the operations links.
       $query['theme'] = $theme->name;
       if (drupal_theme_access($theme)) {
@@ -2698,16 +2726,10 @@ function theme_system_themes_page($variables) {
       $theme->classes[] = 'clearfix';
       $output .= '<div class="'. join(' ', $theme->classes) .'">' . $screenshot . '<div class="theme-info"><h3>' . $theme->info['name'] . ' ' . (isset($theme->info['version']) ? $theme->info['version'] : '') . $notes . '</h3><div class="theme-description">' . $description . '</div>';
 
-      // Make sure to provide feedback on compatibility.
-      if (!empty($theme->incompatible_core)) {
-        $output .= '<div class="incompatible">' . t('This version is not compatible with Drupal !core_version and should be replaced.', array('!core_version' => DRUPAL_CORE_COMPATIBILITY)) . '</div>';
-      }
-      elseif (!empty($theme->incompatible_php)) {
-        if (substr_count($theme->info['php'], '.') < 2) {
-          $theme->info['php'] .= '.*';
-        }
-        $output .= '<div class="incompatible">' . t('This theme requires PHP version @php_required and is incompatible with PHP version !php_version.', array('@php_required' => $theme->info['php'], '!php_version' => phpversion())) . '</div>';
-      }
+      // Make sure to provide feedback on .info file errors.
+      if (!empty($theme->theme_info_error)) {
+      	$output .= '<div class="theme_info_error">' . '<h2 class="element-invisible">' . t('Theme .info file error messages.') . '</h2>' . $theme->theme_info_error . '</div>';
+      	}
       else {
         $output .= theme('links', array('links' => $theme->operations, 'attributes' => array('class' => array('operations', 'clearfix'))));
       }
diff --git a/modules/system/system.module b/modules/system/system.module
index 0ef688e..1d3fa57 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -2471,6 +2471,7 @@ function _system_rebuild_theme_data() {
   // Set defaults for theme info.
   $defaults = array(
     'engine' => 'phptemplate',
+    'name' => '???????',
     'regions' => array(
       'sidebar_first' => 'Left sidebar',
       'sidebar_second' => 'Right sidebar',
@@ -2482,7 +2483,7 @@ function _system_rebuild_theme_data() {
       'page_top' => 'Page top',
       'page_bottom' => 'Page bottom',
     ),
-    'description' => '',
+    'description' => 'No Discription',
     'features' => _system_default_theme_features(),
     'screenshot' => 'screenshot.png',
     'php' => DRUPAL_MINIMUM_PHP,
