diff --git a/Data/Geo/Accessor/Value.hs b/Data/Geo/Accessor/Value.hs
new file mode 100644
--- /dev/null
+++ b/Data/Geo/Accessor/Value.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
+
+module Data.Geo.Accessor.Value where
+
+class Value a b | a -> b where
+  value :: a -> b
diff --git a/Data/Geo/Sphere.hs b/Data/Geo/Sphere.hs
new file mode 100644
--- /dev/null
+++ b/Data/Geo/Sphere.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving, MultiParamTypeClasses #-}
+
+module Data.Geo.Sphere(
+                        Sphere,
+                        sphere,
+                        earthMean
+                      ) where
+
+import Data.Geo.Accessor.Value
+
+newtype Sphere = Sphere Double
+  deriving (Eq, Ord, Enum, Show, Num, Fractional, Floating)
+
+sphere :: Double -> Sphere
+sphere = Sphere . abs
+
+instance Value Sphere Double where
+  value (Sphere x) = x
+
+earthMean :: Sphere
+earthMean = sphere 6367450
diff --git a/Geodetic.cabal b/Geodetic.cabal
--- a/Geodetic.cabal
+++ b/Geodetic.cabal
@@ -1,5 +1,5 @@
 Name:                Geodetic
-Version:             0.2
+Version:             0.3
 License:             BSD3
 License-File:        LICENSE
 Synopsis:            Geodetic calculations
@@ -37,6 +37,7 @@
                    Data.Geo.Longitude
                    Data.Geo.Position
                    Data.Geo.Radians
+                   Data.Geo.Sphere
                    Data.Geo.Vincenty
                    Data.Geo.Accessor.Azi
                    Data.Geo.Accessor.Coordinate
@@ -46,3 +47,5 @@
                    Data.Geo.Accessor.Lat
                    Data.Geo.Accessor.Lon
                    Data.Geo.Accessor.ReverseAzi
+                   Data.Geo.Accessor.Value
+
