diff --git a/module/VuFind/src/VuFind/Search/WorldCat/Results.php b/module/VuFind/src/VuFind/Search/WorldCat/Results.php
index d3e1030a8ce17dd9b51cc434998de3ddd3244146..128d6f757b2da3980bef98a5d99d82d61e396b1c 100644
--- a/module/VuFind/src/VuFind/Search/WorldCat/Results.php
+++ b/module/VuFind/src/VuFind/Search/WorldCat/Results.php
@@ -48,7 +48,7 @@ class Results extends \VuFind\Search\Base\Results
     {
         $query  = $this->getParams()->getQuery();
         $limit  = $this->getParams()->getLimit();
-        $offset = $this->getStartRecord() - 1;
+        $offset = $this->getStartRecord();
         $params = $this->getParams()->getBackendParameters();
         $collection = $this->getSearchService()
             ->search('WorldCat', $query, $offset, $limit, $params);
diff --git a/module/VuFind/tests/unit-tests/src/VuFindTest/View/Helper/Root/CitationTest.php b/module/VuFind/tests/unit-tests/src/VuFindTest/View/Helper/Root/CitationTest.php
index 56424e39f0f42382cd420c09601dbd4f0041f42b..ecec433b6dd77090b64a260b58675a6e747692b7 100644
--- a/module/VuFind/tests/unit-tests/src/VuFindTest/View/Helper/Root/CitationTest.php
+++ b/module/VuFind/tests/unit-tests/src/VuFindTest/View/Helper/Root/CitationTest.php
@@ -185,7 +185,7 @@ class CitationTest extends \VuFindTest\Unit\ViewHelperTestCase
                 'ContainerStartPage' => 19,
                 'ContainerEndPage' => 21
             ),
-            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., Six, P., . . . Eight, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), 19-21.',
+            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., Six, P., . . . Eight, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), pp. 19-21.',
             'mla' => 'One, Person, et al. &quot;Test Article.&quot; <span style="font-style:italic;">Test Journal</span> 1.7 (1999): 19-21.'
         ),
         array(  // seven authors
@@ -199,7 +199,7 @@ class CitationTest extends \VuFindTest\Unit\ViewHelperTestCase
                 'ContainerStartPage' => 19,
                 'ContainerEndPage' => 21
             ),
-            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., Six, P., &amp; Seven, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), 19-21.',
+            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., Six, P., &amp; Seven, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), pp. 19-21.',
             'mla' => 'One, Person, et al. &quot;Test Article.&quot; <span style="font-style:italic;">Test Journal</span> 1.7 (1999): 19-21.'
         ),
         array(  // six authors
@@ -213,7 +213,7 @@ class CitationTest extends \VuFindTest\Unit\ViewHelperTestCase
                 'ContainerStartPage' => 19,
                 'ContainerEndPage' => 21
             ),
-            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., &amp; Six, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), 19-21.',
+            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., &amp; Six, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), pp. 19-21.',
             'mla' => 'One, Person, et al. &quot;Test Article.&quot; <span style="font-style:italic;">Test Journal</span> 1.7 (1999): 19-21.'
         ),
         array(  // two authors
@@ -227,7 +227,7 @@ class CitationTest extends \VuFindTest\Unit\ViewHelperTestCase
                 'ContainerStartPage' => 19,
                 'ContainerEndPage' => 21
             ),
-            'apa' => 'One, P., &amp; Two, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), 19-21.',
+            'apa' => 'One, P., &amp; Two, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), pp. 19-21.',
             'mla' => 'One, Person, and Person Two. &quot;Test Article.&quot; <span style="font-style:italic;">Test Journal</span> 1.7 (1999): 19-21.'
         ),
         array(  // one author
@@ -241,7 +241,7 @@ class CitationTest extends \VuFindTest\Unit\ViewHelperTestCase
                 'ContainerStartPage' => 19,
                 'ContainerEndPage' => 21
             ),
-            'apa' => 'One, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), 19-21.',
+            'apa' => 'One, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), pp. 19-21.',
             'mla' => 'One, Person. &quot;Test Article.&quot; <span style="font-style:italic;">Test Journal</span> 1.7 (1999): 19-21.'
         ),
         array(  // eight authors in "first name first" format.
@@ -255,7 +255,7 @@ class CitationTest extends \VuFindTest\Unit\ViewHelperTestCase
                 'ContainerStartPage' => 19,
                 'ContainerEndPage' => 21
             ),
