diff --git a/src/Tahoe/CHK.hs b/src/Tahoe/CHK.hs
index 399b02e5fe38f8a5f0b4eaf2736bc45db1a67a54..af3a7a3e83e826ab084ecd0baf52dd8c6b2a1b1a 100644
--- a/src/Tahoe/CHK.hs
+++ b/src/Tahoe/CHK.hs
@@ -81,6 +81,7 @@ import Crypto.Types (
     ByteLength,
     IV,
  )
+import Data.Binary (encode)
 import qualified Data.ByteArray as BA
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Builder as B
@@ -367,10 +368,10 @@ chkEncode version stateRef p@(Parameters segmentSize total happy required) dataS
             let tree = makeTreePartial crypttextHashes
             -- print ("CrypttextHashTree inputs", map encodeBase32Unpadded crypttextHashes)
             -- print ("CrypttextHashTree outputs", map encodeBase32Unpadded . breadthFirstList $ tree)
-            same_blocks . serializeTree $ tree
+            same_blocks . toStrict . encode $ tree
         BlockHashTree -> do
             setStage ShareHashes
-            let trees = map serializeTree $ makeBlockHashTrees blockHashes
+            let trees = map (toStrict . encode) $ makeBlockHashTrees blockHashes
             -- print ("BlockHashes", map encodeBase32Unpadded trees)
             different_blocks trees
         ShareHashes -> do
@@ -633,9 +634,6 @@ makeShareTree = makeTreePartial . map (head . breadthFirstList)
 makeBlockHashTrees :: BlockHashMap -> [MerkleTree]
 makeBlockHashTrees = map (makeTreePartial . snd) . Map.toAscList
 
-serializeTree :: MerkleTree -> B.ByteString
-serializeTree = B.concat . breadthFirstList
-
 makeCrypttextHash :: Context SHA256 -> CrypttextHash
 makeCrypttextHash = sha256 . toBytes . hashFinalize
   where