diff --git context.core.inc context.core.inc
index d010621..5a85e8a 100644
--- context.core.inc
+++ context.core.inc
@@ -125,11 +125,18 @@
   if (!empty($form['#node_edit_form']) && arg(0) != 'admin') {
     context_node_condition($form['#node'], 'form');
   }
-  // Clear out block info cache when an admin area form is submitted.
-  if (arg(0) === 'admin' && !empty($form_state['input']) && isset($form_state['method']) && $form_state['method'] === 'post') {
-    if ($plugin = context_get_plugin('reaction', 'block')) {
-      $plugin->rebuild_needed(TRUE);
-    }
+  // If the form is an admin for, flag it so that we can force a rebuild if needed.
+  if (path_is_admin($_GET['q'])) {
+    $form['#submit'][] = 'context_admin_form_submit';
+  }
+}
+
+/**
+ * Clear out block info cache when an admin area form is submitted.
+ */
+function context_admin_form_submit(&$form, $form_state) {
+  if ($plugin = context_get_plugin('reaction', 'block')) {
+    $plugin->rebuild_needed(TRUE);
   }
 }
 
diff --git context.module context.module
index 637ffd8..613cf98 100644
--- context.module
+++ context.module
@@ -179,6 +179,25 @@
 }
 
 /**
+ * Implementation of hook_preprocess_menu_link().
+ *
+ * This allows menus that are not primary/secondary menus to get
+ * the "active" class assigned to them. This assumes they are using
+ * theme('menu_link') for the menu rendering to html.
+ */
+function context_preprocess_menu_link(&$variables) {
+  if($contexts = context_active_contexts()){
+    foreach($contexts as $context){
+      if((isset($context->reactions['menu']))){
+        if ($variables['element']['#href'] == $context->reactions['menu']) {
+          $variables['element']['#localized_options']['attributes']['class'][] = "active";
+        }
+      }
+    }
+  }
+}
+
+/**
  * Load & crud functions ==============================================
  */
 
diff --git context_ui/context_ui.info context_ui/context_ui.info
index 80fb391..27588b5 100644
--- context_ui/context_ui.info
+++ context_ui/context_ui.info
@@ -3,6 +3,7 @@
 dependencies[] = context
 package = Context
 core = "7.x"
+configure = admin/structure/context
 
 files[] = context.module
 files[] = tests/context_ui.test
diff --git plugins/context_reaction_block.css plugins/context_reaction_block.css
index f1087bc..c6de1fa 100644
--- plugins/context_reaction_block.css
+++ plugins/context_reaction_block.css
@@ -9,11 +9,11 @@
 /**
  * Browser
  */
-div.context-block-browser div.category { display:none; }
+ .context-block-browser  .category { display:none; }
 
-div.context-block-item,
-div.context-block-browser div.draggable-placeholder,
-#admin-toolbar div.context-block-browser div.context-block-item {
+ .context-block-item,
+ .context-block-browser  .draggable-placeholder,
+#admin-toolbar  .context-block-browser  .context-block-item {
   font-size:11px;
   line-height:20px;
   height:20px;
@@ -36,7 +36,7 @@
   -webkit-user-select:none;
   }
 