-            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., Six, P., . . . Eight, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), 19-21.',
+            'apa' => 'One, P., Two, P., Three, P., Four, P., Five, P., Six, P., . . . Eight, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), pp. 19-21.',
             'mla' => 'One, Person, et al. &quot;Test Article.&quot; <span style="font-style:italic;">Test Journal</span> 1.7 (1999): 19-21.'
         ),
         array(  // DOI
@@ -270,7 +270,7 @@ class CitationTest extends \VuFindTest\Unit\ViewHelperTestCase
                 'ContainerEndPage' => 21,
                 'CleanDOI' => 'testDOI'
             ),
-            'apa' => 'One, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), 19-21. doi:testDOI',
+            'apa' => 'One, P. (1999). Test Article. <span style="font-style:italic;">Test Journal, 1</span>(7), pp. 19-21. doi:testDOI',
             'mla' => 'One, Person. &quot;Test Article.&quot; <span style="font-style:italic;">Test Journal</span> 1.7 (1999): 19-21.'
         )
         // @codingStandardsIgnoreEnd
diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/Pazpar2/Response/RecordCollection.php b/module/VuFindSearch/src/VuFindSearch/Backend/Pazpar2/Response/RecordCollection.php
index 909a3e6d00fe141b620c179cb439ff3a407bc79e..5130ce0e3507179ca7e86eb38c428d4911e575d2 100644
--- a/module/VuFindSearch/src/VuFindSearch/Backend/Pazpar2/Response/RecordCollection.php
+++ b/module/VuFindSearch/src/VuFindSearch/Backend/Pazpar2/Response/RecordCollection.php
@@ -83,14 +83,4 @@ class RecordCollection extends AbstractRecordCollection
     {
         return array();
     }
-
-    /**
-     * Return offset in the total search result set.
-     *
-     * @return int
-     */
-    public function getOffset()
-    {
-        return $this->offset;
-    }
 }
\ No newline at end of file
diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Response/Json/RecordCollection.php b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Response/Json/RecordCollection.php
index 65dd5c7f7c0f8bc3b26d4fba02b00c3d713193d3..d9a6593ee0e467901ea7a2337b3d7fc75e9b59ca 100644
--- a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Response/Json/RecordCollection.php
+++ b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Response/Json/RecordCollection.php
@@ -87,6 +87,7 @@ class RecordCollection extends AbstractRecordCollection
     public function __construct(array $response)
     {
         $this->response = array_replace_recursive(static::$template, $response);
+        $this->offset = $this->response['response']['start'];
         $this->rewind();
     }
 
@@ -154,14 +155,4 @@ class RecordCollection extends AbstractRecordCollection
         return isset($this->response['highlighting'])
             ? $this->response['highlighting'] : array();
     }
-
-    /**
-     * Return offset in the total search result set.
-     *
-     * @return int
-     */
-    public function getOffset()
-    {
-        return $this->response['response']['start'];
-    }
 }
\ No newline at end of file
diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/Summon/Response/RecordCollection.php b/module/VuFindSearch/src/VuFindSearch/Backend/Summon/Response/RecordCollection.php
index b93386134481de1ddbfab352d8975346f33b9160..c74c5d1be3644d6464a8cbb1279bcbd647b3e7c1 100644
--- a/module/VuFindSearch/src/VuFindSearch/Backend/Summon/Response/RecordCollection.php
+++ b/module/VuFindSearch/src/VuFindSearch/Backend/Summon/Response/RecordCollection.php
@@ -59,6 +59,14 @@ class RecordCollection extends AbstractRecordCollection
     public function __construct(array $response)
     {
         $this->response = $response;
+
+        // Determine the offset:
+        $page = isset($this->response['query']['pageNumber'])
+            ? $this->response['query']['pageNumber'] - 1 : 0;
+        $size = isset($this->response['query']['pageSize'])
+            ? $this->response['query']['pageSize'] : 0;
+        $this->offset = $page * $size;
+
         $this->rewind();
     }
 
@@ -83,20 +91,6 @@ class RecordCollection extends AbstractRecordCollection
             ? $this->response['facetFields'] : array();
     }
 
