diff --git a/plugins/facetapi/adapter.inc b/plugins/facetapi/adapter.inc
index f6bfe0e..d10263d 100644
--- a/plugins/facetapi/adapter.inc
+++ b/plugins/facetapi/adapter.inc
@@ -77,7 +77,7 @@ abstract class FacetapiAdapter {
   /**
    * Define the array key in the params that is used for filters.
    */
-  const FILTER_KEY = 'f';
+  protected $filterKey = 'f';
 
   /**
    * Constructor, sets searcher and type of content being indexed.
@@ -98,6 +98,28 @@ abstract class FacetapiAdapter {
   }
 
   /**
+   * Sets the filter key.
+   *
+   * @param $filter_key
+   *   The array key in FacetapiAdapter::$params corresponding to filters.
+   *   FacetapiAdapter::$params[$filter_key] must be an array.
+   *
+   * @return FacetapiAdapter
+   *   An instance of this class.
+   */
+  public function setFilterKey($filter_key) {
+    $this->filterKey = $filter_key;
+    return $this;
+  }
+
+  /**
+   * Returns the filter key.
+   */
+  public function getFilterKey() {
+    return $this->filterKey;
+  }
+
+  /**
    * Returns a boolean flagging whether $this->info['searcher'] executed a search.
    *
    * @return
@@ -134,8 +156,8 @@ abstract class FacetapiAdapter {
 
     // We never want to use 'q' or 'page' params.
     $this->params = drupal_get_query_parameters($params, array('q', 'page'));
-    if (!isset($this->params[self::FILTER_KEY])) {
-      $this->params[self::FILTER_KEY] = array();
+    if (!isset($this->params[$this->filterKey])) {
+      $this->params[$this->filterKey] = array();
     }
 
     // Processes active items, returns this class.
@@ -157,7 +179,7 @@ abstract class FacetapiAdapter {
     }
 
     // Extracts valid filters from query string.
-    foreach ($this->params[self::FILTER_KEY] as $pos => $filter) {
+    foreach ($this->params[$this->filterKey] as $pos => $filter) {
       // Bails if an object or array.
       if (!is_scalar($filter)) {
         continue;
@@ -505,7 +527,7 @@ abstract class FacetapiAdapter {
 
     // Initializes base breadcrumb query.
     $query = $this->params;
-    unset($query[self::FILTER_KEY]);
+    unset($query[$this->filterKey]);
 
     // Adds the current search to the query.
     if ($keys) {
@@ -516,7 +538,7 @@ abstract class FacetapiAdapter {
     // Adds filters to the breadcrumb trail.
     $last = end($active_items);
     foreach ($active_items as $item) {
-      $query[self::FILTER_KEY][] = $item['field alias'] . ':' . $item['value'];
+      $query[$this->filterKey][] = $item['field alias'] . ':' . $item['value'];
 
       // Replaces with the mapped value.
       $value = $this->getMappedValue($item['facets'][0], $item['value']);
@@ -536,6 +558,40 @@ abstract class FacetapiAdapter {
   }
 
   /**
+   * Helper function that returns the query string variables for a facet item.
+   *
+   * @param array $facet
+   *   The facet definition.
+   * @param array $values
+   *   An array containing the item's values being added to or removed from the
+   *   query string dependent on whether or not the item is active.
+   * @param int $active
+   *   An integer flagging whether the item is active or not.
+   *
+   * @return array
+   *   The query string vriables.
+   */
+  public function getQueryString(array $facet, array $values, $active) {
+    $qstring = $this->params;
+    $active_items = $this->getActiveItems($facet);
+
+    // Appends to qstring if inactive, removes if inactive.
+    foreach ($values as $value) {
+      if ($active && isset($active_items[$value])) {
+        unset($qstring[$this->filterKey][$active_items[$value]['pos']]);
+      }
+      elseif (!$active) {
+        $field_alias = drupal_encode_path($facet['field alias']);
+        $qstring[$this->filterKey][] = $field_alias . ':' . $value;
+      }
+    }
+
+    // Resets array keys, returns query string.
+    $qstring[$this->filterKey] = array_values($qstring[$this->filterKey]);
+    return array_filter($qstring);
+  }
+
+  /**
    * Builds the content for the current search block.
    *
    * @return array
@@ -613,9 +669,8 @@ abstract class FacetapiAdapter {
 
       // Initializes each facet's render array.
       foreach ($this->getEnabledFacets() as $facet) {
-        $this->processors[$facet['name']] = new FacetapiFacetProcessor(
-          $this->getFacet($facet), self::FILTER_KEY
-        );
+        $processor = new FacetapiFacetProcessor($this->getFacet($facet));
+        $this->processors[$facet['name']] = $processor;
         $this->processors[$facet['name']]->process();
       }
 
@@ -1011,13 +1066,6 @@ class FacetapiFacetProcessor {
   protected $facet;
 
   /**
-   * The key in $params corresponding to filters.
-   *
-   * @var string
-   */
-  protected $filterKey;
-
-  /**
    * The facet's initialized render array.
    *
    * @var array
@@ -1035,15 +1083,11 @@ class FacetapiFacetProcessor {
    * Constructor, initializes render array.
    *
    * @param FacetapiFacet $facet
-   *
-   * @param $filter_key
-   *   The array key in $params corresponding to filters. $params[$filter_key]
-   *   must be an array.
+   *   The facet being processed.
    *
    */
-  public function __construct(FacetapiFacet $facet, $filter_key) {
+  public function __construct(FacetapiFacet $facet) {
     $this->facet = $facet;
-    $this->filterKey = $filter_key;
   }
 
   /**
@@ -1254,24 +1298,9 @@ class FacetapiFacetProcessor {
    *   An array containing the query string variables.
    */
   public function getQueryString(array $values, $active) {
-    $adapter = $this->facet->getAdapter();
-    $qstring = $adapter->getParams();
-    $active_items = $adapter->getActiveItems($this->facet->getFacet());
-
-    // Appends to qstring if inactive, removes if inactive.
-    foreach ($values as $value) {
-      if ($active && isset($active_items[$value])) {
-        unset($qstring[$this->filterKey][$active_items[$value]['pos']]);
-      }
-      elseif (!$active) {
-        $field_alias = drupal_encode_path($this->facet['field alias']);
-        $qstring[$this->filterKey][] = $field_alias . ':' . $value;
-      }
-    }
-
-    // Resets array keys, returns query string.
-    $qstring[$this->filterKey] = array_values($qstring[$this->filterKey]);
-    return array_filter($qstring);
+    return $this->facet
+      ->getAdapter()
+      ->getQueryString($this->facet->getFacet(), $values, $active);
   }
 }
 