-  div.context-block-item span.icon {
+   .context-block-item span.icon {
     background:url(context_reaction_block.png) 0px -80px no-repeat;
     display:block;
     width:20px;
@@ -45,26 +45,26 @@
     margin-right:5px;
     }
 
-  div.context-block-loading { max-width:none; }
+   .context-block-loading { max-width:none; }
 
-  div.context-block-loading span.icon {
+   .context-block-loading span.icon {
     background-position:-20px -80px;
     float:none;
     margin:0px auto;
     }
 
-  div.context-block-browser div.draggable-placeholder { padding:2px 1px 1px 2px; }
+   .context-block-browser  .draggable-placeholder { padding:2px 1px 1px 2px; }
 
-  #admin-toolbar.horizontal div.context-block-browser div.draggable-placeholder,
-  #admin-toolbar.horizontal div.context-block-browser div.context-block-item {
+  #admin-toolbar.horizontal  .context-block-browser  .draggable-placeholder,
+  #admin-toolbar.horizontal  .context-block-browser  .context-block-item {
     width:180px;
     margin-right:1px;
     padding-right:9px;
     float:left;
     }
 
-div.context-block-addable { cursor: move; }
-div.context-block-added { display:none !important; }
+ .context-block-addable { cursor: move; }
+ .context-block-added { display:none !important; }
 
 /**
  * Inline editing elements ============================================
@@ -72,7 +72,7 @@
 a.context-block-region { display:none; }
 a.context-block { display:none !important; }
 
-body.context-editing div.context-block-region-empty a.context-block-region {
+body.context-editing  .context-block-region-empty a.context-block-region {
   -moz-border-radius:5px;
   -webkit-border-radius:5px;
   background:#666;
@@ -88,14 +88,14 @@
   white-space:nowrap;
   }
 
-body.context-editing .ui-sortable div.block { opacity:.25; }
+body.context-editing .ui-sortable  .block { opacity:.25; }
 
-body.context-editing .ui-sortable div.draggable {
+body.context-editing .ui-sortable  .draggable {
   position:relative;
   opacity:1;
   }
 
-body.context-editing div.draggable-placeholder {
+body.context-editing  .draggable-placeholder {
   -moz-border-radius:5px;
   -webkit-border-radius:5px;
 
@@ -104,8 +104,8 @@
   opacity:.2;
   }
 
-body.context-editing div.draggable:hover a.context-block-remove,
-body.context-editing div.draggable:hover a.context-block-handle {
+body.context-editing  .draggable:hover a.context-block-remove,
+body.context-editing  .draggable:hover a.context-block-handle {
   background:url(context_reaction_block.png) no-repeat;
   cursor:move;
   display:block;
@@ -117,15 +117,15 @@
   z-index:100;
   }
 
-body.context-editing div.draggable:hover a.context-block-remove {
+body.context-editing  .draggable:hover a.context-block-remove {
   background-position:-40px 0px;
   cursor:pointer;
   right:-5px;
   }
 
-div.context-block-hidden { display:none !important; }
+ .context-block-hidden { display:none !important; }
 
-div.block div.context-block-empty {
+ .block  .context-block-empty {
   text-align:center;
   padding:10px;
   opacity:.5;
@@ -136,7 +136,7 @@
 /**
  * Block visibility ===================================================
  */
-#context-blockform div.context-blockform-selector {
+#context-blockform  .context-blockform-selector {
   height:20em;
   overflow:auto;
   }
@@ -150,7 +150,7 @@
   width:50%;
   }
 
-#context-blockform td.blocks div.label,
+#context-blockform td.blocks  .label,
 #context-blockform td.blocks td,
 #context-blockform td.blocks th {
   background:#fff;
@@ -159,15 +159,15 @@
   border-bottom:1px solid #ddd;
   }
 
-  #context-blockform td.blocks div.label { background:#eee; }
-  #context-blockform td.blocks div.label a { float:right; }
+  #context-blockform td.blocks  .label { background:#eee; }
+  #context-blockform td.blocks  .label a { float:right; }
 
 #context-ui-items #context-blockform {
   font-size:11px;
   line-height:15px;
   }
 
-#context-ui-items #context-blockform div.form-checkboxes {
+#context-ui-items #context-blockform  .form-checkboxes {
   height:auto;
   overflow:visible;
   padding:0px;
@@ -175,7 +175,7 @@
   border:0px;
   }
 
-#context-ui-items #context-blockform div.form-item { padding:0px; }
+#context-ui-items #context-blockform  .form-item { padding:0px; }
 
 #context-ui-items #context-blockform label {
   background:#eee;
diff --git plugins/context_reaction_block.inc plugins/context_reaction_block.inc
index 52f9fe9..7f7f136 100644
--- plugins/context_reaction_block.inc
+++ plugins/context_reaction_block.inc
@@ -220,13 +220,44 @@
     foreach (array_keys($all_regions) as $region) {
       if ($this->is_enabled_region($region)) {
         if ($blocks = $this->block_get_blocks_by_region($region)) {
-          $page[$region] = isset($page[$region]) ? array_merge($page[$region], $blocks) : $blocks;
+          if (isset($page[$region]))
+          {
+            $blocks_from_region = array_filter($page[$region], array('context_reaction_block', 'filter_is_block'));
+            $blocks_from_context = array_filter($blocks, array('context_reaction_block', 'filter_is_block'));
+            $page[$region] = array_diff($page[$region], $blocks_from_region);
+            $blocks = array_diff($blocks, $blocks_from_context);
+            $sorted_blocks = array_merge($blocks_from_region, $blocks_from_context);
+            uasort($sorted_blocks, array('context_reaction_block', 'block_sort_original_weight'));
+            $weight = 0;
+            foreach ($sorted_blocks as $key => $value)
+              $value['#weight'] = $weight++;
+            $page[$region] = array_merge($page[$region], $blocks, $sorted_blocks);
+          }
+          else
+            $page[$region] = $blocks;
         }
       }
     }
