diff --git a/MANIFEST.in b/MANIFEST.in
index 31e80ce..0b8f63a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,4 +1,5 @@
 include LICENSE
+include make_escape_dct.py
 include Makefile
 include pyjson5.cpp
 include pyjson5.pyx
diff --git a/make_escape_dct.py b/make_escape_dct.py
new file mode 100644
index 0000000..20955e4
--- /dev/null
+++ b/make_escape_dct.py
@@ -0,0 +1,44 @@
+from os.path import join, abspath, dirname
+
+
+def generate():
+    unescaped = 0
+    with open('./src/_escape_dct.hpp', 'wt') as f:
+        print('const EscapeDct::Items EscapeDct::items = {', file=f)
+        for c in range(0x100):
+            if c == ord('\\'):
+                s = '\\\\'
+            elif c == ord('\b'):
+                s = '\\b'
+            elif c == ord('\f'):
+                s = '\\f'
+            elif c == ord('\n'):
+                s = '\\n'
+            elif c == ord('\r'):
+                s = '\\r'
+            elif c == ord('\t'):
+                s = '\\t'
+            elif (c < 0x20) or (c >= 0x7f) or (chr(c) in '''"'&<>\\'''):
+                s = f'\\u{c:04x}'
+            else:
+                s = f'{c:c}'
+                if c < 128:
+                    unescaped |= 1 << c
+
+            t = [
+                f"'{c}'" if c != '\\' else f"'\\\\'"
+                for c in s
+            ] + ['0'] * 7
+            t[7] = f'{len(s)}'
+            print('    {' + ', '.join(t[:8]) + '},', file=f)
+        print('};', file=f)
+
+        escaped = unescaped ^ ((1 << 128) - 1)
+        print('const unsigned __int128 EscapeDct::is_escaped_array = (', file=f)
+        print(f'    ((unsigned __int128) 0x{(escaped >> 64):016x} << 64) |', file=f)
+        print(f'    ((unsigned __int128) 0x{(escaped & ((1 << 64) - 1)):016x})', file=f)
+        print(');', file=f)
+
+
+if __name__ == '__main__':
+    generate()
diff --git a/setup.py b/setup.py
index ec9fe7e..13de9f3 100755
--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,7 @@
 
 
 extra_compile_args = [
-    '-std=c++14', '-O2', '-fPIC', '-ggdb1', '-pipe',
+    '-std=c++11', '-O2', '-fPIC', '-ggdb1', '-pipe',
     '-fomit-frame-pointer', '-fstack-protector-strong',
 ]
 
