diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,10 +1,16 @@
+0.1.2
+
+* Functions to construct using degrees.
+* Added `Sphere` data type.
+* More ellipsoids.
+
 0.1.1
 
 * Explicit export lists.
 
 0.1.0
 
-* A rewrite using `ECEF`, `XY, `LLH`, `LL` data types.
+* A rewrite using `ECEF`, `XY`, `LLH`, `LL` data types.
 
 0.0.21
 
diff --git a/coordinate.cabal b/coordinate.cabal
--- a/coordinate.cabal
+++ b/coordinate.cabal
@@ -1,5 +1,5 @@
 name:               coordinate
-version:            0.1.1
+version:            0.1.2
 license:            BSD3
 license-file:       LICENCE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
@@ -50,6 +50,7 @@
                     Data.Geodetic.HasDoubles
                     Data.Geodetic.LLH
                     Data.Geodetic.LL
+                    Data.Geodetic.Sphere
                     Data.Geodetic.XY
 
 test-suite doctests
diff --git a/src/Data/Geodetic.hs b/src/Data/Geodetic.hs
--- a/src/Data/Geodetic.hs
+++ b/src/Data/Geodetic.hs
@@ -10,4 +10,5 @@
 import Data.Geodetic.HasDoubles as G
 import Data.Geodetic.LLH as G
 import Data.Geodetic.LL as G
+import Data.Geodetic.Sphere as G
 import Data.Geodetic.XY as G
diff --git a/src/Data/Geodetic/Ellipsoid.hs b/src/Data/Geodetic/Ellipsoid.hs
--- a/src/Data/Geodetic/Ellipsoid.hs
+++ b/src/Data/Geodetic/Ellipsoid.hs
@@ -5,7 +5,22 @@
   Ellipsoid(..)
 , HasEllipsoid(..)
 , flatteningReciprocal
+-- * Ellipsoids
 , wgs84
+, grs80
+, grs67
+, ans
+, wgs72
+, au1965
+, krasovsky1940
+, international1924
+, hayford1909
+, airy1830
+, everest1830
+, bessel1841
+, clarke1858
+, clarke1866
+, clarke1880
 ) where
 
 import Control.Applicative(Applicative((<*>)))
@@ -45,3 +60,100 @@
   Ellipsoid
     6378137
     298.257223563
+
+grs80 ::
+  Ellipsoid
+grs80 =
+  Ellipsoid
+    6378137
+    298.257222101
+
+grs67 ::
+  Ellipsoid
+grs67 =
+  Ellipsoid
+    6378160
+    298.25
+
+ans ::
+  Ellipsoid
+ans =
+  Ellipsoid
+    6378160
+    298.25
+
+wgs72 ::
+  Ellipsoid
+wgs72 =
+  Ellipsoid
+    6378135
+    298.26
+
+au1965 ::
+  Ellipsoid
+au1965 =
+  Ellipsoid
+    6378160
+    298.25
+
+krasovsky1940 ::
+  Ellipsoid
+krasovsky1940 =
+  Ellipsoid
+    6378245
+    298.3
+
+international1924 ::
+  Ellipsoid
+international1924 =
+  Ellipsoid
+    6378388
+    297
+
+hayford1909 ::
+  Ellipsoid
+hayford1909 =
+  international1924
+
+airy1830 ::
+  Ellipsoid
+airy1830 =
+  Ellipsoid
+    6377563.4
+    299.32
+
+everest1830 ::
+  Ellipsoid
+everest1830 =
+  Ellipsoid
+    6377276.3
+    300.8
+
+bessel1841 ::
+  Ellipsoid
+bessel1841 =
+  Ellipsoid
+    6377397.2
+    299.15
+
+clarke1858 ::
+  Ellipsoid
+clarke1858 =
+  Ellipsoid
+    6378293.645
+    294.26
+
+clarke1866 ::
+  Ellipsoid
+clarke1866 =
+  Ellipsoid
+    6378206.4
+    294.98
+
+clarke1880 ::
+  Ellipsoid
+clarke1880 =
+  Ellipsoid
+    6378249.145
+    293.465
+    
diff --git a/src/Data/Geodetic/LL.hs b/src/Data/Geodetic/LL.hs
--- a/src/Data/Geodetic/LL.hs
+++ b/src/Data/Geodetic/LL.hs
@@ -1,23 +1,24 @@
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE FunctionalDependencies #-}
 
 module Data.Geodetic.LL(
   LL(..)
 , HasLL(..)
+, degrees
+, (<◦>)
 ) where
 
 import Control.Applicative(Applicative((<*>)))
-import Control.Lens(makeClassy)
+import Control.Lens(makeClassy, Iso', iso, (^.))
 import Data.Eq(Eq)
 import Data.Functor((<$>))
 import Data.Geodetic.HasDoubles(HasDoubles(doubles))
 import Data.Ord(Ord)
-import Prelude(Show, Double)
+import Prelude(Fractional((/)), Show, Double, pi, Num((*)))
 
+-- $setup
+-- >>> import Control.Lens
+
 data LL =
   LL {
     _lat ::
@@ -34,3 +35,36 @@
     LL <$>
       f a <*>
       f o
+
+-- |
+--
+-- >>> ((27.34, 152.15) ^. degrees)
+-- LL {_lat = 0.47717301749524965, _lon = 2.6555184569093724}
+--
+-- >>> (degrees # LL 0.47717 2.65552)
+-- (27.33982711025749,152.15008841258037)
+degrees ::
+  Iso'
+    (Double, Double)
+    LL
+degrees =
+  iso 
+    (\(t, n) -> let r a = a / 180 * pi
+                in  LL (r t) (r n))
+    (\(LL t n) -> let r a = a / pi * 180
+                  in  (r t, r n))
+
+-- |
+--
+-- >>> 27.34 <◦> 152.15
+-- LL {_lat = 0.47717301749524965, _lon = 2.6555184569093724}
+--
+-- >>> 61.94 <◦> (-152.15)
+-- LL {_lat = 1.0810569386852877, _lon = -2.6555184569093724}
+(<◦>) ::
+  Double
+  -> Double
+  -> LL
+t <◦> n =
+  (t, n) ^. degrees
+  
diff --git a/src/Data/Geodetic/LLH.hs b/src/Data/Geodetic/LLH.hs
--- a/src/Data/Geodetic/LLH.hs
+++ b/src/Data/Geodetic/LLH.hs
@@ -1,9 +1,5 @@
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE FunctionalDependencies #-}
 
 module Data.Geodetic.LLH(
   LLH(..)
diff --git a/src/Data/Geodetic/Sphere.hs b/src/Data/Geodetic/Sphere.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Geodetic/Sphere.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+
+module Data.Geodetic.Sphere(
+  Sphere(..)
+, earthMean
+, ellipsoidSphere
+) where
+
+import Control.Lens(makeWrapped, Prism', prism')
+import Data.Eq(Eq((==)))
+import Data.Maybe(Maybe(Just, Nothing))
+import Data.Ord(Ord)
+import Data.Geodetic.Ellipsoid(Ellipsoid(Ellipsoid))
+import Prelude(Double, Show)
+
+-- $setup
+-- >>> import Control.Lens
+
+newtype Sphere =
+  Sphere Double
+  deriving (Eq, Ord, Show)
+
+makeWrapped ''Sphere
+
+-- |
+--
+-- >>> earthMean
+-- Sphere 6367450.0
+earthMean ::
+  Sphere
+earthMean =
+  Sphere 6367450
+
+-- |
+--
+-- >>> ellipsoidSphere # Sphere 77
+-- Ellipsoid {_semiMajor = 77.0, _flattening = 1.0}
+--
+-- >>> Ellipsoid 77 1 ^? ellipsoidSphere
+-- Just (Sphere 77.0)
+--
+-- >>> Ellipsoid 77 2 ^? ellipsoidSphere
+-- Nothing
+ellipsoidSphere ::
+  Prism'
+    Ellipsoid
+    Sphere
+ellipsoidSphere = 
+  prism'
+    (\(Sphere s) -> Ellipsoid s 1)
+    (\(Ellipsoid m f) -> if f == 1 then Just (Sphere m) else Nothing)