-    /**
-     * Return offset in the total search result set.
-     *
-     * @return int
-     */
-    public function getOffset()
-    {
-        $page = isset($this->response['query']['pageNumber'])
-            ? $this->response['query']['pageNumber'] - 1 : 0;
-        $size = isset($this->response['query']['pageSize'])
-            ? $this->response['query']['pageSize'] : 0;
-        return $page * $size;
-    }
-
     /**
      * Get spelling suggestions.
      *
diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/WorldCat/Response/XML/RecordCollection.php b/module/VuFindSearch/src/VuFindSearch/Backend/WorldCat/Response/XML/RecordCollection.php
index 228b8b6bfb56250dcad010cde9c2b63133629bd8..a42c8db2647395e4c8c70e30c83ce0c0451c82d5 100644
--- a/module/VuFindSearch/src/VuFindSearch/Backend/WorldCat/Response/XML/RecordCollection.php
+++ b/module/VuFindSearch/src/VuFindSearch/Backend/WorldCat/Response/XML/RecordCollection.php
@@ -59,6 +59,7 @@ class RecordCollection extends AbstractRecordCollection
     public function __construct(array $response)
     {
         $this->response = $response;
+        $this->offset = $this->response['offset'];
         $this->rewind();
     }
 
@@ -81,14 +82,4 @@ class RecordCollection extends AbstractRecordCollection
     {
         return array(); // not supported by WorldCat
     }
-
-    /**
-     * Return offset in the total search result set.
-     *
-     * @return int
-     */
-    public function getOffset()
-    {
-        return $this->response['offset'];
-    }
 }
\ No newline at end of file
diff --git a/module/VuFindSearch/src/VuFindSearch/Query/AbstractQuery.php b/module/VuFindSearch/src/VuFindSearch/Query/AbstractQuery.php
index 3a7f37247fb9c531abad6bd0d69476bb8c420a0b..417351b6f2c67d9154baf532381e04b57ac29497 100644
--- a/module/VuFindSearch/src/VuFindSearch/Query/AbstractQuery.php
+++ b/module/VuFindSearch/src/VuFindSearch/Query/AbstractQuery.php
@@ -38,31 +38,6 @@ namespace VuFindSearch\Query;
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org
  */
-abstract class AbstractQuery
+abstract class AbstractQuery implements QueryInterface
 {
-    /**
-     * Does the query contain the specified term?
-     *
-     * @param string $needle Term to check
-     *
-     * @return bool
-     */
-    abstract public function containsTerm($needle);
-
-    /**
-     * Get a concatenated list of all query strings within the object.
-     *
-     * @return string
-     */
-    abstract public function getAllTerms();
-
-    /**
-     * Replace a term.
-     *
-     * @param string $from Search term to find
-     * @param string $to   Search term to insert
-     *
-     * @return void
-     */
-    abstract public function replaceTerm($from, $to);
 }
\ No newline at end of file
diff --git a/module/VuFindSearch/src/VuFindSearch/Query/QueryInterface.php b/module/VuFindSearch/src/VuFindSearch/Query/QueryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..17721e5a1572db7abb21e467d4b7d5a4f02ae65a
--- /dev/null
+++ b/module/VuFindSearch/src/VuFindSearch/Query/QueryInterface.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * Common methods that must be shared by all query objects.
+ *
+ * PHP version 5
+ *
+ * Copyright (C) Villanova University 2010.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @category VuFind2
+ * @package  Search
+ * @author   David Maus <maus@hab.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @link     http://vufind.org
+ */
+
+namespace VuFindSearch\Query;
+
+/**
+ * Common methods that must be shared by all query objects.
+ *
+ * @category VuFind2
+ * @package  Search
+ * @author   David Maus <maus@hab.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @link     http://vufind.org
+ */
+interface QueryInterface
+{
+    /**
+     * Does the query contain the specified term?
+     *
+     * @param string $needle Term to check
+     *
+     * @return bool
+     */
+    public function containsTerm($needle);
+
+    /**
+     * Get a concatenated list of all query strings within the object.
+     *
+     * @return string
+     */
+    public function getAllTerms();
+
+    /**
+     * Replace a term.
+     *
+     * @param string $from Search term to find
+     * @param string $to   Search term to insert
+     *
+     * @return void
+     */
+    public function replaceTerm($from, $to);
+}
\ No newline at end of file
diff --git a/module/VuFindSearch/src/VuFindSearch/Response/AbstractRecordCollection.php b/module/VuFindSearch/src/VuFindSearch/Response/AbstractRecordCollection.php
index c5ff69992973b17808054765958c49d3090e9ccf..05639e374ceb6a4b87657fa70e600303a850f83e 100644
--- a/module/VuFindSearch/src/VuFindSearch/Response/AbstractRecordCollection.php
+++ b/module/VuFindSearch/src/VuFindSearch/Response/AbstractRecordCollection.php
@@ -65,7 +65,7 @@ abstract class AbstractRecordCollection implements RecordCollectionInterface
     protected $pointer = 0;
 
     /**
-     * Zero-based offset in complete search resul.
+     * Zero-based offset in complete search result.
      *
      * @var int
      */
@@ -91,6 +91,16 @@ abstract class AbstractRecordCollection implements RecordCollectionInterface
         return isset($this->records[0]) ? $this->records[0] : null;
     }
 
