diff --git a/Network/HPACK/Context.hs b/Network/HPACK/Context.hs
--- a/Network/HPACK/Context.hs
+++ b/Network/HPACK/Context.hs
@@ -67,7 +67,12 @@
     return $ Context hdrtbl emptyReferenceSet
 
 changeContextForDecoding :: Context -> Size -> IO Context
-changeContextForDecoding _ctx siz = newContextForDecoding siz -- fixme: copy table
+changeContextForDecoding ctx@(Context hdrtbl refs) siz
+  | shouldRenew hdrtbl siz = do
+    (hdrtbl',n) <- renewHeaderTable siz hdrtbl
+    let refs' = restrictIndices n refs
+    return $ Context hdrtbl' refs'
+  | otherwise = return ctx
 
 ----------------------------------------------------------------
 
@@ -88,9 +93,9 @@
 --   A reference to the new entry is added to the reference set.
 newEntryForEncoding :: Context -> Entry -> IO ([Index],Context)
 newEntryForEncoding (Context hdrtbl refs) e = do
-    (hdrtbl', is) <- insertEntry e hdrtbl
+    (hdrtbl', i, is) <- insertEntry e hdrtbl
     let ns = getCommon is refs
-        refs' = addIndex 1 $ adjustReferenceSet $ removeIndices is refs
+        refs' = addIndex 1 $ restrictIndices i $ adjustReferenceSet refs
         ctx = Context hdrtbl' refs'
     return (ns, ctx)
 
@@ -98,8 +103,8 @@
 --   A reference to the new entry is added to the reference set.
 newEntryForDecoding :: Context -> Entry -> IO Context
 newEntryForDecoding (Context hdrtbl refs) e = do
-    (hdrtbl', is) <- insertEntry e hdrtbl
-    let refs' = addIndex 1 $ adjustReferenceSet $ removeIndices is refs
+    (hdrtbl', i, _) <- insertEntry e hdrtbl
+    let refs' = addIndex 1 $ restrictIndices i $ adjustReferenceSet refs
     return $ Context hdrtbl' refs'
 
 -- | The referenced header table entry is added to the reference set.
diff --git a/Network/HPACK/Context/ReferenceSet.hs b/Network/HPACK/Context/ReferenceSet.hs
--- a/Network/HPACK/Context/ReferenceSet.hs
+++ b/Network/HPACK/Context/ReferenceSet.hs
@@ -6,7 +6,7 @@
   , isMember
   , addIndex
   , removeIndex
-  , removeIndices
+  , restrictIndices
   -- * Managing reference set
   , getNotEmittedIndices
   , adjustReferenceSet
@@ -17,7 +17,6 @@
   , getCommon
   ) where
 
-import Data.List (foldl')
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as M
 import Network.HPACK.Table
@@ -51,9 +50,9 @@
 removeIndex :: Index -> ReferenceSet -> ReferenceSet
 removeIndex idx (ReferenceSet m) = ReferenceSet $ M.delete idx m
 
--- | Removing a set of 'Index' from 'ReferenceSet'.
-removeIndices :: [Index] -> ReferenceSet -> ReferenceSet
-removeIndices idcs (ReferenceSet m) = ReferenceSet $ foldl' (flip M.delete) m idcs
+restrictIndices :: Index -> ReferenceSet -> ReferenceSet
+restrictIndices idx (ReferenceSet m) =
+    ReferenceSet $ M.filterWithKey (\k _ -> k <= idx) m
 
 ----------------------------------------------------------------
 
diff --git a/Network/HPACK/HeaderBlock/Integer.hs b/Network/HPACK/HeaderBlock/Integer.hs
--- a/Network/HPACK/HeaderBlock/Integer.hs
+++ b/Network/HPACK/HeaderBlock/Integer.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE BangPatterns, OverloadedStrings #-}
+
 module Network.HPACK.HeaderBlock.Integer (
     encode
   , decode
@@ -20,6 +22,17 @@
 
 ----------------------------------------------------------------
 
+{-
+if I < 2^N - 1, encode I on N bits
+   else
+       encode (2^N - 1) on N bits
+       I = I - (2^N - 1)
+       while I >= 128
+            encode (I % 128 + 128) on 8 bits
+            I = I / 128
+       encode I on 8 bits
+-}
+
 -- | Integer encoding. The first argument is N of prefix.
 --
 -- >>> encode 5 10
@@ -46,6 +59,19 @@
 
 ----------------------------------------------------------------
 
+{-
+decode I from the next N bits
+   if I < 2^N - 1, return I
+   else
+       M = 0
+       repeat
+           B = next octet
+           I = I + (B & 127) * 2^M
+           M = M + 7
+       while B & 128 == 128
+       return I
+-}
+
 -- | Integer decoding. The first argument is N of prefix.
 --
 -- >>> decode 5 10 $ BS.empty
@@ -58,12 +84,19 @@
 decode n w bs
   | i < p      = i
   | BS.null bs = error $ "decode: n = " ++ show n ++ ", w = " ++ show w ++ ", bs = empty"
-  | otherwise  = BS.foldr' (\x y -> fromIntegral x - 128 + y * 128) i0 bs' + i
+  | otherwise  = decode' bs 0 i
   where
     p = powerArray ! n
     i = fromIntegral w
-    i0 = fromIntegral $ BS.last bs
-    bs' = BS.init bs
+
+decode' :: ByteString -> Int -> Int -> Int
+decode' "" _ i = i
+decode' bs m i = decode' bs' m' i'
+  where
+    !b   = fromIntegral $ BS.head bs
+    !bs' = BS.tail bs
+    !i'  = i + (b .&. 127) * 2 ^ m
+    !m'  = m + 7
 
 ----------------------------------------------------------------
 
diff --git a/Network/HPACK/Huffman/Table.hs b/Network/HPACK/Huffman/Table.hs
--- a/Network/HPACK/Huffman/Table.hs
+++ b/Network/HPACK/Huffman/Table.hs
@@ -4,261 +4,261 @@
 
 huffmanTable :: [Bits]
 huffmanTable = [
-    [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,T]
-  , [F,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,F,F]
-  , [T,T,T,T,T,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,F,F]
-  , [F,T,T,T,T,F]
-  , [T,T,F,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,F,T]
+    [T,T,T,T,T,T,T,T,T,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T]
+  , [F,T,F,T,F,F]
+  , [T,T,T,T,T,T,T,F,F,F]
+  , [T,T,T,T,T,T,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,F,F,T]
+  , [F,T,F,T,F,T]
+  , [T,T,T,T,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,F,T,F]
   , [T,T,T,T,T,T,T,F,T,F]
-  , [T,T,T,T,T,F,F,F,T]
   , [T,T,T,T,T,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,F,F]
-  , [T,T,F,F,T,F,T]
-  , [T,T,F,F,T,T,F]
+  , [T,T,T,T,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,F,T,T]
+  , [T,T,T,T,T,F,T,F]
+  , [F,T,F,T,T,F]
+  , [F,T,F,T,T,T]
+  , [F,T,T,F,F,F]
+  , [F,F,F,F,F]
+  , [F,F,F,F,T]
+  , [F,F,F,T,F]
+  , [F,T,T,F,F,T]
+  , [F,T,T,F,T,F]
+  , [F,T,T,F,T,T]
+  , [F,T,T,T,F,F]
+  , [F,T,T,T,F,T]
+  , [F,T,T,T,T,F]
   , [F,T,T,T,T,T]
-  , [F,F,T,T,T]
-  , [F,F,F,F]
-  , [F,F,F,T]
-  , [F,F,T,F]
-  , [F,T,F,F,F]
+  , [T,F,T,T,T,F,F]
+  , [T,T,T,T,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,F,F]
   , [T,F,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,F,T,F]
   , [T,F,F,F,F,T]
-  , [T,F,F,F,T,F]
-  , [T,F,F,F,T,T]
-  , [T,F,F,T,F,F]
-  , [T,F,F,T,F,T]
-  , [T,F,F,T,T,F]
-  , [T,T,T,F,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F]
-  , [T,F,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,F]
+  , [T,F,T,T,T,F,T]
+  , [T,F,T,T,T,T,F]
+  , [T,F,T,T,T,T,T]
+  , [T,T,F,F,F,F,F]
+  , [T,T,F,F,F,F,T]
+  , [T,T,F,F,F,T,F]
+  , [T,T,F,F,F,T,T]
+  , [T,T,F,F,T,F,F]
+  , [T,T,F,F,T,F,T]
+  , [T,T,F,F,T,T,F]
   , [T,T,F,F,T,T,T]
-  , [T,T,T,F,T,T,F,T]
-  , [T,T,T,F,T,T,T,F]
   , [T,T,F,T,F,F,F]
-  , [T,T,T,F,T,T,T,T]
   , [T,T,F,T,F,F,T]
   , [T,T,F,T,F,T,F]
-  , [T,T,T,T,T,F,F,T,F]
-  , [T,T,T,T,F,F,F,F]
-  , [T,T,T,T,T,F,F,T,T]
-  , [T,T,T,T,T,F,T,F,F]
-  , [T,T,T,T,T,F,T,F,T]
   , [T,T,F,T,F,T,T]
   , [T,T,F,T,T,F,F]
-  , [T,T,T,T,F,F,F,T]
-  , [T,T,T,T,F,F,T,F]
-  , [T,T,T,T,T,F,T,T,F]
-  , [T,T,T,T,T,F,T,T,T]
   , [T,T,F,T,T,F,T]
-  , [T,F,T,F,F,F]
-  , [T,T,T,T,F,F,T,T]
-  , [T,T,T,T,T,T,F,F,F]
-  , [T,T,T,T,T,T,F,F,T]
-  , [T,T,T,T,F,T,F,F]
-  , [T,T,T,T,T,T,F,T,F]
-  , [T,T,T,T,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,F,T]
   , [T,T,F,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F]
-  , [F,T,F,F,T]
   , [T,T,F,T,T,T,T]
-  , [F,T,F,T,F]
-  , [T,F,T,F,F,T]
-  , [F,T,F,T,T]
   , [T,T,T,F,F,F,F]
-  , [T,F,T,F,T,F]
-  , [T,F,T,F,T,T]
-  , [F,T,T,F,F]
-  , [T,T,T,T,F,T,F,T]
-  , [T,T,T,T,F,T,T,F]
-  , [T,F,T,T,F,F]
-  , [T,F,T,T,F,T]
-  , [T,F,T,T,T,F]
-  , [F,T,T,F,T]
-  , [T,F,T,T,T,T]
-  , [T,T,T,T,T,T,T,F,F]
-  , [T,T,F,F,F,F]
-  , [T,T,F,F,F,T]
-  , [F,T,T,T,F]
   , [T,T,T,F,F,F,T]
   , [T,T,T,F,F,T,F]
+  , [T,T,T,T,T,T,F,F]
   , [T,T,T,F,F,T,T]
+  , [T,T,T,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,F,F]
+  , [T,F,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,F,T]
+  , [F,F,F,T,T]
+  , [T,F,F,F,T,T]
+  , [F,F,T,F,F]
+  , [T,F,F,T,F,F]
+  , [F,F,T,F,T]
+  , [T,F,F,T,F,T]
+  , [T,F,F,T,T,F]
+  , [T,F,F,T,T,T]
+  , [F,F,T,T,F]
   , [T,T,T,F,T,F,F]
   , [T,T,T,F,T,F,T]
-  , [T,T,T,T,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T]
+  , [T,F,T,F,F,F]
+  , [T,F,T,F,F,T]
+  , [T,F,T,F,T,F]
+  , [F,F,T,T,T]
+  , [T,F,T,F,T,T]
+  , [T,T,T,F,T,T,F]
+  , [T,F,T,T,F,F]
+  , [F,T,F,F,F]
+  , [F,T,F,F,T]
+  , [T,F,T,T,F,T]
+  , [T,T,T,F,T,T,T]
+  , [T,T,T,T,F,F,F]
+  , [T,T,T,T,F,F,T]
+  , [T,T,T,T,F,T,F]
+  , [T,T,T,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F]
   , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,T,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,F,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,F]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,F,T,T]
-  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,F,F]
+  , [T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T]
   ]
diff --git a/Network/HPACK/Table.hs b/Network/HPACK/Table.hs
--- a/Network/HPACK/Table.hs
+++ b/Network/HPACK/Table.hs
@@ -1,11 +1,13 @@
-{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE TupleSections, RecordWildCards #-}
 
 module Network.HPACK.Table (
   -- * Header table
     HeaderTable
   , newHeaderTableForEncoding
   , newHeaderTableForDecoding
+  , renewHeaderTable
   , printHeaderTable
+  , shouldRenew
   -- * Insertion
   , insertEntry
   -- * Lookup
@@ -26,17 +28,45 @@
 import qualified Network.HPACK.Table.HashPSQ as HP
 import Network.HPACK.Table.Static
 import Network.HPACK.Types
+import Control.Monad (forM)
 
 ----------------------------------------------------------------
 
+type Table = IOArray Index Entry
+
+{-
+        offset
+        v
+   +-+-+-+-+-+-+-+-+
+   | | | |z|y|x| | |
+   +-+-+-+-+-+-+-+-+
+          1 2 3      (numOfEntries = 3)
+
+After insertion:
+
+      offset
+      v
+   +-+-+-+-+-+-+-+-+
+   | | |w|z|y|x| | |
+   +-+-+-+-+-+-+-+-+
+        1 2 3 4      (numOfEntries = 4)
+-}
+
 -- | Type for header table.
 data HeaderTable = HeaderTable {
-    maxNumOfEntries :: !Int
+  -- | An array
+    circularTable :: !Table
+  -- | Start point
   , offset :: !Index
+  -- | The current number of entries
   , numOfEntries :: !Int
-  , circularTable :: !(IOArray Index Entry)
+  -- | The size of the array
+  , maxNumOfEntries :: !Int
+  -- | The current header table size (defined in HPACK)
   , headerTableSize :: !Size
+  -- | The max header table size (defined in HPACK)
   , maxHeaderTableSize :: !Size
+  -- | Header-to-index
   , reverseIndex :: Maybe (HP.HashPSQ HIndex)
   }
 
@@ -47,15 +77,15 @@
 
 -- | Printing 'HeaderTable'.
 printHeaderTable :: HeaderTable -> IO ()
-printHeaderTable (HeaderTable maxN off n tbl tblsiz _ rev) = do
-    es <- mapM (readArray tbl . adj maxN) [beg .. end]
+printHeaderTable HeaderTable{..} = do
+    es <- mapM (readArray circularTable . adj maxNumOfEntries) [beg .. end]
     let ts = zip [1..] es
     mapM_ printEntry ts
-    putStrLn $ "      Table size: " ++ show tblsiz
-    print rev
+    putStrLn $ "      Table size: " ++ show headerTableSize
+    print reverseIndex
   where
-    beg = off + 1
-    end = off + n
+    beg = offset + 1
+    end = offset + numOfEntries
 
 printEntry :: (Index,Entry) -> IO ()
 printEntry (i,e) = do
@@ -84,26 +114,22 @@
 ----------------------------------------------------------------
 
 fromHIndexToIndex :: HeaderTable -> HIndex -> Index
-fromHIndexToIndex hdrtbl (HIndex hidx) = idx -- fixme :: Checkme
+fromHIndexToIndex HeaderTable{..} (HIndex hidx) = idx
   where
-    maxN = maxNumOfEntries hdrtbl
-    off = offset hdrtbl
-    idx = adj maxN (maxN + hidx - off)
+    idx = adj maxNumOfEntries (maxNumOfEntries + hidx - offset)
 
 fromIndexToHIndex :: HeaderTable -> Index -> HIndex
-fromIndexToHIndex hdrtbl idx = HIndex hidx
+fromIndexToHIndex HeaderTable{..} idx = HIndex hidx
   where
-    maxN = maxNumOfEntries hdrtbl
-    off = offset hdrtbl
-    hidx = adj maxN (off + idx)
+    hidx = adj maxNumOfEntries (offset + idx)
 
 fromSIndexToIndex :: HeaderTable -> SIndex -> Index
-fromSIndexToIndex hdrtbl sidx = fromStaticIndex sidx + numOfEntries hdrtbl
+fromSIndexToIndex HeaderTable{..} sidx = fromStaticIndex sidx + numOfEntries
 
 fromIndexToSIndex :: HeaderTable -> Index -> SIndex
-fromIndexToSIndex hdrtbl idx = toStaticIndex sidx
+fromIndexToSIndex HeaderTable{..} idx = toStaticIndex sidx
   where
-    sidx = idx - numOfEntries hdrtbl
+    sidx = idx - numOfEntries
 
 ----------------------------------------------------------------
 
@@ -135,33 +161,68 @@
     maxN = maxNumbers maxsiz
     end = maxN - 1
 
+renewHeaderTable :: Size -> HeaderTable -> IO (HeaderTable, Int)
+renewHeaderTable maxsiz oldhdrtbl = do
+    putStrLn $ "numOfEntries oldhdrtbl: " ++ show (numOfEntries oldhdrtbl)
+    hdrtbl <- newHeaderTable maxsiz mhp
+    newhdrtbl <- copyTable oldhdrtbl hdrtbl
+    putStrLn $ "numOfEntries newhdrtbl: " ++ show (numOfEntries newhdrtbl)
+    return (newhdrtbl, numOfEntries newhdrtbl)
+  where
+    mhp = case reverseIndex oldhdrtbl of
+        Nothing -> Nothing
+        _       -> Just HP.empty
+
+copyTable :: HeaderTable -> HeaderTable -> IO HeaderTable
+copyTable oldhdrtbl newhdrtbl = do
+    ents <- getEntries oldhdrtbl
+    putStrLn $ "length of entries: " ++ show (length ents)
+    copyEntries newhdrtbl ents
+
+getEntries :: HeaderTable -> IO [Entry]
+getEntries HeaderTable{..} = forM [1 .. numOfEntries] readTable
+  where
+    readTable i = readArray circularTable $ adj maxNumOfEntries (offset + i)
+
+copyEntries :: HeaderTable -> [Entry] -> IO HeaderTable
+copyEntries hdrtbl                 [] = return hdrtbl
+copyEntries hdrtbl@HeaderTable{..} (e:es)
+  | headerTableSize + entrySize e <= maxHeaderTableSize = do
+      hdrtbl' <- insertEnd e hdrtbl
+      copyEntries hdrtbl' es
+  | otherwise = return hdrtbl
+
+shouldRenew :: HeaderTable -> Size -> Bool
+shouldRenew HeaderTable{..} maxsiz = maxHeaderTableSize /= maxsiz
+
 ----------------------------------------------------------------
 
 -- | Inserting 'Entry' to 'HeaderTable'.
---   New 'HeaderTable' and a set of dropped OLD 'Index'
+--   New 'HeaderTable', the largest new 'Index'
+--   and a set of dropped OLD 'Index'
 --   are returned.
-insertEntry :: Entry -> HeaderTable -> IO (HeaderTable,[Index])
+insertEntry :: Entry -> HeaderTable -> IO (HeaderTable,Index,[Index])
 insertEntry e hdrtbl = do
-    (hdrtbl', is, hs) <- insertOne e hdrtbl >>= adjustTableSize
+    (hdrtbl', is, hs) <- insertFront e hdrtbl >>= adjustTableSize
     let hdrtbl'' = case reverseIndex hdrtbl' of
             Nothing  -> hdrtbl'
             Just rev -> hdrtbl' { reverseIndex = Just (HP.deleteList hs rev) }
-    return (hdrtbl'', is)
+    return (hdrtbl'', numOfEntries hdrtbl'', is)
 
-insertOne :: Entry -> HeaderTable -> IO HeaderTable
-insertOne e hdrtbl@(HeaderTable maxN off n tbl tsize _ mrev) = do
-    writeArray tbl i e
+insertFront :: Entry -> HeaderTable -> IO HeaderTable
+insertFront e hdrtbl@HeaderTable{..} = do
+    writeArray circularTable i e
     return $ hdrtbl {
-        offset = off'
-      , numOfEntries = n + 1
-      , headerTableSize = tsize'
-      , reverseIndex = mrev'
+        offset = offset'
+      , numOfEntries = numOfEntries + 1
+      , headerTableSize = headerTableSize'
+      , reverseIndex = reverseIndex'
       }
   where
-    i = off
-    tsize' = tsize + entrySize e
-    off' = adj maxN (off - 1)
-    mrev' = case mrev of
+    i = offset
+    headerTableSize' = headerTableSize + entrySize e
+    offset' = adj maxNumOfEntries (offset - 1)
+    reverseIndex' = case reverseIndex of
         Nothing  -> Nothing
         Just rev -> Just $ HP.insert (entryHeader e) (HIndex i) rev
 
@@ -172,24 +233,44 @@
 adjust hdrtbl is hs
   | tsize <= maxtsize = return (hdrtbl, is, hs)
   | otherwise         = do
-      (hdrtbl', i, h) <- removeOne hdrtbl
+      (hdrtbl', i, h) <- removeEnd hdrtbl
       adjust hdrtbl' (i:is) (h:hs)
   where
     tsize = headerTableSize hdrtbl
     maxtsize = maxHeaderTableSize hdrtbl
 
-removeOne :: HeaderTable -> IO (HeaderTable,Index,Header)
-removeOne hdrtbl@(HeaderTable maxN off n tbl tsize _ _) = do
-    let i = adj maxN (off + n)
-    e <- readArray tbl i
-    writeArray tbl i dummyEntry -- let the entry GCed
-    let tsize' = tsize - entrySize e
+----------------------------------------------------------------
+
+insertEnd :: Entry -> HeaderTable -> IO HeaderTable
+insertEnd e hdrtbl@HeaderTable{..} = do
+    writeArray circularTable i e
+    return $ hdrtbl {
+        numOfEntries = numOfEntries + 1
+      , headerTableSize = headerTableSize'
+      , reverseIndex = reverseIndex'
+      }
+  where
+    i = adj maxNumOfEntries (offset + numOfEntries + 1)
+    hi = numOfEntries + 1
+    headerTableSize' = headerTableSize + entrySize e
+    reverseIndex' = case reverseIndex of
+        Nothing  -> Nothing
+        Just rev -> Just $ HP.insert (entryHeader e) (HIndex hi) rev
+
+----------------------------------------------------------------
+
+removeEnd :: HeaderTable -> IO (HeaderTable,Index,Header)
+removeEnd hdrtbl@HeaderTable{..} = do
+    let i = adj maxNumOfEntries (offset + numOfEntries)
+    e <- readArray circularTable i
+    writeArray circularTable i dummyEntry -- let the entry GCed
+    let tsize = headerTableSize - entrySize e
         h = entryHeader e
         hdrtbl' = hdrtbl {
-            numOfEntries = n - 1
-          , headerTableSize = tsize'
+            numOfEntries = numOfEntries - 1
+          , headerTableSize = tsize
           }
-    return (hdrtbl',n - 1, h)
+    return (hdrtbl', numOfEntries - 1, h)
 
 ----------------------------------------------------------------
 
@@ -209,7 +290,7 @@
 ----------------------------------------------------------------
 
 isIn :: Int -> HeaderTable -> Bool
-isIn idx hdrtbl = idx <= numOfEntries hdrtbl
+isIn idx HeaderTable{..} = idx <= numOfEntries
 
 -- | Which table does 'Index' belong to?
 which :: HeaderTable -> Index -> IO (WhichTable, Entry)
@@ -222,5 +303,4 @@
     sidx = fromIndexToSIndex hdrtbl idx
 
 toHeaderEntry :: HeaderTable -> HIndex -> IO Entry
-toHeaderEntry hdrtbl (HIndex hidx) = readArray (circularTable hdrtbl) hidx
-
+toHeaderEntry HeaderTable{..} (HIndex hidx) = readArray circularTable hidx
diff --git a/Network/HPACK/Table/Static.hs b/Network/HPACK/Table/Static.hs
--- a/Network/HPACK/Table/Static.hs
+++ b/Network/HPACK/Table/Static.hs
@@ -55,65 +55,65 @@
 
 staticTableList :: [Header]
 staticTableList = [
-    (":authority","")
-  , (":method","GET")
-  , (":method","POST")
-  , (":path","/")
-  , (":path","/index.html")
-  , (":scheme","http")
-  , (":scheme","https")
-  , (":status","200")
-  , (":status","204")
-  , (":status","206")
-  , (":status","304")
-  , (":status","400")
-  , (":status","404")
-  , (":status","500")
-  , ("accept-charset","")
-  , ("accept-encoding","")
-  , ("accept-language","")
-  , ("accept-ranges","")
-  , ("accept","")
-  , ("access-control-allow-origin","")
-  , ("age","")
-  , ("allow","")
-  , ("authorization","")
-  , ("cache-control","")
-  , ("content-disposition","")
-  , ("content-encoding","")
-  , ("content-language","")
-  , ("content-length","")
-  , ("content-location","")
-  , ("content-range","")
-  , ("content-type","")
-  , ("cookie","")
-  , ("date","")
-  , ("etag","")
-  , ("expect","")
-  , ("expires","")
-  , ("from","")
-  , ("host","")
-  , ("if-match","")
-  , ("if-modified-since","")
-  , ("if-none-match","")
-  , ("if-range","")
-  , ("if-unmodified-since","")
-  , ("last-modified","")
-  , ("link","")
-  , ("location","")
-  , ("max-forwards","")
-  , ("proxy-authenticate","")
-  , ("proxy-authorization","")
-  , ("range","")
-  , ("referer","")
-  , ("refresh","")
-  , ("retry-after","")
-  , ("server","")
-  , ("set-cookie","")
-  , ("strict-transport-security","")
-  , ("transfer-encoding","")
-  , ("user-agent","")
-  , ("vary","")
-  , ("via","")
-  , ("www-authenticate","")
+    (":authority", "")
+  , (":method", "GET")
+  , (":method", "POST")
+  , (":path", "/")
+  , (":path", "/index.html")
+  , (":scheme", "http")
+  , (":scheme", "https")
+  , (":status", "200")
+  , (":status", "204")
+  , (":status", "206")
+  , (":status", "304")
+  , (":status", "400")
+  , (":status", "404")
+  , (":status", "500")
+  , ("accept-charset", "")
+  , ("accept-encoding", "gzip, deflate")
+  , ("accept-language", "")
+  , ("accept-ranges", "")
+  , ("accept", "")
+  , ("access-control-allow-origin", "")
+  , ("age", "")
+  , ("allow", "")
+  , ("authorization", "")
+  , ("cache-control", "")
+  , ("content-disposition", "")
+  , ("content-encoding", "")
+  , ("content-language", "")
+  , ("content-length", "")
+  , ("content-location", "")
+  , ("content-range", "")
+  , ("content-type", "")
+  , ("cookie", "")
+  , ("date", "")
+  , ("etag", "")
+  , ("expect", "")
+  , ("expires", "")
+  , ("from", "")
+  , ("host", "")
+  , ("if-match", "")
+  , ("if-modified-since", "")
+  , ("if-none-match", "")
+  , ("if-range", "")
+  , ("if-unmodified-since", "")
+  , ("last-modified", "")
+  , ("link", "")
+  , ("location", "")
+  , ("max-forwards", "")
+  , ("proxy-authenticate", "")
+  , ("proxy-authorization", "")
+  , ("range", "")
+  , ("referer", "")
+  , ("refresh", "")
+  , ("retry-after", "")
+  , ("server", "")
+  , ("set-cookie", "")
+  , ("strict-transport-security", "")
+  , ("transfer-encoding", "")
+  , ("user-agent", "")
+  , ("vary", "")
+  , ("via", "")
+  , ("www-authenticate", "")
   ]
diff --git a/http2.cabal b/http2.cabal
--- a/http2.cabal
+++ b/http2.cabal
@@ -1,12 +1,12 @@
 Name:                   http2
-Version:                0.3.0
+Version:                0.4.0
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
 License-File:           LICENSE
 Synopsis:               HTTP/2.0 library including HPACK
 Description:            HTTP/2.0 library including HPACK.
-                        Currently only HPACK 07 is supported.
+                        Currently only HPACK 08 is supported.
 Category:               Network
 Cabal-Version:          >= 1.10
 Build-Type:             Simple
diff --git a/test-hpack/HPACKDecode.hs b/test-hpack/HPACKDecode.hs
--- a/test-hpack/HPACKDecode.hs
+++ b/test-hpack/HPACKDecode.hs
@@ -61,7 +61,10 @@
         B8.putStrLn hex
         putStrLn "---- Input header block"
         print hd
-    x <- try $ decodeHeader dctx inp
+    dctx0 <- case size c of
+        Nothing  -> return dctx
+        Just siz -> changeContextForDecoding dctx siz
+    x <- try $ decodeHeader dctx0 inp
     case x of
         Left e -> return $ Left $ show (e :: DecodeError)
         Right (dctx',hs') -> do
diff --git a/test/HeaderBlock.hs b/test/HeaderBlock.hs
--- a/test/HeaderBlock.hs
+++ b/test/HeaderBlock.hs
@@ -26,7 +26,7 @@
         ]
 
 d41b :: ByteStream
-d41b = fromHexString "828786448ce7cf9bebe89b6fb16fa9b6ff"
+d41b = fromHexString "828786448cf1e3c2e5f23a6ba0ab90f4ff"
 
 d42 :: HeaderBlock
 d42 = [
@@ -41,7 +41,7 @@
         ,(":authority","www.example.com")]
 
 d42b :: ByteStream
-d42b = fromHexString "5c86b9b9949556bf"
+d42b = fromHexString "5c86a8eb10649cbf"
 
 d43 :: HeaderBlock
 d43 = [
@@ -62,7 +62,7 @@
         ]
 
 d43b :: ByteStream
-d43b = fromHexString "30858c8b844088571c5cdb737b2faf89571c5cdb73724d9c57"
+d43b = fromHexString "30858c8b84408825a849e95ba97d7f8925a849e95bb8e8b4bf"
 
 ----------------------------------------------------------------
 
@@ -82,7 +82,7 @@
         ]
 
 d61b :: ByteStream
-d61b = fromHexString "488240175985bf06724b976393d6dbb29884de2a718805062098513109b56ba37191adcebf198e7e7cf9bebe89b6fb16fa9b6f"
+d61b = fromHexString "488264025985aec3771a4b6396d07abe941054d444a8200595040b8166e082a62d1bff71919d29ad171863c78f0b97c8e9ae82ae43d3"
 
 d62 :: HeaderBlock
 d62 = [
@@ -121,4 +121,4 @@
         ,("set-cookie","foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1")]
 
 d63b :: ByteStream
-d63b = fromHexString "84844393d6dbb29884de2a718805062098513111b56ba35e84abdd97ff848483837bb1e0d6cf9f6e8f9fd3e5f6fa76fefd3c7edf9eff1f2f0f3cfe9f6fcf7f8f879f61ad4f4cc9a973a2200ec3725e18b1b74e3f"
+d63b = fromHexString "84844396d07abe941054d444a8200595040b8166e084a62d1bff5e839bd9ab848483837bad94e7821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed4ee5b1063d5007"
diff --git a/test/HuffmanSpec.hs b/test/HuffmanSpec.hs
--- a/test/HuffmanSpec.hs
+++ b/test/HuffmanSpec.hs
@@ -14,16 +14,16 @@
 testData :: [(ByteString, ByteString)]
 testData = [
     ("", "")
-  , ("www.example.com", "e7cf9bebe89b6fb16fa9b6ff")
-  , ("no-cache", "b9b9949556bf")
-  , ("custom-key", "571c5cdb737b2faf")
-  , ("custom-value", "571c5cdb73724d9c57")
-  , ("private", "bf06724b97")
-  , ("Mon, 21 Oct 2013 20:13:21 GMT", "d6dbb29884de2a718805062098513109b56ba3")
-  , ("https://www.example.com", "adcebf198e7e7cf9bebe89b6fb16fa9b6f")
-  , ("Mon, 21 Oct 2013 20:13:22 GMT", "d6dbb29884de2a718805062098513111b56ba3")
-  , ("gzip", "abdd97ff")
-  , ("foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1", "e0d6cf9f6e8f9fd3e5f6fa76fefd3c7edf9eff1f2f0f3cfe9f6fcf7f8f879f61ad4f4cc9a973a2200ec3725e18b1b74e3f")
+  , ("www.example.com", "f1e3c2e5f23a6ba0ab90f4ff")
+  , ("no-cache", "a8eb10649cbf")
+  , ("custom-key", "25a849e95ba97d7f")
+  , ("custom-value", "25a849e95bb8e8b4bf")
+  , ("private", "aec3771a4b")
+  , ("Mon, 21 Oct 2013 20:13:21 GMT", "d07abe941054d444a8200595040b8166e082a62d1bff")
+  , ("https://www.example.com", "9d29ad171863c78f0b97c8e9ae82ae43d3")
+  , ("Mon, 21 Oct 2013 20:13:22 GMT", "d07abe941054d444a8200595040b8166e084a62d1bff")
+  , ("gzip", "9bd9ab")
+  , ("foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1", "94e7821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed4ee5b1063d5007")
   ]
 
 shouldBeEncoded :: ByteString -> ByteString -> Expectation
@@ -48,6 +48,6 @@
     describe "decode" $ do
         it "decodes" $ do
             "ff" `shouldBeDecoded` Left TooLongEos
-            "ffffeeff" `shouldBeDecoded` Right "\1"
-            "ffffeeffff" `shouldBeDecoded` Left TooLongEos
+            "ffffea" `shouldBeDecoded` Right "\9"
+            "ffffeaff" `shouldBeDecoded` Left TooLongEos
             mapM_ (\(x,y) -> y `shouldBeDecoded` Right x) testData
