diff --git a/lib/geocoder/cache.rb b/lib/geocoder/cache.rb
index d88241bedf25cff63a773cdb1c592aa68bbb66db..fe2794db48f25805de64ebc681d506c1103670a7 100644
--- a/lib/geocoder/cache.rb
+++ b/lib/geocoder/cache.rb
@@ -49,7 +49,8 @@ module Geocoder
 
     private # ----------------------------------------------------------------
 
-    attr_reader :prefix, :store
+    def prefix; @prefix; end
+    def store; @store; end
 
     ##
     # Cache key for a given URL.
@@ -63,7 +64,7 @@ module Geocoder
     # that have non-nil values.
     #
     def keys
-      store.keys.select{ |k| k.match /^#{prefix}/ and interpret(store[k]) }
+      store.keys.select{ |k| k.match(/^#{prefix}/) and interpret(store[k]) }
     end
 
     ##
diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb
index 06ce6d9cc4747d3f782d308e3def3883848d31dc..9d0ae8320f533e8c692b16d12685e978a4ef2000 100644
--- a/lib/geocoder/lookups/base.rb
+++ b/lib/geocoder/lookups/base.rb
@@ -15,6 +15,9 @@ module Geocoder
   module Lookup
 
     class Base
+      def initialize
+        @cache = nil
+      end
 
       ##
       # Human-readable name of the geocoding API.
diff --git a/lib/geocoder/lookups/cloudmade.rb b/lib/geocoder/lookups/cloudmade.rb
index a5d36177d2e80e08b89b26093e3239bd4b2bd5f0..afb6993e44c9007371057c3620a4c0155003641e 100644
--- a/lib/geocoder/lookups/cloudmade.rb
+++ b/lib/geocoder/lookups/cloudmade.rb
@@ -24,7 +24,7 @@ module Geocoder::Lookup
     end
 
     def query_url_params(query)
-      params = {
+      {
         :query => query.sanitized_text,
         :return_location => true,
         :return_geometry => false
diff --git a/lib/geocoder/lookups/maxmind_local.rb b/lib/geocoder/lookups/maxmind_local.rb
index cd0599022ab3126c121beea5e90d6349742767f1..34825beeae55b9fe98684f3ad8e56bfef1585f4d 100644
--- a/lib/geocoder/lookups/maxmind_local.rb
+++ b/lib/geocoder/lookups/maxmind_local.rb
@@ -8,7 +8,7 @@ module Geocoder::Lookup
       begin
         gem = RUBY_PLATFORM == 'java' ? 'jgeoip' : 'geoip'
         require gem
-      rescue LoadError => e
+      rescue LoadError
         raise 'Could not load geoip dependency. To use MaxMind Local lookup you must add the #{gem} gem to your Gemfile or have it installed in your system.'
       end
       super
diff --git a/lib/geocoder/lookups/yahoo.rb b/lib/geocoder/lookups/yahoo.rb
index beff6c8830f352307e368610d64c4759253fd48f..2b80100c3f5cafd3bc15a87f2a3a18c413a1681c 100644
--- a/lib/geocoder/lookups/yahoo.rb
+++ b/lib/geocoder/lookups/yahoo.rb
@@ -50,7 +50,7 @@ module Geocoder::Lookup
     # to warning message.
     #
     def parse_raw_data(raw_data)
-      if raw_data.match /^<\?xml/
+      if raw_data.match(/^<\?xml/)
         if raw_data.include?("Rate Limit Exceeded")
           raise_error(Geocoder::OverQueryLimitError) || warn("Over API query limit.")
         elsif raw_data =~ /<yahoo:description>(Please provide valid credentials.*)<\/yahoo:description>/i
diff --git a/lib/geocoder/models/base.rb b/lib/geocoder/models/base.rb
index 34853a5b7af77a6bb1b692d2d053858b7e7784d1..1f8c6fab58b0522dbe77afd5aab95670c1a65348 100644
--- a/lib/geocoder/models/base.rb
+++ b/lib/geocoder/models/base.rb
@@ -1,5 +1,3 @@
-require 'geocoder'
-
 module Geocoder
 
   ##
@@ -29,7 +27,7 @@ module Geocoder
       private # ----------------------------------------------------------------
 
       def geocoder_init(options)
-        unless @geocoder_options
+        unless defined?(@geocoder_options)
           @geocoder_options = {}
           require "geocoder/stores/#{geocoder_file_name}"
           include Geocoder::Store.const_get(geocoder_module_name)
@@ -39,4 +37,3 @@ module Geocoder
     end
   end
 end
-
diff --git a/lib/geocoder/railtie.rb b/lib/geocoder/railtie.rb
index e39eb9d95755635d41da0f579475d0d9bad3c746..bd7cfb296ebcb8b61a2befb70826d435411ca2b1 100644
--- a/lib/geocoder/railtie.rb
+++ b/lib/geocoder/railtie.rb
@@ -1,4 +1,3 @@
-require 'geocoder'
 require 'geocoder/models/active_record'
 
 module Geocoder
diff --git a/lib/geocoder/request.rb b/lib/geocoder/request.rb
index 06d04c4a6f2825c3942b95410bd593b7e6da4090..3017b479140e3a5eaf7f0ec21f8058077e031385 100644
--- a/lib/geocoder/request.rb
+++ b/lib/geocoder/request.rb
@@ -1,5 +1,3 @@
-require 'geocoder'
-
 module Geocoder
   module Request
 
diff --git a/lib/geocoder/results/test.rb b/lib/geocoder/results/test.rb
index b0e6bef2fd9c397c415681ae4eb28818a93c0061..17905f07cda7d503e5f71680f3e627d2e4888f30 100644
--- a/lib/geocoder/results/test.rb
+++ b/lib/geocoder/results/test.rb
@@ -5,7 +5,10 @@ module Geocoder
     class Test < Base
 
       def self.add_result_attribute(attr)
-        return if respond_to?(attr.to_sym)
+        begin
+          remove_method(attr) if method_defined?(attr)
+        rescue NameError # method defined on superclass
+        end
 
         define_method(attr) do
           @data[attr.to_s] || @data[attr.to_sym]
diff --git a/lib/geocoder/stores/active_record.rb b/lib/geocoder/stores/active_record.rb
index 7c48653a1842f946495aa929abb4d6df5b776b6c..38d0abc03f050d0bb08c5ff799e59089c39298f1 100644
--- a/lib/geocoder/stores/active_record.rb
+++ b/lib/geocoder/stores/active_record.rb
@@ -219,7 +219,7 @@ module Geocoder::Store
       end
 
       def using_sqlite?
-        connection.adapter_name.match /sqlite/i
+        connection.adapter_name.match(/sqlite/i)
       end
 
       ##