diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for srtree
 
+## 1.0.0.1
+
+- Fix `vector` version bounds
+- Included benchmarking of `ad` package
+
 ## 1.0.0.0
 
 - Complete refactoring of source
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -4,18 +4,25 @@
 import Data.SRTree.Print
 import Data.SRTree.Random
 import Data.SRTree.Recursion hiding (fromList)
-import Data.Vector (fromList)
+import Data.Vector (fromList, toList)
 import System.Random
 import Control.Monad.Reader
 import Control.Monad.State
 import Criterion.Main
+import Numeric.AD.Double ( grad )
 
-t = 1 + var 0 * (3.1 + param 0 * var 1 + var 0 * param 1) - var 0
+autograd t = grad (cata alg t)
+  where
+      alg (Var ix) = const 0
+      alg (Param ix) = \xs -> xs !! ix
+      alg (Const v) = const 1.0
+      alg (Bin op l r) = \xs -> evalOp op (l xs) (r xs)
+      alg (Uni f t) = \xs -> evalFun f (t xs)
 
 xs = fromList [1.0, 2.0]
-ps = fromList [0.5, 0.3]
+ps = fromList [0.1, 0.2 .. 30.0]
 
-params = P [0,1] (-1.0, 1.0) (-2, 2) [Id ..]  
+params = P [0,1] (-1.0, 1.0) (-2, 2) [Id ..]
 
 runRnd g ns p = flip evalStateT g $ traverse (\n -> runReaderT (randomTree n) p) ns
 runRndBalance g ns p = flip evalStateT g $ traverse (\n -> runReaderT (randomTreeBalanced n) p) ns
@@ -26,16 +33,21 @@
 g = mkStdGen 42
 
 benchTree f h = do ts <- f g lens params
-                   pure $ map (h xs ps id) ts
+                   pure $ map (h xs ps id . relabelParams . fst . constsToParam) ts
 
+benchAutodiff f = do ts <- f g lens params
+                     let ps' = Data.Vector.toList ps
+                     pure $ map ((`autograd` ps') . relabelParams . fst . constsToParam) ts
 main :: IO ()
 main = defaultMain [
-       bgroup "unbalanced" 
+       bgroup "unbalanced"
          [ bench "forwardMode" $ nfIO (benchTree runRnd forwardMode)
          , bench "grad" $ nfIO (benchTree runRnd gradParams)
+         , bench "autodiff" $ nfIO (benchAutodiff runRnd)
          ] ,
-       bgroup "balanced" 
+       bgroup "balanced"
          [ bench "forwardMode" $ nfIO (benchTree runRndBalance forwardMode)
          , bench "grad" $ nfIO (benchTree runRndBalance gradParams)
-         ] 
+         , bench "autodiff" $ nfIO (benchAutodiff runRndBalance)
+         ]
                    ]
diff --git a/srtree.cabal b/srtree.cabal
--- a/srtree.cabal
+++ b/srtree.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           srtree
-version:        1.0.0.0
+version:        1.0.0.1
 synopsis:       A general framework to work with Symbolic Regression expression trees.
 description:    A Symbolic Regression Tree data structure to work with mathematical expressions with support to first order derivative and simplification;
 category:       Math, Data, Data Structures
@@ -41,7 +41,7 @@
     , containers ==0.6.*
     , mtl ==2.2.*
     , random ==1.2.*
-    , vector >=0.12 && <=0.13
+    , vector >=0.12 && <0.14
   default-language: Haskell2010
 
 executable bench-srtree
@@ -52,13 +52,14 @@
       app
   ghc-options: -threaded -rtsopts -with-rtsopts=-N -O2 -optc-O3
   build-depends:
-      base >=4.16 && <4.18
+      ad >=4.5.0 && <4.6
+    , base >=4.16 && <4.18
     , containers ==0.6.*
-    , criterion >=1.6.0 && <1.7
+    , criterion >=1.5.0 && <1.7
     , mtl ==2.2.*
     , random ==1.2.*
     , srtree
-    , vector >=0.12 && <=0.13
+    , vector >=0.12 && <0.14
   default-language: Haskell2010
 
 test-suite srtree-test
@@ -77,5 +78,5 @@
     , mtl ==2.2.*
     , random ==1.2.*
     , srtree
-    , vector >=0.12 && <=0.13
+    , vector >=0.12 && <0.14
   default-language: Haskell2010
