diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -68,6 +68,8 @@
 
 &nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-03-28  v0.10.0.3 [Upgrade to LTS 8.6 and Improve Haddocks for Text.RE.{TDFA,PCRE}](https://github.com/iconnect/regex/milestone/13)
 
+&nbsp;&nbsp;&nbsp;&nbsp;&#x2612;&nbsp;&nbsp;2017-03-29  v0.11.0.0 [Simplify the API](https://github.com/iconnect/regex/milestone/14)
+
 &nbsp;&nbsp;&nbsp;&nbsp;&#x2610;&nbsp;&nbsp;2017-03-31  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,10 @@
 -*-change-log-*-
 
+0.11.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-03-29
+  * Simplify API (#97)
+  * Rename Location to RELocation (#98)
+  * Rename the MacrosDescriptor Fields #99
+
 0.10.0.3 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-03-28
   * Update to LTS-8.6 (#95)
   * Improve Haddocks for Text.RE.{TDFA,PCRE} (#94)
diff --git a/data/pp-result-gen.lhs b/data/pp-result-gen.lhs
--- a/data/pp-result-gen.lhs
+++ b/data/pp-result-gen.lhs
@@ -58,7 +58,7 @@
 And the main bottom stuff.
 \begin{code}
 main :: IO ()
-main = runTests
+main = runTheTests
   [ evalme_PPT_01
   ]
 \end{code}
diff --git a/examples/TestKit.lhs b/examples/TestKit.lhs
--- a/examples/TestKit.lhs
+++ b/examples/TestKit.lhs
@@ -18,7 +18,7 @@
   , substVersion_
   , readCurrentVersion
   , Test
-  , runTests
+  , runTheTests
   , checkThis
   , test_pp
   , include
@@ -39,11 +39,11 @@
 import           System.IO
 import           Text.Printf
 import           Text.RE.TDFA
-import           Text.RE.TestBench.Parsers
+import           Text.RE.TestBench
 import           Text.RE.Tools.Grep
 import           Text.RE.Tools.Sed
-import           Text.RE.Types.Match
-import           Text.RE.Types.Replace
+import           Text.RE.ZeInternals.Types.Match
+import           Text.RE.Replace
 \end{code}
 
 
@@ -119,8 +119,8 @@
     }
   deriving (Show)
 
-runTests :: [Test] -> IO ()
-runTests tests = do
+runTheTests :: [Test] -> IO ()
+runTheTests tests = do
   as <- getArgs
   case as of
     [] -> return ()
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
@@ -41,8 +41,8 @@
 import           Text.RE.TDFA.Text                        as T
 import           Text.RE.Tools.Grep
 import           Text.RE.Tools.Sed
-import           Text.RE.Types.Match
-import           Text.RE.Types.Matches
+import           Text.RE.ZeInternals.Types.Match
+import           Text.RE.ZeInternals.Types.Matches
 
 
 main :: IO ()
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
@@ -27,7 +27,7 @@
 import           System.IO
 import           Text.RE.TDFA.ByteString.Lazy
 import           Text.RE.Tools.Sed
-import           Text.RE.Types.SearchReplace
+import           Text.RE.ZeInternals.Types.SearchReplace
 
 
 type ModPath = String
@@ -151,31 +151,31 @@
 ------------------------------------------------------------------------
 
 source_ed_mp :: ModPath
-source_ed_mp = "Text.RE.Internal.SearchReplace.TDFA.ByteString.Lazy"
+source_ed_mp = "Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy"
 
 tdfa_ed_edits :: [(ModPath,SedScript)]
 tdfa_ed_edits =
-  [ (,) "Text.RE.Internal.SearchReplace.TDFA.ByteString" $ Pipe
+  [ (,) "Text.RE.ZeInternals.SearchReplace.TDFA.ByteString" $ Pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.TDFA.ByteString|]
       , Template [ed|Data.ByteString.Lazy.Char8    as LBS///Data.ByteString.Char8         as B|]
       , Template [ed|LBS.ByteString///B.ByteString|]
       ]
-  , (,) "Text.RE.Internal.SearchReplace.TDFA.Sequence" $ Pipe
+  , (,) "Text.RE.ZeInternals.SearchReplace.TDFA.Sequence" $ Pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.TDFA.Sequence|]
       , Template [ed|Data.ByteString.Lazy.Char8    as LBS///Data.Sequence                 as S|]
       , Template [ed|LBS.ByteString///(S.Seq Char)|]
       ]
-  , (,) "Text.RE.Internal.SearchReplace.TDFA.String" $ Pipe
+  , (,) "Text.RE.ZeInternals.SearchReplace.TDFA.String" $ Pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.TDFA.String|]
       , Template [ed|import qualified Data.ByteString.Lazy.Char8    as LBS///|]
       , Template [ed|LBS.ByteString///String|]
       ]
-  , (,) "Text.RE.Internal.SearchReplace.TDFA.Text" $ Pipe
+  , (,) "Text.RE.ZeInternals.SearchReplace.TDFA.Text" $ Pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.TDFA.Text|]
       , Template [ed|Data.ByteString.Lazy.Char8    as LBS///Data.Text                     as T|]
       , Template [ed|LBS.ByteString///T.Text|]
       ]
-  , (,) "Text.RE.Internal.SearchReplace.TDFA.Text.Lazy" $ Pipe
+  , (,) "Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy" $ Pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.TDFA.Text.Lazy|]
       , Template [ed|Data.ByteString.Lazy.Char8    as LBS///Data.Text.Lazy                as TL|]
       , Template [ed|LBS.ByteString///TL.Text|]
@@ -184,32 +184,32 @@
 
 pcre_ed_edits :: [(ModPath,SedScript)]
 pcre_ed_edits =
-  [ (,) "Text.RE.Internal.SearchReplace.PCRE.ByteString" $ pipe
+  [ (,) "Text.RE.ZeInternals.SearchReplace.PCRE.ByteString" $ pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.PCRE.ByteString|]
       , Template [ed|Data.ByteString.Lazy.Char8    as LBS///Data.ByteString.Char8         as B|]
       , Template [ed|LBS.ByteString///B.ByteString|]
       ]
-  , (,) "Text.RE.Internal.SearchReplace.PCRE.ByteString.Lazy" $ pipe
+  , (,) "Text.RE.ZeInternals.SearchReplace.PCRE.ByteString.Lazy" $ pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.PCRE.ByteString.Lazy|]
-      , Template [ed|Text.RE.TDFA.RE///Text.RE.PCRE.RE|]
+      , Template [ed|Text.RE.ZeInternals.TDFA///Text.RE.ZeInternals.PCRE|]
       ]
-  , (,) "Text.RE.Internal.SearchReplace.PCRE.Sequence" $ pipe
+  , (,) "Text.RE.ZeInternals.SearchReplace.PCRE.Sequence" $ pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.PCRE.Sequence|]
       , Template [ed|Data.ByteString.Lazy.Char8    as LBS///Data.Sequence                 as S|]
       , Template [ed|LBS.ByteString///(S.Seq Char)|]
-      , Template [ed|Text.RE.TDFA.RE///Text.RE.PCRE.RE|]
+      , Template [ed|Text.RE.ZeInternals.TDFA///Text.RE.ZeInternals.PCRE|]
       ]
-  , (,) "Text.RE.Internal.SearchReplace.PCRE.String" $ pipe
+  , (,) "Text.RE.ZeInternals.SearchReplace.PCRE.String" $ pipe
       [ Template [ed|SearchReplace.TDFA.ByteString.Lazy///SearchReplace.PCRE.String|]
       , Template [ed|import qualified Data.ByteString.Lazy.Char8    as LBS///|]
       , Template [ed|LBS.ByteString///String|]
-      , Template [ed|Text.RE.TDFA.RE///Text.RE.PCRE.RE|]
+      , Template [ed|Text.RE.ZeInternals.TDFA///Text.RE.ZeInternals.PCRE|]
       ]
   ]
   where
     pipe as = Pipe $ as ++
-      [ Template [ed|Text.RE.TDFA.RE///Text.RE.PCRE.RE|]
-      , Template [ed|Text.RE.Internal.SearchReplace.TDFAEdPrime///Text.RE.Internal.SearchReplace.PCREEdPrime|]
+      [ Template [ed|Text.RE.ZeInternals.TDFA///Text.RE.ZeInternals.PCRE|]
+      , Template [ed|Text.RE.ZeInternals.SearchReplace.TDFAEdPrime///Text.RE.ZeInternals.SearchReplace.PCREEdPrime|]
       ]
 
 
diff --git a/examples/re-include.lhs b/examples/re-include.lhs
--- a/examples/re-include.lhs
+++ b/examples/re-include.lhs
@@ -33,12 +33,12 @@
 import           TestKit
 import           Text.RE.Tools.Edit
 import           Text.RE.TDFA.ByteString.Lazy
-import           Text.RE.TestBench.Parsers
+import           Text.RE.TestBench
 import           Text.RE.Tools.Grep
 import           Text.RE.Tools.Sed
-import           Text.RE.Types.Capture
-import           Text.RE.Types.Match
-import           Text.RE.Types.Replace
+import           Text.RE.ZeInternals.Types.Capture
+import           Text.RE.ZeInternals.Types.Match
+import           Text.RE.Replace
 \end{code}
 
 \begin{code}
@@ -78,7 +78,7 @@
 \begin{code}
 include_file :: LineNo
              -> Match LBS.ByteString
-             -> Location
+             -> RELocation
              -> Capture LBS.ByteString
              -> IO (Maybe LBS.ByteString)
 include_file _ mtch _ _ = fmap Just $
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
@@ -41,15 +41,15 @@
 import           System.Environment
 import           System.Exit
 import           System.IO
-import           Text.RE.Tools.Sed
-import           Text.RE.Types.REOptions
-import           Text.RE.TestBench.Parsers
-import           Text.RE.TestBench
 import           Text.RE.PCRE.ByteString.Lazy
 import qualified Text.RE.PCRE.String                      as S
-import           Text.RE.Types.Capture
-import           Text.RE.Types.Match
-import           Text.RE.Types.Replace
+import           Text.RE.TestBench
+import           Text.RE.Tools.Sed
+import           Text.RE.ZeInternals.TestBench
+import           Text.RE.ZeInternals.Types.Capture
+import           Text.RE.ZeInternals.Types.Match
+import           Text.RE.REOptions
+import           Text.RE.Replace
 import           Text.Printf
 \end{code}
 
@@ -148,7 +148,7 @@
              -> (Match LBS.ByteString->Maybe a)
              -> LineNo
              -> Match LBS.ByteString
-             -> Location
+             -> RELocation
              -> Capture LBS.ByteString
              -> IO (Maybe LBS.ByteString)
 process_line ctx src prs lno cs _ _ = do
@@ -311,12 +311,12 @@
 user_macro env mid =
   runTests regexType parse_user samples env mid
     MacroDescriptor
-      { _md_source          = "(?:-|[^[:space:]]+)"
-      , _md_samples         = map fst samples
-      , _md_counter_samples = counter_samples
-      , _md_test_results    = []
-      , _md_parser          = Just "parse_user"
-      , _md_description     = "a user ident (per RFC1413)"
+      { macroSource          = "(?:-|[^[:space:]]+)"
+      , macroSamples         = map fst samples
+      , macroCounterSamples = counter_samples
+      , macroTestResults    = []
+      , macroParser          = Just "parse_user"
+      , macroDescription     = "a user ident (per RFC1413)"
       }
   where
     samples :: [(String,User)]
@@ -334,12 +334,12 @@
 pid_tid_macro env mid =
   runTests regexType parse_pid_tid samples env mid
     MacroDescriptor
-      { _md_source          = "(?:@{%nat})#(?:@{%nat}):"
-      , _md_samples         = map fst samples
-      , _md_counter_samples = counter_samples
-      , _md_test_results    = []
-      , _md_parser          = Just "parse_pid_tid"
-      , _md_description     = "<PID>#<TID>:"
+      { macroSource          = "(?:@{%nat})#(?:@{%nat}):"
+      , macroSamples         = map fst samples
+      , macroCounterSamples = counter_samples
+      , macroTestResults    = []
+      , macroParser          = Just "parse_pid_tid"
+      , macroDescription     = "<PID>#<TID>:"
       }
   where
     samples :: [(String,(Int,Int))]
@@ -359,12 +359,12 @@
 access_macro env mid =
   runTests' regexType (parse_access . fmap LBS.pack) samples env mid
     MacroDescriptor
-      { _md_source          = access_re
-      , _md_samples         = map fst samples
-      , _md_counter_samples = counter_samples
-      , _md_test_results    = []
-      , _md_parser          = Just "parse_a"
-      , _md_description     = "an Nginx access log file line"
+      { macroSource          = access_re
+      , macroSamples         = map fst samples
+      , macroCounterSamples = counter_samples
+      , macroTestResults    = []
+      , macroParser          = Just "parse_a"
+      , macroDescription     = "an Nginx access log file line"
       }
   where
     samples :: [(String,Access)]
@@ -392,12 +392,12 @@
 access_deg_macro env mid =
   runTests' regexType (parse_deg_access . fmap LBS.pack) samples env mid
     MacroDescriptor
-      { _md_source          = " -  \\[\\] \"\"   \"\" \"\" \"\""
-      , _md_samples         = map fst samples
-      , _md_counter_samples = counter_samples
-      , _md_test_results    = []
-      , _md_parser          = Nothing
-      , _md_description     = "a degenerate Nginx access log file line"
+      { macroSource          = " -  \\[\\] \"\"   \"\" \"\" \"\""
+      , macroSamples         = map fst samples
+      , macroCounterSamples = counter_samples
+      , macroTestResults    = []
+      , macroParser          = Nothing
+      , macroDescription     = "a degenerate Nginx access log file line"
       }
   where
     samples :: [(String,Access)]
@@ -414,12 +414,12 @@
 error_macro env mid =
   runTests' regexType (parse_error . fmap LBS.pack) samples env mid
     MacroDescriptor
-      { _md_source          = error_re
-      , _md_samples         = map fst samples
-      , _md_counter_samples = counter_samples
-      , _md_test_results    = []
-      , _md_parser          = Just "parse_e"
-      , _md_description     = "an Nginx error log file line"
+      { macroSource          = error_re
+      , macroSamples         = map fst samples
+      , macroCounterSamples = counter_samples
+      , macroTestResults    = []
+      , macroParser          = Just "parse_e"
+      , macroDescription     = "an Nginx error log file line"
       }
   where
     samples :: [(String,Error)]
diff --git a/examples/re-prep.lhs b/examples/re-prep.lhs
--- a/examples/re-prep.lhs
+++ b/examples/re-prep.lhs
@@ -37,14 +37,14 @@
 import           System.IO
 import           TestKit
 import           Text.Heredoc
-import           Text.RE.TestBench.Parsers
+import           Text.RE.TestBench
 import           Text.RE.Tools.Grep
 import           Text.RE.Tools.Sed
 import           Text.RE.TDFA.ByteString.Lazy
 import qualified Text.RE.TDFA.Text                        as TT
-import           Text.RE.Types.Capture
-import           Text.RE.Types.Match
-import           Text.RE.Types.Replace
+import           Text.RE.ZeInternals.Types.Capture
+import           Text.RE.ZeInternals.Types.Match
+import           Text.RE.Replace
 \end{code}
 
 \begin{code}
@@ -129,7 +129,7 @@
   evalme :: MODE
          -> LineNo
          -> Match LBS.ByteString
-         -> Location
+         -> RELocation
          -> Capture LBS.ByteString
          -> IO (Maybe LBS.ByteString)
 
@@ -149,7 +149,7 @@
 
 passthru :: LineNo
          -> Match LBS.ByteString
-         -> Location
+         -> RELocation
          -> Capture LBS.ByteString
          -> IO (Maybe LBS.ByteString)
 passthru _ _ _ _ = return Nothing
@@ -175,18 +175,18 @@
     pd "re-prep"
     pd "re-tests"
     pd "TestKit"
-    pd "RE/Types/Matches"
-    pd "RE/Types/Match"
-    pd "RE/Types/Capture"
-    pd "RE/Types/IsRegex"
-    pd "RE/Types/REOptions"
-    pd "RE/Types/Replace"
-    pd "RE/TestBench"
+    pd "RE/IsRegex"
+    pd "RE/Replace"
+    pd "RE/REOptions"
     pd "RE/Tools/Edit"
     pd "RE/Tools/Grep"
     pd "RE/Tools/Lex"
     pd "RE/Tools/Sed"
-    pd "RE/Internal/NamedCaptures"
+    pd "RE/ZeInternals/NamedCaptures"
+    pd "RE/ZeInternals/TestBench"
+    pd "RE/ZeInternals/Types/Matches"
+    pd "RE/ZeInternals/Types/Match"
+    pd "RE/ZeInternals/Types/Capture"
     -- render the tutorial in HTML
     prep_tut Doc "examples/re-tutorial-master.lhs" "tmp/re-tutorial.lhs"
     createDirectoryIfMissing False "tmp"
@@ -216,7 +216,7 @@
 \begin{code}
 includeDoc :: LineNo
            -> Match LBS.ByteString
-           -> Location
+           -> RELocation
            -> Capture LBS.ByteString
            -> IO (Maybe LBS.ByteString)
 includeDoc _ mtch _ _ = fmap Just $
@@ -231,7 +231,7 @@
 \begin{code}
 evalmeDoc :: LineNo
           -> Match LBS.ByteString
-          -> Location
+          -> RELocation
           -> Capture LBS.ByteString
           -> IO (Maybe LBS.ByteString)
 evalmeDoc _ mtch _ _ = return $ Just $ flip replace mtch $ LBS.intercalate "\n"
@@ -248,7 +248,7 @@
 evalmeGen :: GenState
           -> LineNo
           -> Match LBS.ByteString
-          -> Location
+          -> RELocation
           -> Capture LBS.ByteString
           -> IO (Maybe LBS.ByteString)
 evalmeGen gs _ mtch0 _ _ = Just <$>
@@ -289,7 +289,7 @@
         return $ ReplaceWith $ LBS.unlines $
           [ begin_code
           , "main :: IO ()"
-          , "main = runTests"
+          , "main = runTheTests"
           ] ++ mk_list fns ++
           [ end_code
           ]
@@ -536,7 +536,7 @@
         -> IORef [Heading]
         -> LineNo
         -> Match LBS.ByteString
-        -> Location
+        -> RELocation
         -> Capture LBS.ByteString
         -> IO (Maybe LBS.ByteString)
 heading mmd rf_t rf_h _ mtch _ _ = do
@@ -648,7 +648,7 @@
           -> Bool                       -- ^ true if this is a checjed line
           -> LineNo                     -- ^ line no of the replacement redex (unused)
           -> Match LBS.ByteString       -- ^ the matched task-list line
-          -> Location                   -- ^ which match and capure (unused)
+          -> RELocation                   -- ^ which match and capure (unused)
           -> Capture LBS.ByteString     -- ^ the capture weare replacing (unsuded)
           -> IO (Maybe LBS.ByteString)  -- ^ the replacement text, or Nothing to indicate no change to this line
 task_list mmd rf chk _ mtch _ _ =
@@ -680,7 +680,7 @@
               -> IORef Bool                 -- ^ will contain True iff we have already entered a task list
               -> LineNo                     -- ^ line no of the replacement redex (unused)
               -> Match LBS.ByteString       -- ^ the matched task-list line
-              -> Location                   -- ^ which match and capure (unused)
+              -> RELocation                   -- ^ which match and capure (unused)
               -> Capture LBS.ByteString     -- ^ the capture weare replacing (unsuded)
               -> IO (Maybe LBS.ByteString)  -- ^ the replacement text, or Nothing to indicate no change to this line
 fin_task_list mmd rf_t _ mtch _ _ =
@@ -814,8 +814,8 @@
 \begin{code}
 test :: IO ()
 test = do
-  test_pp "pp-doc" (prep_tut Doc) "data/pp-test.lhs" "data/pp-result-doc.lhs"
+  test_pp "re-prep doc" (prep_tut Doc) "data/pp-test.lhs" "data/pp-result-doc.lhs"
   gm <- genMode
-  test_pp "pp-gen" (prep_tut gm ) "data/pp-test.lhs" "data/pp-result-gen.lhs"
+  test_pp "re-prep gen" (prep_tut gm ) "data/pp-test.lhs" "data/pp-result-gen.lhs"
   putStrLn "tests passed"
 \end{code}
diff --git a/examples/re-tests.lhs b/examples/re-tests.lhs
--- a/examples/re-tests.lhs
+++ b/examples/re-tests.lhs
@@ -46,20 +46,21 @@
 import qualified Text.Regex.PCRE                as PCRE_
 import qualified Text.Regex.TDFA                as TDFA_
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.NamedCaptures
-import           Text.RE.Internal.PreludeMacros
+import           Text.RE.Replace
+import           Text.RE.IsRegex
 import qualified Text.RE.PCRE                   as PCRE
 import           Text.RE.TDFA                   as TDFA
-import           Text.RE.SearchReplace
 import           Text.RE.TestBench
 import           Text.RE.Tools.Sed
-import           Text.RE.Types.Capture
-import           Text.RE.Types.CaptureID
-import           Text.RE.Types.Match
-import           Text.RE.Types.Matches
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.NamedCaptures
+import           Text.RE.ZeInternals.PreludeMacros
+import           Text.RE.ZeInternals.TestBench
+import           Text.RE.ZeInternals.Types.Capture
+import           Text.RE.ZeInternals.Types.CaptureID
+import           Text.RE.ZeInternals.Types.Match
+import           Text.RE.ZeInternals.Types.Matches
+import           Text.RE.REOptions
 
 import qualified Text.RE.PCRE.String            as P_ST
 import qualified Text.RE.PCRE.ByteString        as P_BS
@@ -320,7 +321,7 @@
       chk r
   , testCase "Seq Char" $ do
       let ms = S.fromList str_ =~ regex_ :: Matches (S.Seq Char)
-          f  = \_ (Location i j) Capture{..} -> Just $ S.fromList $
+          f  = \_ (RELocation i j) Capture{..} -> Just $ S.fromList $
                   "(" <> show i <> ":" <> show_co j <> ":" <>
                     F.toList capturedText <> ")"
           r  = replaceAllCaptures ALL f ms
@@ -342,8 +343,8 @@
         r
         "(0:0:(0:1:a) (0:2:bbbb)) (1:0:(1:1:aa) (1:2:b))"
 
-    fmt :: (IsString s,Replace s) => a -> Location -> Capture s -> Maybe s
-    fmt _ (Location i j) Capture{..} = Just $ "(" <> packR (show i) <> ":" <>
+    fmt :: (IsString s,Replace s) => a -> RELocation -> Capture s -> Maybe s
+    fmt _ (RELocation i j) Capture{..} = Just $ "(" <> packR (show i) <> ":" <>
       packR (show_co j) <> ":" <> capturedText <> ")"
 
     show_co (CaptureOrdinal j) = show j
diff --git a/examples/re-tutorial.lhs b/examples/re-tutorial.lhs
--- a/examples/re-tutorial.lhs
+++ b/examples/re-tutorial.lhs
@@ -92,12 +92,12 @@
 dealing with bulk text will probably want to choose one of the other
 options.
 \begin{code}
+import           Text.RE.Replace
 import           Text.RE.TDFA.String
-import           Text.RE.Types.Capture
-import           Text.RE.Types.CaptureID
-import           Text.RE.Types.Match
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
+import           Text.RE.ZeInternals.Types.Capture
+import           Text.RE.ZeInternals.Types.CaptureID
+import           Text.RE.ZeInternals.Types.Match
+import           Text.RE.REOptions
 \end{code}
 If you are predominantly matching against a single type in your module
 then you will probably find it more convenient to use the relevant module
@@ -267,9 +267,9 @@
 (*=~) :: String -> RE -> Matches String
 ```
 </div>
-with `Matches` defined in `Text.RE.Types.Capture` thus:
+with `Matches` defined in `Text.RE.ZeInternals.Types.Capture` thus:
 
-%include "Text/RE/Types/Matches.lhs" "^data Matches "
+%include "Text/RE/ZeInternals/Types/Matches.lhs" "^data Matches "
 
 The critical component of the `Matches` type is the `[Match a]` in
 `allMatches`, containing the details all of each substring matched by
@@ -284,9 +284,9 @@
 ```
 </div>
 with `Match` (referenced in the definition of `Matches` above) defined
-in `Text.RE.Types.Capture` thus:
+in `Text.RE.ZeInternals.Types.Capture` thus:
 
-%include "Text/RE/Types/Match.lhs" "^data Match "
+%include "Text/RE/ZeInternals/Types/Match.lhs" "^data Match "
 
 Like `matchesSource` above, `matchSource` retains the original search
 string, but also a `CaptureNames` field listing all of the capture
@@ -300,7 +300,7 @@
 
 Each captured substring is represented by the following `Capture` type:
 
-%include "Text/RE/Types/Capture.lhs" "^data Capture "
+%include "Text/RE/ZeInternals/Types/Capture.lhs" "^data Capture "
 
 Here we list the whole original search string in `captureSource` and
 the text of the sub-string captured in `capturedText`. `captureOffset`
@@ -391,12 +391,12 @@
 
 The `replaceAllCaptures` function is of type
 
-%include "Text/RE/Types/Replace.lhs" "replaceAllCaptures ::"
+%include "Text/RE/Replace.lhs" "replaceAllCaptures ::"
 
-and the `REContext` and `Location` types are defined in
-`Text.RE.Types.Replace` as follows,
+and the `REContext` and `RELocation` types are defined in
+`Text.RE.Replace` as follows,
 
-%include "Text/RE/Types/Replace.lhs" "^data REContext"
+%include "Text/RE/Replace.lhs" "^data REContext"
 
 The processing function gets applied to the captures specified by the
 `REContext`, which can be directed to process `ALL` of the captures,
@@ -405,7 +405,7 @@
 matches, or just the `SUB` (subsidiary) captures, as was the case above.
 
 The substitution function takes the `Match` corresponding to the current
-redex being processed, the `Location` information specifying redex _n_
+redex being processed, the `RELocation` information specifying redex _n_
 redex and capure _i_, and the `Capure` being substituted. Our substitution
 function didn't need the `Match` context so it ignored it.
 
@@ -434,7 +434,7 @@
 evalme_RPF_02 = checkThis "evalme_RPF_02" ("[2016-01-09] [2015-12-05] [2015-10-05]") $ fixup_and_reformat_dates "2016-01-09 2015-12-5 2015-10-05"
 \end{code}
 
-`Text.RE.Types.Replace` provides analagous functions for replacing the
+`Text.RE.Replace` provides analagous functions for replacing the
 test of a single `Match` returned from `?=~`.
 
 
@@ -471,7 +471,7 @@
 you chosen back end's options, or you may need to supply a different
 set of macros to those provided in the standard environment. In which
 case you will need to know about the `REOptions` type, defined by each of
-the back ends in terms of the `REOptions_` type of `Text.RE.Types.REOptions`
+the back ends in terms of the `REOptions_` type of `Text.RE.REOptions`
 as follows.
 <div class='inlinecodeblock'>
 ```
@@ -481,9 +481,9 @@
 (Bear in mind that `CompOption` and `ExecOption` will be different
 types for each back end.)
 
-The `REOptions_` type is defined in `Text.RE.Types.REOptions` as follows:
+The `REOptions_` type is defined in `Text.RE.REOptions` as follows:
 
-%include "Text/RE/Types/REOptions.lhs" "data REOptions_"
+%include "Text/RE/ZeInternals/Types/REOptions.lhs" "data REOptions_"
 
   * `optionsMode` is an experimental feature that controls the RE
     parser.
@@ -520,7 +520,7 @@
   * `SimpleREOptions` this is just a simple enum type that we use to
     encode the standard options:
 
-%include "Text/RE/Types/REOptions.lhs" "^data SimpleREOptions"
+%include "Text/RE/ZeInternals/Types/REOptions.lhs" "^data SimpleREOptions"
 
   * `Mode`: you can specify the parser mode;
 
@@ -582,7 +582,7 @@
     token-generating functions and the input text and returns a list of tokens.
     This should never be used where performance is important (use Alex),
     except as a development prototype (used internally in
-    [Text.RE.Internal.NamedCaptures](NamedCaptures.html)).
+    [Text.RE.ZeInternals.NamedCaptures](NamedCaptures.html)).
 
   * [Text.RE.Tools.Sed](Sed.html) using [Text.RE.Tools.Edit](Edit.html):
     takes an association list of regular expressions and substitution actions,
@@ -641,24 +641,24 @@
 
 Here is the prototype scanner.
 
-%include "Text/RE/Internal/NamedCaptures.lhs" "scan ::"
+%include "Text/RE/ZeInternals/NamedCaptures.lhs" "scan ::"
 
 Once the package has stabilised it should be rewritten with Alex.
 
-See [Text.RE.Internal.NamedCaptures](NamedCaptures.html) for
+See [Text.RE.ZeInternals.NamedCaptures](NamedCaptures.html) for
 details.
 
 
 Anti-Example: Scanning REs in the TestBench
 -------------------------------------------
 
-The [Text.RE.TestBench](TestBench.html) contains an almost
+The [Text.RE.ZeInternals.TestBench](TestBench.html) contains an almost
 identical parser to the above, written with recursive functions.
 
-%include "Text/RE/TestBench.lhs" "scan_re ::"
+%include "Text/RE/ZeInternals/TestBench.lhs" "scan_re ::"
 
 Once some technical issues have been ersolved it will use the above
-scanner in [Text.RE.Internal.NamedCaptures](NamedCaptures.html).
+scanner in [Text.RE.ZeInternals.NamedCaptures](NamedCaptures.html).
 
 
 Example: filename analysis
@@ -707,7 +707,7 @@
 evalme_PMC_00 = checkThis "evalme_PMC_00" ("foo MacroID {getMacroID = \"bar\"} baz") $ expandMacros_ (Just . show) "foo @{bar} baz"
 \end{code}
 
-See [Text.RE.Types.Replace](Replace.html) for details.
+See [Text.RE.Replace](Replace.html) for details.
 
 
 Example: Parsing Replace Templates
@@ -720,7 +720,7 @@
 
 parseTemplateR' :: Template
                 -> Match String
-                -> Location
+                -> RELocation
                 -> Capture String
                 -> Maybe String
 parseTemplateR' tpl mtch _ _ =
@@ -756,7 +756,7 @@
 evalme_TPL_00 = checkThis "evalme_TPL_00" ("2016/01/11") $ date_reformat "2016-01-11"
 \end{code}
 
-See [Text.RE.Types.Replace](Replace.html)
+See [Text.RE.Replace](Replace.html)
 
 
 Example: include preprocessor
@@ -802,7 +802,7 @@
 
 \begin{code}
 main :: IO ()
-main = runTests
+main = runTheTests
   [ evalme_TPL_00
   , evalme_PMC_00
   , evalme_REU_01
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
@@ -2,58 +2,59 @@
     Hs-Source-Dirs:     .
     Exposed-Modules:
       Text.RE
-      Text.RE.Internal.AddCaptureNames
-      Text.RE.Internal.EscapeREString
-      Text.RE.Internal.NamedCaptures
-      Text.RE.Internal.PreludeMacros
-      Text.RE.Internal.QQ
-      Text.RE.Internal.SearchReplace
-      Text.RE.Internal.SearchReplace.PCRE
-      Text.RE.Internal.SearchReplace.PCRE.ByteString
-      Text.RE.Internal.SearchReplace.PCRE.ByteString.Lazy
-      Text.RE.Internal.SearchReplace.PCRE.Sequence
-      Text.RE.Internal.SearchReplace.PCRE.String
-      Text.RE.Internal.SearchReplace.PCREEdPrime
-      Text.RE.Internal.SearchReplace.TDFA
-      Text.RE.Internal.SearchReplace.TDFA.ByteString
-      Text.RE.Internal.SearchReplace.TDFA.ByteString.Lazy
-      Text.RE.Internal.SearchReplace.TDFA.Sequence
-      Text.RE.Internal.SearchReplace.TDFA.String
-      Text.RE.Internal.SearchReplace.TDFA.Text
-      Text.RE.Internal.SearchReplace.TDFA.Text.Lazy
-      Text.RE.Internal.SearchReplace.TDFAEdPrime
+      Text.RE.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.SearchReplace
+      Text.RE.REOptions
+      Text.RE.Replace
       Text.RE.Summa
       Text.RE.TDFA
       Text.RE.TDFA.ByteString
       Text.RE.TDFA.ByteString.Lazy
-      Text.RE.TDFA.RE
       Text.RE.TDFA.Sequence
       Text.RE.TDFA.String
       Text.RE.TDFA.Text
       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
-      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.REOptions
-      Text.RE.Types.Replace
-      Text.RE.Types.SearchReplace
+      Text.RE.ZeInternals.AddCaptureNames
+      Text.RE.ZeInternals.EscapeREString
+      Text.RE.ZeInternals.NamedCaptures
+      Text.RE.ZeInternals.PCRE
+      Text.RE.ZeInternals.PreludeMacros
+      Text.RE.ZeInternals.Replace
+      Text.RE.ZeInternals.TDFA
+      Text.RE.ZeInternals.TestBench
+      Text.RE.ZeInternals.Types.Capture
+      Text.RE.ZeInternals.Types.CaptureID
+      Text.RE.ZeInternals.Types.LineNo
+      Text.RE.ZeInternals.Types.Match
+      Text.RE.ZeInternals.Types.Matches
+      Text.RE.ZeInternals.Types.SearchReplace
+
+    Other-Modules:
+      Text.RE.ZeInternals.QQ
+      Text.RE.ZeInternals.SearchReplace
+      Text.RE.ZeInternals.SearchReplace.PCRE
+      Text.RE.ZeInternals.SearchReplace.PCRE.ByteString
+      Text.RE.ZeInternals.SearchReplace.PCRE.ByteString.Lazy
+      Text.RE.ZeInternals.SearchReplace.PCRE.Sequence
+      Text.RE.ZeInternals.SearchReplace.PCRE.String
+      Text.RE.ZeInternals.SearchReplace.PCREEdPrime
+      Text.RE.ZeInternals.SearchReplace.TDFA
+      Text.RE.ZeInternals.SearchReplace.TDFA.ByteString
+      Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy
+      Text.RE.ZeInternals.SearchReplace.TDFA.Sequence
+      Text.RE.ZeInternals.SearchReplace.TDFA.String
+      Text.RE.ZeInternals.SearchReplace.TDFA.Text
+      Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy
+      Text.RE.ZeInternals.SearchReplace.TDFAEdPrime
 
 %build-depends-lib array bytestring base base-compat containers hashable 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
@@ -7,49 +7,48 @@
 
     Exposed-Modules:
       Text.RE
-      Text.RE.Internal.AddCaptureNames
-      Text.RE.Internal.EscapeREString
-      Text.RE.Internal.NamedCaptures
-      Text.RE.Internal.PreludeMacros
-      Text.RE.SearchReplace
+      Text.RE.IsRegex
+      Text.RE.Replace
       Text.RE.Summa
       Text.RE.TDFA
       Text.RE.TDFA.ByteString
       Text.RE.TDFA.ByteString.Lazy
-      Text.RE.TDFA.RE
       Text.RE.TDFA.Sequence
       Text.RE.TDFA.String
       Text.RE.TDFA.Text
       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
-      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.REOptions
-      Text.RE.Types.Replace
-      Text.RE.Types.SearchReplace
+      Text.RE.ZeInternals.AddCaptureNames
+      Text.RE.ZeInternals.EscapeREString
+      Text.RE.ZeInternals.NamedCaptures
+      Text.RE.ZeInternals.PreludeMacros
+      Text.RE.ZeInternals.Replace
+      Text.RE.ZeInternals.TDFA
+      Text.RE.ZeInternals.TestBench
+      Text.RE.ZeInternals.Types.Capture
+      Text.RE.ZeInternals.Types.CaptureID
+      Text.RE.ZeInternals.Types.LineNo
+      Text.RE.ZeInternals.Types.Match
+      Text.RE.ZeInternals.Types.Matches
+      Text.RE.REOptions
+      Text.RE.ZeInternals.Types.SearchReplace
 
     Other-Modules:
-      Text.RE.Internal.QQ
-      Text.RE.Internal.SearchReplace
-      Text.RE.Internal.SearchReplace.TDFA
-      Text.RE.Internal.SearchReplace.TDFA.ByteString
-      Text.RE.Internal.SearchReplace.TDFA.ByteString.Lazy
-      Text.RE.Internal.SearchReplace.TDFA.Sequence
-      Text.RE.Internal.SearchReplace.TDFA.String
-      Text.RE.Internal.SearchReplace.TDFA.Text
-      Text.RE.Internal.SearchReplace.TDFA.Text.Lazy
-      Text.RE.Internal.SearchReplace.TDFAEdPrime
+      Text.RE.ZeInternals.QQ
+      Text.RE.ZeInternals.SearchReplace
+      Text.RE.ZeInternals.SearchReplace.TDFA
+      Text.RE.ZeInternals.SearchReplace.TDFA.ByteString
+      Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy
+      Text.RE.ZeInternals.SearchReplace.TDFA.Sequence
+      Text.RE.ZeInternals.SearchReplace.TDFA.String
+      Text.RE.ZeInternals.SearchReplace.TDFA.Text
+      Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy
+      Text.RE.ZeInternals.SearchReplace.TDFAEdPrime
 
 %build-depends-lib array bytestring base base-compat containers hashable 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.10.0.3
+Version:                0.11.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.10.0.3
+    Tag:                0.11.0.0
 
 
 
@@ -70,60 +70,61 @@
     Hs-Source-Dirs:     .
     Exposed-Modules:
       Text.RE
-      Text.RE.Internal.AddCaptureNames
-      Text.RE.Internal.EscapeREString
-      Text.RE.Internal.NamedCaptures
-      Text.RE.Internal.PreludeMacros
-      Text.RE.Internal.QQ
-      Text.RE.Internal.SearchReplace
-      Text.RE.Internal.SearchReplace.PCRE
-      Text.RE.Internal.SearchReplace.PCRE.ByteString
-      Text.RE.Internal.SearchReplace.PCRE.ByteString.Lazy
-      Text.RE.Internal.SearchReplace.PCRE.Sequence
-      Text.RE.Internal.SearchReplace.PCRE.String
-      Text.RE.Internal.SearchReplace.PCREEdPrime
-      Text.RE.Internal.SearchReplace.TDFA
-      Text.RE.Internal.SearchReplace.TDFA.ByteString
-      Text.RE.Internal.SearchReplace.TDFA.ByteString.Lazy
-      Text.RE.Internal.SearchReplace.TDFA.Sequence
-      Text.RE.Internal.SearchReplace.TDFA.String
-      Text.RE.Internal.SearchReplace.TDFA.Text
-      Text.RE.Internal.SearchReplace.TDFA.Text.Lazy
-      Text.RE.Internal.SearchReplace.TDFAEdPrime
+      Text.RE.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.SearchReplace
+      Text.RE.REOptions
+      Text.RE.Replace
       Text.RE.Summa
       Text.RE.TDFA
       Text.RE.TDFA.ByteString
       Text.RE.TDFA.ByteString.Lazy
-      Text.RE.TDFA.RE
       Text.RE.TDFA.Sequence
       Text.RE.TDFA.String
       Text.RE.TDFA.Text
       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
-      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.REOptions
-      Text.RE.Types.Replace
-      Text.RE.Types.SearchReplace
+      Text.RE.ZeInternals.AddCaptureNames
+      Text.RE.ZeInternals.EscapeREString
+      Text.RE.ZeInternals.NamedCaptures
+      Text.RE.ZeInternals.PCRE
+      Text.RE.ZeInternals.PreludeMacros
+      Text.RE.ZeInternals.Replace
+      Text.RE.ZeInternals.TDFA
+      Text.RE.ZeInternals.TestBench
+      Text.RE.ZeInternals.Types.Capture
+      Text.RE.ZeInternals.Types.CaptureID
+      Text.RE.ZeInternals.Types.LineNo
+      Text.RE.ZeInternals.Types.Match
+      Text.RE.ZeInternals.Types.Matches
+      Text.RE.ZeInternals.Types.SearchReplace
 
+    Other-Modules:
+      Text.RE.ZeInternals.QQ
+      Text.RE.ZeInternals.SearchReplace
+      Text.RE.ZeInternals.SearchReplace.PCRE
+      Text.RE.ZeInternals.SearchReplace.PCRE.ByteString
+      Text.RE.ZeInternals.SearchReplace.PCRE.ByteString.Lazy
+      Text.RE.ZeInternals.SearchReplace.PCRE.Sequence
+      Text.RE.ZeInternals.SearchReplace.PCRE.String
+      Text.RE.ZeInternals.SearchReplace.PCREEdPrime
+      Text.RE.ZeInternals.SearchReplace.TDFA
+      Text.RE.ZeInternals.SearchReplace.TDFA.ByteString
+      Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy
+      Text.RE.ZeInternals.SearchReplace.TDFA.Sequence
+      Text.RE.ZeInternals.SearchReplace.TDFA.String
+      Text.RE.ZeInternals.SearchReplace.TDFA.Text
+      Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy
+      Text.RE.ZeInternals.SearchReplace.TDFAEdPrime
+
     Default-Language:   Haskell2010
 
     Other-Extensions:
@@ -192,7 +193,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -222,7 +223,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -249,7 +250,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -275,7 +276,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -304,7 +305,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -330,7 +331,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -353,7 +354,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -383,7 +384,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -416,7 +417,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -444,7 +445,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -472,7 +473,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -510,7 +511,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -549,7 +550,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -593,7 +594,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -639,7 +640,7 @@
       -Werror
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.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.10.0.3
+0.11.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.10.0.3
+Version:                0.11.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.10.0.3
+    Tag:                0.11.0.0
 
 
 Executable re-gen-cabals
@@ -82,7 +82,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -112,7 +112,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -139,7 +139,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -165,7 +165,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -194,7 +194,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -220,7 +220,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -243,8 +243,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
-      , regex-with-pcre      == 0.10.0.3
+        regex                == 0.11.0.0
+      , regex-with-pcre      == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -274,8 +274,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
-      , regex-with-pcre      == 0.10.0.3
+        regex                == 0.11.0.0
+      , regex-with-pcre      == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -308,7 +308,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -336,7 +336,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
       , bytestring           >= 0.10.2.0
@@ -364,8 +364,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
-      , regex-with-pcre      == 0.10.0.3
+        regex                == 0.11.0.0
+      , regex-with-pcre      == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -403,8 +403,8 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
-      , regex-with-pcre      == 0.10.0.3
+        regex                == 0.11.0.0
+      , regex-with-pcre      == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -443,7 +443,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -487,7 +487,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.0.0
       , array                >= 0.4
       , base                 >= 4 && < 5
       , base-compat          >= 0.6.0
@@ -533,7 +533,7 @@
       -Wwarn
 
     Build-depends:
-        regex                == 0.10.0.3
+        regex                == 0.11.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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.PCRE.RE
-  , module Text.RE.Internal.SearchReplace.PCRE.ByteString
+  , module Text.RE.ZeInternals.PCRE
+  , module Text.RE.ZeInternals.SearchReplace.PCRE.ByteString
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.PCRE.ByteString
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.PCRE.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.PCRE.ByteString
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.PCRE
 import qualified Text.Regex.PCRE               as PCRE
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.PCRE.RE
-  , module Text.RE.Internal.SearchReplace.PCRE.ByteString.Lazy
+  , module Text.RE.ZeInternals.PCRE
+  , module Text.RE.ZeInternals.SearchReplace.PCRE.ByteString.Lazy
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.PCRE.ByteString.Lazy
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.PCRE.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.PCRE.ByteString.Lazy
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.PCRE
 import qualified Text.Regex.PCRE               as PCRE
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.PCRE.RE
-  , module Text.RE.Internal.SearchReplace.PCRE.Sequence
+  , module Text.RE.ZeInternals.PCRE
+  , module Text.RE.ZeInternals.SearchReplace.PCRE.Sequence
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.PCRE.Sequence
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.PCRE.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.PCRE.Sequence
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.PCRE
 import qualified Text.Regex.PCRE               as PCRE
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.PCRE.RE
-  , module Text.RE.Internal.SearchReplace.PCRE.String
+  , module Text.RE.ZeInternals.PCRE
+  , module Text.RE.ZeInternals.SearchReplace.PCRE.String
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.PCRE.String
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.PCRE.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.PCRE.String
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.PCRE
 import qualified Text.Regex.PCRE               as PCRE
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.TDFA.RE
-  , module Text.RE.Internal.SearchReplace.TDFA.ByteString
+  , module Text.RE.ZeInternals.TDFA
+  , module Text.RE.ZeInternals.SearchReplace.TDFA.ByteString
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.TDFA.ByteString
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.TDFA.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.TDFA.ByteString
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.TDFA
 import qualified Text.Regex.TDFA               as TDFA
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.TDFA.RE
-  , module Text.RE.Internal.SearchReplace.TDFA.ByteString.Lazy
+  , module Text.RE.ZeInternals.TDFA
+  , module Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.TDFA.ByteString.Lazy
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.TDFA.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.TDFA
 import qualified Text.Regex.TDFA               as TDFA
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.TDFA.RE
-  , module Text.RE.Internal.SearchReplace.TDFA.Sequence
+  , module Text.RE.ZeInternals.TDFA
+  , module Text.RE.ZeInternals.SearchReplace.TDFA.Sequence
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.TDFA.Sequence
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.TDFA.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.TDFA.Sequence
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.TDFA
 import qualified Text.Regex.TDFA               as TDFA
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.TDFA.RE
-  , module Text.RE.Internal.SearchReplace.TDFA.String
+  , module Text.RE.ZeInternals.TDFA
+  , module Text.RE.ZeInternals.SearchReplace.TDFA.String
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.TDFA.String
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.TDFA.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.TDFA.String
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.TDFA
 import qualified Text.Regex.TDFA               as TDFA
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.TDFA.RE
-  , module Text.RE.Internal.SearchReplace.TDFA.Text
+  , module Text.RE.ZeInternals.TDFA
+  , module Text.RE.ZeInternals.SearchReplace.TDFA.Text
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.TDFA.Text
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.TDFA.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.TDFA.Text
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.TDFA
 import qualified Text.Regex.TDFA               as TDFA
 
 
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
@@ -44,8 +44,8 @@
   , escape
   , escapeWith
   , escapeREString
-  , module Text.RE.TDFA.RE
-  , module Text.RE.Internal.SearchReplace.TDFA.Text.Lazy
+  , module Text.RE.ZeInternals.TDFA
+  , module Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy
   ) where
 
 import           Prelude.Compat
@@ -53,13 +53,12 @@
 import           Data.Typeable
 import           Text.Regex.Base
 import           Text.RE
-import           Text.RE.Internal.AddCaptureNames
-import           Text.RE.Internal.SearchReplace.TDFA.Text.Lazy
-import           Text.RE.SearchReplace
-import           Text.RE.Types.IsRegex
-import           Text.RE.Types.REOptions
-import           Text.RE.Types.Replace
-import           Text.RE.TDFA.RE
+import           Text.RE.ZeInternals.AddCaptureNames
+import           Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy
+import           Text.RE.IsRegex
+import           Text.RE.REOptions
+import           Text.RE.Replace
+import           Text.RE.ZeInternals.TDFA
 import qualified Text.Regex.TDFA               as TDFA
 
 
