diff --git a/lib/geocoder.rb b/lib/geocoder.rb
index ad090b66f487ec66594836c47de44ca6b9eccb9c..2ef99625d9de7235762630b7bb251b766fbcf21a 100644
--- a/lib/geocoder.rb
+++ b/lib/geocoder.rb
@@ -76,7 +76,21 @@ module Geocoder
   # Array of valid Lookup names.
   #
   def valid_lookups
-    [:google, :yahoo, :geocoder_ca, :yandex, :freegeoip]
+    street_lookups + ip_lookups
+  end
+
+  ##
+  # All street address lookups, default first.
+  #
+  def street_lookups
+    [:google, :yahoo, :geocoder_ca, :yandex]
+  end
+
+  ##
+  # All IP address lookups, default first.
+  #
+  def ip_lookups
+    [:freegeoip]
   end
 
   def version
@@ -97,9 +111,9 @@ module Geocoder
   #
   def lookup(ip = false)
     if ip
-      get_lookup :freegeoip
+      get_lookup(ip_lookups.first)
     else
-      get_lookup Configuration.lookup || :google
+      get_lookup(Configuration.lookup || street_lookups.first)
     end
   end
 
diff --git a/lib/geocoder/cli.rb b/lib/geocoder/cli.rb
index 0a866b72db550f2fc0c7b352d78c4663374c16e0..0d24ea16378d911a709d412666604d9e7b95d65e 100644
--- a/lib/geocoder/cli.rb
+++ b/lib/geocoder/cli.rb
@@ -22,13 +22,12 @@ module Geocoder
           Geocoder::Configuration.language = language
         end
 
-        lookups = Geocoder.valid_lookups - [:freegeoip]
-        opts.on("-s <service>", lookups, "--service <service>",
-          "Geocoding service: #{lookups.join(', ')}") do |service|
+        opts.on("-s <service>", Geocoder.street_lookups, "--service <service>",
+          "Geocoding service: #{Geocoder.street_lookups * ', '}") do |service|
           Geocoder::Configuration.lookup = service.to_sym
         end
 
-        opts.on("-t <seconds>", lookups, "--timeout <seconds>",
+        opts.on("-t <seconds>", "--timeout <seconds>",
           "Maximum number of seconds to wait for API response") do |timeout|
           Geocoder::Configuration.timeout = timeout.to_i
         end