diff --git a/misc/drupal.css b/misc/drupal.css
index 0c39de3ec361e4b62cd32de4d15eee5cf9211e5b..8d5ee0f3782aae8b3e384f728d6eb0d6903a2448 100644
--- a/misc/drupal.css
+++ b/misc/drupal.css
@@ -362,10 +362,10 @@ dl.multiselect .form-item {
   height: 1.75em;
   margin: 0px;
 }
-#permissions td.module {
+#permissions td.module, #blocks td.region {
   font-weight: bold;
 }
-#permissions td.permission {
+#permissions td.permission, #blocks td.block {
   padding-left: 2em;
 }
 #access-rules .access-type, #access-rules .rule-type {
diff --git a/modules/block.module b/modules/block.module
index 359a78e6c25b7202f1ce89dedcd47eb317094aa9..733e9a3e4c374ffb02a8ce16b3a412e7b11d5072 100644
--- a/modules/block.module
+++ b/modules/block.module
@@ -189,7 +189,9 @@ function block_admin_display() {
   }
   $header[] = array('data' => t('Operations'), 'colspan' => 2);
 
-
+  $left = array();
+  $right = array();
+  $disabled = array();
   foreach ($blocks as $block) {
     if ($block['module'] == 'block') {
       $delete = l(t('delete'), 'admin/block/delete/'. $block['delta']);
@@ -198,13 +200,7 @@ function block_admin_display() {
       $delete = '';
     }
 
-    $row = array($block['info'],
-      form_checkbox(NULL, $block['module'] .']['. $block['delta'] .'][status', 1, $block['status']),
-      form_weight(NULL, $block['module'] .']['. $block['delta'] .'][weight', $block['weight']),
-      form_radios(NULL, $block['module'] .']['. $block['delta'] .'][region', $block['region'],
-      array(t('left'), t('right'))));
-
-    $row = array($block['info'],
+    $row = array(array('data' => $block['info'], 'class' => 'block'),
       form_checkbox(NULL, $block['module'] .']['. $block['delta'] .'][status', 1, $block['status']),
       form_weight(NULL, $block['module'] .']['. $block['delta'] .'][weight', $block['weight']),
       form_radios(NULL, $block['module'] .']['. $block['delta'] .'][region', $block['region'],
@@ -215,10 +211,33 @@ function block_admin_display() {
     }
     $row[] = l(t('configure'), 'admin/block/configure/'. $block['module'] .'/'. $block['delta']);
     $row[] = $delete;
-    $rows[] = $row;
+    if ($block['status']) {
+      if ($block['region'] == 0) {
+        $left[] = $row;
+      }
+      else {
+        $right[] = $row;
+      }
+    }
+    else {
+      $disabled[] = $row;
+    }
   }
 
-  $output = theme('table', $header, $rows);
+  $rows = array();
+  if (count($left)) {
+    $rows[] = array(array('data' => t('Left sidebar'), 'class' => 'region', 'colspan' => (module_exist('throttle') ? 7 : 6)));
+    $rows = array_merge($rows, $left);
+  }
+  if (count($right)) {
+    $rows[] = array(array('data' => t('Right sidabar'), 'class' => 'region', 'colspan' => (module_exist('throttle') ? 7 : 6)));
+    $rows = array_merge($rows, $right);
+  }
+  if (count($disabled)) {
+    $rows[] = array(array('data' => t('Disabled'), 'class' => 'region', 'colspan' => (module_exist('throttle') ? 7 : 6)));
+    $rows = array_merge($rows, $disabled);
+  }
+  $output = theme('table', $header, $rows, array('id' => 'blocks'));
   $output .= form_submit(t('Save blocks'));
 
   return form($output, 'post', url('admin/block'));
diff --git a/modules/block/block.module b/modules/block/block.module
index 359a78e6c25b7202f1ce89dedcd47eb317094aa9..733e9a3e4c374ffb02a8ce16b3a412e7b11d5072 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -189,7 +189,9 @@ function block_admin_display() {
   }
   $header[] = array('data' => t('Operations'), 'colspan' => 2);
 
-
+  $left = array();
+  $right = array();
+  $disabled = array();
   foreach ($blocks as $block) {
     if ($block['module'] == 'block') {
       $delete = l(t('delete'), 'admin/block/delete/'. $block['delta']);
@@ -198,13 +200,7 @@ function block_admin_display() {
       $delete = '';
     }
 
-    $row = array($block['info'],
-      form_checkbox(NULL, $block['module'] .']['. $block['delta'] .'][status', 1, $block['status']),
-      form_weight(NULL, $block['module'] .']['. $block['delta'] .'][weight', $block['weight']),
-      form_radios(NULL, $block['module'] .']['. $block['delta'] .'][region', $block['region'],
-      array(t('left'), t('right'))));
-
-    $row = array($block['info'],
+    $row = array(array('data' => $block['info'], 'class' => 'block'),
       form_checkbox(NULL, $block['module'] .']['. $block['delta'] .'][status', 1, $block['status']),
       form_weight(NULL, $block['module'] .']['. $block['delta'] .'][weight', $block['weight']),
       form_radios(NULL, $block['module'] .']['. $block['delta'] .'][region', $block['region'],
@@ -215,10 +211,33 @@ function block_admin_display() {
     }
     $row[] = l(t('configure'), 'admin/block/configure/'. $block['module'] .'/'. $block['delta']);
     $row[] = $delete;
-    $rows[] = $row;
+    if ($block['status']) {
+      if ($block['region'] == 0) {
+        $left[] = $row;
+      }
+      else {
+        $right[] = $row;
+      }
+    }
+    else {
+      $disabled[] = $row;
+    }
   }
 
-  $output = theme('table', $header, $rows);
+  $rows = array();
+  if (count($left)) {
+    $rows[] = array(array('data' => t('Left sidebar'), 'class' => 'region', 'colspan' => (module_exist('throttle') ? 7 : 6)));
+    $rows = array_merge($rows, $left);
+  }
+  if (count($right)) {
+    $rows[] = array(array('data' => t('Right sidabar'), 'class' => 'region', 'colspan' => (module_exist('throttle') ? 7 : 6)));
+    $rows = array_merge($rows, $right);
+  }
+  if (count($disabled)) {
+    $rows[] = array(array('data' => t('Disabled'), 'class' => 'region', 'colspan' => (module_exist('throttle') ? 7 : 6)));
+    $rows = array_merge($rows, $disabled);
+  }
+  $output = theme('table', $header, $rows, array('id' => 'blocks'));
   $output .= form_submit(t('Save blocks'));
 
   return form($output, 'post', url('admin/block'));