diff --git a/context_reaction_esi_block.inc b/context_reaction_esi_block.inc
deleted file mode 100644
index 7fd58e9..0000000
--- a/context_reaction_esi_block.inc
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * @file
- *   Context module esi code.
- */
-
-class context_reaction_esi_block extends context_reaction_block {
-  protected function build_block($block, $reset = FALSE) {
-    require_once(drupal_get_path('module', 'esi') . '/esi.inc');
-    $config = esi_get_settings($block->module . '_' . $block->delta);
-
-    if ($config['scope'] && variable_get('esi_mode', ESI_MODE)) {
-      $block->content = theme('esi_tag', $block);
-    }
-    else {
-      $array = module_invoke($block->module, 'block', 'view', $block->delta);
-      if (isset($array) && is_array($array)) {
-        foreach ($array as $k => $v) {
-          $block->$k = $v;
-        }
-      }
-    }
-
-    if (!empty($block->content)) {
-      // Only query for custom block title if block core compatibility is enabled.
-      if (!variable_get('context_reaction_block_disable_core', FALSE)) {
-        global $user, $theme_key;
-        $block->title = db_result(db_query("SELECT title FROM {blocks} WHERE module = '%s' AND delta = '%s' AND theme = '%s'", $block->module, $block->delta, $theme_key));
-      }
-      // Override default block title if a custom display title is present.
-      if (!empty($block->title)) {
-        // Check plain here to allow module generated titles to keep any markup.
-        $block->subject = $block->title == '<none>' ? '' : check_plain($block->title);
-      }
-      if (!isset($block->subject)) {
-        $block->subject = '';
-      }
-    }
-    return $block;
-  }
-}
diff --git a/docs/default_3.0.vcl b/docs/default_3.0.vcl
index 3632594..61902bd 100644
--- a/docs/default_3.0.vcl
+++ b/docs/default_3.0.vcl
@@ -33,7 +33,3 @@ sub vcl_fetch {
 
   call esi_block__fetch;
 }
-
-
-
-
diff --git a/docs/esi_blocks_3.0.vcl b/docs/esi_blocks_3.0.vcl
index d088e23..937d19b 100644
--- a/docs/esi_blocks_3.0.vcl
+++ b/docs/esi_blocks_3.0.vcl
@@ -17,7 +17,7 @@ sub esi_block__hash {
           regsub( req.http.Cookie, "^.*?SESS(.{32})=([^;]*);*.*$", "\1\2" );
 
         # add the session info to the hash.
-        
+
         # 3.0
         hash_data(req.http.X-SESSION-ID);
         # 2.x
@@ -33,7 +33,7 @@ sub esi_block__hash {
           regsub( req.http.Cookie, "^.*?RSESS(.{32})=([^;]*);*.*$", "\1\2" );
 
         # add the session info to the hash.
-        
+
         # 3.0
         hash_data(req.http.X-ROLE-SESSION-ID);
         # 2.x
@@ -52,7 +52,7 @@ sub esi_block__recv {
   # The URL structure of ESI blocks identifies which are per-user or per-role.
   # e.g. /esi/block/garland:left:foo:bar/node%2F1/CACHE=USER
   # Add a header to show if we're using a particular cache strategy.
-  if( req.url ~ "^/esi/block" ) {
+  if ((req.url ~ "^/esi/block" ) || (req.url ~ "^/esi/panels_pane" )) {
 
     # look for a cache instruction. This should be the final argument to the URL
     # and should have the value 'USER' or 'ROLE'.
@@ -85,7 +85,7 @@ sub esi_block__recv {
 sub esi_block__fetch {
   # ESI blocks with per-user or per-role config have a cache-control: private
   # header.  This removes the header and inserts the block into the cache.
-  
+
   # 3.0
   if( beresp.http.Cache-Control ~ "private" ) {
     unset beresp.http.Set-Cookie;
diff --git a/plugins/context_reaction_esi_block.inc b/plugins/context_reaction_esi_block.inc
new file mode 100644
index 0000000..117eecc
--- /dev/null
+++ b/plugins/context_reaction_esi_block.inc
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @file
+ *   Context module esi code.
+ */
+
+class context_reaction_esi_block extends context_reaction_block {
+  protected function build_block($block, $reset = FALSE) {
+    require_once(drupal_get_path('module', 'esi') . '/esi.inc');
+    $config = esi_get_settings($block->module . '_' . $block->delta);
+
+    if ($config['scope'] && variable_get('esi_mode', ESI_MODE)) {
+      $block->content = theme('esi_tag', 'block', $block);
+    }
+    else {
+      $array = module_invoke($block->module, 'block', 'view', $block->delta);
+      if (isset($array) && is_array($array)) {
+        foreach ($array as $k => $v) {
+          $block->$k = $v;
+        }
+      }
+    }
+
+    if (!empty($block->content)) {
+      // Only query for custom block title if block core compatibility is enabled.
+      if (!variable_get('context_reaction_block_disable_core', FALSE)) {
+        global $user, $theme_key;
+        $block->title = db_result(db_query("SELECT title FROM {blocks} WHERE module = '%s' AND delta = '%s' AND theme = '%s'", $block->module, $block->delta, $theme_key));
+      }
+      // Override default block title if a custom display title is present.
+      if (!empty($block->title)) {
+        // Check plain here to allow module generated titles to keep any markup.
+        $block->subject = $block->title == '<none>' ? '' : check_plain($block->title);
+      }
+      if (!isset($block->subject)) {
+        $block->subject = '';
+      }
+    }
+    return $block;
+  }
+}