+  }
+
+  /**
+   * Block filter callback.
+   */
+  static function filter_is_block($value)
+  {
+    return is_array($value) && array_key_exists('#block', $value);
   }
 
   /**
+   * Sort callback.
+   */
+  static function block_sort_original_weight($a, $b) {
+    if ($a['#block']->weight == $b['#block']->weight)
+      return 0;
+    return $a['#block']->weight < $b['#block']->weight ? -1 : 1;
+  }
+   
+  /**
    * Return a list of enabled regions for which blocks should be built.
    * Split out into a separate method for easy overrides in extending classes.
    */
diff --git plugins/context_reaction_block.js plugins/context_reaction_block.js
index 6326afd..d7fc6ab 100644
--- plugins/context_reaction_block.js
+++ plugins/context_reaction_block.js
@@ -176,7 +176,7 @@
     $(this).addClass('draggable');
     $(this).prepend($('<a class="context-block-handle"></a>'));
     $(this).prepend($('<a class="context-block-remove"></a>').click(function() {
-      $(this).parents('div.block').eq(0).fadeOut('medium', function() {
+      $(this).parent ('.block').eq(0).fadeOut('medium', function() {
         $(this).remove();
         self.updateBlocks();
       });
@@ -196,7 +196,7 @@
   var browser = $('div.context-block-browser');
 
   // For all enabled blocks, mark corresponding addables as having been added.
-  $('div.block, div.admin-block').each(function() {
+  $('.block, .admin-block').each(function() {
     var bid = $(this).attr('id').split('block-')[1]; // Ugh.
     $('#context-block-addable-'+bid, browser).draggable('disable').addClass('context-block-added').removeClass('context-block-addable');
   });
@@ -210,7 +210,7 @@
 
   // Mark empty regions.
   $(this.regions).each(function() {
-    if ($('div.block:has(a.context-block)', this).size() > 0) {
+    if ($('.block:has(a.context-block)', this).size() > 0) {
       $(this).removeClass('context-block-region-empty');
     }
     else {
@@ -230,8 +230,8 @@
     case 'out':
       if (
         // jQuery UI 1.8
-        $('div.draggable-placeholder', region).size() === 1 &&
-        $('div.block:has(a.context-block)', region).size() == 0
+        $('.draggable-placeholder', region).size() === 1 &&
+        $('.block:has(a.context-block)', region).size() == 0
         // jQuery UI 1.6
         // $('div.draggable-placeholder', region).size() === 0 &&
         // $('div.block:has(a.context-block)', region).size() == 1 &&
@@ -326,13 +326,13 @@
   */
 DrupalContextBlockEditor.prototype.disableTextSelect = function() {
   if ($.browser.safari) {
-    $('div.block:has(a.context-block):not(:has(input,textarea))').css('WebkitUserSelect','none');
+    $('.block:has(a.context-block):not(:has(input,textarea))').css('WebkitUserSelect','none');
   }
   else if ($.browser.mozilla) {
-    $('div.block:has(a.context-block):not(:has(input,textarea))').css('MozUserSelect','none');
+    $('.block:has(a.context-block):not(:has(input,textarea))').css('MozUserSelect','none');
   }
   else if ($.browser.msie) {
-    $('div.block:has(a.context-block):not(:has(input,textarea))').bind('selectstart.contextBlockEditor', function() { return false; });
+    $('.block:has(a.context-block):not(:has(input,textarea))').bind('selectstart.contextBlockEditor', function() { return false; });
   }
   else {
     $(this).bind('mousedown.contextBlockEditor', function() { return false; });
@@ -370,7 +370,7 @@
   this.editor.addClass('context-editing');
 
   this.disableTextSelect();
-  this.initBlocks($('div.block:has(a.context-block.edit-'+context+')'));
+  this.initBlocks($('.block:has(a.context-block.edit-'+context+')'));
   this.initRegions($('a.context-block-region').parent());
   this.updateBlocks();
 
@@ -383,7 +383,7 @@
       dropOnEmpty: true,
       placeholder: 'draggable-placeholder',
       forcePlaceholderSize: true,
-      items: '> div.block:has(a.context-block.editable)',
+      items: '> .block:has(a.context-block.editable)',
       handle: 'a.context-block-handle',
       start: function(event, ui) { self.scriptFix(event, ui, editor, context); },
       stop: function(event, ui) { self.addBlock(event, ui, editor, context); },
