diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -24,7 +24,10 @@
 The library and tutorial, tests and examples have been split across
 two packages:
 
-  * the `regex` package contains the regex library and
+  * the `regex` package contains the regex library with the Posix TDFA
+    back end
+  * the `regex-with-pcre` library package contains the extra modules
+    needed for the PCRE back end
   * the `regex-examples` package contains the tutorial, tests
     and example programs.
 
@@ -57,7 +60,9 @@
 
 &nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-03-15  v0.7.0.0  [Better organization of API](https://github.com/iconnect/regex/milestone/8)
 
-&nbsp;&nbsp;&nbsp;&nbsp;&#x2610;&nbsp;&nbsp;2017-03-17  v0.8.0.0  [Add type-safe replacement templates and use TemplateHaskellQuotes](https://github.com/iconnect/regex/milestone/9)
+&nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-03-16  v0.8.0.0  [Tidy up the API](https://github.com/iconnect/regex/milestone/10)
+
+&nbsp;&nbsp;&nbsp;&nbsp;&#x2610;&nbsp;&nbsp;2017-03-18  v0.9.0.0  [Add type-safe replacement templates and use TemplateHaskellQuotes](https://github.com/iconnect/regex/milestone/9)
 
 &nbsp;&nbsp;&nbsp;&nbsp;&#x2610;&nbsp;&nbsp;2017-03-31  v1.0.0.0  [First stable release](https://github.com/iconnect/regex/milestone/3)
 
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,5 +1,8 @@
 -*-change-log-*-
 
+0.8.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-03-16
+  * Tidy up the API after recent reorganization (#76)
+
 0.7.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-03-15
   * Fix and extend Replace class (#74)
   * Better package organisation (#73)
diff --git a/examples/TestKit.lhs b/examples/TestKit.lhs
--- a/examples/TestKit.lhs
+++ b/examples/TestKit.lhs
@@ -71,11 +71,11 @@
 bumpVersion vrn_s = do
     vrn0 <- readCurrentVersion
     rex' <- compileRegex $ printf "- \\[[xX]\\].*%d\\.%d\\.%d\\.%d" _vrn_a _vrn_b _vrn_c _vrn_d
-    nada <- null . linesMatched <$> grepLines rex' "lib/md/roadmap-incl.md"
+    nada <- null . linesMatched LinesMatched <$> grepLines rex' "lib/md/roadmap-incl.md"
     M.when nada $
       error $ vrn_s ++ ": not ticked off in the roadmap"
     rex  <- compileRegex $ printf "%d\\.%d\\.%d\\.%d" _vrn_a _vrn_b _vrn_c _vrn_d
-    nope <- null . linesMatched <$> grepLines rex "changelog"
+    nope <- null . linesMatched LinesMatched <$> grepLines rex "changelog"
     M.when nope $
       error $ vrn_s ++ ": not in the changelog"
     case vrn > vrn0 of
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
@@ -105,7 +105,7 @@
 setup :: IO Ctx
 setup = Ctx <$> (newIORef True) <*> (newIORef False) <*> (newIORef Map.empty) <*> (newIORef Nothing)
 
-gc_script :: Ctx -> SedScript RE
+gc_script :: Ctx -> Edits IO RE LBS.ByteString
 gc_script ctx = Select
     [ (,) [re|^%Werror$|]                                      $ LineEdit $ w_error_gen              ctx
     , (,) [re|^%Wwarn$|]                                       $ LineEdit $ w_warn_gen               ctx
@@ -306,7 +306,7 @@
         , show $ _vrn_d vrn
         ]
   rex <- compileRegex $ "- \\[[xX]\\] +@{%date} +v"++vrn_res++" +\\[?${smy}([^]]+)"
-  lns <- linesMatched <$> grepLines rex "lib/md/roadmap-incl.md"
+  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"
diff --git a/examples/re-gen-modules.lhs b/examples/re-gen-modules.lhs
--- a/examples/re-gen-modules.lhs
+++ b/examples/re-gen-modules.lhs
@@ -49,7 +49,9 @@
     True  -> return ()
     False -> exitWith $ ExitFailure 1
 
-test' :: (ModPath,SedScript RE) -> IO Bool
+type SedScript = Edits IO RE LBS.ByteString
+
+test' :: (ModPath,SedScript) -> IO Bool
 test' (mp,scr) = do
     putStrLn mp
     tp <- is_text_present
@@ -63,13 +65,13 @@
   mapM_ gen' tdfa_edits
   mapM_ gen' pcre_edits
 
-gen' :: (ModPath,SedScript RE) -> IO ()
+gen' :: (ModPath,SedScript) -> IO ()
 gen' (mp,scr) = do
   putStrLn mp
   tp <- is_text_present
   sed scr (mod_filepath tp source_mp) (mod_filepath tp mp)
 
-tdfa_edits :: [(ModPath,SedScript RE)]
+tdfa_edits :: [(ModPath,SedScript)]
 tdfa_edits =
   [ tdfa_edit "Text.RE.TDFA.ByteString"       "B.ByteString"    "import qualified Data.ByteString               as B"
   , tdfa_edit "Text.RE.TDFA.Sequence"         "(S.Seq Char)"    "import qualified Data.Sequence                 as S"
@@ -78,7 +80,7 @@
   , tdfa_edit "Text.RE.TDFA.Text.Lazy"        "TL.Text"         "import qualified Data.Text.Lazy                as TL"
   ]
 
-pcre_edits :: [(ModPath,SedScript RE)]
+pcre_edits :: [(ModPath,SedScript)]
 pcre_edits =
   [ pcre_edit "Text.RE.PCRE.ByteString"       "B.ByteString"    "import qualified Data.ByteString               as B"
   , pcre_edit "Text.RE.PCRE.ByteString.Lazy"  "LBS.ByteString"  "import qualified Data.ByteString.Lazy          as LBS"
@@ -89,7 +91,7 @@
 tdfa_edit :: ModPath
           -> LBS.ByteString
           -> LBS.ByteString
-          -> (ModPath,SedScript RE)
+          -> (ModPath,SedScript)
 tdfa_edit mp bs_lbs import_lbs =
     (,) mp $ Pipe
         [ (,) module_re $ Template $ LBS.pack mp
@@ -100,7 +102,7 @@
 pcre_edit :: ModPath
           -> LBS.ByteString
           -> LBS.ByteString
-          -> (ModPath,SedScript RE)
+          -> (ModPath,SedScript)
 pcre_edit mp bs_lbs import_lbs =
     (,) mp $ Pipe
         [ (,) tdfa_re   $ Template   "PCRE"
diff --git a/examples/re-nginx-log-processor.lhs b/examples/re-nginx-log-processor.lhs
--- a/examples/re-nginx-log-processor.lhs
+++ b/examples/re-nginx-log-processor.lhs
@@ -125,7 +125,7 @@
 \end{code}
 
 \begin{code}
-script :: Ctx -> SedScript RE
+script :: Ctx -> Edits IO RE LBS.ByteString
 script ctx = Select
     [ on [re_|@{access}|]     ACC parse_access
     , on [re_|@{access_deg}|] AQQ parse_deg_access
diff --git a/lib/cabal-masters/library-incl.cabal b/lib/cabal-masters/library-incl.cabal
--- a/lib/cabal-masters/library-incl.cabal
+++ b/lib/cabal-masters/library-incl.cabal
@@ -7,14 +7,12 @@
       Text.RE.Internal.NamedCaptures
       Text.RE.Internal.PreludeMacros
       Text.RE.Internal.QQ
-      Text.RE.Types.IsRegex
       Text.RE.PCRE
       Text.RE.PCRE.ByteString
       Text.RE.PCRE.ByteString.Lazy
       Text.RE.PCRE.RE
       Text.RE.PCRE.Sequence
       Text.RE.PCRE.String
-      Text.RE.Types.Replace
       Text.RE.TDFA
       Text.RE.TDFA.ByteString
       Text.RE.TDFA.ByteString.Lazy
@@ -25,15 +23,18 @@
       Text.RE.TDFA.Text.Lazy
       Text.RE.TestBench
       Text.RE.TestBench.Parsers
+      Text.RE.Tools
       Text.RE.Tools.Edit
       Text.RE.Tools.Grep
       Text.RE.Tools.Lex
       Text.RE.Tools.Sed
       Text.RE.Types.Capture
-      Text.RE.Types.Match
-      Text.RE.Types.Matches
       Text.RE.Types.CaptureID
+      Text.RE.Types.IsRegex
       Text.RE.Types.LineNo
+      Text.RE.Types.Match
+      Text.RE.Types.Matches
       Text.RE.Types.Options
+      Text.RE.Types.Replace
 
 %build-depends array bytestring base base-compat containers hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin template-haskell text time time-locale-compat transformers unordered-containers
diff --git a/lib/cabal-masters/regex.cabal b/lib/cabal-masters/regex.cabal
--- a/lib/cabal-masters/regex.cabal
+++ b/lib/cabal-masters/regex.cabal
@@ -11,8 +11,6 @@
       Text.RE.Internal.NamedCaptures
       Text.RE.Internal.PreludeMacros
       Text.RE.Internal.QQ
-      Text.RE.Types.IsRegex
-      Text.RE.Types.Replace
       Text.RE.TDFA
       Text.RE.TDFA.ByteString
       Text.RE.TDFA.ByteString.Lazy
@@ -23,16 +21,19 @@
       Text.RE.TDFA.Text.Lazy
       Text.RE.TestBench
       Text.RE.TestBench.Parsers
+      Text.RE.Tools
       Text.RE.Tools.Edit
       Text.RE.Tools.Grep
       Text.RE.Tools.Lex
       Text.RE.Tools.Sed
       Text.RE.Types.Capture
       Text.RE.Types.CaptureID
+      Text.RE.Types.IsRegex
       Text.RE.Types.LineNo
       Text.RE.Types.Match
       Text.RE.Types.Matches
       Text.RE.Types.Options
+      Text.RE.Types.Replace
 
 %build-depends array bytestring base base-compat containers hashable heredoc regex-base regex-tdfa regex-tdfa-text template-haskell text time time-locale-compat transformers unordered-containers
 
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.7.0.0
+Version:                0.8.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
@@ -62,7 +62,7 @@
 Source-Repository this
     Type:               git
     Location:           https://github.com/iconnect/regex.git
-    Tag:                0.7.0.0
+    Tag:                0.8.0.0
 
 
 
@@ -75,14 +75,12 @@
       Text.RE.Internal.NamedCaptures
       Text.RE.Internal.PreludeMacros
       Text.RE.Internal.QQ
-      Text.RE.Types.IsRegex
       Text.RE.PCRE
       Text.RE.PCRE.ByteString
       Text.RE.PCRE.ByteString.Lazy
       Text.RE.PCRE.RE
       Text.RE.PCRE.Sequence
       Text.RE.PCRE.String
-      Text.RE.Types.Replace
       Text.RE.TDFA
       Text.RE.TDFA.ByteString
       Text.RE.TDFA.ByteString.Lazy
@@ -93,16 +91,19 @@
       Text.RE.TDFA.Text.Lazy
       Text.RE.TestBench
       Text.RE.TestBench.Parsers
+      Text.RE.Tools
       Text.RE.Tools.Edit
       Text.RE.Tools.Grep
       Text.RE.Tools.Lex
       Text.RE.Tools.Sed
       Text.RE.Types.Capture
-      Text.RE.Types.Match
-      Text.RE.Types.Matches
       Text.RE.Types.CaptureID
+      Text.RE.Types.IsRegex
       Text.RE.Types.LineNo
+      Text.RE.Types.Match
+      Text.RE.Types.Matches
       Text.RE.Types.Options
+      Text.RE.Types.Replace
 
     Default-Language:   Haskell2010
     GHC-Options:
@@ -146,7 +147,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -175,7 +176,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -201,7 +202,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -226,7 +227,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -254,7 +255,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -279,7 +280,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -301,7 +302,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -330,7 +331,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -362,7 +363,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -389,7 +390,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -416,7 +417,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -453,7 +454,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -491,7 +492,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -534,7 +535,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -579,7 +580,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.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.7.0.0
+0.8.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.7.0.0
+Version:                0.8.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.7.0.0
+    Tag:                0.8.0.0
 
 
 
@@ -82,7 +82,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -111,7 +111,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -137,7 +137,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -162,7 +162,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -190,7 +190,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -215,7 +215,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -237,8 +237,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
-      , regex-with-pcre      == 0.7.0.0
+        regex                == 0.8.0.0
+      , regex-with-pcre      == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -267,8 +267,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
-      , regex-with-pcre      == 0.7.0.0
+        regex                == 0.8.0.0
+      , regex-with-pcre      == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -300,7 +300,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -327,7 +327,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -354,8 +354,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
-      , regex-with-pcre      == 0.7.0.0
+        regex                == 0.8.0.0
+      , regex-with-pcre      == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -392,8 +392,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
-      , regex-with-pcre      == 0.7.0.0
+        regex                == 0.8.0.0
+      , regex-with-pcre      == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -431,7 +431,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -474,7 +474,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -519,7 +519,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.7.0.0
+        regex                == 0.8.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
diff --git a/src/Text/RE/PCRE/ByteString.hs b/src/Text/RE/PCRE/ByteString.hs
--- a/src/Text/RE/PCRE/ByteString.hs
+++ b/src/Text/RE/PCRE/ByteString.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.PCRE.RE
   ) where
 
diff --git a/src/Text/RE/PCRE/ByteString/Lazy.hs b/src/Text/RE/PCRE/ByteString/Lazy.hs
--- a/src/Text/RE/PCRE/ByteString/Lazy.hs
+++ b/src/Text/RE/PCRE/ByteString/Lazy.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.PCRE.RE
   ) where
 
diff --git a/src/Text/RE/PCRE/Sequence.hs b/src/Text/RE/PCRE/Sequence.hs
--- a/src/Text/RE/PCRE/Sequence.hs
+++ b/src/Text/RE/PCRE/Sequence.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.PCRE.RE
   ) where
 
diff --git a/src/Text/RE/PCRE/String.hs b/src/Text/RE/PCRE/String.hs
--- a/src/Text/RE/PCRE/String.hs
+++ b/src/Text/RE/PCRE/String.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.PCRE.RE
   ) where
 
diff --git a/src/Text/RE/TDFA/ByteString.hs b/src/Text/RE/TDFA/ByteString.hs
--- a/src/Text/RE/TDFA/ByteString.hs
+++ b/src/Text/RE/TDFA/ByteString.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.TDFA.RE
   ) where
 
diff --git a/src/Text/RE/TDFA/ByteString/Lazy.hs b/src/Text/RE/TDFA/ByteString/Lazy.hs
--- a/src/Text/RE/TDFA/ByteString/Lazy.hs
+++ b/src/Text/RE/TDFA/ByteString/Lazy.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.TDFA.RE
   ) where
 
diff --git a/src/Text/RE/TDFA/Sequence.hs b/src/Text/RE/TDFA/Sequence.hs
--- a/src/Text/RE/TDFA/Sequence.hs
+++ b/src/Text/RE/TDFA/Sequence.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.TDFA.RE
   ) where
 
diff --git a/src/Text/RE/TDFA/String.hs b/src/Text/RE/TDFA/String.hs
--- a/src/Text/RE/TDFA/String.hs
+++ b/src/Text/RE/TDFA/String.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.TDFA.RE
   ) where
 
diff --git a/src/Text/RE/TDFA/Text.hs b/src/Text/RE/TDFA/Text.hs
--- a/src/Text/RE/TDFA/Text.hs
+++ b/src/Text/RE/TDFA/Text.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.TDFA.RE
   ) where
 
diff --git a/src/Text/RE/TDFA/Text/Lazy.hs b/src/Text/RE/TDFA/Text/Lazy.hs
--- a/src/Text/RE/TDFA/Text/Lazy.hs
+++ b/src/Text/RE/TDFA/Text/Lazy.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE NoImplicitPrelude          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# OPTIONS_GHC -fno-warn-orphans       #-}
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE NoImplicitPrelude              #-}
+{-# LANGUAGE MultiParamTypeClasses          #-}
+{-# LANGUAGE FlexibleContexts               #-}
+{-# LANGUAGE FlexibleInstances              #-}
+{-# OPTIONS_GHC -fno-warn-orphans           #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# LANGUAGE CPP                            #-}
 #if __GLASGOW_HASKELL__ >= 800
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 #endif
@@ -21,8 +22,13 @@
   -- * The Toolkit
   -- $toolkit
   , module Text.RE
-  -- * The 'RE' Type
+  -- * The 'RE' Type and functions
   -- $re
+  , RE
+  , reSource
+  , compileRegex
+  , compileRegexWith
+  , escape
   , module Text.RE.TDFA.RE
   ) where
 