diff --git a/src/VERSION b/src/VERSION
index 8b90190..99543d9 100644
--- a/src/VERSION
+++ b/src/VERSION
@@ -1 +1 @@
-"0.4.4"
+"0.4.5"
diff --git a/src/_escape_dct.hpp b/src/_escape_dct.hpp
new file mode 100644
index 0000000..e895cda
--- /dev/null
+++ b/src/_escape_dct.hpp
@@ -0,0 +1,262 @@
+const EscapeDct::Items EscapeDct::items = {
+    {'\\', 'u', '0', '0', '0', '0', 0, 6},
+    {'\\', 'u', '0', '0', '0', '1', 0, 6},
+    {'\\', 'u', '0', '0', '0', '2', 0, 6},
+    {'\\', 'u', '0', '0', '0', '3', 0, 6},
+    {'\\', 'u', '0', '0', '0', '4', 0, 6},
+    {'\\', 'u', '0', '0', '0', '5', 0, 6},
+    {'\\', 'u', '0', '0', '0', '6', 0, 6},
+    {'\\', 'u', '0', '0', '0', '7', 0, 6},
+    {'\\', 'b', 0, 0, 0, 0, 0, 2},
+    {'\\', 't', 0, 0, 0, 0, 0, 2},
+    {'\\', 'n', 0, 0, 0, 0, 0, 2},
+    {'\\', 'u', '0', '0', '0', 'b', 0, 6},
+    {'\\', 'f', 0, 0, 0, 0, 0, 2},
+    {'\\', 'r', 0, 0, 0, 0, 0, 2},
+    {'\\', 'u', '0', '0', '0', 'e', 0, 6},
+    {'\\', 'u', '0', '0', '0', 'f', 0, 6},
+    {'\\', 'u', '0', '0', '1', '0', 0, 6},
+    {'\\', 'u', '0', '0', '1', '1', 0, 6},
+    {'\\', 'u', '0', '0', '1', '2', 0, 6},
+    {'\\', 'u', '0', '0', '1', '3', 0, 6},
+    {'\\', 'u', '0', '0', '1', '4', 0, 6},
+    {'\\', 'u', '0', '0', '1', '5', 0, 6},
+    {'\\', 'u', '0', '0', '1', '6', 0, 6},
+    {'\\', 'u', '0', '0', '1', '7', 0, 6},
+    {'\\', 'u', '0', '0', '1', '8', 0, 6},
+    {'\\', 'u', '0', '0', '1', '9', 0, 6},
+    {'\\', 'u', '0', '0', '1', 'a', 0, 6},
+    {'\\', 'u', '0', '0', '1', 'b', 0, 6},
+    {'\\', 'u', '0', '0', '1', 'c', 0, 6},
+    {'\\', 'u', '0', '0', '1', 'd', 0, 6},
+    {'\\', 'u', '0', '0', '1', 'e', 0, 6},
+    {'\\', 'u', '0', '0', '1', 'f', 0, 6},
+    {' ', 0, 0, 0, 0, 0, 0, 1},
+    {'!', 0, 0, 0, 0, 0, 0, 1},
+    {'\\', 'u', '0', '0', '2', '2', 0, 6},
+    {'#', 0, 0, 0, 0, 0, 0, 1},
+    {'$', 0, 0, 0, 0, 0, 0, 1},
+    {'%', 0, 0, 0, 0, 0, 0, 1},
+    {'\\', 'u', '0', '0', '2', '6', 0, 6},
+    {'\\', 'u', '0', '0', '2', '7', 0, 6},
+    {'(', 0, 0, 0, 0, 0, 0, 1},
+    {')', 0, 0, 0, 0, 0, 0, 1},
+    {'*', 0, 0, 0, 0, 0, 0, 1},
+    {'+', 0, 0, 0, 0, 0, 0, 1},
+    {',', 0, 0, 0, 0, 0, 0, 1},
+    {'-', 0, 0, 0, 0, 0, 0, 1},
+    {'.', 0, 0, 0, 0, 0, 0, 1},
+    {'/', 0, 0, 0, 0, 0, 0, 1},
+    {'0', 0, 0, 0, 0, 0, 0, 1},
+    {'1', 0, 0, 0, 0, 0, 0, 1},
+    {'2', 0, 0, 0, 0, 0, 0, 1},
+    {'3', 0, 0, 0, 0, 0, 0, 1},
+    {'4', 0, 0, 0, 0, 0, 0, 1},
+    {'5', 0, 0, 0, 0, 0, 0, 1},
+    {'6', 0, 0, 0, 0, 0, 0, 1},
+    {'7', 0, 0, 0, 0, 0, 0, 1},
+    {'8', 0, 0, 0, 0, 0, 0, 1},
+    {'9', 0, 0, 0, 0, 0, 0, 1},
+    {':', 0, 0, 0, 0, 0, 0, 1},
+    {';', 0, 0, 0, 0, 0, 0, 1},
+    {'\\', 'u', '0', '0', '3', 'c', 0, 6},
+    {'=', 0, 0, 0, 0, 0, 0, 1},
+    {'\\', 'u', '0', '0', '3', 'e', 0, 6},
+    {'?', 0, 0, 0, 0, 0, 0, 1},
+    {'@', 0, 0, 0, 0, 0, 0, 1},
+    {'A', 0, 0, 0, 0, 0, 0, 1},
+    {'B', 0, 0, 0, 0, 0, 0, 1},
+    {'C', 0, 0, 0, 0, 0, 0, 1},
+    {'D', 0, 0, 0, 0, 0, 0, 1},
+    {'E', 0, 0, 0, 0, 0, 0, 1},
+    {'F', 0, 0, 0, 0, 0, 0, 1},
+    {'G', 0, 0, 0, 0, 0, 0, 1},
+    {'H', 0, 0, 0, 0, 0, 0, 1},
+    {'I', 0, 0, 0, 0, 0, 0, 1},
+    {'J', 0, 0, 0, 0, 0, 0, 1},
+    {'K', 0, 0, 0, 0, 0, 0, 1},
+    {'L', 0, 0, 0, 0, 0, 0, 1},
+    {'M', 0, 0, 0, 0, 0, 0, 1},
+    {'N', 0, 0, 0, 0, 0, 0, 1},
+    {'O', 0, 0, 0, 0, 0, 0, 1},
+    {'P', 0, 0, 0, 0, 0, 0, 1},
+    {'Q', 0, 0, 0, 0, 0, 0, 1},
+    {'R', 0, 0, 0, 0, 0, 0, 1},
+    {'S', 0, 0, 0, 0, 0, 0, 1},
+    {'T', 0, 0, 0, 0, 0, 0, 1},
+    {'U', 0, 0, 0, 0, 0, 0, 1},
+    {'V', 0, 0, 0, 0, 0, 0, 1},
+    {'W', 0, 0, 0, 0, 0, 0, 1},
+    {'X', 0, 0, 0, 0, 0, 0, 1},
+    {'Y', 0, 0, 0, 0, 0, 0, 1},
+    {'Z', 0, 0, 0, 0, 0, 0, 1},
+    {'[', 0, 0, 0, 0, 0, 0, 1},
+    {'\\', '\\', 0, 0, 0, 0, 0, 2},
+    {']', 0, 0, 0, 0, 0, 0, 1},
+    {'^', 0, 0, 0, 0, 0, 0, 1},
+    {'_', 0, 0, 0, 0, 0, 0, 1},
+    {'`', 0, 0, 0, 0, 0, 0, 1},
+    {'a', 0, 0, 0, 0, 0, 0, 1},
+    {'b', 0, 0, 0, 0, 0, 0, 1},
+    {'c', 0, 0, 0, 0, 0, 0, 1},
+    {'d', 0, 0, 0, 0, 0, 0, 1},
+    {'e', 0, 0, 0, 0, 0, 0, 1},
+    {'f', 0, 0, 0, 0, 0, 0, 1},
+    {'g', 0, 0, 0, 0, 0, 0, 1},
+    {'h', 0, 0, 0, 0, 0, 0, 1},
+    {'i', 0, 0, 0, 0, 0, 0, 1},
+    {'j', 0, 0, 0, 0, 0, 0, 1},
+    {'k', 0, 0, 0, 0, 0, 0, 1},
+    {'l', 0, 0, 0, 0, 0, 0, 1},
+    {'m', 0, 0, 0, 0, 0, 0, 1},
+    {'n', 0, 0, 0, 0, 0, 0, 1},
+    {'o', 0, 0, 0, 0, 0, 0, 1},
+    {'p', 0, 0, 0, 0, 0, 0, 1},
+    {'q', 0, 0, 0, 0, 0, 0, 1},
+    {'r', 0, 0, 0, 0, 0, 0, 1},
+    {'s', 0, 0, 0, 0, 0, 0, 1},
+    {'t', 0, 0, 0, 0, 0, 0, 1},
+    {'u', 0, 0, 0, 0, 0, 0, 1},
+    {'v', 0, 0, 0, 0, 0, 0, 1},
+    {'w', 0, 0, 0, 0, 0, 0, 1},
+    {'x', 0, 0, 0, 0, 0, 0, 1},
+    {'y', 0, 0, 0, 0, 0, 0, 1},
+    {'z', 0, 0, 0, 0, 0, 0, 1},
+    {'{', 0, 0, 0, 0, 0, 0, 1},
+    {'|', 0, 0, 0, 0, 0, 0, 1},
+    {'}', 0, 0, 0, 0, 0, 0, 1},
+    {'~', 0, 0, 0, 0, 0, 0, 1},
+    {'\\', 'u', '0', '0', '7', 'f', 0, 6},
+    {'\\', 'u', '0', '0', '8', '0', 0, 6},
+    {'\\', 'u', '0', '0', '8', '1', 0, 6},
+    {'\\', 'u', '0', '0', '8', '2', 0, 6},
+    {'\\', 'u', '0', '0', '8', '3', 0, 6},
+    {'\\', 'u', '0', '0', '8', '4', 0, 6},
+    {'\\', 'u', '0', '0', '8', '5', 0, 6},
+    {'\\', 'u', '0', '0', '8', '6', 0, 6},
+    {'\\', 'u', '0', '0', '8', '7', 0, 6},
+    {'\\', 'u', '0', '0', '8', '8', 0, 6},
+    {'\\', 'u', '0', '0', '8', '9', 0, 6},
+    {'\\', 'u', '0', '0', '8', 'a', 0, 6},
+    {'\\', 'u', '0', '0', '8', 'b', 0, 6},
+    {'\\', 'u', '0', '0', '8', 'c', 0, 6},
+    {'\\', 'u', '0', '0', '8', 'd', 0, 6},
+    {'\\', 'u', '0', '0', '8', 'e', 0, 6},
+    {'\\', 'u', '0', '0', '8', 'f', 0, 6},
+    {'\\', 'u', '0', '0', '9', '0', 0, 6},
+    {'\\', 'u', '0', '0', '9', '1', 0, 6},
+    {'\\', 'u', '0', '0', '9', '2', 0, 6},
+    {'\\', 'u', '0', '0', '9', '3', 0, 6},
+    {'\\', 'u', '0', '0', '9', '4', 0, 6},
+    {'\\', 'u', '0', '0', '9', '5', 0, 6},
+    {'\\', 'u', '0', '0', '9', '6', 0, 6},
+    {'\\', 'u', '0', '0', '9', '7', 0, 6},
+    {'\\', 'u', '0', '0', '9', '8', 0, 6},
+    {'\\', 'u', '0', '0', '9', '9', 0, 6},
+    {'\\', 'u', '0', '0', '9', 'a', 0, 6},
+    {'\\', 'u', '0', '0', '9', 'b', 0, 6},
+    {'\\', 'u', '0', '0', '9', 'c', 0, 6},
+    {'\\', 'u', '0', '0', '9', 'd', 0, 6},
+    {'\\', 'u', '0', '0', '9', 'e', 0, 6},
+    {'\\', 'u', '0', '0', '9', 'f', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '0', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '1', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '2', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '3', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '4', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '5', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '6', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '7', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '8', 0, 6},
+    {'\\', 'u', '0', '0', 'a', '9', 0, 6},
+    {'\\', 'u', '0', '0', 'a', 'a', 0, 6},
+    {'\\', 'u', '0', '0', 'a', 'b', 0, 6},
+    {'\\', 'u', '0', '0', 'a', 'c', 0, 6},
+    {'\\', 'u', '0', '0', 'a', 'd', 0, 6},
+    {'\\', 'u', '0', '0', 'a', 'e', 0, 6},
+    {'\\', 'u', '0', '0', 'a', 'f', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '0', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '1', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '2', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '3', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '4', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '5', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '6', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '7', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '8', 0, 6},
+    {'\\', 'u', '0', '0', 'b', '9', 0, 6},
+    {'\\', 'u', '0', '0', 'b', 'a', 0, 6},
+    {'\\', 'u', '0', '0', 'b', 'b', 0, 6},
+    {'\\', 'u', '0', '0', 'b', 'c', 0, 6},
+    {'\\', 'u', '0', '0', 'b', 'd', 0, 6},
+    {'\\', 'u', '0', '0', 'b', 'e', 0, 6},
+    {'\\', 'u', '0', '0', 'b', 'f', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '0', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '1', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '2', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '3', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '4', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '5', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '6', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '7', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '8', 0, 6},
+    {'\\', 'u', '0', '0', 'c', '9', 0, 6},
+    {'\\', 'u', '0', '0', 'c', 'a', 0, 6},
+    {'\\', 'u', '0', '0', 'c', 'b', 0, 6},
+    {'\\', 'u', '0', '0', 'c', 'c', 0, 6},
+    {'\\', 'u', '0', '0', 'c', 'd', 0, 6},
+    {'\\', 'u', '0', '0', 'c', 'e', 0, 6},
+    {'\\', 'u', '0', '0', 'c', 'f', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '0', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '1', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '2', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '3', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '4', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '5', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '6', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '7', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '8', 0, 6},
+    {'\\', 'u', '0', '0', 'd', '9', 0, 6},
+    {'\\', 'u', '0', '0', 'd', 'a', 0, 6},
+    {'\\', 'u', '0', '0', 'd', 'b', 0, 6},
+    {'\\', 'u', '0', '0', 'd', 'c', 0, 6},
+    {'\\', 'u', '0', '0', 'd', 'd', 0, 6},
+    {'\\', 'u', '0', '0', 'd', 'e', 0, 6},
+    {'\\', 'u', '0', '0', 'd', 'f', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '0', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '1', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '2', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '3', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '4', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '5', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '6', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '7', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '8', 0, 6},
+    {'\\', 'u', '0', '0', 'e', '9', 0, 6},
+    {'\\', 'u', '0', '0', 'e', 'a', 0, 6},
+    {'\\', 'u', '0', '0', 'e', 'b', 0, 6},
+    {'\\', 'u', '0', '0', 'e', 'c', 0, 6},
+    {'\\', 'u', '0', '0', 'e', 'd', 0, 6},
+    {'\\', 'u', '0', '0', 'e', 'e', 0, 6},
+    {'\\', 'u', '0', '0', 'e', 'f', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '0', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '1', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '2', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '3', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '4', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '5', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '6', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '7', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '8', 0, 6},
+    {'\\', 'u', '0', '0', 'f', '9', 0, 6},
+    {'\\', 'u', '0', '0', 'f', 'a', 0, 6},
+    {'\\', 'u', '0', '0', 'f', 'b', 0, 6},
+    {'\\', 'u', '0', '0', 'f', 'c', 0, 6},
+    {'\\', 'u', '0', '0', 'f', 'd', 0, 6},
+    {'\\', 'u', '0', '0', 'f', 'e', 0, 6},
+    {'\\', 'u', '0', '0', 'f', 'f', 0, 6},
+};
+const unsigned __int128 EscapeDct::is_escaped_array = (
+    ((unsigned __int128) 0x8000000010000000 << 64) |
+    ((unsigned __int128) 0x500000c4ffffffff)
+);
diff --git a/src/native.hpp b/src/native.hpp
index 4dcbce0..be1b650 100644
--- a/src/native.hpp
+++ b/src/native.hpp
@@ -5,7 +5,6 @@
 #include <type_traits>
 
 namespace JSON5EncoderCpp {
-inline namespace {
 
 template <class From>
 constexpr std::uint32_t cast_to_uint32(
@@ -24,33 +23,30 @@
         std::is_signed<From>::value
     >::type* = nullptr
 ) {
-    using UnsignedFrom = typename std::make_unsigned<From>::type;
-    UnsignedFrom unsigned_from = static_cast<UnsignedFrom>(from);
-    return cast_to_uint32(unsigned_from);
+    return cast_to_uint32(static_cast<typename std::make_unsigned<From>::type>(from));
 }
 
 template <class From>
 constexpr std::int32_t cast_to_int32(const From &from) {
-    std::uint32_t unsigned_from = cast_to_uint32(from);
-    return static_cast<std::int32_t>(unsigned_from);
+    return static_cast<std::int32_t>(cast_to_uint32(from));
 }
 
 struct AlwaysTrue {
-    constexpr inline AlwaysTrue() = default;
+    inline AlwaysTrue() = default;
     inline ~AlwaysTrue() = default;
 
-    constexpr inline AlwaysTrue(const AlwaysTrue&) = default;
-    constexpr inline AlwaysTrue(AlwaysTrue&&) = default;
-    constexpr inline AlwaysTrue &operator =(const AlwaysTrue&) = default;
-    constexpr inline AlwaysTrue &operator =(AlwaysTrue&&) = default;
+    inline AlwaysTrue(const AlwaysTrue&) = default;
+    inline AlwaysTrue(AlwaysTrue&&) = default;
+    inline AlwaysTrue &operator =(const AlwaysTrue&) = default;
+    inline AlwaysTrue &operator =(AlwaysTrue&&) = default;
 
     template <class T>
-    constexpr inline AlwaysTrue(T&&) : AlwaysTrue() {}
+    inline AlwaysTrue(T&&) : AlwaysTrue() {}
 
     template <class T>
-    constexpr inline bool operator ==(T&&) const { return true; }
+    inline bool operator ==(T&&) const { return true; }
 
-    constexpr inline operator bool () const { return true; }
+    inline operator bool () const { return true; }
 };
 
 bool obj_has_iter(const PyObject *obj) {
@@ -63,91 +59,30 @@
 struct EscapeDct {
     using Item = std::array<char, 8>;  // 7 are needed, 1 length
     static constexpr std::size_t length = 0x100;
+    using Items = Item[length];
 
-    Item items[length];
-    unsigned __int128 is_escaped_array;
+    static const Items items;
+    static const unsigned __int128 is_escaped_array;
 
-    static constexpr Item unicode_item(size_t index) {
-        return {{
-            '\\',
-            'u',
-            HEX[(index / 16 / 16 / 16 % 16)],
-            HEX[(index / 16 / 16      % 16)],
-            HEX[(index / 16           % 16)],
-            HEX[(index                % 16)],
-            0,
-            6,
-        }};
-    }
-
-    static constexpr Item escaped_item(char chr) {
-        return {{ '\\', chr, 0, 0, 0, 0, 0, 2 }};
-    }
-
-    static constexpr Item verbatim_item(size_t chr) {
-        return {{ (char) (unsigned char) chr, 0, 0, 0, 0, 0, 0, 1 }};
-    }
-
-    inline bool is_escaped(std::uint32_t c) const {
+    static inline bool is_escaped(std::uint32_t c) {
         return (c >= 0x0080) || (is_escaped_array & (
             static_cast<unsigned __int128>(1) <<
             static_cast<std::uint8_t>(c)
         ));
     }
 
-    inline std::size_t find_unescaped_range(const Py_UCS1 *start, Py_ssize_t length) const {
+    template <class S>
+    static inline std::size_t find_unescaped_range(const S *start, Py_ssize_t length) {
         Py_ssize_t index = 0;
         while ((index < length) && !is_escaped(start[index])) {
             ++index;
         }
         return index;
     }
-
-    inline std::size_t find_unescaped_range(const Py_UCS2 *start, Py_ssize_t length) const {
-        Py_ssize_t index = 0;
-        while ((index < length) && !is_escaped(start[index])) {
-            ++index;
-        }
-        return index;
-    }
-
-    inline std::size_t find_unescaped_range(const Py_UCS4 *start, Py_ssize_t length) const {
-        Py_ssize_t index = 0;
-        while ((index < length) && !is_escaped(start[index])) {
-            ++index;
-        }
-        return index;
-    }
-
-    constexpr EscapeDct() :
-        items(),
-        is_escaped_array(static_cast<unsigned __int128>(0) - 1)
-    {
-        for (std::size_t i = 0; i < length; ++i) {
-            items[i] = unicode_item(i);
-        }
-        for (std::size_t i = 0x20; i < 0x7f; ++i) {
-            switch (i) {
-                case '"': case '\'': case '&': case '<': case '>': case '\\':
-                    break;
-                default:
-                    items[i] = verbatim_item(i);
-
-                    is_escaped_array &= ~(
-                        static_cast<unsigned __int128>(1) <<
-                        static_cast<std::uint8_t>(i)
-                    );
-            }
-        }
-        items[(std::uint8_t) '\\'] = escaped_item('\\');
-        items[(std::uint8_t) '\b'] = escaped_item('b');
-        items[(std::uint8_t) '\f'] = escaped_item('f');
-        items[(std::uint8_t) '\n'] = escaped_item('n');
-        items[(std::uint8_t) '\r'] = escaped_item('r');
-        items[(std::uint8_t) '\t'] = escaped_item('t');
-    }
 };
 
+#include "./_escape_dct.hpp"
+
 const EscapeDct ESCAPE_DCT;
 
 const char VERSION[] =
@@ -161,4 +96,3 @@
 static constexpr std::size_t LONGDESCRIPTION_LENGTH = sizeof(LONGDESCRIPTION) - 1;
 
 }
-}
