diff --git a/lib/geocoder/calculations.rb b/lib/geocoder/calculations.rb
index 1e71c7876cf837ec9b661d9bf967a8d067bbd186..35136960c3a8bba49dae3bf04cf725600c52e9e7 100644
--- a/lib/geocoder/calculations.rb
+++ b/lib/geocoder/calculations.rb
@@ -41,9 +41,7 @@ module Geocoder
     def geographic_center(points)
 
       # convert objects to [lat,lon] arrays and remove nils
-      points = points.map{ |p|
-        p.is_a?(Array) ? p : (p.geocoded?? p.read_coordinates : nil)
-      }.compact
+      points.map!{ |p| p.is_a?(Array) ? p : p.to_coordinates }.compact
 
       # convert degrees to radians
       points.map!{ |p| [to_radians(p[0]), to_radians(p[1])] }
diff --git a/lib/geocoder/orms/base.rb b/lib/geocoder/orms/base.rb
index 13698ab2fe16999ba9de6c8ddc9a98ec7aa12a70..08d16a3bca6728a4579b05823b74841b2495b0ff 100644
--- a/lib/geocoder/orms/base.rb
+++ b/lib/geocoder/orms/base.rb
@@ -6,7 +6,14 @@ module Geocoder
       # Is this object geocoded? (Does it have latitude and longitude?)
       #
       def geocoded?
-        read_coordinates.compact.size > 0
+        to_coordinates.compact.size > 0
+      end
+
+      ##
+      # Coordinates [lat,lon] of the object.
+      #
+      def to_coordinates
+        [:latitude, :longitude].map{ |i| send self.class.geocoder_options[i] }
       end
 
       ##
@@ -16,7 +23,7 @@ module Geocoder
       #
       def distance_to(lat, lon, units = :mi)
         return nil unless geocoded?
-        mylat,mylon = read_coordinates
+        mylat,mylon = to_coordinates
         Geocoder::Calculations.distance_between(mylat, mylon, lat, lon, :units => units)
       end
 
@@ -29,7 +36,7 @@ module Geocoder
       def nearbys(radius = 20, units = :mi)
         return [] unless geocoded?
         options = {:exclude => self, :units => units}
-        self.class.near(read_coordinates, radius, options)
+        self.class.near(to_coordinates, radius, options)
       end
 
       ##
@@ -83,14 +90,6 @@ module Geocoder
           end
         end
       end
-
-      ##
-      # Read the coordinates [lat,lon] of the object.
-      # Looks at user config to determine attributes.
-      #
-      def read_coordinates
-        [:latitude, :longitude].map{ |i| send self.class.geocoder_options[i] }
-      end
     end
   end
 end
diff --git a/test/geocoder_test.rb b/test/geocoder_test.rb
index 3b45bd1b283716f2948ed8b5208115155122c398..f55b426517c3f25271a992ecaa790f87d23c365f 100644
--- a/test/geocoder_test.rb
+++ b/test/geocoder_test.rb
@@ -23,13 +23,19 @@ class GeocoderTest < Test::Unit::TestCase
     assert_equal 69, Geocoder::Calculations.distance_between(0,0, 0,1).round
   end
 
-  def test_geographic_center
+  def test_geographic_center_with_arrays
     assert_equal [0.0, 0.5],
       Geocoder::Calculations.geographic_center([[0,0], [0,1]])
     assert_equal [0.0, 1.0],
       Geocoder::Calculations.geographic_center([[0,0], [0,1], [0,2]])
   end
 
+  def test_geographic_center_with_mixed_arguments
+    p1 = [0, 0]
+    p2 = Landmark.new("Some Cold Place", 0, 1)
+    assert_equal [0.0, 0.5], Geocoder::Calculations.geographic_center([p1, p2])
+  end
+
   def test_does_not_choke_on_nil_address
     all_lookups.each do |l|
       Geocoder::Configuration.lookup = l
@@ -80,7 +86,7 @@ class GeocoderTest < Test::Unit::TestCase
     e = Event.new(*venue_params(:msg))
     coords = [40.750354, -73.993371]
     e.geocode
-    assert_equal coords.map{ |c| c.to_s }.join(','), e.coordinates
+    assert_equal coords.map{ |c| c.to_s }.join(','), e.coords_string
   end
 
   def test_geocode_with_block_doesnt_auto_assign_coordinates
diff --git a/test/test_helper.rb b/test/test_helper.rb
index b852c32d05c01ed679473700705677f1e470ca6e..18c7aa744b5db71d443dd2560e4d915beb9b3505 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -132,7 +132,7 @@ end
 class Event < ActiveRecord::Base
   geocoded_by :address do |obj,result|
     if result
-      obj.coordinates = "#{result.latitude},#{result.longitude}"
+      obj.coords_string = "#{result.latitude},#{result.longitude}"
     end
   end