diff --git a/src/Language/Lexer/Tlex/Data/NonEmptyEnumStringSet.hs b/src/Language/Lexer/Tlex/Data/NonEmptyEnumStringSet.hs
--- a/src/Language/Lexer/Tlex/Data/NonEmptyEnumStringSet.hs
+++ b/src/Language/Lexer/Tlex/Data/NonEmptyEnumStringSet.hs
@@ -11,9 +11,9 @@
 
 import           Prelude
 
-import qualified Data.List.NonEmpty               as NonEmpty
-import qualified Language.Lexer.Tlex.Data.EnumMap as EnumMap
-import qualified Language.Lexer.Tlex.Data.EnumSet as EnumSet
+import qualified Data.EnumMap.Strict as EnumMap
+import qualified Data.EnumSet        as EnumSet
+import qualified Data.List.NonEmpty  as NonEmpty
 
 
 data NonEmptyEnumStringSet a = NonEmptyEnumStringSet
@@ -45,9 +45,11 @@
 insert (x NonEmpty.:| xs) s = case xs of
     [] -> insertSingleByte x s
     y:ys -> let xs' = y NonEmpty.:| ys in s
-        { enumStrings = EnumMap.insertOrUpdate x
-            do singleton xs'
-            do \xss -> insert xs' xss
+        { enumStrings = EnumMap.alter
+            do \case
+                Nothing  -> Just do singleton xs'
+                Just xss -> Just do insert xs' xss
+            do x
             do enumStrings s
         }
 
diff --git a/src/Language/Lexer/Tlex/Plugin/Encoding/UTF8.hs b/src/Language/Lexer/Tlex/Plugin/Encoding/UTF8.hs
--- a/src/Language/Lexer/Tlex/Plugin/Encoding/UTF8.hs
+++ b/src/Language/Lexer/Tlex/Plugin/Encoding/UTF8.hs
@@ -5,9 +5,9 @@
 import           Language.Lexer.Tlex.Prelude
 
 import qualified Data.CharSet                                   as CharSet
+import qualified Data.EnumMap.Strict                            as EnumMap
+import qualified Data.EnumSet                                   as EnumSet
 import qualified Data.IntSet                                    as IntSet
-import qualified Language.Lexer.Tlex.Data.EnumMap               as EnumMap
-import qualified Language.Lexer.Tlex.Data.EnumSet               as EnumSet
 import qualified Language.Lexer.Tlex.Data.NonEmptyEnumStringSet as NonEmptyEnumStringSet
 import qualified Language.Lexer.Tlex.Plugin.Encoding.CharSetP   as CharSetP
 import qualified Language.Lexer.Tlex.Syntax                     as Tlex
diff --git a/test/doctest/Doctest.hs b/test/doctest/Doctest.hs
--- a/test/doctest/Doctest.hs
+++ b/test/doctest/Doctest.hs
@@ -3,10 +3,11 @@
 import           Prelude
 
 import qualified Build_doctests     as BuildF
+import qualified Control.Exception  as Exception
 import           Control.Monad
 import qualified System.Environment as IO
 import qualified System.IO          as IO
-import           Test.DocTest       (doctest)
+import qualified Test.DocTest       as DocTest
 
 main :: IO ()
 main = forM_ BuildF.components \(BuildF.Component name flags pkgs sources) -> do
@@ -16,6 +17,7 @@
   IO.hFlush IO.stdout
   let args = flags ++ pkgs ++ sources
   IO.unsetEnv "GHC_ENVIRONMENT"
-  doctest args
+  DocTest.doctest args `Exception.catch`
+    \(e :: Exception.SomeException) -> print e
   putStrLn "============================================="
   IO.hFlush IO.stdout
diff --git a/tlex-encoding.cabal b/tlex-encoding.cabal
--- a/tlex-encoding.cabal
+++ b/tlex-encoding.cabal
@@ -2,7 +2,7 @@
 build-type:          Custom
 
 name:                tlex-encoding
-version:             0.2.0.0
+version:             0.3.0.0
 license:             Apache-2.0 OR MPL-2.0
 license-file:        LICENSE
 copyright:           (c) 2021 Mizunashi Mana
@@ -92,10 +92,11 @@
         base                 >= 4.12.0 && < 4.15,
 
         -- project depends
-        tlex-core            >= 0.1.0 && < 0.3,
-        tlex                 >= 0.1.0 && < 0.3,
+        tlex-core            >= 0.3.0 && < 0.4,
+        tlex                 >= 0.3.0 && < 0.4,
         charset              >= 0.3.7 && < 0.4,
         containers           >= 0.6.0 && < 0.7,
+        enummapset-th        >= 0.6.0 && < 0.7,
 
     autogen-modules:
         Paths_tlex_encoding
