diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,8 @@
+0.2.2 (27 January 2014)
+-----------------------
+
+    - require diagrams-builder-0.5
+
 0.2.1.6 (15 January 2014)
 -------------------------
 
diff --git a/diagrams-haddock.cabal b/diagrams-haddock.cabal
--- a/diagrams-haddock.cabal
+++ b/diagrams-haddock.cabal
@@ -1,5 +1,5 @@
 name:                diagrams-haddock
-version:             0.2.1.6
+version:             0.2.2
 synopsis:            Preprocessor for embedding diagrams in Haddock documentation
 description:         diagrams-haddock is a tool for compiling embedded inline
                      diagrams code in Haddock documentation, for an
@@ -44,7 +44,7 @@
                        parsec >= 3,
                        haskell-src-exts >= 1.14 && < 1.15,
                        blaze-svg >= 0.3 && < 0.4,
-                       diagrams-builder >= 0.4.2 && < 0.5,
+                       diagrams-builder >= 0.5 && < 0.6,
                        diagrams-lib >= 0.6 && < 1.1,
                        diagrams-svg >= 0.8.0.1 && < 1.1,
                        vector-space >= 0.8 && < 0.9,
diff --git a/src/Diagrams/Haddock.hs b/src/Diagrams/Haddock.hs
--- a/src/Diagrams/Haddock.hs
+++ b/src/Diagrams/Haddock.hs
@@ -111,10 +111,7 @@
 import           Text.Parsec.String
 
 import           Diagrams.Backend.SVG            (Options (..), SVG (..))
-import           Diagrams.Builder                (BuildResult (..),
-                                                  buildDiagram,
-                                                  hashedRegenerate,
-                                                  ppInterpError)
+import qualified Diagrams.Builder                as DB
 import           Diagrams.TwoD.Size              (mkSizeSpec)
 
 ------------------------------------------------------------
@@ -451,28 +448,25 @@
         logStr $ "[ ] " ++ (url ^. diagramName)
         IO.hFlush IO.stdout
 
-        buildDiagram
-          SVG
-          zeroV
-          (SVGOptions (mkSizeSpec w h) Nothing)
-          (map (view codeBlockCode) neededCode)
-          (url ^. diagramName)
-          []
-          [ "Diagrams.Backend.SVG" ]
-          (hashedRegenerate (\_ opts -> opts) cacheDir)
+        let bopts = DB.mkBuildOpts SVG zeroV (SVGOptions (mkSizeSpec w h) Nothing)
+                      & DB.snippets .~ map (view codeBlockCode) neededCode
+                      & DB.imports  .~ [ "Diagrams.Backend.SVG" ]
+                      & DB.diaExpr  .~ (url ^. diagramName)
+                      & DB.decideRegen .~ (DB.hashedRegenerate (\_ opts -> opts) cacheDir)
+        DB.buildDiagram bopts
 
       case res of
         -- XXX incorporate these into error reporting framework instead of printing
-        ParseErr err    -> do
+        DB.ParseErr err    -> do
           tell [errHeader ++ "Parse error: " ++ err]
           logResult "!"
           return oldURL
-        InterpErr ierr  -> do
-          tell [errHeader ++ "Interpreter error: " ++ ppInterpError ierr]
+        DB.InterpErr ierr  -> do
+          tell [errHeader ++ "Interpreter error: " ++ DB.ppInterpError ierr]
           logResult "!"
           return oldURL
-        Skipped hash    -> do
-          let cached = mkCached hash
+        DB.Skipped hash    -> do
+          let cached = mkCached (DB.hashToHexStr hash)
           when (not dataURIs) $ liftIO $ copyFile cached outFile
           logResult "."
           if dataURIs
@@ -480,8 +474,8 @@
               svgBS <- liftIO $ BS.readFile cached
               return (newURL (mkDataURI svgBS))
             else return (newURL outFile)
-        OK hash svg     -> do
-          let cached = mkCached hash
+        DB.OK hash svg     -> do
+          let cached = mkCached (DB.hashToHexStr hash)
               svgBS  = renderSvg svg
           liftIO $ BS.writeFile cached svgBS
           url' <- if dataURIs
