diff --git a/context.core.inc b/context.core.inc
index f169b6f..7801f97 100644
--- a/context.core.inc
+++ b/context.core.inc
@@ -17,12 +17,87 @@ function context_help($path, $arg) {
  */
 function context_menu_alter(&$items) {
   if (variable_get('context_reaction_block_disable_core', FALSE)) {
+    // Create a new page to view/configure/delete blocks without drag/drop interface.
+    $items['admin/build/block-context'] = array(
+      'title' => 'Blocks',
+      'access callback' => 'user_access',
+      'access arguments' => array('administer site configuration'),
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('context_block_settings'),
+      'type' => MENU_NORMAL_ITEM,
+    );
     foreach ($items as $path => $item) {
-      if (strpos($path, 'admin/build/block') === 0) {
-        unset($items[$path]);
+      if (strpos($path, 'admin/build/block/') === 0) {
+        $arg = explode('/', $path);
+        // Remove admin/build/block/list* pages.
+        if ($arg[3] == 'list') {
+          unset($items[$path]);
+        }
+        // Leave admin/build/block/configure|delete* pages intact but make them callbacks only.
+        else if ($arg[3] == 'configure' && isset($arg[4]) || $arg[3] == 'delete') {
+          $items[$path]['type'] = MENU_CALLBACK;
+        }
+        // Create new menu entries for admin/build/block/add|add-menu-block and etc
+        // then leave existing ones intact changing them to callbacks only.
+        else if (count($arg) === 4) {
+          $space = substr($path, 18);
+          $items['admin/build/block-context/' . $space] = $item;
+          $items[$path]['type'] = MENU_CALLBACK;
+        }
       }
     }
+    // Redirect all requests to admin/build/block.
+    $items['admin/build/block']['type'] = MENU_CALLBACK;
+    $items['admin/build/block']['page callback'] = 'drupal_goto';
+    $items['admin/build/block']['page arguments'] = array('admin/build/block-context');
+  }
+}
+
+/**
+ * Callback for admin/build/block-context.
+ * 
+ * @return array
+ */
+function context_block_settings() {
+  $form['context_message'] = array(
+    '#value' => t('The block configuration is being managed through context so the drag and drop interface has been disabled.')
+  );
+  // Fetch and sort blocks
+  $blocks = _block_rehash();
+  usort($blocks, '_context_sort_blocks');
+  $header = array(
+    t('Block Title'),
+    t('Configure'),
+    t('Delete')
+  );
+  $rows = array();
+
+  foreach ($blocks as $i => $block) {
+    $key = $block['module'] .'_'. $block['delta'];
+    array_push($rows,
+      array(
+        $block['info'],
+        l(t('configure'), 'admin/build/block/configure/'. $block['module'] .'/'. $block['delta']),
+        l(t('delete'), 'admin/build/block/delete/'. $block['delta']),
+      )
+    );
   }
+  $form['block_list'] = array(
+    '#value' => theme('table', $header, $rows)
+  );
+
+  // supress any messages regarding blocks not being in the correct region.
+  drupal_get_messages('warning');
+
+  return $form;
+}
+
+/**
+ * Callback function for usort to be used to sort blocks alphabetically.
+ */
+function _context_sort_blocks($a, $b) {
+  // Sort by title.
+  return strcasecmp($a['info'], $b['info']);
 }
 
 /**