+    /**
+     * Return offset in the total search result set.
+     *
+     * @return int
+     */
+    public function getOffset()
+    {
+        return $this->offset;
+    }
+
     /**
      * Set the source backend identifier.
      *
@@ -177,7 +187,7 @@ abstract class AbstractRecordCollection implements RecordCollectionInterface
      */
     public function key()
     {
-        return $this->pointer + $this->offset;
+        return $this->pointer + $this->getOffset();
     }
 
     /// Countable interface
diff --git a/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Backend/Solr/Response/Json/RecordCollectionTest.php b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Backend/Solr/Response/Json/RecordCollectionTest.php
index 60c8b2a1edf8ef17dd1d46c0656e4691ac79b6fd..a90cc2bc51462b4ed2d66218548b604ccdbdb979 100644
--- a/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Backend/Solr/Response/Json/RecordCollectionTest.php
+++ b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Backend/Solr/Response/Json/RecordCollectionTest.php
@@ -64,4 +64,25 @@ class RecordCollectionTest extends PHPUnit_Framework_TestCase
         $this->assertEquals(array(), $coll->getHighlighting());
         $this->assertEquals(0, $coll->getOffset());
     }
+
+    /**
+     * Test that the object handles offsets properly.
+     *
+     * @return void
+     */
+    public function testOffsets()
+    {
+        $coll = new RecordCollection(
+            array(
+                'response' => array('numFound' => 10, 'start' => 5)
+            )
+        );
+        for ($i = 0; $i < 5; $i++) {
+            $coll->add($this->getMock('VuFindSearch\Response\RecordInterface'));
+        }
+        $coll->rewind();
+        $this->assertEquals(5, $coll->key());
+        $coll->next();
+        $this->assertEquals(6, $coll->key());
+    }
 }
\ No newline at end of file
diff --git a/module/VuFindSearch/tests/unit-tests/src/VuFindTest/ParamBagTest.php b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/ParamBagTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0224e06883a84240c4545ab683cc03f702b0b17a
--- /dev/null
+++ b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/ParamBagTest.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * Unit tests for ParamBag.
+ *
+ * PHP version 5
+ *
+ * Copyright (C) Villanova University 2010.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @category VuFind2
+ * @package  Search
+ * @author   David Maus <maus@hab.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @link     http://vufind.org
+ */
+
+namespace VuFindTest;
+
+use VuFindSearch\ParamBag;
+
+use PHPUnit_Framework_TestCase as TestCase;
+
+/**
+ * Unit tests for ParamBag.
+ *
+ * @category VuFind2
+ * @package  Search
+ * @author   David Maus <maus@hab.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @link     http://vufind.org
+ */
+class ParamBagTest extends TestCase
+{
+    /**
+     * Test "remove"
+     *
+     * @return void
+     */
+    public function testRemove()
+    {
+        $bag = new ParamBag();
+        $bag->set('foo', 'bar');
+        $bag->set('bar', 'baz');
+        $bag->remove('foo');
+        $this->assertEquals(array('bar' => array('baz')), $bag->getArrayCopy());
+    }
+
+    /**
+     * Test "merge with all"
+     *
+     * @return void
+     */
+    public function testMergeWithAll()
+    {
+        $bag1 = new ParamBag(array('a' => 1));
+        $bag2 = new ParamBag(array('b' => 2));
+        $bag3 = new ParamBag(array('c' => 3));
+        $bag3->mergeWithAll(array($bag1, $bag2));
+        $this->assertEquals(array('a' => array(1), 'b' => array(2), 'c' => array(3)), $bag3->getArrayCopy());
+    }
+}
\ No newline at end of file
diff --git a/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryGroupTest.php b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryGroupTest.php
index 79dd7f4e9fbe4731e03acd36072e1a88edce0a41..799c3dc52edcc468608a8382c46644f25a456655 100644
--- a/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryGroupTest.php
+++ b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryGroupTest.php
@@ -51,10 +51,7 @@ class QueryGroupTest extends PHPUnit_Framework_TestCase
      */
     public function testContainsTerm()
     {
-        $q1 = new Query('test');
-        $q2 = new Query('query');
-        $q3 = new Query('multi word query');
-        $q = new QueryGroup('OR', array($q1, $q2, $q3));
+        $q = $this->getSampleQueryGroup();
 
         // Should report true for actual contained terms:
         $this->assertTrue($q->containsTerm('test'));
@@ -75,10 +72,7 @@ class QueryGroupTest extends PHPUnit_Framework_TestCase
      */
     public function testGetAllTerms()
     {
-        $q1 = new Query('test');
-        $q2 = new Query('query');
-        $q3 = new Query('multi word query');
-        $q = new QueryGroup('OR', array($q1, $q2, $q3));
+        $q = $this->getSampleQueryGroup();
         $this->assertEquals('test query multi word query', $q->getAllTerms());
     }
 
@@ -89,10 +83,7 @@ class QueryGroupTest extends PHPUnit_Framework_TestCase
      */
     public function testReplaceTerm()
     {
-        $q1 = new Query('test');
-        $q2 = new Query('query');
-        $q3 = new Query('multi word query');
-        $q = new QueryGroup('OR', array($q1, $q2, $q3));
+        $q = $this->getSampleQueryGroup();
         $q->replaceTerm('query', 'question');
         $this->assertEquals('test question multi word question', $q->getAllTerms());
     }
@@ -104,10 +95,7 @@ class QueryGroupTest extends PHPUnit_Framework_TestCase
      */
     public function testClone()
     {
-        $q1 = new Query('test');
-        $q2 = new Query('query');
-        $q3 = new Query('multi word query');
-        $q = new QueryGroup('OR', array($q1, $q2, $q3));
+        $q = $this->getSampleQueryGroup();
         $qClone = clone($q);
         $q->replaceTerm('query', 'question');
         $qClone->setOperator('AND');
@@ -116,4 +104,44 @@ class QueryGroupTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('test query multi word query', $qClone->getAllTerms());
         $this->assertEquals('AND', $qClone->getOperator());
     }
+
+    /**
+     * Test setting/clearing of reduced handler.
+     *
+     * @return void
+     */
+    public function testReducedHandler()
+    {
+        $q = $this->getSampleQueryGroup();
+        $q->setReducedHandler('foo');
+        $this->assertEquals('foo', $q->getReducedHandler());
+        $q->unsetReducedHandler();
+        $this->assertEquals(null, $q->getReducedHandler());
+    }
+
+    /**
+     * Test setting an invalid operator.
+     *
+     * @return void
+     * @expectedException VuFindSearch\Exception\InvalidArgumentException
+     * @expectedExceptionMessage Unknown or invalid boolean operator: fizz
+     */
+    public function testIllegalOperator()
+    {
+        $q = $this->getSampleQueryGroup();
+        $q->setOperator('fizz');
+    }
+
+    /**
+     * Get a test object.
+     *
+     * @return QueryGroup
+     */
+    protected function getSampleQueryGroup()
+    {
+        $q1 = new Query('test');
+        $q2 = new Query('query');
+        $q3 = new Query('multi word query');
+        return new QueryGroup('OR', array($q1, $q2, $q3));
+    }
 }
