diff --git a/lib/geocoder/lookup.rb b/lib/geocoder/lookup.rb
index 651cb5b83ce6e9cdb0facf6f3310906db32fd323..e28ca309f2583f77c1ac39b1471b7cd4a2624fcb 100644
--- a/lib/geocoder/lookup.rb
+++ b/lib/geocoder/lookup.rb
@@ -20,7 +20,7 @@ module Geocoder
     # All street address lookup services, default first.
     #
     def street_services
-      [
+      @street_services ||= [
         :dstk,
         :esri,
         :google,
@@ -49,7 +49,7 @@ module Geocoder
     # All IP address lookup services, default first.
     #
     def ip_services
-      [
+      @ip_services ||= [
         :baidu_ip,
         :freegeoip,
         :geoip2,
@@ -60,6 +60,8 @@ module Geocoder
       ]
     end
 
+    attr_writer :street_services, :ip_services
+
     ##
     # Retrieve a Lookup object from the store.
     # Use this instead of Geocoder::Lookup::X.new to get an