diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -74,9 +74,11 @@
 
 &nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-03-31  v0.12.0.0 [Move IsRegex into Text.RE](https://github.com/iconnect/regex/milestone/16)
 
-&nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-04-02  v0.13.0.0 [Protect findCaptureID and add Find, re-sort-imports, tutorials](https://github.com/iconnect/regex/milestone/17)
+&nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-04-03  v0.13.0.0 [Protect findCaptureID and add Find, re-sort-imports](https://github.com/iconnect/regex/milestone/17)
 
-&nbsp;&nbsp;&nbsp;&nbsp;&#x2610;&nbsp;&nbsp;2017-04-03  v1.0.0.0  [First stable release](https://github.com/iconnect/regex/milestone/3)
+&nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-04-04  v0.14.0.0 [Move IsOption, rename Find functions](https://github.com/iconnect/regex/milestone/18)
+
+&nbsp;&nbsp;&nbsp;&nbsp;&#x2610;&nbsp;&nbsp;2017-04-10  v1.0.0.0  [First stable release](https://github.com/iconnect/regex/milestone/3)
 
 &nbsp;&nbsp;&nbsp;&nbsp;&#x2610;&nbsp;&nbsp;2017-08-31  v2.0.0.0  [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4)
 
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,5 +1,13 @@
 -*-change-log-*-
 
+0.14.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-04-05
+  * Move IsOption into the back ends (#115)
+  * Rename Find functions (#116)
+  * re-gen-cabals: 'sdist' to prepare final commit message (#117)
+  * re-prep: 'blog-badge' to update the blog badge (#118)
+  * re-prep: include_code_pp for all .lhs files (#119)
+  * re-gen-cabals: do 'gen' after 'bump-version' (#120)
+
 0.13.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-04-03
   * Add a Find Tool (#106)
   * TestBench to export Text.RE (#107)
diff --git a/examples/TestKit.lhs b/examples/TestKit.lhs
--- a/examples/TestKit.lhs
+++ b/examples/TestKit.lhs
@@ -263,7 +263,7 @@
 
     (hdr,bdy) = span (not . anyMatches . getLineMatches) lns
     lns       = grepFilter rex lbs
-    rex        = [re|^import +(qualified)? +${mod}([^ ].*)$|]
+    rex       = [re|^import +(qualified)? +${mod}([^ ].*)$|]
 \end{code}
 
 
diff --git a/examples/re-gen-cabals.lhs b/examples/re-gen-cabals.lhs
--- a/examples/re-gen-cabals.lhs
+++ b/examples/re-gen-cabals.lhs
@@ -39,7 +39,7 @@
 import           Text.Printf
 import           Text.RE.Replace
 import           Text.RE.TDFA.ByteString.Lazy
-import           Text.RE.TDFA.Text                        as T
+import qualified Text.RE.TDFA.Text                        as T
 import           Text.RE.Tools.Grep
 import           Text.RE.Tools.Sed
 
@@ -50,15 +50,11 @@
   case as of
     []                    -> test
     ["test"]              -> test
-    ["bump-version",vrn]  -> bumpVersion vrn
+    ["bump-version",vrn]  -> bumpVersion vrn >> gen
     ["test-release",vrn]  -> test_release $ T.pack vrn
+    ["commit-message"]    -> commit_message
     ["sdist"]             -> sdist
-    ["gen"]               -> do
-      gen  "lib/cabal-masters/mega-regex.cabal"       "lib/mega-regex.cabal"
-      gen  "lib/cabal-masters/regex.cabal"            "lib/regex.cabal"
-      gen  "lib/cabal-masters/regex-with-pcre.cabal"  "lib/regex-with-pcre.cabal"
-      gen  "lib/cabal-masters/regex-examples.cabal"   "lib/regex-examples.cabal"
-      establish "mega-regex" "regex"
+    ["gen"]               -> gen
     _                     -> do
       let prg = (("  "++pn++" ")++)
       hPutStr stderr $ unlines
@@ -67,6 +63,7 @@
         , prg "[test]"
         , prg "bump-version <version>"
         , prg "test-release <version>"
+        , prg "commit-message"
         , prg "sdist"
         , prg "gen"
         ]
@@ -75,14 +72,22 @@
 test :: IO ()
 test = do
   createDirectoryIfMissing False "tmp"
-  gen "lib/cabal-masters/mega-regex.cabal" "tmp/mega-regex.cabal"
+  gen1 "lib/cabal-masters/mega-regex.cabal" "tmp/mega-regex.cabal"
   ok <- cmp "tmp/mega-regex.cabal" "lib/mega-regex.cabal"
   case ok of
     True  -> return ()
     False -> exitWith $ ExitFailure 1
 
-gen :: FilePath -> FilePath -> IO ()
-gen in_f out_f = do
+gen :: IO ()
+gen = do
+  gen1  "lib/cabal-masters/mega-regex.cabal"       "lib/mega-regex.cabal"
+  gen1  "lib/cabal-masters/regex.cabal"            "lib/regex.cabal"
+  gen1  "lib/cabal-masters/regex-with-pcre.cabal"  "lib/regex-with-pcre.cabal"
+  gen1  "lib/cabal-masters/regex-examples.cabal"   "lib/regex-examples.cabal"
+  establish "mega-regex" "regex"
+
+gen1 :: FilePath -> FilePath -> IO ()
+gen1 in_f out_f = do
     ctx <- setup
     LBS.writeFile out_f =<<
       sed' (gc_script ctx) =<< substVersion_ =<< include =<<
@@ -291,16 +296,19 @@
 \begin{code}
 sdist :: IO ()
 sdist = do
+  createDirectoryIfMissing False "tmp"
   sdist'    "regex"            "lib/README-regex.md"
   sdist'    "regex-with-pcre"  "lib/README-regex.md"
   sdist'    "regex-examples"   "lib/README-regex-examples.md"
   establish "mega-regex" "regex"
-  vrn_t <- T.pack . presentVrn <$> readCurrentVersion
+  vrn <- readCurrentVersion
+  let vrn_t = T.pack $ presentVrn vrn
   test_release vrn_t
-  smy_t <- summary
+  smy_t <- summary vrn
+  commit_message_ "tmp/commit.txt" vrn smy_t
   SH.shelly $ SH.verbosely $ do
     SH.run_ "git" ["add","--all"]
-    SH.run_ "git" ["commit","-m",vrn_t<>": "<>smy_t]
+    SH.run_ "git" ["commit","-F","tmp/commit.txt"]
     SH.run_ "git" ["tag",vrn_t,"-m",smy_t]
 
 sdist' :: T.Text -> SH.FilePath -> IO ()
@@ -328,24 +336,6 @@
     sf = "lib/"<>nm<>".cabal"
     df = nm'<>".cabal"
 
-summary :: IO T.Text
-summary = do
-  vrn <- SH.liftIO readCurrentVersion
-  let vrn_res = concat
-        [ show $ _vrn_a vrn
-        , "\\."
-        , show $ _vrn_b vrn
-        , "\\."
-        , show $ _vrn_c vrn
-        , "\\."
-        , show $ _vrn_d vrn
-        ]
-  rex <- compileRegex $ "- \\[[xX]\\] +@{%date} +v"++vrn_res++" +\\[?${smy}([^]]+)"
-  lns <- linesMatched LinesMatched <$> grepLines rex "lib/md/roadmap-incl.md"
-  case lns of
-    [Line _ (Matches _ [mtch])] -> return $ TE.decodeUtf8 $ LBS.toStrict $ mtch !$$ [cp|smy|]
-    _ -> error "failed to locate the summary text in the roadmap"
-
 test_release :: T.Text -> IO ()
 test_release vrn_t = do
     setCurrentDirectory "releases"
@@ -368,4 +358,63 @@
 \end{code}
 
 
-let vrn_res = concat [ show $ _vrn_a vrn, "\\.", show $ _vrn_b vrn, "\\.", show $ _vrn_c vrn, "\\.", show $ _vrn_d vrn ]
+Building the Release Commit Message from the Changelog
+------------------------------------------------------
+
+\begin{code}
+commit_message :: IO ()
+commit_message = do
+  createDirectoryIfMissing False "tmp"
+  vrn   <- readCurrentVersion
+  smy_t <- summary vrn
+  commit_message_ "tmp/commit.txt" vrn smy_t
+  LBS.readFile "tmp/commit.txt" >>= LBS.putStrLn
+
+commit_message_ :: FilePath -> Vrn -> T.Text -> IO ()
+commit_message_ fp vrn@Vrn{..} smy_t = do
+    rex <- escape ("^"++) vrn_s
+    parse_commit smy_ln <$> grepLines rex "changelog" >>= LBS.writeFile fp
+  where
+    smy_ln = vrn_s ++ ": " ++ T.unpack smy_t
+    vrn_s  = presentVrn vrn
+
+parse_commit :: String -> [Line LBS.ByteString] -> LBS.ByteString
+parse_commit hdr lns0 = case lns0 of
+    _:_:ln:lns | anyMatches $ getLineMatches ln
+      -> LBS.unlines $ LBS.pack hdr : map fixes (takeWhile is_bullet lns)
+    _ -> error oops
+  where
+    is_bullet Line{..} =
+        LBS.take 4 (matchesSource getLineMatches) == "  * "
+
+    fixes Line{..} =
+        matchesSource getLineMatches *=~/ [ed|#${n}([0-9]+)///fixes #${n}|]
+
+    oops = unlines
+      [ "failed to parse changelog"
+      , "(expected line 3 to start with the current version)"
+      ]
+\end{code}
+
+
+Extracting the summary from the Roadmap
+---------------------------------------
+
+\begin{code}
+summary :: Vrn -> IO T.Text
+summary vrn = do
+  let vrn_res = concat
+        [ show $ _vrn_a vrn
+        , "\\."
+        , show $ _vrn_b vrn
+        , "\\."
+        , show $ _vrn_c vrn
+        , "\\."
+        , show $ _vrn_d vrn
+        ]
+  rex <- compileRegex $ "- \\[[xX]\\] +@{%date} +v"++vrn_res++" +\\[?${smy}([^]]+)"
+  lns <- linesMatched LinesMatched <$> grepLines rex "lib/md/roadmap-incl.md"
+  case lns of
+    [Line _ (Matches _ [mtch])] -> return $ TE.decodeUtf8 $ LBS.toStrict $ mtch !$$ [cp|smy|]
+    _ -> error "failed to locate the summary text in the roadmap"
+\end{code}
diff --git a/examples/re-prep.lhs b/examples/re-prep.lhs
--- a/examples/re-prep.lhs
+++ b/examples/re-prep.lhs
@@ -23,8 +23,10 @@
   ) where
 
 import           Control.Applicative
+import qualified Data.ByteString.Char8                    as B
 import qualified Data.ByteString.Lazy.Char8               as LBS
 import           Data.IORef
+import qualified Data.List                                as L
 import           Data.Maybe
 import           Data.Monoid
 import qualified Data.Text                                as T
@@ -56,15 +58,15 @@
     ["doc",fn,fn'] | is_file fn -> doc fn fn'
     ["gen",fn,fn'] | is_file fn -> gen fn fn'
     ["badges"]                  -> badges
-    ["bump-version",vrn]        -> bumpVersion vrn
+    ["blog-badge"]              -> blog_badge
     ["pages"]                   -> pages
     ["all"]                     -> gen_all
     _                           -> usage
   where
     is_file = not . (== "--") . take 2
 
-    doc fn fn' =                    prep_tut Doc fn fn'
-    gen fn fn' = genMode >>= \gm -> prep_tut gm  fn fn'
+    doc fn fn' =                    prepare_tutorial Doc fn fn'
+    gen fn fn' = genMode >>= \gm -> prepare_tutorial gm  fn fn'
 
     usage = do
       pnm <- getProgName
@@ -74,7 +76,6 @@
         , prg "--help"
         , prg "[test]"
         , prg "badges"
-        , prg "bump-version <version>"
         , prg "pages"
         , prg "all"
         , prg "doc (-|<in-file>) (-|<out-file>)"
@@ -83,83 +84,6 @@
 \end{code}
 
 
-The Sed Script
---------------
-
-\begin{code}
--- | the MODE determines whether we are generating documentation
--- or a Haskell testsuite and includes any IO-accessible state
--- needed by the relevant processor
-data MODE
-  = Doc           -- ^ generating mardown+lhs input for pandoc
-  | Gen GenState  -- ^ adjusting-the-program-for-testing state
-\end{code}
-
-The `DocState` is initialised to `Outside` and flips though the different
-states as it traverses a code block, so that we can wrap code
-blocks in special `<div class="replcodeblock">` blocks when their
-first line indicates that it contains a REPL calculation, which the
-style sheet can pick up and present accordingly.
-
-\begin{code}
--- | the state is the accumulated test function identifiers for
--- generating the list of them gets added to the end of the programme
-type GenState = IORef [String]
-
-genMode :: IO MODE
-genMode = Gen <$> newIORef []
-\end{code}
-
-
-\begin{code}
-prep_tut :: MODE -> FilePath -> FilePath -> IO ()
-prep_tut mode =
-  sed $ Select
-    [ Function [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] TOP $ inclde   mode
-    , LineEdit [re|^%main ${arg}(top|bottom)$|]                            $ main_    mode
-    , Function [re|^${fn}(evalme@{%id}) = checkThis ${arg}(@{%string}) \(${ans}([^)]+)\) \$ *${exp}(.*)$|]
-                                                                       TOP $ evalme   mode
-    , Function [re|^.*$|]                                              TOP $ passthru
-    ]
-\end{code}
-
-\begin{code}
-inclde,
-  evalme :: MODE
-         -> LineNo
-         -> Match LBS.ByteString
-         -> RELocation
-         -> Capture LBS.ByteString
-         -> IO (Maybe LBS.ByteString)
-
-main_ :: MODE
-      -> LineNo
-      -> Matches LBS.ByteString
-      -> IO (LineEdit LBS.ByteString)
-
-inclde  Doc     = includeDoc
-inclde (Gen _ ) = passthru
-
-main_   Doc     = delete
-main_  (Gen gs) = mainGen    gs
-
-evalme  Doc     = evalmeDoc
-evalme (Gen gs) = evalmeGen  gs
-
-passthru :: LineNo
-         -> Match LBS.ByteString
-         -> RELocation
-         -> Capture LBS.ByteString
-         -> IO (Maybe LBS.ByteString)
-passthru _ _ _ _ = return Nothing
-
-delete :: LineNo
-       -> Matches LBS.ByteString
-       -> IO (LineEdit LBS.ByteString)
-delete _ _ = return Delete
-\end{code}
-
-
 Script to Generate the Whole Web Site
 -------------------------------------
 
@@ -172,6 +96,7 @@
     pd "re-include"
     pd "re-nginx-log-processor"
     pd "re-prep"
+    pd "re-sort-imports"
     pd "re-tests"
     pd "TestKit"
     pd "RE/REOptions"
@@ -200,21 +125,21 @@
         (Just fdr,Just mnm) -> pandoc_lhs ("Text.RE."++fdr++"."++mnm) ("Text/"    ++fnm++".lhs") ("docs/"++mnm++".html")
         _                   -> pandoc_lhs ("examples/"++fnm++".lhs" ) ("examples/"++fnm++".lhs") ("docs/"++fnm++".html")
       where
-        mtch = fnm TS.?=~ [re|^RE/(${fdr}(Internal|PCRE|TDFA|Testbench|Tools|Types)/)?${mnm}(@{%id})|]
+        mtch = fnm TS.?=~ [re|^RE/(${fdr}([a-zA-Z/]+)/)?${mnm}(@{%id})|]
 \end{code}
 
 
 \begin{code}
 gen_tutorial :: String -> IO ()
 gen_tutorial nm = do
-    prep_tut Doc ("examples" </> mst) ("tmp" </> tgt)
+    prepare_tutorial Doc ("examples" </> mst) ("tmp" </> tgt)
     pandoc_lhs'       tgt
       ("examples" </> tgt)
       ("tmp"      </> tgt)
       ("docs"     </> htm)
     -- generate the tutorial-based tests
     gm <- genMode
-    prep_tut gm ("examples" </> mst) ("examples" </> tgt)
+    prepare_tutorial gm ("examples" </> mst) ("examples" </> tgt)
     putStrLn $ ">> " ++ ("examples" </> tgt)
   where
     tgt = "re-" ++ nm ++ ".lhs"
@@ -223,25 +148,80 @@
 \end{code}
 
 
-Generating the Tutorial
------------------------
+The Tutorial Preprocessor
+-------------------------
 
 \begin{code}
-includeDoc :: LineNo
-           -> Match LBS.ByteString
-           -> RELocation
-           -> Capture LBS.ByteString
-           -> IO (Maybe LBS.ByteString)
-includeDoc _ mtch _ _ = fmap Just $
-    extract fp =<< compileRegex re_s
+-- | the MODE determines whether we are generating documentation
+-- or a Haskell testsuite and includes any IO-accessible state
+-- needed by the relevant processor
+data MODE
+  = Doc           -- ^ generating mardown+lhs input for pandoc
+  | Gen GenState  -- ^ adjusting-the-program-for-testing state
+\end{code}
+
+The `DocState` is initialised to `Outside` and flips though the different
+states as it traverses a code block, so that we can wrap code
+blocks in special `<div class="replcodeblock">` blocks when their
+first line indicates that it contains a REPL calculation, which the
+style sheet can pick up and present accordingly.
+
+\begin{code}
+-- | the state is the accumulated test function identifiers for
+-- generating the list of them gets added to the end of the programme
+type GenState = IORef [String]
+
+genMode :: IO MODE
+genMode = Gen <$> newIORef []
+\end{code}
+
+\begin{code}
+prepare_tutorial :: MODE -> FilePath -> FilePath -> IO ()
+prepare_tutorial mode fp_in fp_out =
+  LBS.readFile fp_in >>= prep_tutorial_pp mode >>= incld >>=
+    LBS.writeFile fp_out
   where
-    fp    = prs_s $ captureText [cp|file|] mtch
-    re_s  = prs_s $ captureText [cp|rex|]  mtch
+    incld = case mode of
+      Doc   -> include_code_pp
+      Gen _ -> return
+\end{code}
 
-    prs_s = maybe (error "includeDoc") T.unpack . parseString
+\begin{code}
+prep_tutorial_pp :: MODE -> LBS.ByteString -> IO LBS.ByteString
+prep_tutorial_pp mode =
+  sed' $ Select
+    [ LineEdit [re|^%main ${arg}(top|bottom)$|]                            $ main_    mode
+    , Function [re|^${fn}(evalme@{%id}) = checkThis ${arg}(@{%string}) \(${ans}([^)]+)\) \$ *${exp}(.*)$|]
+                                                                       TOP $ evalme   mode
+    , Function [re|^.*$|]                                              TOP $ passthru
+    ]
 \end{code}
 
 \begin{code}
+evalme :: MODE
+         -> LineNo
+         -> Match LBS.ByteString
+         -> RELocation
+         -> Capture LBS.ByteString
+         -> IO (Maybe LBS.ByteString)
+evalme  Doc     = evalmeDoc
+evalme (Gen gs) = evalmeGen  gs
+
+main_ :: MODE
+      -> LineNo
+      -> Matches LBS.ByteString
+      -> IO (LineEdit LBS.ByteString)
+main_   Doc     = delete
+main_  (Gen gs) = mainGen    gs
+
+
+delete :: LineNo
+       -> Matches LBS.ByteString
+       -> IO (LineEdit LBS.ByteString)
+delete _ _ = return Delete
+\end{code}
+
+\begin{code}
 evalmeDoc :: LineNo
           -> Match LBS.ByteString
           -> RELocation
@@ -253,10 +233,6 @@
   ]
 \end{code}
 
-
-Generating the Tests
---------------------
-
 \begin{code}
 evalmeGen :: GenState
           -> LineNo
@@ -328,6 +304,47 @@
 \end{code}
 
 
+include_code_pp
+---------------
+
+\begin{code}
+include_code_pp :: LBS.ByteString -> IO LBS.ByteString
+include_code_pp =
+  sed' $ Select
+    [ Function [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] TOP  inc_code
+    , Function [re|^.*$|]                                              TOP  passthru
+    ]
+\end{code}
+
+\begin{code}
+inc_code :: LineNo
+         -> Match LBS.ByteString
+         -> RELocation
+         -> Capture LBS.ByteString
+         -> IO (Maybe LBS.ByteString)
+inc_code _ mtch _ _ = fmap Just $
+    extract fp =<< compileRegex re_s
+  where
+    fp    = prs_s $ captureText [cp|file|] mtch
+    re_s  = prs_s $ captureText [cp|rex|]  mtch
+
+    prs_s = maybe (error "include_code") T.unpack . parseString
+\end{code}
+
+
+passthru action
+---------------
+
+\begin{code}
+passthru :: LineNo
+         -> Match LBS.ByteString
+         -> RELocation
+         -> Capture LBS.ByteString
+         -> IO (Maybe LBS.ByteString)
+passthru _ _ _ _ = return Nothing
+\end{code}
+
+
 Extracting a Literate Fragment from a Haskell Program Text
 ----------------------------------------------------------
 
@@ -409,6 +426,30 @@
 \end{code}
 
 
+blog_badge
+----------
+
+\begin{code}
+blog_badge :: IO ()
+blog_badge = do
+  dts <- L.sortBy (flip compare) . map (take 10) <$>
+            getDirectoryContents "../regex-blog/posts"
+  case dts of
+    []   -> error "No posts found!"
+    dt:_ -> case matched $ dt_lbs ?=~ date_re of
+        False -> error $ "Post date format not recognised: " ++ dt
+        True  -> do
+          putStrLn $ "Latest blog is: " ++ dt
+          lbs <- lbsReadFile badges_file
+          LBS.writeFile badges_file $ replaceAll dt_lbs $ lbs *=~ date_re
+      where
+        dt_lbs      = LBS.pack dt
+  where
+    date_re     = [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|]
+    badges_file = "docs/badges/blog.svg"
+\end{code}
+
+
 pages
 -----
 
@@ -448,7 +489,8 @@
 page_docs_file   pg = "docs/"   ++ page_root pg ++ ".html"
 
 page_address :: Page -> LBS.ByteString
-page_address = LBS.pack . page_root
+page_address PG_reblog = "blog"
+page_address pg        = LBS.pack $ page_root pg
 
 page_title :: Page -> LBS.ByteString
 page_title pg = case pg of
@@ -722,6 +764,7 @@
 
 pandoc_lhs' :: String -> String -> String -> String -> IO ()
 pandoc_lhs' title repo_path in_file out_file = do
+  lbsReadFile in_file >>= include_code_pp >>= LBS.writeFile int_file
   LBS.writeFile "tmp/metadata.markdown"  $
                     LBS.unlines
                       [ "---"
@@ -744,7 +787,7 @@
         , "-c", "lib/bs.css"
         , "-o", T.pack out_file
         , "tmp/metadata.markdown"
-        , T.pack in_file
+        , T.pack int_file
         ]
   where
     bc = LBS.unlines
@@ -769,6 +812,8 @@
       [ "https://github.com/iconnect/regex/blob/master/"
       , LBS.pack repo_path
       ]
+
+    int_file = "tmp/pandoc-int.lhs"
 \end{code}
 
 
@@ -827,8 +872,14 @@
 \begin{code}
 test :: IO ()
 test = do
-  test_pp "re-prep doc" (prep_tut Doc) "data/pp-test.lhs" "data/pp-result-doc.lhs"
+  test_pp "re-prep doc" (prepare_tutorial Doc) "data/pp-test.lhs" "data/pp-result-doc.lhs"
   gm <- genMode
-  test_pp "re-prep gen" (prep_tut gm ) "data/pp-test.lhs" "data/pp-result-gen.lhs"
+  test_pp "re-prep gen" (prepare_tutorial gm ) "data/pp-test.lhs" "data/pp-result-gen.lhs"
   putStrLn "tests passed"
+\end{code}
+
+
+\begin{code}
+lbsReadFile :: FilePath -> IO LBS.ByteString
+lbsReadFile fp = LBS.fromStrict <$> B.readFile fp
 \end{code}
diff --git a/examples/re-sort-imports.lhs b/examples/re-sort-imports.lhs
--- a/examples/re-sort-imports.lhs
+++ b/examples/re-sort-imports.lhs
@@ -75,7 +75,7 @@
 
 \begin{code}
 sort_r :: Mode -> FilePath -> IO ()
-sort_r md root = findMatches fm [re|\.l?hs|] root >>= sort_these md root
+sort_r md root = findMatches_ fm [re|\.l?hs|] root >>= sort_these md root
   where
     fm = FindMethods
       { doesDirectoryExistDM = doesDirectoryExist
@@ -128,3 +128,5 @@
 
 The function for sorting a Haskell script, `sortImports` has been
 placed in `TestKit` so that it can be shared with re-gen-modules`.
+
+%include "examples/TestKit.lhs" "sortImports ::"
diff --git a/examples/re-tests.lhs b/examples/re-tests.lhs
--- a/examples/re-tests.lhs
+++ b/examples/re-tests.lhs
@@ -688,7 +688,7 @@
 find_tests :: TestTree
 find_tests = testGroup "Find Tests"
     [ testCase "examples/" $ do
-        fps <- findMatches findMethods [re|^re-.*\.lhs|] "examples/"
+        fps <- findMatches_ findMethods [re|^re-.*\.lhs|] "examples/"
         example_paths @=? filter (not . matched . (?=~ [re|master\.lhs|])) fps
     ]
 
@@ -841,8 +841,8 @@
     tdfa_re   = fromMaybe oops $ TDFA.compileRegexWithOptions tdfa_opts ".*"
     pcre_re   = fromMaybe oops $ PCRE.compileRegexWithOptions pcre_opts ".*"
 
-    tdfa_opts = makeREOptions no_macs_t :: REOptions_ TDFA.RE TDFA_.CompOption TDFA_.ExecOption
-    pcre_opts = makeREOptions no_macs_p :: REOptions_ PCRE.RE PCRE_.CompOption PCRE_.ExecOption
+    tdfa_opts = TDFA.makeREOptions no_macs_t :: REOptions_ TDFA.RE TDFA_.CompOption TDFA_.ExecOption
+    pcre_opts = PCRE.makeREOptions no_macs_p :: REOptions_ PCRE.RE PCRE_.CompOption PCRE_.ExecOption
 
     no_macs_t = HM.fromList [] :: Macros TDFA.RE
     no_macs_p = HM.fromList [] :: Macros PCRE.RE
diff --git a/lib/mega-regex.cabal b/lib/mega-regex.cabal
--- a/lib/mega-regex.cabal
+++ b/lib/mega-regex.cabal
@@ -1,5 +1,5 @@
 Name:                   regex
-Version:                0.13.0.0
+Version:                0.14.0.0
 Synopsis:               Toolkit for regex-base
 Description:            A regular expression toolkit for regex-base with
                         compile-time checking of RE syntax, data types for
@@ -63,7 +63,7 @@
 Source-Repository this
     Type:               git
     Location:           https://github.com/iconnect/regex.git
-    Tag:                0.13.0.0
+    Tag:                0.14.0.0
 
 
 
@@ -196,7 +196,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -226,7 +226,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -256,7 +256,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -285,7 +285,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -314,7 +314,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -340,7 +340,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -366,7 +366,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -400,7 +400,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -434,7 +434,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -463,7 +463,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -492,7 +492,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -519,7 +519,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -546,7 +546,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -586,7 +586,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -627,7 +627,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -671,7 +671,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -717,7 +717,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -761,7 +761,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -805,7 +805,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -849,7 +849,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -893,7 +893,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -937,7 +937,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -981,7 +981,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -1025,7 +1025,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -1070,7 +1070,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
diff --git a/lib/version.txt b/lib/version.txt
--- a/lib/version.txt
+++ b/lib/version.txt
@@ -1,1 +1,1 @@
-0.13.0.0
+0.14.0.0
diff --git a/regex-examples.cabal b/regex-examples.cabal
--- a/regex-examples.cabal
+++ b/regex-examples.cabal
@@ -1,5 +1,5 @@
 Name:                   regex-examples
-Version:                0.13.0.0
+Version:                0.14.0.0
 Synopsis:               Tutorial, tests and example programs for regex
 Description:            Tutorial, tests and example programs for regex,
                         a Regular Expression Toolkit for regex-base with
@@ -63,7 +63,7 @@
 Source-Repository this
     Type:               git
     Location:           https://github.com/iconnect/regex.git
-    Tag:                0.13.0.0
+    Tag:                0.14.0.0
 
 
 Executable re-gen-cabals
@@ -82,7 +82,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -112,7 +112,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -142,7 +142,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -171,7 +171,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -200,7 +200,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -226,7 +226,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -252,8 +252,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
-      , regex-with-pcre      == 0.13.0.0
+        regex                == 0.14.0.0
+      , regex-with-pcre      == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -287,8 +287,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
-      , regex-with-pcre      == 0.13.0.0
+        regex                == 0.14.0.0
+      , regex-with-pcre      == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -322,7 +322,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -351,7 +351,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -380,7 +380,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -407,7 +407,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -434,8 +434,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
-      , regex-with-pcre      == 0.13.0.0
+        regex                == 0.14.0.0
+      , regex-with-pcre      == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -475,8 +475,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
-      , regex-with-pcre      == 0.13.0.0
+        regex                == 0.14.0.0
+      , regex-with-pcre      == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -517,7 +517,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -561,7 +561,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -607,7 +607,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -651,7 +651,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -695,7 +695,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -739,7 +739,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -783,7 +783,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -827,7 +827,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -871,7 +871,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -915,7 +915,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -960,7 +960,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.13.0.0
+        regex                == 0.14.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