diff --git a/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryTest.php b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryTest.php
index 076dcb6011f13b750ee5ba48f284ddbd395cf198..994028757e32f8178bd01036d75b03f6a669ea0a 100644
--- a/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryTest.php
+++ b/module/VuFindSearch/tests/unit-tests/src/VuFindTest/Query/QueryTest.php
@@ -62,4 +62,16 @@ class QueryTest extends PHPUnit_Framework_TestCase
         // Should not contain a partial term (matches on word boundaries):
         $this->assertFalse($q->containsTerm('tes'));
     }
+
+    /**
+     * Test setHandler() method
+     *
+     * @return void
+     */
+    public function testSetHandler()
+    {
+        $q = new Query('foo', 'bar');
+        $q->setHandler('baz');
+        $this->assertEquals('baz', $q->getHandler());
+    }
 }
diff --git a/themes/bootstrap/js/lightbox.js b/themes/bootstrap/js/lightbox.js
index 0e5ced1d949870a9e84fd3d67d5ad46b56c84d36..e00ed1a580fc62ca4da34f65b7c6c47a4cec4632 100644
--- a/themes/bootstrap/js/lightbox.js
+++ b/themes/bootstrap/js/lightbox.js
@@ -281,7 +281,7 @@ function ajaxLogin(form) {
                 // If summon, queue reload
                 $('.hiddenSource').each(function(i, e) {
                   if(e.value == 'Summon') {
-                    closeAction = function(){document.location.reload(true)};
+                    closeAction = function(){document.location.reload(true);};
                   }
                 });
                 getLightboxByUrl(lastLightboxURL, lastLightboxPOST);
@@ -418,8 +418,6 @@ $(document).ready(function() {
   $('#loginOptions a').click(function() {
     return getLightbox('MyResearch','Login',{},{'loggingin':true});
   });
-  // Tag lightbox
-  
   // Tag lightbox
   $('#tagRecord').click(function() {
     var id = $('.hiddenId')[0].value;