diff --git a/Numeric/AD/Halley.hs b/Numeric/AD/Halley.hs
new file mode 100644
--- /dev/null
+++ b/Numeric/AD/Halley.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE Rank2Types, BangPatterns, ScopedTypeVariables #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Numeric.AD.Halley
+-- Copyright   :  (c) Edward Kmett 2010
+-- License     :  BSD3
+-- Maintainer  :  ekmett@gmail.com
+-- Stability   :  experimental
+-- Portability :  GHC only
+--
+-- Root finding using Halley's rational method (the second in 
+-- the class of Householder methods). Assumes the function is three 
+-- times continuously differentiable and converges cubically when 
+-- progress can be made.
+-- 
+-----------------------------------------------------------------------------
+
+module Numeric.AD.Halley
+    (
+    -- * Halley's Method (Tower AD)
+      findZero
+    , inverse
+    , fixedPoint
+    , extremum
+    -- * Exposed Types
+    , UU, UF, FU, FF
+    , AD(..)
+    , Mode(..)
+    ) where
+
+import Prelude hiding (all)
+-- import Data.Foldable (all)
+-- import Data.Traversable (Traversable)
+import Numeric.AD.Types
+import Numeric.AD.Classes
+import Numeric.AD.Mode.Tower (diffs0)
+import Numeric.AD.Mode.Forward (diff) -- , diff')
+-- import Numeric.AD.Mode.Reverse (gradWith')
+import Numeric.AD.Internal.Composition
+
+-- | The 'findZero' function finds a zero of a scalar function using
+-- Halley's method; its output is a stream of increasingly accurate
+-- results.  (Modulo the usual caveats.) 
+--
+-- Examples:
+--
+--  > take 10 $ findZero (\\x->x^2-4) 1  -- converge to 2.0
+--
+--  > module Data.Complex
+--  > take 10 $ findZero ((+1).(^2)) (1 :+ 1)  -- converge to (0 :+ 1)@
+--
+findZero :: Fractional a => UU a -> a -> [a]
+findZero f = go
+    where
+        go x = x : go (x - 2*y*y'/(2*y'*y'-y*y''))
+            where
+                (y:y':y'':_) = diffs0 f x
+{-# INLINE findZero #-}
+
+-- | The 'inverse' function inverts a scalar function using
+-- Halley's method; its output is a stream of increasingly accurate
+-- results.  (Modulo the usual caveats.)
+--
+-- Note: the @take 10 $ inverse sqrt 1 (sqrt 10)@ example that works for Newton's method
+-- fails with Halley's method because the preconditions do not hold.
+
+inverse :: Fractional a => UU a -> a -> a -> [a]
+inverse f x0 y = findZero (\x -> f x - lift y) x0
+{-# INLINE inverse  #-}
+
+-- | The 'fixedPoint' function find a fixedpoint of a scalar
+-- function using Halley's method; its output is a stream of
+-- increasingly accurate results.  (Modulo the usual caveats.)
+-- 
+-- > take 10 $ fixedPoint cos 1 -- converges to 0.7390851332151607
+fixedPoint :: Fractional a => UU a -> a -> [a]
+fixedPoint f = findZero (\x -> f x - x)
+{-# INLINE fixedPoint #-}
+
+-- | The 'extremum' function finds an extremum of a scalar
+-- function using Halley's method; produces a stream of increasingly
+-- accurate results.  (Modulo the usual caveats.)
+--
+-- > take 10 $ extremum cos 1 -- convert to 0 
+extremum :: Fractional a => UU a -> a -> [a]
+extremum f = findZero (diff (decomposeMode . f . composeMode))
+{-# INLINE extremum #-}
+
diff --git a/Numeric/AD/Internal/Classes.hs b/Numeric/AD/Internal/Classes.hs
--- a/Numeric/AD/Internal/Classes.hs
+++ b/Numeric/AD/Internal/Classes.hs
@@ -35,7 +35,6 @@
 infixl 6 +!, -!, <+>
 infix 4 ==!
 
-
 class Iso a b where
     iso :: f a -> f b
     osi :: f b -> f a
diff --git a/ad.cabal b/ad.cabal
--- a/ad.cabal
+++ b/ad.cabal
@@ -1,5 +1,5 @@
 name:         ad
-version:      0.44.4
+version:      0.45.0
 license:      BSD3
 license-File: LICENSE
 copyright:    (c) Edward Kmett 2010,
@@ -8,7 +8,7 @@
 maintainer:   ekmett@gmail.com
 stability:    Experimental
 category:     Math
-homepage:     http://patch-tag.com/r/ekmett/ad
+homepage:     http://github.com/ekmett/ad
 synopsis:     Automatic Differentiation
 description:  
     Forward-, reverse- and mixed- mode automatic differentiation combinators with a common API.
@@ -56,6 +56,10 @@
     .
     * @0@ means that the resulting derivative list is padded with 0s at the end.
     .
+    Changes since 0.44.5
+    .
+    * Added Halley's method
+    .
     Changes since 0.40.0
     .
     * Fixed bug fix for @'(/)' :: (Mode s, Fractional a) => AD s a@
@@ -85,6 +89,7 @@
     Numeric.AD.Classes
     Numeric.AD.Types
     Numeric.AD.Newton
+    Numeric.AD.Halley
 
     Numeric.AD.Internal.Classes
     Numeric.AD.Internal.Combinators
