diff --git a/lib/geocoder.rb b/lib/geocoder.rb
index 731a17f671680c68f647391e2abb54e8271f9161..9be0c2c7371fd6d1b8c603134c6ef069ea255fa9 100644
--- a/lib/geocoder.rb
+++ b/lib/geocoder.rb
@@ -68,6 +68,10 @@ module Geocoder
       name = name.to_s
       require "geocoder/lookups/#{name}"
       eval("Geocoder::Lookup::#{name[0...1].upcase + name[1..-1]}.new")
+    else
+      valids = valid_lookups.map{ |l| ":#{l}" }.join(", ")
+      raise ConfigurationError, "Please specify a valid lookup for Geocoder " +
+        "(#{name.inspect} is not one of: #{valids})."
     end
   end
 
diff --git a/test/geocoder_test.rb b/test/geocoder_test.rb
index bd5891a353060df05ffb27f65bdac5bbcc7cbd82..3b10adb12a2cf6fea2b6f1df477c0a4d672be5a5 100644
--- a/test/geocoder_test.rb
+++ b/test/geocoder_test.rb
@@ -7,6 +7,16 @@ class GeocoderTest < Test::Unit::TestCase
   end
 
 
+  # --- configuration ---
+  #
+  def test_exception_raised_on_bad_lookup_config
+    Geocoder::Configuration.lookup = :stoopid
+    assert_raises Geocoder::ConfigurationError do
+      Geocoder.search "something dumb"
+    end
+  end
+
+
   # --- sanity checks ---
 
   def test_distance_between