diff --git a/dfp.admin.inc b/dfp.admin.inc
index 9db8d63..b605f33 100644
--- a/dfp.admin.inc
+++ b/dfp.admin.inc
@@ -420,12 +420,25 @@ function theme_dfp_adsense_color_settings($variables) {
   return $output;
 }
 
+/**
+ * Theme function for the "size" context reaction form.
+ */
+function theme_dfp_size_settings($variables) {
+  $form = $variables['form'];
 
+  $headers = array(t('Ad Slot'), t('Size Override'));
+  $rows = array();
+  $caption = t('You can override the size(s) of the ad slot for this context by entering the new size(s) below. Leave the field blank if the size should not be overridden.');
 
+  $children = element_children($form);
+  $last = array_pop($children);
 
-
-
-
-
-
+  foreach (element_children($form) as $key) {
+    if ($key != $last) {
+      unset($form[$key]['#description']);
+    }
+    $rows[] = array($form[$key]['#title'], drupal_render($form[$key]));
+  }
+  return theme('table', array('header' => $headers, 'rows' => $rows, 'caption' => $caption));
+}
 
diff --git a/dfp.module b/dfp.module
index 768ade0..bd0d858 100644
--- a/dfp.module
+++ b/dfp.module
@@ -52,6 +52,10 @@ function dfp_theme($existing, $type, $theme, $path) {
       'render element' => 'form',
       'file' => 'dfp.admin.inc',
     ),
+    'dfp_size_settings' => array(
+      'render element' => 'form',
+      'file' => 'dfp.admin.inc',
+    ),
   );
 
   return $theme_hooks;
@@ -189,13 +193,17 @@ function dfp_context_registry() {
         'plugin' => 'dfp_context_reaction_tags',
       ),
       'dfp_settings' => array(
-        'title' => t('DFP Settings'),
+        'title' => t('DFP Variables'),
         'plugin' => 'dfp_context_reaction_settings',
       ),
       'dfp_adunit' => array(
         'title' => t('DFP AdUnit'),
         'plugin' => 'dfp_context_reaction_adunit',
       ),
+      'dfp_adsize' => array(
+        'title' => t('DFP Sizes'),
+        'plugin' => 'dfp_context_reaction_sizes',
+      ),
     ),
   );
 }
@@ -229,6 +237,14 @@ function dfp_context_plugins() {
       'parent' => 'context_reaction',
     ),
   );
+  $plugins['dfp_context_reaction_sizes'] = array(
+    'handler' => array(
+      'path' => drupal_get_path('module', 'dfp') . '/plugins/contexts',
+      'file' => 'dfp_context_reaction_sizes.inc',
+      'class' => 'dfp_context_reaction_sizes',
+      'parent' => 'context_reaction',
+    ),
+  );
   return $plugins;
 }
 
@@ -455,19 +471,13 @@ function dfp_tag_save(&$tag) {
  * Alter a dfp tag object to integrate with the contexts module.
  */
 function dfp_dfp_tag_load_alter(&$tag) {
+  // Execute context reactions for each plugin.
   if (module_exists('context')) {
-    // Hide the tag based on the current context.
-    if ($plugin = context_get_plugin('reaction', 'dfp_tags')) {
-      $plugin->execute($tag);
-    }
-    // Override the tag's settings based on the current context. This must
-    // come after settings is unserialized.
-    if ($plugin = context_get_plugin('reaction', 'dfp_settings')) {
-      $plugin->execute($tag);
-    }
-    // Override the adunit tag based on the current context.
-    if ($plugin = context_get_plugin('reaction', 'dfp_adunit')) {
-      $plugin->execute($tag);
+    $contexts = dfp_context_registry();
+    foreach ($contexts['reactions'] as $key => $val) {
+      if ($plugin = context_get_plugin('reaction', $key)) {
+        $plugin->execute($tag);
+      }
     }
   }
 
diff --git a/plugins/contexts/dfp_context_reaction_adunit.inc b/plugins/contexts/dfp_context_reaction_adunit.inc
index a37acd8..bd67740 100644
--- a/plugins/contexts/dfp_context_reaction_adunit.inc
+++ b/plugins/contexts/dfp_context_reaction_adunit.inc
@@ -61,11 +61,11 @@ class dfp_context_reaction_adunit extends context_reaction {
     // machinename should be overridden or not.
     foreach ($this->get_contexts() as $context_name => $context) {
       if (isset($context->reactions['dfp_adunit'])) {
-	$tags = $context->reactions['dfp_adunit']['adunit_override_tags'];
-	if (isset($tags[$tag->machinename]) && !empty($tags[$tag->machinename])) {
-	  $tag->adunit = $context->reactions['dfp_adunit']['adunit_override'];
-	}
-	break;
+      $tags = $context->reactions['dfp_adunit']['adunit_override_tags'];
+      if (isset($tags[$tag->machinename]) && !empty($tags[$tag->machinename])) {
+        $tag->adunit = $context->reactions['dfp_adunit']['adunit_override'];
+      }
+      break;
       }
     }
   }
diff --git a/plugins/contexts/dfp_context_reaction_settings.inc b/plugins/contexts/dfp_context_reaction_settings.inc
index 29460db..f4ccf40 100644
--- a/plugins/contexts/dfp_context_reaction_settings.inc
+++ b/plugins/contexts/dfp_context_reaction_settings.inc
@@ -6,7 +6,7 @@
  */
 
 /**
- * Expose DART site & zone settings as context reactions.
+ * Expose DFP variables as context reactions.
  */
 class dfp_context_reaction_settings extends context_reaction {
   /**
diff --git a/plugins/contexts/dfp_context_reaction_sizes.inc b/plugins/contexts/dfp_context_reaction_sizes.inc
new file mode 100644
index 0000000..6968886
--- /dev/null
+++ b/plugins/contexts/dfp_context_reaction_sizes.inc
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * @file
+ * Context reaction plugin for DFP ads.
+ */
+
+/**
+ * Expose DFP tags as context reactions.
+ */
+class dfp_context_reaction_sizes extends context_reaction {
+  /**
+   * Allow admins to choose what DFP adunit to override.
+   */
+  function options_form($context) {
+    $form = array(
+      '#theme' => 'dfp_size_settings',
+    );
+
+    // Get existing values for this form.
+    $values = $this->fetch_from_context($context);
+
+    // Get a list of all DART tags.
+    $tags = dfp_tag_load_all();
+    foreach ($tags as $tag) {
+      $form[$tag->machinename . '_size'] = array(
+        '#type' => 'textfield',
+        '#title' => $tag->slot,
+        '#title_display' => 'invisible',
+        '#description' => t('Example: 300x600,300x250'),
+        '#default_value' => isset($values[$tag->machinename . '_size']) ? $values[$tag->machinename . '_size'] : '',
+      );
+    }
+
+    return $form;
+  }
+
+  /**
+   * override all tags based on context.
+   */
+  function execute(&$tag) {
+    // Check each currently set context to see if the DART tag specified by
+    // machinename should be overridden or not.
+    foreach ($this->get_contexts() as $context_name => $context) {
+      $new_size = isset($context->reactions['dfp_adsize'][$tag->machinename . '_size']) ? $context->reactions['dfp_adsize'][$tag->machinename . '_size'] : '';
+      $tag->size = !empty($new_size) ? $new_size : $tag->size;
+    }
+  }
+}
