diff --git a/lib/geocoder/configuration.rb b/lib/geocoder/configuration.rb
index 9ab57b46a181dfd6a91495008ff857a47fb23a20..7c0fbe28360de353e7439d14234c40d065855932 100644
--- a/lib/geocoder/configuration.rb
+++ b/lib/geocoder/configuration.rb
@@ -55,29 +55,5 @@ module Geocoder
       END
     end
 
-    def self.test_mode=(test_mode)
-      if test_mode
-        @original_lookup = lookup
-        self.lookup = :test
-      else
-        self.lookup = @original_lookup
-      end
-    end
-
-    def self.add_stub(query, results)
-      stubs[query] = results
-    end
-
-    def self.read_stub(query)
-      stubs.fetch(query) { raise ArgumentError, "unknown stub request #{query}" }
-    end
-
-    def self.stubs
-      @stubs ||= {}
-    end
-
-    def self.reset_stubs
-      @stubs = {}
-    end
   end
 end
diff --git a/lib/geocoder/lookups/test.rb b/lib/geocoder/lookups/test.rb
index c9aed395c96f13c25e0deb46b6745149526f526b..e06171c9dbc96a4ce03a54b2832c7262efa95b33 100644
--- a/lib/geocoder/lookups/test.rb
+++ b/lib/geocoder/lookups/test.rb
@@ -5,10 +5,26 @@ module Geocoder
   module Lookup
     class Test < Base
 
+      def self.add_stub(query, results)
+        stubs[query] = results
+      end
+
+      def self.read_stub(query)
+        stubs.fetch(query) { raise ArgumentError, "unknown stub request #{query}" }
+      end
+
+      def self.stubs
+        @stubs ||= {}
+      end
+
+      def self.reset
+        @stubs = {}
+      end
+
       private
 
       def results(query, reverse = false)
-        Geocoder::Configuration.read_stub(query)
+        Geocoder::Lookup::Test.read_stub(query)
       end
 
     end
diff --git a/test/test_mode_test.rb b/test/test_mode_test.rb
index 51d3371f8b07b7c88e1caada28f6e74e48750993..ec8b4db1504a3efeea1bb4db8ad34d91bbe9ddc8 100644
--- a/test/test_mode_test.rb
+++ b/test/test_mode_test.rb
@@ -1,13 +1,19 @@
 require 'test_helper'
+require 'geocoder/lookups/test'
 
 class TestModeTest < Test::Unit::TestCase
 
+  def setup
+    @_original_lookup = Geocoder::Configuration.lookup
+  end
+
   def teardown
-    Geocoder::Configuration.reset_stubs
+    Geocoder::Lookup::Test.reset
+    Geocoder::Configuration.lookup = @_original_lookup
   end
 
   def test_search_with_known_stub
-    Geocoder::Configuration.test_mode = true
+    Geocoder::Configuration.lookup = :test
     attributes = {
       'latitude'   => 40.7143528,
       'longitude'  => -74.0059731,
@@ -19,7 +25,7 @@ class TestModeTest < Test::Unit::TestCase
     }
     coordinates = [attributes['latitude'], attributes['longitude']]
 
-    Geocoder::Configuration.add_stub("New York, NY", [attributes])
+    Geocoder::Lookup::Test.add_stub("New York, NY", [attributes])
 
     results = Geocoder.search("New York, NY")
     assert_equal 1, results.size
@@ -36,19 +42,11 @@ class TestModeTest < Test::Unit::TestCase
   end
 
   def test_search_with_unknown_stub
-    Geocoder::Configuration.test_mode = true
+    Geocoder::Configuration.lookup = :test
 
     assert_raise ArgumentError do
       Geocoder.search("New York, NY")
     end
   end
 
-  def test_turning_off_test_mode_restores_lookup
-    original_lookup = Geocoder::Configuration.lookup
-    Geocoder::Configuration.test_mode = true
-    Geocoder::Configuration.test_mode = false
-
-    assert_equal original_lookup, Geocoder::Configuration.lookup
-  end
-
 end