diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,3 +1,8 @@
+module Main
+  ( main
+  )
+where
+
 import qualified Distribution.Simple as Cabal
 
 main :: IO ()
diff --git a/executables/Main.hs b/executables/Main.hs
--- a/executables/Main.hs
+++ b/executables/Main.hs
@@ -1,5 +1,6 @@
 module Main
   ( main
-  ) where
+  )
+where
 
 import Rattletrap.Console.Main (main)
diff --git a/library/Rattletrap.hs b/library/Rattletrap.hs
--- a/library/Rattletrap.hs
+++ b/library/Rattletrap.hs
@@ -69,7 +69,8 @@
   , Rattletrap.Type.ClassMapping.ClassMapping(..)
   , Rattletrap.Type.Cache.Cache(..)
   , Rattletrap.Type.AttributeMapping.AttributeMapping(..)
-  ) where
+  )
+where
 
 import qualified Rattletrap.Type.AppliedDamageAttribute
 import qualified Rattletrap.Type.Attribute
diff --git a/library/Rattletrap/Console/Main.hs b/library/Rattletrap/Console/Main.hs
--- a/library/Rattletrap/Console/Main.hs
+++ b/library/Rattletrap/Console/Main.hs
@@ -1,10 +1,12 @@
 module Rattletrap.Console.Main
   ( main
   , rattletrap
-  ) where
+  )
+where
 
 import qualified Control.Monad as Monad
 import qualified Data.Aeson as Json
+import qualified Data.ByteString as Bytes
 import qualified Data.ByteString.Lazy as LazyBytes
 import qualified Data.Version as Version
 import qualified Network.HTTP.Client as Client
@@ -35,31 +37,32 @@
   let encode = getEncoder config
   putOutput config (encode replay)
 
-getDecoder :: Config -> LazyBytes.ByteString -> Either String Rattletrap.Replay
+getDecoder :: Config -> Bytes.ByteString -> Either String Rattletrap.Replay
 getDecoder config = case getMode config of
   ModeDecode -> Rattletrap.decodeReplayFile
   ModeEncode -> Rattletrap.decodeReplayJson
 
-getEncoder :: Config -> Rattletrap.Replay -> LazyBytes.ByteString
+getEncoder :: Config -> Rattletrap.Replay -> Bytes.ByteString
 getEncoder config = case getMode config of
-  ModeDecode ->
-    if configCompact config then Json.encode else Rattletrap.encodeReplayJson
+  ModeDecode -> if configCompact config
+    then LazyBytes.toStrict . Json.encode
+    else Rattletrap.encodeReplayJson
   ModeEncode -> Rattletrap.encodeReplayFile
 
-getInput :: Config -> IO LazyBytes.ByteString
+getInput :: Config -> IO Bytes.ByteString
 getInput config = case configInput config of
-  Nothing -> LazyBytes.getContents
+  Nothing -> Bytes.getContents
   Just fileOrUrl -> case Client.parseUrlThrow fileOrUrl of
-    Nothing -> LazyBytes.readFile fileOrUrl
+    Nothing -> Bytes.readFile fileOrUrl
     Just request -> do
       manager <- Client.newTlsManager
       response <- Client.httpLbs request manager
-      pure (Client.responseBody response)
+      pure (LazyBytes.toStrict (Client.responseBody response))
 
-putOutput :: Config -> LazyBytes.ByteString -> IO ()
+putOutput :: Config -> Bytes.ByteString -> IO ()
 putOutput config = case configOutput config of
-  Nothing -> LazyBytes.putStr
-  Just file -> LazyBytes.writeFile file
+  Nothing -> Bytes.putStr
+  Just file -> Bytes.writeFile file
 
 getConfig :: [String] -> IO Config
 getConfig arguments = do
@@ -104,7 +107,7 @@
 inputOption = Console.Option
   ['i']
   ["input"]
-  ( Console.ReqArg
+  (Console.ReqArg
     (\input config -> pure config { configInput = Just input })
     "FILE|URL"
   )
@@ -114,8 +117,8 @@
 modeOption = Console.Option
   ['m']
   ["mode"]
-  ( Console.ReqArg
-    ( \rawMode config -> do
+  (Console.ReqArg
+    (\rawMode config -> do
       mode <- parseMode rawMode
       pure config { configMode = Just mode }
     )
@@ -127,7 +130,7 @@
 outputOption = Console.Option
   ['o']
   ["output"]
-  ( Console.ReqArg
+  (Console.ReqArg
     (\output config -> pure config { configOutput = Just output })
     "FILE"
   )
diff --git a/library/Rattletrap/Data.hs b/library/Rattletrap/Data.hs
--- a/library/Rattletrap/Data.hs
+++ b/library/Rattletrap/Data.hs
@@ -1,3 +1,4 @@
+-- brittany --columns 120
 module Rattletrap.Data
   ( rawParentClasses
   , rawClassesWithLocation
@@ -5,7 +6,8 @@
   , rawObjectClasses
   , rawAttributeTypes
   , rawCrc32Table
-  ) where
+  )
+where
 
 import Rattletrap.Type.AttributeType
 
@@ -102,6 +104,7 @@
   , "TAGame.Ball_TA"
   , "TAGame.Car_Season_TA"
   , "TAGame.Car_TA"
+  -- This comments forces Brittany to use a multi-line layout for this list.
   ]
 
 rawObjectClasses :: [(String, String)]
@@ -326,68 +329,260 @@
 
 rawCrc32Table :: Integral a => [a]
 rawCrc32Table =
-  [ 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9
-  , 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005
-  , 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61
-  , 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd
-  , 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9
-  , 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75
-  , 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011
-  , 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd
-  , 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039
-  , 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5
-  , 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81
-  , 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d
-  , 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49
-  , 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95
-  , 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1
-  , 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d
-  , 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae
-  , 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072
-  , 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16
-  , 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca
-  , 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde
-  , 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02
-  , 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066
-  , 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba
-  , 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e
-  , 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692
-  , 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6
-  , 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a
-  , 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e
-  , 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2
-  , 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686
-  , 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a
-  , 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637
-  , 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb
-  , 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f
-  , 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53
-  , 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47
-  , 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b
-  , 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff
-  , 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623
-  , 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7
-  , 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b
-  , 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f
-  , 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3
-  , 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7
-  , 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b
-  , 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f
-  , 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3
-  , 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640
-  , 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c
-  , 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8
-  , 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24
-  , 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30
-  , 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec
-  , 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088
-  , 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654
-  , 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0
-  , 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c
-  , 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18
-  , 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4
-  , 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0
-  , 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c
-  , 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668
-  , 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
+  [ 0x00000000
+  , 0x04c11db7
+  , 0x09823b6e
+  , 0x0d4326d9
+  , 0x130476dc
+  , 0x17c56b6b
+  , 0x1a864db2
+  , 0x1e475005
+  , 0x2608edb8
+  , 0x22c9f00f
+  , 0x2f8ad6d6
+  , 0x2b4bcb61
+  , 0x350c9b64
+  , 0x31cd86d3
+  , 0x3c8ea00a
+  , 0x384fbdbd
+  , 0x4c11db70
+  , 0x48d0c6c7
+  , 0x4593e01e
+  , 0x4152fda9
+  , 0x5f15adac
+  , 0x5bd4b01b
+  , 0x569796c2
+  , 0x52568b75
+  , 0x6a1936c8
+  , 0x6ed82b7f
+  , 0x639b0da6
+  , 0x675a1011
+  , 0x791d4014
+  , 0x7ddc5da3
+  , 0x709f7b7a
+  , 0x745e66cd
+  , 0x9823b6e0
+  , 0x9ce2ab57
+  , 0x91a18d8e
+  , 0x95609039
+  , 0x8b27c03c
+  , 0x8fe6dd8b
+  , 0x82a5fb52
+  , 0x8664e6e5
+  , 0xbe2b5b58
+  , 0xbaea46ef
+  , 0xb7a96036
+  , 0xb3687d81
+  , 0xad2f2d84
+  , 0xa9ee3033
+  , 0xa4ad16ea
+  , 0xa06c0b5d
+  , 0xd4326d90
+  , 0xd0f37027
+  , 0xddb056fe
+  , 0xd9714b49
+  , 0xc7361b4c
+  , 0xc3f706fb
+  , 0xceb42022
+  , 0xca753d95
+  , 0xf23a8028
+  , 0xf6fb9d9f
+  , 0xfbb8bb46
+  , 0xff79a6f1
+  , 0xe13ef6f4
+  , 0xe5ffeb43
+  , 0xe8bccd9a
+  , 0xec7dd02d
+  , 0x34867077
+  , 0x30476dc0
+  , 0x3d044b19
+  , 0x39c556ae
+  , 0x278206ab
+  , 0x23431b1c
+  , 0x2e003dc5
+  , 0x2ac12072
+  , 0x128e9dcf
+  , 0x164f8078
+  , 0x1b0ca6a1
+  , 0x1fcdbb16
+  , 0x018aeb13
+  , 0x054bf6a4
+  , 0x0808d07d
+  , 0x0cc9cdca
+  , 0x7897ab07
+  , 0x7c56b6b0
+  , 0x71159069
+  , 0x75d48dde
+  , 0x6b93dddb
+  , 0x6f52c06c
+  , 0x6211e6b5
+  , 0x66d0fb02
+  , 0x5e9f46bf
+  , 0x5a5e5b08
+  , 0x571d7dd1
+  , 0x53dc6066
+  , 0x4d9b3063
+  , 0x495a2dd4
+  , 0x44190b0d
+  , 0x40d816ba
+  , 0xaca5c697
+  , 0xa864db20
+  , 0xa527fdf9
+  , 0xa1e6e04e
+  , 0xbfa1b04b
+  , 0xbb60adfc
+  , 0xb6238b25
+  , 0xb2e29692
+  , 0x8aad2b2f
+  , 0x8e6c3698
+  , 0x832f1041
+  , 0x87ee0df6
+  , 0x99a95df3
+  , 0x9d684044
+  , 0x902b669d
+  , 0x94ea7b2a
+  , 0xe0b41de7
+  , 0xe4750050
+  , 0xe9362689
+  , 0xedf73b3e
+  , 0xf3b06b3b
+  , 0xf771768c
+  , 0xfa325055
+  , 0xfef34de2
+  , 0xc6bcf05f
+  , 0xc27dede8
+  , 0xcf3ecb31
+  , 0xcbffd686
+  , 0xd5b88683
+  , 0xd1799b34
+  , 0xdc3abded
+  , 0xd8fba05a
+  , 0x690ce0ee
+  , 0x6dcdfd59
+  , 0x608edb80
+  , 0x644fc637
+  , 0x7a089632
+  , 0x7ec98b85
+  , 0x738aad5c
+  , 0x774bb0eb
+  , 0x4f040d56
+  , 0x4bc510e1
+  , 0x46863638
+  , 0x42472b8f
+  , 0x5c007b8a
+  , 0x58c1663d
+  , 0x558240e4
+  , 0x51435d53
+  , 0x251d3b9e
+  , 0x21dc2629
+  , 0x2c9f00f0
+  , 0x285e1d47
+  , 0x36194d42
+  , 0x32d850f5
+  , 0x3f9b762c
+  , 0x3b5a6b9b
+  , 0x0315d626
+  , 0x07d4cb91
+  , 0x0a97ed48
+  , 0x0e56f0ff
+  , 0x1011a0fa
+  , 0x14d0bd4d
+  , 0x19939b94
+  , 0x1d528623
+  , 0xf12f560e
+  , 0xf5ee4bb9
+  , 0xf8ad6d60
+  , 0xfc6c70d7
+  , 0xe22b20d2
+  , 0xe6ea3d65
+  , 0xeba91bbc
+  , 0xef68060b
+  , 0xd727bbb6
+  , 0xd3e6a601
+  , 0xdea580d8
+  , 0xda649d6f
+  , 0xc423cd6a
+  , 0xc0e2d0dd
+  , 0xcda1f604
+  , 0xc960ebb3
+  , 0xbd3e8d7e
+  , 0xb9ff90c9
+  , 0xb4bcb610
+  , 0xb07daba7
+  , 0xae3afba2
+  , 0xaafbe615
+  , 0xa7b8c0cc
+  , 0xa379dd7b
+  , 0x9b3660c6
+  , 0x9ff77d71
+  , 0x92b45ba8
+  , 0x9675461f
+  , 0x8832161a
+  , 0x8cf30bad
+  , 0x81b02d74
+  , 0x857130c3
+  , 0x5d8a9099
+  , 0x594b8d2e
+  , 0x5408abf7
+  , 0x50c9b640
+  , 0x4e8ee645
+  , 0x4a4ffbf2
+  , 0x470cdd2b
+  , 0x43cdc09c
+  , 0x7b827d21
+  , 0x7f436096
+  , 0x7200464f
+  , 0x76c15bf8
+  , 0x68860bfd
+  , 0x6c47164a
+  , 0x61043093
+  , 0x65c52d24
+  , 0x119b4be9
+  , 0x155a565e
+  , 0x18197087
+  , 0x1cd86d30
+  , 0x029f3d35
+  , 0x065e2082
+  , 0x0b1d065b
+  , 0x0fdc1bec
+  , 0x3793a651
+  , 0x3352bbe6
+  , 0x3e119d3f
+  , 0x3ad08088
+  , 0x2497d08d
+  , 0x2056cd3a
+  , 0x2d15ebe3
+  , 0x29d4f654
+  , 0xc5a92679
+  , 0xc1683bce
+  , 0xcc2b1d17
+  , 0xc8ea00a0
+  , 0xd6ad50a5
+  , 0xd26c4d12
+  , 0xdf2f6bcb
+  , 0xdbee767c
+  , 0xe3a1cbc1
+  , 0xe760d676
+  , 0xea23f0af
+  , 0xeee2ed18
+  , 0xf0a5bd1d
+  , 0xf464a0aa
+  , 0xf9278673
+  , 0xfde69bc4
+  , 0x89b8fd09
+  , 0x8d79e0be
+  , 0x803ac667
+  , 0x84fbdbd0
+  , 0x9abc8bd5
+  , 0x9e7d9662
+  , 0x933eb0bb
+  , 0x97ffad0c
+  , 0xafb010b1
+  , 0xab710d06
+  , 0xa6322bdf
+  , 0xa2f33668
+  , 0xbcb4666d
+  , 0xb8757bda
+  , 0xb5365d03
+  , 0xb1f740b4
   ]
diff --git a/library/Rattletrap/Decode/AppliedDamageAttribute.hs b/library/Rattletrap/Decode/AppliedDamageAttribute.hs
--- a/library/Rattletrap/Decode/AppliedDamageAttribute.hs
+++ b/library/Rattletrap/Decode/AppliedDamageAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.AppliedDamageAttribute
   ( decodeAppliedDamageAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int32le
@@ -8,7 +9,8 @@
 import Rattletrap.Decode.Word8le
 import Rattletrap.Type.AppliedDamageAttribute
 
-decodeAppliedDamageAttributeBits :: (Int, Int, Int) -> DecodeBits AppliedDamageAttribute
+decodeAppliedDamageAttributeBits
+  :: (Int, Int, Int) -> DecodeBits AppliedDamageAttribute
 decodeAppliedDamageAttributeBits version =
   AppliedDamageAttribute
     <$> decodeWord8leBits
diff --git a/library/Rattletrap/Decode/Attribute.hs b/library/Rattletrap/Decode/Attribute.hs
--- a/library/Rattletrap/Decode/Attribute.hs
+++ b/library/Rattletrap/Decode/Attribute.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Attribute
   ( decodeAttributesBits
   , decodeAttributeBits
-  ) where
+  )
+where
 
 import Data.Semigroup ((<>))
 import Rattletrap.Decode.AttributeValue
diff --git a/library/Rattletrap/Decode/AttributeMapping.hs b/library/Rattletrap/Decode/AttributeMapping.hs
--- a/library/Rattletrap/Decode/AttributeMapping.hs
+++ b/library/Rattletrap/Decode/AttributeMapping.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.AttributeMapping
   ( decodeAttributeMapping
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
diff --git a/library/Rattletrap/Decode/AttributeValue.hs b/library/Rattletrap/Decode/AttributeValue.hs
--- a/library/Rattletrap/Decode/AttributeValue.hs
+++ b/library/Rattletrap/Decode/AttributeValue.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.AttributeValue
   ( decodeAttributeValueBits
-  ) where
+  )
+where
 
 import Data.Semigroup ((<>))
 import Rattletrap.Data
diff --git a/library/Rattletrap/Decode/Bitstream.hs b/library/Rattletrap/Decode/Bitstream.hs
--- a/library/Rattletrap/Decode/Bitstream.hs
+++ b/library/Rattletrap/Decode/Bitstream.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Bitstream
   ( decodeBitstreamBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Bitstream
diff --git a/library/Rattletrap/Decode/BooleanAttribute.hs b/library/Rattletrap/Decode/BooleanAttribute.hs
--- a/library/Rattletrap/Decode/BooleanAttribute.hs
+++ b/library/Rattletrap/Decode/BooleanAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.BooleanAttribute
   ( decodeBooleanAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.BooleanAttribute
diff --git a/library/Rattletrap/Decode/ByteAttribute.hs b/library/Rattletrap/Decode/ByteAttribute.hs
--- a/library/Rattletrap/Decode/ByteAttribute.hs
+++ b/library/Rattletrap/Decode/ByteAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.ByteAttribute
   ( decodeByteAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word8le
diff --git a/library/Rattletrap/Decode/Cache.hs b/library/Rattletrap/Decode/Cache.hs
--- a/library/Rattletrap/Decode/Cache.hs
+++ b/library/Rattletrap/Decode/Cache.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Cache
   ( decodeCache
-  ) where
+  )
+where
 
 import Rattletrap.Decode.AttributeMapping
 import Rattletrap.Decode.Common
diff --git a/library/Rattletrap/Decode/CamSettingsAttribute.hs b/library/Rattletrap/Decode/CamSettingsAttribute.hs
--- a/library/Rattletrap/Decode/CamSettingsAttribute.hs
+++ b/library/Rattletrap/Decode/CamSettingsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.CamSettingsAttribute
   ( decodeCamSettingsAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Float32le
diff --git a/library/Rattletrap/Decode/ClassMapping.hs b/library/Rattletrap/Decode/ClassMapping.hs
--- a/library/Rattletrap/Decode/ClassMapping.hs
+++ b/library/Rattletrap/Decode/ClassMapping.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.ClassMapping
   ( decodeClassMapping
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Str
diff --git a/library/Rattletrap/Decode/ClubColorsAttribute.hs b/library/Rattletrap/Decode/ClubColorsAttribute.hs
--- a/library/Rattletrap/Decode/ClubColorsAttribute.hs
+++ b/library/Rattletrap/Decode/ClubColorsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.ClubColorsAttribute
   ( decodeClubColorsAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word8le
diff --git a/library/Rattletrap/Decode/Common.hs b/library/Rattletrap/Decode/Common.hs
--- a/library/Rattletrap/Decode/Common.hs
+++ b/library/Rattletrap/Decode/Common.hs
@@ -2,13 +2,13 @@
   ( Decode
   , DecodeBits
   , decodeWhen
-  , getLazyByteStringBits
+  , getByteStringBits
   , getWord8Bits
   , runDecode
   , runDecodeBits
   , toBits
   , Binary.getFloatle
-  , Binary.getLazyByteString
+  , Binary.getByteString
   , Binary.getInt8
   , Binary.getInt32le
   , Binary.getInt64le
@@ -18,12 +18,14 @@
   , BinaryBits.getBool
   , BinaryBits.getWord16be
   , BinaryBits.getWord32be
-  ) where
+  )
+where
 
 import qualified Control.Applicative as Applicative
 import qualified Data.Binary as Binary
 import qualified Data.Binary.Bits.Get as BinaryBits
 import qualified Data.Binary.Get as Binary
+import qualified Data.ByteString as Bytes
 import qualified Data.ByteString.Lazy as LazyBytes
 import qualified Data.Word as Word
 import qualified Rattletrap.Utility.Bytes as Utility
@@ -36,21 +38,22 @@
   :: (Applicative m, Applicative.Alternative f) => Bool -> m a -> m (f a)
 decodeWhen p f = if p then fmap pure f else pure Applicative.empty
 
-getLazyByteStringBits :: Int -> DecodeBits LazyBytes.ByteString
-getLazyByteStringBits = BinaryBits.getLazyByteString
+getByteStringBits :: Int -> DecodeBits Bytes.ByteString
+getByteStringBits = BinaryBits.getByteString
 
 getWord8Bits :: Int -> DecodeBits Word.Word8
 getWord8Bits = BinaryBits.getWord8
 
-runDecode :: Decode a -> LazyBytes.ByteString -> Either String a
-runDecode decode bytes = case Binary.runGetOrFail decode bytes of
-  Left (_, _, x) -> fail x
-  Right (_, _, x) -> pure x
+runDecode :: Decode a -> Bytes.ByteString -> Either String a
+runDecode decode bytes =
+  case Binary.runGetOrFail decode (LazyBytes.fromStrict bytes) of
+    Left (_, _, x) -> fail x
+    Right (_, _, x) -> pure x
 
-runDecodeBits :: DecodeBits a -> LazyBytes.ByteString -> Either String a
+runDecodeBits :: DecodeBits a -> Bytes.ByteString -> Either String a
 runDecodeBits = runDecode . BinaryBits.runBitGet
 
 toBits :: Decode a -> Int -> DecodeBits a
 toBits decode =
-  fmap (Binary.runGet decode . Utility.reverseBytes)
-    . BinaryBits.getLazyByteString
+  fmap (Binary.runGet decode . LazyBytes.fromStrict . Utility.reverseBytes)
+    . BinaryBits.getByteString
diff --git a/library/Rattletrap/Decode/CompressedWord.hs b/library/Rattletrap/Decode/CompressedWord.hs
--- a/library/Rattletrap/Decode/CompressedWord.hs
+++ b/library/Rattletrap/Decode/CompressedWord.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.CompressedWord
   ( decodeCompressedWordBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.CompressedWord
diff --git a/library/Rattletrap/Decode/CompressedWordVector.hs b/library/Rattletrap/Decode/CompressedWordVector.hs
--- a/library/Rattletrap/Decode/CompressedWordVector.hs
+++ b/library/Rattletrap/Decode/CompressedWordVector.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.CompressedWordVector
   ( decodeCompressedWordVectorBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.CompressedWord
diff --git a/library/Rattletrap/Decode/Content.hs b/library/Rattletrap/Decode/Content.hs
--- a/library/Rattletrap/Decode/Content.hs
+++ b/library/Rattletrap/Decode/Content.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Content
   ( decodeContent
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Cache
 import Rattletrap.Decode.ClassMapping
@@ -37,7 +38,7 @@
     <*> decodeWord32le
   (stream, messages, marks, packages, objects, names, classMappings, caches) <-
     (,,,,,,,)
-    <$> getLazyByteString (fromIntegral (word32leValue streamSize))
+    <$> getByteString (fromIntegral (word32leValue streamSize))
     <*> decodeList decodeMessage
     <*> decodeList decodeMark
     <*> decodeList decodeStr
@@ -53,7 +54,7 @@
       mempty
   frames <- either fail pure (runDecodeBits bitGet (reverseBytes stream))
   pure
-    ( Content
+    (Content
       levels
       keyFrames
       streamSize
diff --git a/library/Rattletrap/Decode/DamageStateAttribute.hs b/library/Rattletrap/Decode/DamageStateAttribute.hs
--- a/library/Rattletrap/Decode/DamageStateAttribute.hs
+++ b/library/Rattletrap/Decode/DamageStateAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.DamageStateAttribute
   ( decodeDamageStateAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int32le
@@ -8,7 +9,8 @@
 import Rattletrap.Decode.Word8le
 import Rattletrap.Type.DamageStateAttribute
 
-decodeDamageStateAttributeBits :: (Int, Int, Int) -> DecodeBits DamageStateAttribute
+decodeDamageStateAttributeBits
+  :: (Int, Int, Int) -> DecodeBits DamageStateAttribute
 decodeDamageStateAttributeBits version =
   DamageStateAttribute
     <$> decodeWord8leBits
diff --git a/library/Rattletrap/Decode/DemolishAttribute.hs b/library/Rattletrap/Decode/DemolishAttribute.hs
--- a/library/Rattletrap/Decode/DemolishAttribute.hs
+++ b/library/Rattletrap/Decode/DemolishAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.DemolishAttribute
   ( decodeDemolishAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Vector
diff --git a/library/Rattletrap/Decode/DestroyedReplication.hs b/library/Rattletrap/Decode/DestroyedReplication.hs
--- a/library/Rattletrap/Decode/DestroyedReplication.hs
+++ b/library/Rattletrap/Decode/DestroyedReplication.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.DestroyedReplication
   ( decodeDestroyedReplicationBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.DestroyedReplication
diff --git a/library/Rattletrap/Decode/Dictionary.hs b/library/Rattletrap/Decode/Dictionary.hs
--- a/library/Rattletrap/Decode/Dictionary.hs
+++ b/library/Rattletrap/Decode/Dictionary.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Dictionary
   ( decodeDictionary
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Str
diff --git a/library/Rattletrap/Decode/EnumAttribute.hs b/library/Rattletrap/Decode/EnumAttribute.hs
--- a/library/Rattletrap/Decode/EnumAttribute.hs
+++ b/library/Rattletrap/Decode/EnumAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.EnumAttribute
   ( decodeEnumAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.EnumAttribute
diff --git a/library/Rattletrap/Decode/ExplosionAttribute.hs b/library/Rattletrap/Decode/ExplosionAttribute.hs
--- a/library/Rattletrap/Decode/ExplosionAttribute.hs
+++ b/library/Rattletrap/Decode/ExplosionAttribute.hs
@@ -1,12 +1,17 @@
 module Rattletrap.Decode.ExplosionAttribute
   ( decodeExplosionAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int32le
 import Rattletrap.Decode.Vector
 import Rattletrap.Type.ExplosionAttribute
 
-decodeExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExplosionAttribute
+decodeExplosionAttributeBits
+  :: (Int, Int, Int) -> DecodeBits ExplosionAttribute
 decodeExplosionAttributeBits version =
-  ExplosionAttribute <$> getBool <*> decodeInt32leBits <*> decodeVectorBits version
+  ExplosionAttribute
+    <$> getBool
+    <*> decodeInt32leBits
+    <*> decodeVectorBits version
diff --git a/library/Rattletrap/Decode/ExtendedExplosionAttribute.hs b/library/Rattletrap/Decode/ExtendedExplosionAttribute.hs
--- a/library/Rattletrap/Decode/ExtendedExplosionAttribute.hs
+++ b/library/Rattletrap/Decode/ExtendedExplosionAttribute.hs
@@ -1,13 +1,15 @@
 module Rattletrap.Decode.ExtendedExplosionAttribute
   ( decodeExtendedExplosionAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.ExplosionAttribute
 import Rattletrap.Decode.FlaggedIntAttribute
 import Rattletrap.Type.ExtendedExplosionAttribute
 
-decodeExtendedExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExtendedExplosionAttribute
+decodeExtendedExplosionAttributeBits
+  :: (Int, Int, Int) -> DecodeBits ExtendedExplosionAttribute
 decodeExtendedExplosionAttributeBits version =
   ExtendedExplosionAttribute
     <$> decodeExplosionAttributeBits version
diff --git a/library/Rattletrap/Decode/FlaggedIntAttribute.hs b/library/Rattletrap/Decode/FlaggedIntAttribute.hs
--- a/library/Rattletrap/Decode/FlaggedIntAttribute.hs
+++ b/library/Rattletrap/Decode/FlaggedIntAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.FlaggedIntAttribute
   ( decodeFlaggedIntAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int32le
diff --git a/library/Rattletrap/Decode/Float32le.hs b/library/Rattletrap/Decode/Float32le.hs
--- a/library/Rattletrap/Decode/Float32le.hs
+++ b/library/Rattletrap/Decode/Float32le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Float32le
   ( decodeFloat32le
   , decodeFloat32leBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Float32le
diff --git a/library/Rattletrap/Decode/FloatAttribute.hs b/library/Rattletrap/Decode/FloatAttribute.hs
--- a/library/Rattletrap/Decode/FloatAttribute.hs
+++ b/library/Rattletrap/Decode/FloatAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.FloatAttribute
   ( decodeFloatAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Float32le
diff --git a/library/Rattletrap/Decode/Frame.hs b/library/Rattletrap/Decode/Frame.hs
--- a/library/Rattletrap/Decode/Frame.hs
+++ b/library/Rattletrap/Decode/Frame.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Frame
   ( decodeFramesBits
   , decodeFrameBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Float32le
diff --git a/library/Rattletrap/Decode/GameModeAttribute.hs b/library/Rattletrap/Decode/GameModeAttribute.hs
--- a/library/Rattletrap/Decode/GameModeAttribute.hs
+++ b/library/Rattletrap/Decode/GameModeAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.GameModeAttribute
   ( decodeGameModeAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.GameModeAttribute
diff --git a/library/Rattletrap/Decode/Header.hs b/library/Rattletrap/Decode/Header.hs
--- a/library/Rattletrap/Decode/Header.hs
+++ b/library/Rattletrap/Decode/Header.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Header
   ( decodeHeader
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Dictionary
diff --git a/library/Rattletrap/Decode/Initialization.hs b/library/Rattletrap/Decode/Initialization.hs
--- a/library/Rattletrap/Decode/Initialization.hs
+++ b/library/Rattletrap/Decode/Initialization.hs
@@ -1,13 +1,15 @@
 module Rattletrap.Decode.Initialization
   ( decodeInitializationBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int8Vector
 import Rattletrap.Decode.Vector
 import Rattletrap.Type.Initialization
 
-decodeInitializationBits :: (Int, Int, Int) -> Bool -> Bool -> DecodeBits Initialization
+decodeInitializationBits
+  :: (Int, Int, Int) -> Bool -> Bool -> DecodeBits Initialization
 decodeInitializationBits version hasLocation hasRotation =
   Initialization
     <$> decodeWhen hasLocation (decodeVectorBits version)
diff --git a/library/Rattletrap/Decode/Int32le.hs b/library/Rattletrap/Decode/Int32le.hs
--- a/library/Rattletrap/Decode/Int32le.hs
+++ b/library/Rattletrap/Decode/Int32le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Int32le
   ( decodeInt32le
   , decodeInt32leBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Int32le
diff --git a/library/Rattletrap/Decode/Int64Attribute.hs b/library/Rattletrap/Decode/Int64Attribute.hs
--- a/library/Rattletrap/Decode/Int64Attribute.hs
+++ b/library/Rattletrap/Decode/Int64Attribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Int64Attribute
   ( decodeInt64AttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int64le
diff --git a/library/Rattletrap/Decode/Int64le.hs b/library/Rattletrap/Decode/Int64le.hs
--- a/library/Rattletrap/Decode/Int64le.hs
+++ b/library/Rattletrap/Decode/Int64le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Int64le
   ( decodeInt64le
   , decodeInt64leBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Int64le
diff --git a/library/Rattletrap/Decode/Int8Vector.hs b/library/Rattletrap/Decode/Int8Vector.hs
--- a/library/Rattletrap/Decode/Int8Vector.hs
+++ b/library/Rattletrap/Decode/Int8Vector.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Int8Vector
   ( decodeInt8VectorBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int8le
diff --git a/library/Rattletrap/Decode/Int8le.hs b/library/Rattletrap/Decode/Int8le.hs
--- a/library/Rattletrap/Decode/Int8le.hs
+++ b/library/Rattletrap/Decode/Int8le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Int8le
   ( decodeInt8le
   , decodeInt8leBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Int8le
diff --git a/library/Rattletrap/Decode/IntAttribute.hs b/library/Rattletrap/Decode/IntAttribute.hs
--- a/library/Rattletrap/Decode/IntAttribute.hs
+++ b/library/Rattletrap/Decode/IntAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.IntAttribute
   ( decodeIntAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int32le
diff --git a/library/Rattletrap/Decode/KeyFrame.hs b/library/Rattletrap/Decode/KeyFrame.hs
--- a/library/Rattletrap/Decode/KeyFrame.hs
+++ b/library/Rattletrap/Decode/KeyFrame.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.KeyFrame
   ( decodeKeyFrame
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Float32le
diff --git a/library/Rattletrap/Decode/List.hs b/library/Rattletrap/Decode/List.hs
--- a/library/Rattletrap/Decode/List.hs
+++ b/library/Rattletrap/Decode/List.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.List
   ( decodeList
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
diff --git a/library/Rattletrap/Decode/LoadoutAttribute.hs b/library/Rattletrap/Decode/LoadoutAttribute.hs
--- a/library/Rattletrap/Decode/LoadoutAttribute.hs
+++ b/library/Rattletrap/Decode/LoadoutAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.LoadoutAttribute
   ( decodeLoadoutAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
diff --git a/library/Rattletrap/Decode/LoadoutOnlineAttribute.hs b/library/Rattletrap/Decode/LoadoutOnlineAttribute.hs
--- a/library/Rattletrap/Decode/LoadoutOnlineAttribute.hs
+++ b/library/Rattletrap/Decode/LoadoutOnlineAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.LoadoutOnlineAttribute
   ( decodeLoadoutOnlineAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.ProductAttribute
diff --git a/library/Rattletrap/Decode/LoadoutsAttribute.hs b/library/Rattletrap/Decode/LoadoutsAttribute.hs
--- a/library/Rattletrap/Decode/LoadoutsAttribute.hs
+++ b/library/Rattletrap/Decode/LoadoutsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.LoadoutsAttribute
   ( decodeLoadoutsAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.LoadoutAttribute
diff --git a/library/Rattletrap/Decode/LoadoutsOnlineAttribute.hs b/library/Rattletrap/Decode/LoadoutsOnlineAttribute.hs
--- a/library/Rattletrap/Decode/LoadoutsOnlineAttribute.hs
+++ b/library/Rattletrap/Decode/LoadoutsOnlineAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.LoadoutsOnlineAttribute
   ( decodeLoadoutsOnlineAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.LoadoutOnlineAttribute
diff --git a/library/Rattletrap/Decode/LocationAttribute.hs b/library/Rattletrap/Decode/LocationAttribute.hs
--- a/library/Rattletrap/Decode/LocationAttribute.hs
+++ b/library/Rattletrap/Decode/LocationAttribute.hs
@@ -1,10 +1,12 @@
 module Rattletrap.Decode.LocationAttribute
   ( decodeLocationAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Vector
 import Rattletrap.Type.LocationAttribute
 
 decodeLocationAttributeBits :: (Int, Int, Int) -> DecodeBits LocationAttribute
-decodeLocationAttributeBits version = LocationAttribute <$> decodeVectorBits version
+decodeLocationAttributeBits version =
+  LocationAttribute <$> decodeVectorBits version
diff --git a/library/Rattletrap/Decode/Mark.hs b/library/Rattletrap/Decode/Mark.hs
--- a/library/Rattletrap/Decode/Mark.hs
+++ b/library/Rattletrap/Decode/Mark.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Mark
   ( decodeMark
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Str
diff --git a/library/Rattletrap/Decode/Message.hs b/library/Rattletrap/Decode/Message.hs
--- a/library/Rattletrap/Decode/Message.hs
+++ b/library/Rattletrap/Decode/Message.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Message
   ( decodeMessage
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Str
diff --git a/library/Rattletrap/Decode/MusicStingerAttribute.hs b/library/Rattletrap/Decode/MusicStingerAttribute.hs
--- a/library/Rattletrap/Decode/MusicStingerAttribute.hs
+++ b/library/Rattletrap/Decode/MusicStingerAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.MusicStingerAttribute
   ( decodeMusicStingerAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
diff --git a/library/Rattletrap/Decode/PartyLeaderAttribute.hs b/library/Rattletrap/Decode/PartyLeaderAttribute.hs
--- a/library/Rattletrap/Decode/PartyLeaderAttribute.hs
+++ b/library/Rattletrap/Decode/PartyLeaderAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.PartyLeaderAttribute
   ( decodePartyLeaderAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.RemoteId
diff --git a/library/Rattletrap/Decode/PickupAttribute.hs b/library/Rattletrap/Decode/PickupAttribute.hs
--- a/library/Rattletrap/Decode/PickupAttribute.hs
+++ b/library/Rattletrap/Decode/PickupAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.PickupAttribute
   ( decodePickupAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
diff --git a/library/Rattletrap/Decode/PlayerHistoryKeyAttribute.hs b/library/Rattletrap/Decode/PlayerHistoryKeyAttribute.hs
--- a/library/Rattletrap/Decode/PlayerHistoryKeyAttribute.hs
+++ b/library/Rattletrap/Decode/PlayerHistoryKeyAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.PlayerHistoryKeyAttribute
   ( decodePlayerHistoryKeyAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Bitstream
 import Rattletrap.Decode.Common
diff --git a/library/Rattletrap/Decode/PrivateMatchSettingsAttribute.hs b/library/Rattletrap/Decode/PrivateMatchSettingsAttribute.hs
--- a/library/Rattletrap/Decode/PrivateMatchSettingsAttribute.hs
+++ b/library/Rattletrap/Decode/PrivateMatchSettingsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.PrivateMatchSettingsAttribute
   ( decodePrivateMatchSettingsAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Str
diff --git a/library/Rattletrap/Decode/ProductAttribute.hs b/library/Rattletrap/Decode/ProductAttribute.hs
--- a/library/Rattletrap/Decode/ProductAttribute.hs
+++ b/library/Rattletrap/Decode/ProductAttribute.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.ProductAttribute
   ( decodeProductAttributesBits
   , decodeProductAttributeBits
-  ) where
+  )
+where
 
 import Data.Semigroup ((<>))
 import Rattletrap.Decode.Common
diff --git a/library/Rattletrap/Decode/Property.hs b/library/Rattletrap/Decode/Property.hs
--- a/library/Rattletrap/Decode/Property.hs
+++ b/library/Rattletrap/Decode/Property.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Property
   ( decodeProperty
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.PropertyValue
diff --git a/library/Rattletrap/Decode/PropertyValue.hs b/library/Rattletrap/Decode/PropertyValue.hs
--- a/library/Rattletrap/Decode/PropertyValue.hs
+++ b/library/Rattletrap/Decode/PropertyValue.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.PropertyValue
   ( decodePropertyValue
-  ) where
+  )
+where
 
 import Data.Semigroup ((<>))
 import Rattletrap.Decode.Common
diff --git a/library/Rattletrap/Decode/QWordAttribute.hs b/library/Rattletrap/Decode/QWordAttribute.hs
--- a/library/Rattletrap/Decode/QWordAttribute.hs
+++ b/library/Rattletrap/Decode/QWordAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.QWordAttribute
   ( decodeQWordAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word64le
diff --git a/library/Rattletrap/Decode/RemoteId.hs b/library/Rattletrap/Decode/RemoteId.hs
--- a/library/Rattletrap/Decode/RemoteId.hs
+++ b/library/Rattletrap/Decode/RemoteId.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.RemoteId
   ( decodeRemoteIdBits
-  ) where
+  )
+where
 
 import Data.Semigroup ((<>))
 import Rattletrap.Decode.Bitstream
@@ -10,7 +11,7 @@
 import Rattletrap.Type.Word8le
 import Rattletrap.Utility.Bytes
 
-import qualified Data.ByteString.Lazy as LazyBytes
+import qualified Data.ByteString as Bytes
 import qualified Data.Text as Text
 import qualified Data.Text.Encoding as Text
 import qualified Data.Word as Word
@@ -26,13 +27,9 @@
 
 decodePsName :: DecodeBits Text.Text
 decodePsName = fmap
-  ( Text.dropWhileEnd (== '\x00')
-  . Text.decodeLatin1
-  . LazyBytes.toStrict
-  . reverseBytes
-  )
-  (getLazyByteStringBits 16)
+  (Text.dropWhileEnd (== '\x00') . Text.decodeLatin1 . reverseBytes)
+  (getByteStringBits 16)
 
 decodePsBytes :: Int -> DecodeBits [Word.Word8]
 decodePsBytes patch =
-  LazyBytes.unpack <$> getLazyByteStringBits (if patch >= 1 then 24 else 16)
+  Bytes.unpack <$> getByteStringBits (if patch >= 1 then 24 else 16)
diff --git a/library/Rattletrap/Decode/Replay.hs b/library/Rattletrap/Decode/Replay.hs
--- a/library/Rattletrap/Decode/Replay.hs
+++ b/library/Rattletrap/Decode/Replay.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Replay
   ( decodeReplay
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Content
@@ -20,7 +21,7 @@
 decodeReplay = do
   header <- decodeSection decodeHeader
   Replay header <$> decodeSection
-    ( decodeContent
+    (decodeContent
       (getVersion (sectionBody header))
       (getNumFrames (sectionBody header))
       (getMaxChannels (sectionBody header))
diff --git a/library/Rattletrap/Decode/Replication.hs b/library/Rattletrap/Decode/Replication.hs
--- a/library/Rattletrap/Decode/Replication.hs
+++ b/library/Rattletrap/Decode/Replication.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Replication
   ( decodeReplicationsBits
   , decodeReplicationBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.CompressedWord
diff --git a/library/Rattletrap/Decode/ReplicationValue.hs b/library/Rattletrap/Decode/ReplicationValue.hs
--- a/library/Rattletrap/Decode/ReplicationValue.hs
+++ b/library/Rattletrap/Decode/ReplicationValue.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.ReplicationValue
   ( decodeReplicationValueBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.DestroyedReplication
@@ -34,7 +35,7 @@
           ReplicationValueSpawned
             <$> decodeSpawnedReplicationBits version classAttributeMap actorId
         else ReplicationValueUpdated <$> Trans.lift
-          ( decodeUpdatedReplicationBits
+          (decodeUpdatedReplicationBits
             version
             classAttributeMap
             actorMap
diff --git a/library/Rattletrap/Decode/ReservationAttribute.hs b/library/Rattletrap/Decode/ReservationAttribute.hs
--- a/library/Rattletrap/Decode/ReservationAttribute.hs
+++ b/library/Rattletrap/Decode/ReservationAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.ReservationAttribute
   ( decodeReservationAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.CompressedWord
diff --git a/library/Rattletrap/Decode/RigidBodyStateAttribute.hs b/library/Rattletrap/Decode/RigidBodyStateAttribute.hs
--- a/library/Rattletrap/Decode/RigidBodyStateAttribute.hs
+++ b/library/Rattletrap/Decode/RigidBodyStateAttribute.hs
@@ -1,13 +1,15 @@
 module Rattletrap.Decode.RigidBodyStateAttribute
   ( decodeRigidBodyStateAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Rotation
 import Rattletrap.Decode.Vector
 import Rattletrap.Type.RigidBodyStateAttribute
 
-decodeRigidBodyStateAttributeBits :: (Int, Int, Int) -> DecodeBits RigidBodyStateAttribute
+decodeRigidBodyStateAttributeBits
+  :: (Int, Int, Int) -> DecodeBits RigidBodyStateAttribute
 decodeRigidBodyStateAttributeBits version = do
   sleeping <- getBool
   RigidBodyStateAttribute sleeping
diff --git a/library/Rattletrap/Decode/Section.hs b/library/Rattletrap/Decode/Section.hs
--- a/library/Rattletrap/Decode/Section.hs
+++ b/library/Rattletrap/Decode/Section.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Section
   ( decodeSection
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
@@ -14,7 +15,7 @@
 decodeSection getBody = do
   size <- decodeWord32le
   crc <- decodeWord32le
-  rawBody <- getLazyByteString (fromIntegral (word32leValue size))
+  rawBody <- getByteString (fromIntegral (word32leValue size))
   let actualCrc = Word32le (getCrc32 rawBody)
   Monad.when (actualCrc /= crc) (fail (crcMessage actualCrc crc))
   body <- either fail pure (runDecode getBody rawBody)
diff --git a/library/Rattletrap/Decode/SpawnedReplication.hs b/library/Rattletrap/Decode/SpawnedReplication.hs
--- a/library/Rattletrap/Decode/SpawnedReplication.hs
+++ b/library/Rattletrap/Decode/SpawnedReplication.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.SpawnedReplication
   ( decodeSpawnedReplicationBits
-  ) where
+  )
+where
 
 import Data.Semigroup ((<>))
 import Rattletrap.Decode.Common
@@ -39,7 +40,7 @@
   initialization <- Trans.lift
     (decodeInitializationBits version hasLocation hasRotation)
   pure
-    ( SpawnedReplication
+    (SpawnedReplication
       flag
       nameIndex
       name
diff --git a/library/Rattletrap/Decode/StatEventAttribute.hs b/library/Rattletrap/Decode/StatEventAttribute.hs
--- a/library/Rattletrap/Decode/StatEventAttribute.hs
+++ b/library/Rattletrap/Decode/StatEventAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.StatEventAttribute
   ( decodeStatEventAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int32le
@@ -8,6 +9,4 @@
 
 decodeStatEventAttributeBits :: DecodeBits StatEventAttribute
 decodeStatEventAttributeBits =
-  StatEventAttribute
-    <$> getBool
-    <*> decodeInt32leBits
+  StatEventAttribute <$> getBool <*> decodeInt32leBits
diff --git a/library/Rattletrap/Decode/Str.hs b/library/Rattletrap/Decode/Str.hs
--- a/library/Rattletrap/Decode/Str.hs
+++ b/library/Rattletrap/Decode/Str.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Str
   ( decodeStr
   , decodeStrBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Int32le
@@ -9,20 +10,20 @@
 import Rattletrap.Type.Str
 import Rattletrap.Utility.Bytes
 
-import qualified Data.ByteString.Lazy as LazyBytes
+import qualified Data.ByteString as Bytes
 import qualified Data.Text as Text
 import qualified Data.Text.Encoding as Text
 
 decodeStr :: Decode Str
 decodeStr = do
   rawSize <- decodeInt32le
-  bytes <- getLazyByteString (normalizeTextSize rawSize)
+  bytes <- getByteString (normalizeTextSize rawSize)
   pure (Str (dropNull (getTextDecoder rawSize bytes)))
 
 decodeStrBits :: DecodeBits Str
 decodeStrBits = do
   rawSize <- decodeInt32leBits
-  bytes <- getLazyByteStringBits (normalizeTextSize rawSize)
+  bytes <- getByteStringBits (normalizeTextSize rawSize)
   pure (Str (dropNull (getTextDecoder rawSize (reverseBytes bytes))))
 
 normalizeTextSize :: Integral a => Int32le -> a
@@ -30,13 +31,12 @@
   0x05000000 -> 8
   x -> if x < 0 then (-2 * fromIntegral x) else fromIntegral x
 
-getTextDecoder :: Int32le -> LazyBytes.ByteString -> Text.Text
+getTextDecoder :: Int32le -> Bytes.ByteString -> Text.Text
 getTextDecoder size bytes =
   let
     decode =
       if size < Int32le 0 then Text.decodeUtf16LE else Text.decodeLatin1
-  in
-    decode (LazyBytes.toStrict bytes)
+  in decode bytes
 
 dropNull :: Text.Text -> Text.Text
 dropNull = Text.dropWhileEnd (== '\x00')
diff --git a/library/Rattletrap/Decode/StringAttribute.hs b/library/Rattletrap/Decode/StringAttribute.hs
--- a/library/Rattletrap/Decode/StringAttribute.hs
+++ b/library/Rattletrap/Decode/StringAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.StringAttribute
   ( decodeStringAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Str
diff --git a/library/Rattletrap/Decode/TeamPaintAttribute.hs b/library/Rattletrap/Decode/TeamPaintAttribute.hs
--- a/library/Rattletrap/Decode/TeamPaintAttribute.hs
+++ b/library/Rattletrap/Decode/TeamPaintAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.TeamPaintAttribute
   ( decodeTeamPaintAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
diff --git a/library/Rattletrap/Decode/TitleAttribute.hs b/library/Rattletrap/Decode/TitleAttribute.hs
--- a/library/Rattletrap/Decode/TitleAttribute.hs
+++ b/library/Rattletrap/Decode/TitleAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.TitleAttribute
   ( decodeTitleAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Word32le
diff --git a/library/Rattletrap/Decode/UniqueIdAttribute.hs b/library/Rattletrap/Decode/UniqueIdAttribute.hs
--- a/library/Rattletrap/Decode/UniqueIdAttribute.hs
+++ b/library/Rattletrap/Decode/UniqueIdAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.UniqueIdAttribute
   ( decodeUniqueIdAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.RemoteId
diff --git a/library/Rattletrap/Decode/UpdatedReplication.hs b/library/Rattletrap/Decode/UpdatedReplication.hs
--- a/library/Rattletrap/Decode/UpdatedReplication.hs
+++ b/library/Rattletrap/Decode/UpdatedReplication.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.UpdatedReplication
   ( decodeUpdatedReplicationBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Attribute
 import Rattletrap.Decode.Common
diff --git a/library/Rattletrap/Decode/Vector.hs b/library/Rattletrap/Decode/Vector.hs
--- a/library/Rattletrap/Decode/Vector.hs
+++ b/library/Rattletrap/Decode/Vector.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.Vector
   ( decodeVectorBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.CompressedWord
diff --git a/library/Rattletrap/Decode/WeldedInfoAttribute.hs b/library/Rattletrap/Decode/WeldedInfoAttribute.hs
--- a/library/Rattletrap/Decode/WeldedInfoAttribute.hs
+++ b/library/Rattletrap/Decode/WeldedInfoAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Decode.WeldedInfoAttribute
   ( decodeWeldedInfoAttributeBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Float32le
@@ -9,7 +10,8 @@
 import Rattletrap.Decode.Vector
 import Rattletrap.Type.WeldedInfoAttribute
 
-decodeWeldedInfoAttributeBits :: (Int, Int, Int) -> DecodeBits WeldedInfoAttribute
+decodeWeldedInfoAttributeBits
+  :: (Int, Int, Int) -> DecodeBits WeldedInfoAttribute
 decodeWeldedInfoAttributeBits version =
   WeldedInfoAttribute
     <$> getBool
diff --git a/library/Rattletrap/Decode/Word32le.hs b/library/Rattletrap/Decode/Word32le.hs
--- a/library/Rattletrap/Decode/Word32le.hs
+++ b/library/Rattletrap/Decode/Word32le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Word32le
   ( decodeWord32le
   , decodeWord32leBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Decode/Word64le.hs b/library/Rattletrap/Decode/Word64le.hs
--- a/library/Rattletrap/Decode/Word64le.hs
+++ b/library/Rattletrap/Decode/Word64le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Word64le
   ( decodeWord64le
   , decodeWord64leBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Word64le
diff --git a/library/Rattletrap/Decode/Word8le.hs b/library/Rattletrap/Decode/Word8le.hs
--- a/library/Rattletrap/Decode/Word8le.hs
+++ b/library/Rattletrap/Decode/Word8le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Decode.Word8le
   ( decodeWord8le
   , decodeWord8leBits
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Type.Word8le
diff --git a/library/Rattletrap/Encode/AppliedDamageAttribute.hs b/library/Rattletrap/Encode/AppliedDamageAttribute.hs
--- a/library/Rattletrap/Encode/AppliedDamageAttribute.hs
+++ b/library/Rattletrap/Encode/AppliedDamageAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.AppliedDamageAttribute
   ( putAppliedDamageAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int32le
 import Rattletrap.Encode.Vector
diff --git a/library/Rattletrap/Encode/Attribute.hs b/library/Rattletrap/Encode/Attribute.hs
--- a/library/Rattletrap/Encode/Attribute.hs
+++ b/library/Rattletrap/Encode/Attribute.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Attribute
   ( putAttributes
   , putAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.AttributeValue
 import Rattletrap.Encode.CompressedWord
diff --git a/library/Rattletrap/Encode/AttributeMapping.hs b/library/Rattletrap/Encode/AttributeMapping.hs
--- a/library/Rattletrap/Encode/AttributeMapping.hs
+++ b/library/Rattletrap/Encode/AttributeMapping.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.AttributeMapping
   ( putAttributeMapping
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Type.AttributeMapping
diff --git a/library/Rattletrap/Encode/AttributeValue.hs b/library/Rattletrap/Encode/AttributeValue.hs
--- a/library/Rattletrap/Encode/AttributeValue.hs
+++ b/library/Rattletrap/Encode/AttributeValue.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.AttributeValue
   ( putAttributeValue
-  ) where
+  )
+where
 
 import Rattletrap.Encode.AppliedDamageAttribute
 import Rattletrap.Encode.BooleanAttribute
diff --git a/library/Rattletrap/Encode/Bitstream.hs b/library/Rattletrap/Encode/Bitstream.hs
--- a/library/Rattletrap/Encode/Bitstream.hs
+++ b/library/Rattletrap/Encode/Bitstream.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Bitstream
   ( putBitstream
-  ) where
+  )
+where
 
 import Rattletrap.Type.Bitstream
 
diff --git a/library/Rattletrap/Encode/BooleanAttribute.hs b/library/Rattletrap/Encode/BooleanAttribute.hs
--- a/library/Rattletrap/Encode/BooleanAttribute.hs
+++ b/library/Rattletrap/Encode/BooleanAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.BooleanAttribute
   ( putBooleanAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Type.BooleanAttribute
 
diff --git a/library/Rattletrap/Encode/ByteAttribute.hs b/library/Rattletrap/Encode/ByteAttribute.hs
--- a/library/Rattletrap/Encode/ByteAttribute.hs
+++ b/library/Rattletrap/Encode/ByteAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.ByteAttribute
   ( putByteAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word8le
 import Rattletrap.Type.ByteAttribute
diff --git a/library/Rattletrap/Encode/Cache.hs b/library/Rattletrap/Encode/Cache.hs
--- a/library/Rattletrap/Encode/Cache.hs
+++ b/library/Rattletrap/Encode/Cache.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Cache
   ( putCache
-  ) where
+  )
+where
 
 import Rattletrap.Encode.AttributeMapping
 import Rattletrap.Encode.List
diff --git a/library/Rattletrap/Encode/CamSettingsAttribute.hs b/library/Rattletrap/Encode/CamSettingsAttribute.hs
--- a/library/Rattletrap/Encode/CamSettingsAttribute.hs
+++ b/library/Rattletrap/Encode/CamSettingsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.CamSettingsAttribute
   ( putCamSettingsAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Float32le
 import Rattletrap.Type.CamSettingsAttribute
diff --git a/library/Rattletrap/Encode/ClassMapping.hs b/library/Rattletrap/Encode/ClassMapping.hs
--- a/library/Rattletrap/Encode/ClassMapping.hs
+++ b/library/Rattletrap/Encode/ClassMapping.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.ClassMapping
   ( putClassMapping
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Str
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/ClubColorsAttribute.hs b/library/Rattletrap/Encode/ClubColorsAttribute.hs
--- a/library/Rattletrap/Encode/ClubColorsAttribute.hs
+++ b/library/Rattletrap/Encode/ClubColorsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.ClubColorsAttribute
   ( putClubColorsAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word8le
 import Rattletrap.Type.ClubColorsAttribute
diff --git a/library/Rattletrap/Encode/CompressedWord.hs b/library/Rattletrap/Encode/CompressedWord.hs
--- a/library/Rattletrap/Encode/CompressedWord.hs
+++ b/library/Rattletrap/Encode/CompressedWord.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.CompressedWord
   ( putCompressedWord
-  ) where
+  )
+where
 
 import Rattletrap.Type.CompressedWord
 
diff --git a/library/Rattletrap/Encode/CompressedWordVector.hs b/library/Rattletrap/Encode/CompressedWordVector.hs
--- a/library/Rattletrap/Encode/CompressedWordVector.hs
+++ b/library/Rattletrap/Encode/CompressedWordVector.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.CompressedWordVector
   ( putCompressedWordVector
-  ) where
+  )
+where
 
 import Rattletrap.Encode.CompressedWord
 import Rattletrap.Type.CompressedWordVector
diff --git a/library/Rattletrap/Encode/Content.hs b/library/Rattletrap/Encode/Content.hs
--- a/library/Rattletrap/Encode/Content.hs
+++ b/library/Rattletrap/Encode/Content.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Content
   ( putContent
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Cache
 import Rattletrap.Encode.ClassMapping
@@ -18,6 +19,7 @@
 import qualified Data.Binary as Binary
 import qualified Data.Binary.Bits.Put as BinaryBits
 import qualified Data.Binary.Put as Binary
+import qualified Data.ByteString.Lazy as LazyBytes
 
 putContent :: Content -> Binary.Put
 putContent content = do
@@ -26,9 +28,10 @@
   let streamSize = contentStreamSize content
   putWord32 streamSize
   let
-    stream =
-      Binary.runPut (BinaryBits.runBitPut (putFrames (contentFrames content)))
-  Binary.putLazyByteString
+    stream = LazyBytes.toStrict
+      (Binary.runPut (BinaryBits.runBitPut (putFrames (contentFrames content)))
+      )
+  Binary.putByteString
     (reverseBytes (padBytes (word32leValue streamSize) stream))
   putList putMessage (contentMessages content)
   putList putMark (contentMarks content)
diff --git a/library/Rattletrap/Encode/DamageStateAttribute.hs b/library/Rattletrap/Encode/DamageStateAttribute.hs
--- a/library/Rattletrap/Encode/DamageStateAttribute.hs
+++ b/library/Rattletrap/Encode/DamageStateAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.DamageStateAttribute
   ( putDamageStateAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int32le
 import Rattletrap.Encode.Vector
diff --git a/library/Rattletrap/Encode/DemolishAttribute.hs b/library/Rattletrap/Encode/DemolishAttribute.hs
--- a/library/Rattletrap/Encode/DemolishAttribute.hs
+++ b/library/Rattletrap/Encode/DemolishAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.DemolishAttribute
   ( putDemolishAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Vector
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/DestroyedReplication.hs b/library/Rattletrap/Encode/DestroyedReplication.hs
--- a/library/Rattletrap/Encode/DestroyedReplication.hs
+++ b/library/Rattletrap/Encode/DestroyedReplication.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.DestroyedReplication
   ( putDestroyedReplication
-  ) where
+  )
+where
 
 import Rattletrap.Type.DestroyedReplication
 
diff --git a/library/Rattletrap/Encode/Dictionary.hs b/library/Rattletrap/Encode/Dictionary.hs
--- a/library/Rattletrap/Encode/Dictionary.hs
+++ b/library/Rattletrap/Encode/Dictionary.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Dictionary
   ( putDictionary
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Str
 import Rattletrap.Type.Dictionary
diff --git a/library/Rattletrap/Encode/EnumAttribute.hs b/library/Rattletrap/Encode/EnumAttribute.hs
--- a/library/Rattletrap/Encode/EnumAttribute.hs
+++ b/library/Rattletrap/Encode/EnumAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.EnumAttribute
   ( putEnumAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Type.EnumAttribute
 
diff --git a/library/Rattletrap/Encode/ExplosionAttribute.hs b/library/Rattletrap/Encode/ExplosionAttribute.hs
--- a/library/Rattletrap/Encode/ExplosionAttribute.hs
+++ b/library/Rattletrap/Encode/ExplosionAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.ExplosionAttribute
   ( putExplosionAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int32le
 import Rattletrap.Encode.Vector
diff --git a/library/Rattletrap/Encode/ExtendedExplosionAttribute.hs b/library/Rattletrap/Encode/ExtendedExplosionAttribute.hs
--- a/library/Rattletrap/Encode/ExtendedExplosionAttribute.hs
+++ b/library/Rattletrap/Encode/ExtendedExplosionAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.ExtendedExplosionAttribute
   ( putExtendedExplosionAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.ExplosionAttribute
 import Rattletrap.Encode.FlaggedIntAttribute
diff --git a/library/Rattletrap/Encode/FlaggedIntAttribute.hs b/library/Rattletrap/Encode/FlaggedIntAttribute.hs
--- a/library/Rattletrap/Encode/FlaggedIntAttribute.hs
+++ b/library/Rattletrap/Encode/FlaggedIntAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.FlaggedIntAttribute
   ( putFlaggedIntAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int32le
 import Rattletrap.Type.FlaggedIntAttribute
diff --git a/library/Rattletrap/Encode/Float32le.hs b/library/Rattletrap/Encode/Float32le.hs
--- a/library/Rattletrap/Encode/Float32le.hs
+++ b/library/Rattletrap/Encode/Float32le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Float32le
   ( putFloat32
   , putFloat32Bits
-  ) where
+  )
+where
 
 import Rattletrap.Type.Float32le
 import Rattletrap.Utility.Bytes
@@ -16,5 +17,5 @@
 
 putFloat32Bits :: Float32le -> BinaryBits.BitPut ()
 putFloat32Bits float32 = do
-  let bytes = Binary.runPut (putFloat32 float32)
-  BinaryBits.putByteString (LazyBytes.toStrict (reverseBytes bytes))
+  let bytes = LazyBytes.toStrict (Binary.runPut (putFloat32 float32))
+  BinaryBits.putByteString (reverseBytes bytes)
diff --git a/library/Rattletrap/Encode/FloatAttribute.hs b/library/Rattletrap/Encode/FloatAttribute.hs
--- a/library/Rattletrap/Encode/FloatAttribute.hs
+++ b/library/Rattletrap/Encode/FloatAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.FloatAttribute
   ( putFloatAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Float32le
 import Rattletrap.Type.FloatAttribute
diff --git a/library/Rattletrap/Encode/Frame.hs b/library/Rattletrap/Encode/Frame.hs
--- a/library/Rattletrap/Encode/Frame.hs
+++ b/library/Rattletrap/Encode/Frame.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Frame
   ( putFrames
   , putFrame
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Float32le
 import Rattletrap.Encode.Replication
diff --git a/library/Rattletrap/Encode/GameModeAttribute.hs b/library/Rattletrap/Encode/GameModeAttribute.hs
--- a/library/Rattletrap/Encode/GameModeAttribute.hs
+++ b/library/Rattletrap/Encode/GameModeAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.GameModeAttribute
   ( putGameModeAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Type.GameModeAttribute
 
diff --git a/library/Rattletrap/Encode/Header.hs b/library/Rattletrap/Encode/Header.hs
--- a/library/Rattletrap/Encode/Header.hs
+++ b/library/Rattletrap/Encode/Header.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Header
   ( putHeader
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Dictionary
 import Rattletrap.Encode.Property
diff --git a/library/Rattletrap/Encode/Initialization.hs b/library/Rattletrap/Encode/Initialization.hs
--- a/library/Rattletrap/Encode/Initialization.hs
+++ b/library/Rattletrap/Encode/Initialization.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Initialization
   ( putInitialization
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int8Vector
 import Rattletrap.Encode.Vector
diff --git a/library/Rattletrap/Encode/Int32le.hs b/library/Rattletrap/Encode/Int32le.hs
--- a/library/Rattletrap/Encode/Int32le.hs
+++ b/library/Rattletrap/Encode/Int32le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Int32le
   ( putInt32
   , putInt32Bits
-  ) where
+  )
+where
 
 import Rattletrap.Type.Int32le
 import Rattletrap.Utility.Bytes
@@ -16,5 +17,5 @@
 
 putInt32Bits :: Int32le -> BinaryBits.BitPut ()
 putInt32Bits int32 = do
-  let bytes = Binary.runPut (putInt32 int32)
-  BinaryBits.putByteString (LazyBytes.toStrict (reverseBytes bytes))
+  let bytes = LazyBytes.toStrict (Binary.runPut (putInt32 int32))
+  BinaryBits.putByteString (reverseBytes bytes)
diff --git a/library/Rattletrap/Encode/Int64Attribute.hs b/library/Rattletrap/Encode/Int64Attribute.hs
--- a/library/Rattletrap/Encode/Int64Attribute.hs
+++ b/library/Rattletrap/Encode/Int64Attribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Int64Attribute
   ( putInt64Attribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int64le
 import Rattletrap.Type.Int64Attribute
diff --git a/library/Rattletrap/Encode/Int64le.hs b/library/Rattletrap/Encode/Int64le.hs
--- a/library/Rattletrap/Encode/Int64le.hs
+++ b/library/Rattletrap/Encode/Int64le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Int64le
   ( putInt64
   , putInt64Bits
-  ) where
+  )
+where
 
 import Rattletrap.Type.Int64le
 import Rattletrap.Utility.Bytes
@@ -16,5 +17,5 @@
 
 putInt64Bits :: Int64le -> BinaryBits.BitPut ()
 putInt64Bits int64 = do
-  let bytes = Binary.runPut (putInt64 int64)
-  BinaryBits.putByteString (LazyBytes.toStrict (reverseBytes bytes))
+  let bytes = LazyBytes.toStrict (Binary.runPut (putInt64 int64))
+  BinaryBits.putByteString (reverseBytes bytes)
diff --git a/library/Rattletrap/Encode/Int8Vector.hs b/library/Rattletrap/Encode/Int8Vector.hs
--- a/library/Rattletrap/Encode/Int8Vector.hs
+++ b/library/Rattletrap/Encode/Int8Vector.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Int8Vector
   ( putInt8Vector
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int8le
 import Rattletrap.Type.Int8Vector
diff --git a/library/Rattletrap/Encode/Int8le.hs b/library/Rattletrap/Encode/Int8le.hs
--- a/library/Rattletrap/Encode/Int8le.hs
+++ b/library/Rattletrap/Encode/Int8le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Int8le
   ( putInt8
   , putInt8Bits
-  ) where
+  )
+where
 
 import Rattletrap.Type.Int8le
 import Rattletrap.Utility.Bytes
@@ -15,5 +16,5 @@
 
 putInt8Bits :: Int8le -> BinaryBits.BitPut ()
 putInt8Bits int8 = do
-  let bytes = Binary.runPut (putInt8 int8)
-  BinaryBits.putByteString (LazyBytes.toStrict (reverseBytes bytes))
+  let bytes = LazyBytes.toStrict (Binary.runPut (putInt8 int8))
+  BinaryBits.putByteString (reverseBytes bytes)
diff --git a/library/Rattletrap/Encode/IntAttribute.hs b/library/Rattletrap/Encode/IntAttribute.hs
--- a/library/Rattletrap/Encode/IntAttribute.hs
+++ b/library/Rattletrap/Encode/IntAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.IntAttribute
   ( putIntAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int32le
 import Rattletrap.Type.IntAttribute
diff --git a/library/Rattletrap/Encode/KeyFrame.hs b/library/Rattletrap/Encode/KeyFrame.hs
--- a/library/Rattletrap/Encode/KeyFrame.hs
+++ b/library/Rattletrap/Encode/KeyFrame.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.KeyFrame
   ( putKeyFrame
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Float32le
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/List.hs b/library/Rattletrap/Encode/List.hs
--- a/library/Rattletrap/Encode/List.hs
+++ b/library/Rattletrap/Encode/List.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.List
   ( putList
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Type.List
diff --git a/library/Rattletrap/Encode/LoadoutAttribute.hs b/library/Rattletrap/Encode/LoadoutAttribute.hs
--- a/library/Rattletrap/Encode/LoadoutAttribute.hs
+++ b/library/Rattletrap/Encode/LoadoutAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.LoadoutAttribute
   ( putLoadoutAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Encode.Word8le
diff --git a/library/Rattletrap/Encode/LoadoutOnlineAttribute.hs b/library/Rattletrap/Encode/LoadoutOnlineAttribute.hs
--- a/library/Rattletrap/Encode/LoadoutOnlineAttribute.hs
+++ b/library/Rattletrap/Encode/LoadoutOnlineAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.LoadoutOnlineAttribute
   ( putLoadoutOnlineAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.ProductAttribute
 import Rattletrap.Encode.Word8le
diff --git a/library/Rattletrap/Encode/LoadoutsAttribute.hs b/library/Rattletrap/Encode/LoadoutsAttribute.hs
--- a/library/Rattletrap/Encode/LoadoutsAttribute.hs
+++ b/library/Rattletrap/Encode/LoadoutsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.LoadoutsAttribute
   ( putLoadoutsAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.LoadoutAttribute
 import Rattletrap.Type.LoadoutsAttribute
diff --git a/library/Rattletrap/Encode/LoadoutsOnlineAttribute.hs b/library/Rattletrap/Encode/LoadoutsOnlineAttribute.hs
--- a/library/Rattletrap/Encode/LoadoutsOnlineAttribute.hs
+++ b/library/Rattletrap/Encode/LoadoutsOnlineAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.LoadoutsOnlineAttribute
   ( putLoadoutsOnlineAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.LoadoutOnlineAttribute
 import Rattletrap.Type.LoadoutsOnlineAttribute
diff --git a/library/Rattletrap/Encode/LocationAttribute.hs b/library/Rattletrap/Encode/LocationAttribute.hs
--- a/library/Rattletrap/Encode/LocationAttribute.hs
+++ b/library/Rattletrap/Encode/LocationAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.LocationAttribute
   ( putLocationAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Vector
 import Rattletrap.Type.LocationAttribute
diff --git a/library/Rattletrap/Encode/Mark.hs b/library/Rattletrap/Encode/Mark.hs
--- a/library/Rattletrap/Encode/Mark.hs
+++ b/library/Rattletrap/Encode/Mark.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Mark
   ( putMark
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Str
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/Message.hs b/library/Rattletrap/Encode/Message.hs
--- a/library/Rattletrap/Encode/Message.hs
+++ b/library/Rattletrap/Encode/Message.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Message
   ( putMessage
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Str
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/MusicStingerAttribute.hs b/library/Rattletrap/Encode/MusicStingerAttribute.hs
--- a/library/Rattletrap/Encode/MusicStingerAttribute.hs
+++ b/library/Rattletrap/Encode/MusicStingerAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.MusicStingerAttribute
   ( putMusicStingerAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Encode.Word8le
diff --git a/library/Rattletrap/Encode/PartyLeaderAttribute.hs b/library/Rattletrap/Encode/PartyLeaderAttribute.hs
--- a/library/Rattletrap/Encode/PartyLeaderAttribute.hs
+++ b/library/Rattletrap/Encode/PartyLeaderAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.PartyLeaderAttribute
   ( putPartyLeaderAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.RemoteId
 import Rattletrap.Encode.Word8le
diff --git a/library/Rattletrap/Encode/PickupAttribute.hs b/library/Rattletrap/Encode/PickupAttribute.hs
--- a/library/Rattletrap/Encode/PickupAttribute.hs
+++ b/library/Rattletrap/Encode/PickupAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.PickupAttribute
   ( putPickupAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Type.PickupAttribute
diff --git a/library/Rattletrap/Encode/PlayerHistoryKeyAttribute.hs b/library/Rattletrap/Encode/PlayerHistoryKeyAttribute.hs
--- a/library/Rattletrap/Encode/PlayerHistoryKeyAttribute.hs
+++ b/library/Rattletrap/Encode/PlayerHistoryKeyAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.PlayerHistoryKeyAttribute
   ( putPlayerHistoryKeyAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Bitstream
 import Rattletrap.Type.PlayerHistoryKeyAttribute
diff --git a/library/Rattletrap/Encode/PrivateMatchSettingsAttribute.hs b/library/Rattletrap/Encode/PrivateMatchSettingsAttribute.hs
--- a/library/Rattletrap/Encode/PrivateMatchSettingsAttribute.hs
+++ b/library/Rattletrap/Encode/PrivateMatchSettingsAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.PrivateMatchSettingsAttribute
   ( putPrivateMatchSettingsAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Str
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/ProductAttribute.hs b/library/Rattletrap/Encode/ProductAttribute.hs
--- a/library/Rattletrap/Encode/ProductAttribute.hs
+++ b/library/Rattletrap/Encode/ProductAttribute.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.ProductAttribute
   ( putProductAttributes
   , putProductAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.CompressedWord
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/Property.hs b/library/Rattletrap/Encode/Property.hs
--- a/library/Rattletrap/Encode/Property.hs
+++ b/library/Rattletrap/Encode/Property.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Property
   ( putProperty
-  ) where
+  )
+where
 
 import Rattletrap.Encode.PropertyValue
 import Rattletrap.Encode.Str
diff --git a/library/Rattletrap/Encode/PropertyValue.hs b/library/Rattletrap/Encode/PropertyValue.hs
--- a/library/Rattletrap/Encode/PropertyValue.hs
+++ b/library/Rattletrap/Encode/PropertyValue.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.PropertyValue
   ( putPropertyValue
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Dictionary
 import Rattletrap.Encode.Float32le
diff --git a/library/Rattletrap/Encode/QWordAttribute.hs b/library/Rattletrap/Encode/QWordAttribute.hs
--- a/library/Rattletrap/Encode/QWordAttribute.hs
+++ b/library/Rattletrap/Encode/QWordAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.QWordAttribute
   ( putQWordAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word64le
 import Rattletrap.Type.QWordAttribute
diff --git a/library/Rattletrap/Encode/RemoteId.hs b/library/Rattletrap/Encode/RemoteId.hs
--- a/library/Rattletrap/Encode/RemoteId.hs
+++ b/library/Rattletrap/Encode/RemoteId.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.RemoteId
   ( putRemoteId
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Bitstream
 import Rattletrap.Encode.Word64le
@@ -8,16 +9,14 @@
 import Rattletrap.Utility.Bytes
 
 import qualified Data.Binary.Bits.Put as BinaryBits
-import qualified Data.ByteString.Lazy as LazyBytes
+import qualified Data.ByteString as Bytes
 
 putRemoteId :: RemoteId -> BinaryBits.BitPut ()
 putRemoteId remoteId = case remoteId of
   RemoteIdPlayStation name bytes -> do
-    let
-      rawName = LazyBytes.toStrict
-        (reverseBytes (padBytes (16 :: Int) (encodeLatin1 name)))
+    let rawName = reverseBytes (padBytes (16 :: Int) (encodeLatin1 name))
     BinaryBits.putByteString rawName
-    BinaryBits.putByteString (LazyBytes.toStrict (LazyBytes.pack bytes))
+    BinaryBits.putByteString (Bytes.pack bytes)
   RemoteIdSplitscreen word24 -> BinaryBits.putWord32be 24 word24
   RemoteIdSteam word64 -> putWord64Bits word64
   RemoteIdSwitch x -> putBitstream x
diff --git a/library/Rattletrap/Encode/Replay.hs b/library/Rattletrap/Encode/Replay.hs
--- a/library/Rattletrap/Encode/Replay.hs
+++ b/library/Rattletrap/Encode/Replay.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Replay
   ( putReplay
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Content
 import Rattletrap.Encode.Header
diff --git a/library/Rattletrap/Encode/Replication.hs b/library/Rattletrap/Encode/Replication.hs
--- a/library/Rattletrap/Encode/Replication.hs
+++ b/library/Rattletrap/Encode/Replication.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Replication
   ( putReplications
   , putReplication
-  ) where
+  )
+where
 
 import Rattletrap.Encode.CompressedWord
 import Rattletrap.Encode.ReplicationValue
diff --git a/library/Rattletrap/Encode/ReplicationValue.hs b/library/Rattletrap/Encode/ReplicationValue.hs
--- a/library/Rattletrap/Encode/ReplicationValue.hs
+++ b/library/Rattletrap/Encode/ReplicationValue.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.ReplicationValue
   ( putReplicationValue
-  ) where
+  )
+where
 
 import Rattletrap.Encode.DestroyedReplication
 import Rattletrap.Encode.SpawnedReplication
diff --git a/library/Rattletrap/Encode/ReservationAttribute.hs b/library/Rattletrap/Encode/ReservationAttribute.hs
--- a/library/Rattletrap/Encode/ReservationAttribute.hs
+++ b/library/Rattletrap/Encode/ReservationAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.ReservationAttribute
   ( putReservationAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.CompressedWord
 import Rattletrap.Encode.Str
diff --git a/library/Rattletrap/Encode/RigidBodyStateAttribute.hs b/library/Rattletrap/Encode/RigidBodyStateAttribute.hs
--- a/library/Rattletrap/Encode/RigidBodyStateAttribute.hs
+++ b/library/Rattletrap/Encode/RigidBodyStateAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.RigidBodyStateAttribute
   ( putRigidBodyStateAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Rotation
 import Rattletrap.Encode.Vector
@@ -12,8 +13,7 @@
 putRigidBodyStateAttribute rigidBodyStateAttribute = do
   BinaryBits.putBool (rigidBodyStateAttributeSleeping rigidBodyStateAttribute)
   putVector (rigidBodyStateAttributeLocation rigidBodyStateAttribute)
-  putRotation
-    (rigidBodyStateAttributeRotation rigidBodyStateAttribute)
+  putRotation (rigidBodyStateAttributeRotation rigidBodyStateAttribute)
   case rigidBodyStateAttributeLinearVelocity rigidBodyStateAttribute of
     Nothing -> pure ()
     Just linearVelocity -> putVector linearVelocity
diff --git a/library/Rattletrap/Encode/Section.hs b/library/Rattletrap/Encode/Section.hs
--- a/library/Rattletrap/Encode/Section.hs
+++ b/library/Rattletrap/Encode/Section.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Section
   ( putSection
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Type.Section
@@ -9,6 +10,7 @@
 
 import qualified Data.Binary as Binary
 import qualified Data.Binary.Put as Binary
+import qualified Data.ByteString as Bytes
 import qualified Data.ByteString.Lazy as LazyBytes
 
 -- | Given a way to put the 'sectionBody', puts a section. This will also put
@@ -19,9 +21,11 @@
 -- @
 putSection :: (a -> Binary.Put) -> Section a -> Binary.Put
 putSection putBody section = do
-  let rawBody = Binary.runPut (putBody (sectionBody section))
-  let size = LazyBytes.length rawBody
+  let
+    rawBody =
+      LazyBytes.toStrict (Binary.runPut (putBody (sectionBody section)))
+  let size = Bytes.length rawBody
   let crc = getCrc32 rawBody
   putWord32 (Word32le (fromIntegral size))
   putWord32 (Word32le crc)
-  Binary.putLazyByteString rawBody
+  Binary.putByteString rawBody
diff --git a/library/Rattletrap/Encode/SpawnedReplication.hs b/library/Rattletrap/Encode/SpawnedReplication.hs
--- a/library/Rattletrap/Encode/SpawnedReplication.hs
+++ b/library/Rattletrap/Encode/SpawnedReplication.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.SpawnedReplication
   ( putSpawnedReplication
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Initialization
 import Rattletrap.Encode.Word32le
diff --git a/library/Rattletrap/Encode/StatEventAttribute.hs b/library/Rattletrap/Encode/StatEventAttribute.hs
--- a/library/Rattletrap/Encode/StatEventAttribute.hs
+++ b/library/Rattletrap/Encode/StatEventAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.StatEventAttribute
   ( putStatEventAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int32le
 import Rattletrap.Type.StatEventAttribute
diff --git a/library/Rattletrap/Encode/Str.hs b/library/Rattletrap/Encode/Str.hs
--- a/library/Rattletrap/Encode/Str.hs
+++ b/library/Rattletrap/Encode/Str.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Str
   ( putText
   , putTextBits
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Int32le
 import Rattletrap.Type.Common
@@ -12,7 +13,7 @@
 import qualified Data.Binary as Binary
 import qualified Data.Binary.Bits.Put as BinaryBits
 import qualified Data.Binary.Put as Binary
-import qualified Data.ByteString.Lazy as LazyBytes
+import qualified Data.ByteString as Bytes
 import qualified Data.Char as Char
 import qualified Data.Text as Text
 import qualified Data.Text.Encoding as Text
@@ -22,15 +23,14 @@
   let size = getTextSize text
   let encode = getTextEncoder size
   putInt32 size
-  Binary.putLazyByteString (encode (addNull (strValue text)))
+  Binary.putByteString (encode (addNull (strValue text)))
 
 putTextBits :: Str -> BinaryBits.BitPut ()
 putTextBits text = do
   let size = getTextSize text
   let encode = getTextEncoder size
   putInt32Bits size
-  BinaryBits.putByteString
-    (LazyBytes.toStrict (reverseBytes (encode (addNull (strValue text)))))
+  BinaryBits.putByteString (reverseBytes (encode (addNull (strValue text))))
 
 getTextSize :: Str -> Int32le
 getTextSize text =
@@ -46,10 +46,9 @@
   in
     Int32le size
 
-getTextEncoder :: Int32le -> Text.Text -> LazyBytes.ByteString
-getTextEncoder size text = if size < Int32le 0
-  then LazyBytes.fromStrict (Text.encodeUtf16LE text)
-  else encodeLatin1 text
+getTextEncoder :: Int32le -> Text.Text -> Bytes.ByteString
+getTextEncoder size text =
+  if size < Int32le 0 then Text.encodeUtf16LE text else encodeLatin1 text
 
 addNull :: Text.Text -> Text.Text
 addNull text = if Text.null text then text else Text.snoc text '\x00'
diff --git a/library/Rattletrap/Encode/StringAttribute.hs b/library/Rattletrap/Encode/StringAttribute.hs
--- a/library/Rattletrap/Encode/StringAttribute.hs
+++ b/library/Rattletrap/Encode/StringAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.StringAttribute
   ( putStringAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Str
 import Rattletrap.Type.StringAttribute
diff --git a/library/Rattletrap/Encode/TeamPaintAttribute.hs b/library/Rattletrap/Encode/TeamPaintAttribute.hs
--- a/library/Rattletrap/Encode/TeamPaintAttribute.hs
+++ b/library/Rattletrap/Encode/TeamPaintAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.TeamPaintAttribute
   ( putTeamPaintAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Encode.Word8le
diff --git a/library/Rattletrap/Encode/TitleAttribute.hs b/library/Rattletrap/Encode/TitleAttribute.hs
--- a/library/Rattletrap/Encode/TitleAttribute.hs
+++ b/library/Rattletrap/Encode/TitleAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.TitleAttribute
   ( putTitleAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Word32le
 import Rattletrap.Type.TitleAttribute
diff --git a/library/Rattletrap/Encode/UniqueIdAttribute.hs b/library/Rattletrap/Encode/UniqueIdAttribute.hs
--- a/library/Rattletrap/Encode/UniqueIdAttribute.hs
+++ b/library/Rattletrap/Encode/UniqueIdAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.UniqueIdAttribute
   ( putUniqueIdAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.RemoteId
 import Rattletrap.Encode.Word8le
diff --git a/library/Rattletrap/Encode/UpdatedReplication.hs b/library/Rattletrap/Encode/UpdatedReplication.hs
--- a/library/Rattletrap/Encode/UpdatedReplication.hs
+++ b/library/Rattletrap/Encode/UpdatedReplication.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.UpdatedReplication
   ( putUpdatedReplication
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Attribute
 import Rattletrap.Type.UpdatedReplication
diff --git a/library/Rattletrap/Encode/Vector.hs b/library/Rattletrap/Encode/Vector.hs
--- a/library/Rattletrap/Encode/Vector.hs
+++ b/library/Rattletrap/Encode/Vector.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.Vector
   ( putVector
-  ) where
+  )
+where
 
 import Rattletrap.Encode.CompressedWord
 import Rattletrap.Type.CompressedWord
diff --git a/library/Rattletrap/Encode/WeldedInfoAttribute.hs b/library/Rattletrap/Encode/WeldedInfoAttribute.hs
--- a/library/Rattletrap/Encode/WeldedInfoAttribute.hs
+++ b/library/Rattletrap/Encode/WeldedInfoAttribute.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Encode.WeldedInfoAttribute
   ( putWeldedInfoAttribute
-  ) where
+  )
+where
 
 import Rattletrap.Encode.Float32le
 import Rattletrap.Encode.Int32le
diff --git a/library/Rattletrap/Encode/Word32le.hs b/library/Rattletrap/Encode/Word32le.hs
--- a/library/Rattletrap/Encode/Word32le.hs
+++ b/library/Rattletrap/Encode/Word32le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Word32le
   ( putWord32
   , putWord32Bits
-  ) where
+  )
+where
 
 import Rattletrap.Type.Word32le
 import Rattletrap.Utility.Bytes
@@ -16,5 +17,5 @@
 
 putWord32Bits :: Word32le -> BinaryBits.BitPut ()
 putWord32Bits word32 = do
-  let bytes = Binary.runPut (putWord32 word32)
-  BinaryBits.putByteString (LazyBytes.toStrict (reverseBytes bytes))
+  let bytes = LazyBytes.toStrict (Binary.runPut (putWord32 word32))
+  BinaryBits.putByteString (reverseBytes bytes)
diff --git a/library/Rattletrap/Encode/Word64le.hs b/library/Rattletrap/Encode/Word64le.hs
--- a/library/Rattletrap/Encode/Word64le.hs
+++ b/library/Rattletrap/Encode/Word64le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Word64le
   ( putWord64
   , putWord64Bits
-  ) where
+  )
+where
 
 import Rattletrap.Type.Word64le
 import Rattletrap.Utility.Bytes
@@ -16,5 +17,5 @@
 
 putWord64Bits :: Word64le -> BinaryBits.BitPut ()
 putWord64Bits word64 = do
-  let bytes = Binary.runPut (putWord64 word64)
-  BinaryBits.putByteString (LazyBytes.toStrict (reverseBytes bytes))
+  let bytes = LazyBytes.toStrict (Binary.runPut (putWord64 word64))
+  BinaryBits.putByteString (reverseBytes bytes)
diff --git a/library/Rattletrap/Encode/Word8le.hs b/library/Rattletrap/Encode/Word8le.hs
--- a/library/Rattletrap/Encode/Word8le.hs
+++ b/library/Rattletrap/Encode/Word8le.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Encode.Word8le
   ( putWord8
   , putWord8Bits
-  ) where
+  )
+where
 
 import Rattletrap.Type.Word8le
 import Rattletrap.Utility.Bytes
@@ -16,5 +17,5 @@
 
 putWord8Bits :: Word8le -> BinaryBits.BitPut ()
 putWord8Bits word8 = do
-  let bytes = Binary.runPut (putWord8 word8)
-  BinaryBits.putByteString (LazyBytes.toStrict (reverseBytes bytes))
+  let bytes = LazyBytes.toStrict (Binary.runPut (putWord8 word8))
+  BinaryBits.putByteString (reverseBytes bytes)
diff --git a/library/Rattletrap/Type/AppliedDamageAttribute.hs b/library/Rattletrap/Type/AppliedDamageAttribute.hs
--- a/library/Rattletrap/Type/AppliedDamageAttribute.hs
+++ b/library/Rattletrap/Type/AppliedDamageAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.AppliedDamageAttribute
   ( AppliedDamageAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int32le
diff --git a/library/Rattletrap/Type/Attribute.hs b/library/Rattletrap/Type/Attribute.hs
--- a/library/Rattletrap/Type/Attribute.hs
+++ b/library/Rattletrap/Type/Attribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Attribute
   ( Attribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.AttributeValue
 import Rattletrap.Type.Common
diff --git a/library/Rattletrap/Type/AttributeMapping.hs b/library/Rattletrap/Type/AttributeMapping.hs
--- a/library/Rattletrap/Type/AttributeMapping.hs
+++ b/library/Rattletrap/Type/AttributeMapping.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.AttributeMapping
   ( AttributeMapping(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Type/AttributeType.hs b/library/Rattletrap/Type/AttributeType.hs
--- a/library/Rattletrap/Type/AttributeType.hs
+++ b/library/Rattletrap/Type/AttributeType.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.AttributeType
   ( AttributeType(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/AttributeValue.hs b/library/Rattletrap/Type/AttributeValue.hs
--- a/library/Rattletrap/Type/AttributeValue.hs
+++ b/library/Rattletrap/Type/AttributeValue.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.AttributeValue
   ( AttributeValue(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.AppliedDamageAttribute
 import Rattletrap.Type.BooleanAttribute
diff --git a/library/Rattletrap/Type/Bitstream.hs b/library/Rattletrap/Type/Bitstream.hs
--- a/library/Rattletrap/Type/Bitstream.hs
+++ b/library/Rattletrap/Type/Bitstream.hs
@@ -1,6 +1,7 @@
 module Rattletrap.Type.Bitstream
   ( Bitstream(..)
-  ) where
+  )
+where
 
 import qualified Data.Aeson as Json
 import qualified Data.Bool as Bool
@@ -21,7 +22,7 @@
               case char of
                 '0' -> pure False
                 '1' -> pure True
-                _ -> fail ("invalid bit: " ++ show char))
+                _ -> fail ("invalid bit: " <> show char))
            (Text.unpack text))
 
 instance Json.ToJSON Bitstream where
diff --git a/library/Rattletrap/Type/BooleanAttribute.hs b/library/Rattletrap/Type/BooleanAttribute.hs
--- a/library/Rattletrap/Type/BooleanAttribute.hs
+++ b/library/Rattletrap/Type/BooleanAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.BooleanAttribute
   ( BooleanAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/ByteAttribute.hs b/library/Rattletrap/Type/ByteAttribute.hs
--- a/library/Rattletrap/Type/ByteAttribute.hs
+++ b/library/Rattletrap/Type/ByteAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.ByteAttribute
   ( ByteAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word8le
diff --git a/library/Rattletrap/Type/Cache.hs b/library/Rattletrap/Type/Cache.hs
--- a/library/Rattletrap/Type/Cache.hs
+++ b/library/Rattletrap/Type/Cache.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Cache
   ( Cache(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.AttributeMapping
 import Rattletrap.Type.Common
diff --git a/library/Rattletrap/Type/CamSettingsAttribute.hs b/library/Rattletrap/Type/CamSettingsAttribute.hs
--- a/library/Rattletrap/Type/CamSettingsAttribute.hs
+++ b/library/Rattletrap/Type/CamSettingsAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.CamSettingsAttribute
   ( CamSettingsAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Float32le
diff --git a/library/Rattletrap/Type/ClassAttributeMap.hs b/library/Rattletrap/Type/ClassAttributeMap.hs
--- a/library/Rattletrap/Type/ClassAttributeMap.hs
+++ b/library/Rattletrap/Type/ClassAttributeMap.hs
@@ -9,7 +9,8 @@
   , getName
   , getObjectName
   , makeClassAttributeMap
-  ) where
+  )
+where
 
 import Rattletrap.Data
 import Rattletrap.Type.AttributeMapping
@@ -39,7 +40,7 @@
   -- ^ A map from object IDs to their names.
   , classAttributeMapObjectClassMap :: Map Word32le Word32le
   -- ^ A map from object IDs to their class IDs.
-  , classAttributeMapValue :: Map Word32le (Map Word32le Word32le)
+    , classAttributeMapValue :: Map Word32le (Map Word32le Word32le)
   -- ^ A map from class IDs to a map from attribute stream IDs to attribute
   -- IDs.
   , classAttributeMapNameMap :: IntMap.IntMap Str
@@ -68,36 +69,36 @@
   -> List Str
   -- ^ From 'Rattletrap.Content.contentNames'.
   -> ClassAttributeMap
-makeClassAttributeMap objects classMappings caches names =
-  let
-    objectMap = makeObjectMap objects
-    classMap = makeClassMap classMappings
-    objectClassMap = makeObjectClassMap objectMap classMap
-    classCache = makeClassCache classMap caches
-    attributeMap = makeAttributeMap caches
-    classIds = fmap (\(_, classId, _, _) -> classId) classCache
-    parentMap = makeParentMap classCache
-    value = Map.fromList
-      ( fmap
-        ( \classId ->
-          let
-            ownAttributes =
-              Maybe.fromMaybe Map.empty (Map.lookup classId attributeMap)
-            parentsAttributes = case Map.lookup classId parentMap of
-              Nothing -> []
-              Just parentClassIds -> fmap
-                ( \parentClassId -> Maybe.fromMaybe
-                  Map.empty
-                  (Map.lookup parentClassId attributeMap)
-                )
-                parentClassIds
-            attributes = ownAttributes : parentsAttributes
-          in (classId, Map.fromList (concatMap Map.toList attributes))
+makeClassAttributeMap objects classMappings caches names
+  = let
+      objectMap = makeObjectMap objects
+      classMap = makeClassMap classMappings
+      objectClassMap = makeObjectClassMap objectMap classMap
+      classCache = makeClassCache classMap caches
+      attributeMap = makeAttributeMap caches
+      classIds = fmap (\(_, classId, _, _) -> classId) classCache
+      parentMap = makeParentMap classCache
+      value = Map.fromList
+        (fmap
+          (\classId ->
+            let
+              ownAttributes =
+                Maybe.fromMaybe Map.empty (Map.lookup classId attributeMap)
+              parentsAttributes = case Map.lookup classId parentMap of
+                Nothing -> []
+                Just parentClassIds -> fmap
+                  (\parentClassId -> Maybe.fromMaybe
+                    Map.empty
+                    (Map.lookup parentClassId attributeMap)
+                  )
+                  parentClassIds
+              attributes = ownAttributes : parentsAttributes
+            in (classId, Map.fromList (concatMap Map.toList attributes))
+          )
+          classIds
         )
-        classIds
-      )
-    nameMap = makeNameMap names
-  in ClassAttributeMap objectMap objectClassMap value nameMap
+      nameMap = makeNameMap names
+    in ClassAttributeMap objectMap objectClassMap value nameMap
 
 makeNameMap :: List Str -> IntMap.IntMap Str
 makeNameMap names = IntMap.fromDistinctAscList (zip [0 ..] (listValue names))
@@ -114,7 +115,7 @@
   let rawPairs = zip objectIds classIds
   let
     pairs = Maybe.mapMaybe
-      ( \(objectId, maybeClassId) -> case maybeClassId of
+      (\(objectId, maybeClassId) -> case maybeClassId of
         Nothing -> Nothing
         Just classId -> Just (objectId, classId)
       )
@@ -133,9 +134,8 @@
   -> List Cache
   -> [(Maybe Str, Word32le, Word32le, Word32le)]
 makeClassCache classMap caches = fmap
-  ( \cache ->
-    let
-      classId = cacheClassId cache
+  (\cache ->
+    let classId = cacheClassId cache
     in
       ( lookupL classId classMap
       , classId
@@ -147,8 +147,8 @@
 
 makeClassMap :: List ClassMapping -> Bimap Word32le Str
 makeClassMap classMappings = bimap
-  ( fmap
-    ( \classMapping ->
+  (fmap
+    (\classMapping ->
       (classMappingStreamId classMapping, classMappingName classMapping)
     )
     (listValue classMappings)
@@ -156,12 +156,12 @@
 
 makeAttributeMap :: List Cache -> Map Word32le (Map Word32le Word32le)
 makeAttributeMap caches = Map.fromList
-  ( fmap
-    ( \cache ->
+  (fmap
+    (\cache ->
       ( cacheClassId cache
       , Map.fromList
-        ( fmap
-          ( \attributeMapping ->
+        (fmap
+          (\attributeMapping ->
             ( attributeMappingStreamId attributeMapping
             , attributeMappingObjectId attributeMapping
             )
@@ -176,10 +176,10 @@
 makeShallowParentMap
   :: [(Maybe Str, Word32le, Word32le, Word32le)] -> Map Word32le Word32le
 makeShallowParentMap classCache = Map.fromList
-  ( Maybe.mapMaybe
-    ( \xs -> case xs of
+  (Maybe.mapMaybe
+    (\xs -> case xs of
       [] -> Nothing
-      (maybeClassName, classId, _, parentCacheId):rest -> do
+      (maybeClassName, classId, _, parentCacheId) : rest -> do
         parentClassId <- getParentClass maybeClassName parentCacheId rest
         pure (classId, parentClassId)
     )
@@ -189,8 +189,7 @@
 makeParentMap
   :: [(Maybe Str, Word32le, Word32le, Word32le)] -> Map Word32le [Word32le]
 makeParentMap classCache =
-  let
-    shallowParentMap = makeShallowParentMap classCache
+  let shallowParentMap = makeShallowParentMap classCache
   in
     Map.mapWithKey
       (\classId _ -> getParentClasses shallowParentMap classId)
@@ -219,7 +218,7 @@
     [] -> if parentCacheId == Word32le 0
       then Nothing
       else getParentClassById (Word32le (word32leValue parentCacheId - 1)) xs
-    (_, parentClassId, _, _):_ -> Just parentClassId
+    (_, parentClassId, _, _) : _ -> Just parentClassId
 
 getParentClassByName
   :: Str
@@ -232,13 +231,13 @@
     Just parentClassName -> Maybe.maybe
       (getParentClassById parentCacheId xs)
       Just
-      ( Maybe.listToMaybe
-        ( fmap
+      (Maybe.listToMaybe
+        (fmap
           (\(_, parentClassId, _, _) -> parentClassId)
-          ( filter
+          (filter
             (\(_, _, cacheId, _) -> cacheId <= parentCacheId)
-            ( filter
-              ( \(maybeClassName, _, _, _) ->
+            (filter
+              (\(maybeClassName, _, _, _) ->
                 maybeClassName == Just parentClassName
               )
               xs
@@ -271,18 +270,17 @@
     boostPickup = Text.pack "TheWorld:PersistentLevel.VehiclePickup_Boost_TA"
     mapScoreboard = Text.pack "TheWorld:PersistentLevel.InMapScoreboard_TA"
     breakout = Text.pack "TheWorld:PersistentLevel.BreakOutActor_Platform_TA"
-  in
-    if Text.isInfixOf crowdActor name
-      then Str crowdActor
-      else if Text.isInfixOf crowdManager name
-        then Str crowdManager
-        else if Text.isInfixOf boostPickup name
-          then Str boostPickup
-          else if Text.isInfixOf mapScoreboard name
-            then Str mapScoreboard
-            else if Text.isInfixOf breakout name
-              then Str breakout
-              else objectName
+  in if Text.isInfixOf crowdActor name
+    then Str crowdActor
+    else if Text.isInfixOf crowdManager name
+      then Str crowdManager
+      else if Text.isInfixOf boostPickup name
+        then Str boostPickup
+        else if Text.isInfixOf mapScoreboard name
+          then Str mapScoreboard
+          else if Text.isInfixOf breakout name
+            then Str breakout
+            else objectName
 
 objectClasses :: Map Str Str
 objectClasses =
diff --git a/library/Rattletrap/Type/ClassMapping.hs b/library/Rattletrap/Type/ClassMapping.hs
--- a/library/Rattletrap/Type/ClassMapping.hs
+++ b/library/Rattletrap/Type/ClassMapping.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.ClassMapping
   ( ClassMapping(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Str
diff --git a/library/Rattletrap/Type/ClubColorsAttribute.hs b/library/Rattletrap/Type/ClubColorsAttribute.hs
--- a/library/Rattletrap/Type/ClubColorsAttribute.hs
+++ b/library/Rattletrap/Type/ClubColorsAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.ClubColorsAttribute
   ( ClubColorsAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word8le
diff --git a/library/Rattletrap/Type/Common.hs b/library/Rattletrap/Type/Common.hs
--- a/library/Rattletrap/Type/Common.hs
+++ b/library/Rattletrap/Type/Common.hs
@@ -9,7 +9,8 @@
   , Word.Word32
   , Word.Word64
   , deriveJson
-  ) where
+  )
+where
 
 import qualified Data.Aeson as Json
 import qualified Data.Aeson.TH as Json
@@ -37,7 +38,7 @@
 lowerFirst :: String -> String
 lowerFirst string = case string of
   "" -> string
-  first:rest -> Char.toLower first : rest
+  first : rest -> Char.toLower first : rest
 
 toSnakeCase :: String -> String
 toSnakeCase = Json.camelTo2 '_'
@@ -50,6 +51,6 @@
 dropPrefix :: Eq a => [a] -> [a] -> Maybe [a]
 dropPrefix prefix list = case prefix of
   [] -> Just list
-  ph:pt -> case list of
+  ph : pt -> case list of
     [] -> Nothing
-    lh:lt -> if ph == lh then dropPrefix pt lt else Nothing
+    lh : lt -> if ph == lh then dropPrefix pt lt else Nothing
diff --git a/library/Rattletrap/Type/CompressedWord.hs b/library/Rattletrap/Type/CompressedWord.hs
--- a/library/Rattletrap/Type/CompressedWord.hs
+++ b/library/Rattletrap/Type/CompressedWord.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.CompressedWord
   ( CompressedWord(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/CompressedWordVector.hs b/library/Rattletrap/Type/CompressedWordVector.hs
--- a/library/Rattletrap/Type/CompressedWordVector.hs
+++ b/library/Rattletrap/Type/CompressedWordVector.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.CompressedWordVector
   ( CompressedWordVector(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.CompressedWord
diff --git a/library/Rattletrap/Type/Content.hs b/library/Rattletrap/Type/Content.hs
--- a/library/Rattletrap/Type/Content.hs
+++ b/library/Rattletrap/Type/Content.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Content
   ( Content(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Cache
 import Rattletrap.Type.ClassMapping
diff --git a/library/Rattletrap/Type/DamageStateAttribute.hs b/library/Rattletrap/Type/DamageStateAttribute.hs
--- a/library/Rattletrap/Type/DamageStateAttribute.hs
+++ b/library/Rattletrap/Type/DamageStateAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.DamageStateAttribute
   ( DamageStateAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int32le
diff --git a/library/Rattletrap/Type/DemolishAttribute.hs b/library/Rattletrap/Type/DemolishAttribute.hs
--- a/library/Rattletrap/Type/DemolishAttribute.hs
+++ b/library/Rattletrap/Type/DemolishAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.DemolishAttribute
   ( DemolishAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Vector
diff --git a/library/Rattletrap/Type/DestroyedReplication.hs b/library/Rattletrap/Type/DestroyedReplication.hs
--- a/library/Rattletrap/Type/DestroyedReplication.hs
+++ b/library/Rattletrap/Type/DestroyedReplication.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.DestroyedReplication
   ( DestroyedReplication(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/Dictionary.hs b/library/Rattletrap/Type/Dictionary.hs
--- a/library/Rattletrap/Type/Dictionary.hs
+++ b/library/Rattletrap/Type/Dictionary.hs
@@ -1,7 +1,8 @@
 module Rattletrap.Type.Dictionary
   ( Dictionary(..)
   , dictionaryLookup
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Str
diff --git a/library/Rattletrap/Type/EnumAttribute.hs b/library/Rattletrap/Type/EnumAttribute.hs
--- a/library/Rattletrap/Type/EnumAttribute.hs
+++ b/library/Rattletrap/Type/EnumAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.EnumAttribute
   ( EnumAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/ExplosionAttribute.hs b/library/Rattletrap/Type/ExplosionAttribute.hs
--- a/library/Rattletrap/Type/ExplosionAttribute.hs
+++ b/library/Rattletrap/Type/ExplosionAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.ExplosionAttribute
   ( ExplosionAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int32le
diff --git a/library/Rattletrap/Type/ExtendedExplosionAttribute.hs b/library/Rattletrap/Type/ExtendedExplosionAttribute.hs
--- a/library/Rattletrap/Type/ExtendedExplosionAttribute.hs
+++ b/library/Rattletrap/Type/ExtendedExplosionAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.ExtendedExplosionAttribute
   ( ExtendedExplosionAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.ExplosionAttribute
diff --git a/library/Rattletrap/Type/FlaggedIntAttribute.hs b/library/Rattletrap/Type/FlaggedIntAttribute.hs
--- a/library/Rattletrap/Type/FlaggedIntAttribute.hs
+++ b/library/Rattletrap/Type/FlaggedIntAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.FlaggedIntAttribute
   ( FlaggedIntAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int32le
diff --git a/library/Rattletrap/Type/Float32le.hs b/library/Rattletrap/Type/Float32le.hs
--- a/library/Rattletrap/Type/Float32le.hs
+++ b/library/Rattletrap/Type/Float32le.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Float32le
   ( Float32le(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/FloatAttribute.hs b/library/Rattletrap/Type/FloatAttribute.hs
--- a/library/Rattletrap/Type/FloatAttribute.hs
+++ b/library/Rattletrap/Type/FloatAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.FloatAttribute
   ( FloatAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Float32le
diff --git a/library/Rattletrap/Type/Frame.hs b/library/Rattletrap/Type/Frame.hs
--- a/library/Rattletrap/Type/Frame.hs
+++ b/library/Rattletrap/Type/Frame.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Frame
   ( Frame(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Float32le
diff --git a/library/Rattletrap/Type/GameModeAttribute.hs b/library/Rattletrap/Type/GameModeAttribute.hs
--- a/library/Rattletrap/Type/GameModeAttribute.hs
+++ b/library/Rattletrap/Type/GameModeAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.GameModeAttribute
   ( GameModeAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/Header.hs b/library/Rattletrap/Type/Header.hs
--- a/library/Rattletrap/Type/Header.hs
+++ b/library/Rattletrap/Type/Header.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Header
   ( Header(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Dictionary
diff --git a/library/Rattletrap/Type/Initialization.hs b/library/Rattletrap/Type/Initialization.hs
--- a/library/Rattletrap/Type/Initialization.hs
+++ b/library/Rattletrap/Type/Initialization.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Initialization
   ( Initialization(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int8Vector
diff --git a/library/Rattletrap/Type/Int32le.hs b/library/Rattletrap/Type/Int32le.hs
--- a/library/Rattletrap/Type/Int32le.hs
+++ b/library/Rattletrap/Type/Int32le.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Int32le
   ( Int32le(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/Int64Attribute.hs b/library/Rattletrap/Type/Int64Attribute.hs
--- a/library/Rattletrap/Type/Int64Attribute.hs
+++ b/library/Rattletrap/Type/Int64Attribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Int64Attribute
   ( Int64Attribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int64le
diff --git a/library/Rattletrap/Type/Int64le.hs b/library/Rattletrap/Type/Int64le.hs
--- a/library/Rattletrap/Type/Int64le.hs
+++ b/library/Rattletrap/Type/Int64le.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Int64le
   ( Int64le(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/Int8Vector.hs b/library/Rattletrap/Type/Int8Vector.hs
--- a/library/Rattletrap/Type/Int8Vector.hs
+++ b/library/Rattletrap/Type/Int8Vector.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Int8Vector
   ( Int8Vector(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int8le
diff --git a/library/Rattletrap/Type/Int8le.hs b/library/Rattletrap/Type/Int8le.hs
--- a/library/Rattletrap/Type/Int8le.hs
+++ b/library/Rattletrap/Type/Int8le.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Int8le
   ( Int8le(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/IntAttribute.hs b/library/Rattletrap/Type/IntAttribute.hs
--- a/library/Rattletrap/Type/IntAttribute.hs
+++ b/library/Rattletrap/Type/IntAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.IntAttribute
   ( IntAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int32le
diff --git a/library/Rattletrap/Type/KeyFrame.hs b/library/Rattletrap/Type/KeyFrame.hs
--- a/library/Rattletrap/Type/KeyFrame.hs
+++ b/library/Rattletrap/Type/KeyFrame.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.KeyFrame
   ( KeyFrame(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Float32le
diff --git a/library/Rattletrap/Type/List.hs b/library/Rattletrap/Type/List.hs
--- a/library/Rattletrap/Type/List.hs
+++ b/library/Rattletrap/Type/List.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.List
   ( List(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/LoadoutAttribute.hs b/library/Rattletrap/Type/LoadoutAttribute.hs
--- a/library/Rattletrap/Type/LoadoutAttribute.hs
+++ b/library/Rattletrap/Type/LoadoutAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.LoadoutAttribute
   ( LoadoutAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Type/LoadoutOnlineAttribute.hs b/library/Rattletrap/Type/LoadoutOnlineAttribute.hs
--- a/library/Rattletrap/Type/LoadoutOnlineAttribute.hs
+++ b/library/Rattletrap/Type/LoadoutOnlineAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.LoadoutOnlineAttribute
   ( LoadoutOnlineAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.ProductAttribute
diff --git a/library/Rattletrap/Type/LoadoutsAttribute.hs b/library/Rattletrap/Type/LoadoutsAttribute.hs
--- a/library/Rattletrap/Type/LoadoutsAttribute.hs
+++ b/library/Rattletrap/Type/LoadoutsAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.LoadoutsAttribute
   ( LoadoutsAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.LoadoutAttribute
diff --git a/library/Rattletrap/Type/LoadoutsOnlineAttribute.hs b/library/Rattletrap/Type/LoadoutsOnlineAttribute.hs
--- a/library/Rattletrap/Type/LoadoutsOnlineAttribute.hs
+++ b/library/Rattletrap/Type/LoadoutsOnlineAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.LoadoutsOnlineAttribute
   ( LoadoutsOnlineAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.LoadoutOnlineAttribute
diff --git a/library/Rattletrap/Type/LocationAttribute.hs b/library/Rattletrap/Type/LocationAttribute.hs
--- a/library/Rattletrap/Type/LocationAttribute.hs
+++ b/library/Rattletrap/Type/LocationAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.LocationAttribute
   ( LocationAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Vector
diff --git a/library/Rattletrap/Type/Mark.hs b/library/Rattletrap/Type/Mark.hs
--- a/library/Rattletrap/Type/Mark.hs
+++ b/library/Rattletrap/Type/Mark.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Mark
   ( Mark(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Str
diff --git a/library/Rattletrap/Type/Message.hs b/library/Rattletrap/Type/Message.hs
--- a/library/Rattletrap/Type/Message.hs
+++ b/library/Rattletrap/Type/Message.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Message
   ( Message(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Str
diff --git a/library/Rattletrap/Type/MusicStingerAttribute.hs b/library/Rattletrap/Type/MusicStingerAttribute.hs
--- a/library/Rattletrap/Type/MusicStingerAttribute.hs
+++ b/library/Rattletrap/Type/MusicStingerAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.MusicStingerAttribute
   ( MusicStingerAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Type/PartyLeaderAttribute.hs b/library/Rattletrap/Type/PartyLeaderAttribute.hs
--- a/library/Rattletrap/Type/PartyLeaderAttribute.hs
+++ b/library/Rattletrap/Type/PartyLeaderAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.PartyLeaderAttribute
   ( PartyLeaderAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.RemoteId
diff --git a/library/Rattletrap/Type/PickupAttribute.hs b/library/Rattletrap/Type/PickupAttribute.hs
--- a/library/Rattletrap/Type/PickupAttribute.hs
+++ b/library/Rattletrap/Type/PickupAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.PickupAttribute
   ( PickupAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Type/PlayerHistoryKeyAttribute.hs b/library/Rattletrap/Type/PlayerHistoryKeyAttribute.hs
--- a/library/Rattletrap/Type/PlayerHistoryKeyAttribute.hs
+++ b/library/Rattletrap/Type/PlayerHistoryKeyAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.PlayerHistoryKeyAttribute
   ( PlayerHistoryKeyAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Bitstream
 import Rattletrap.Type.Common
diff --git a/library/Rattletrap/Type/PrivateMatchSettingsAttribute.hs b/library/Rattletrap/Type/PrivateMatchSettingsAttribute.hs
--- a/library/Rattletrap/Type/PrivateMatchSettingsAttribute.hs
+++ b/library/Rattletrap/Type/PrivateMatchSettingsAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.PrivateMatchSettingsAttribute
   ( PrivateMatchSettingsAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Str
diff --git a/library/Rattletrap/Type/ProductAttribute.hs b/library/Rattletrap/Type/ProductAttribute.hs
--- a/library/Rattletrap/Type/ProductAttribute.hs
+++ b/library/Rattletrap/Type/ProductAttribute.hs
@@ -3,7 +3,8 @@
 module Rattletrap.Type.ProductAttribute
   ( ProductAttribute(..)
   , ProductAttributeValue(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.CompressedWord
diff --git a/library/Rattletrap/Type/Property.hs b/library/Rattletrap/Type/Property.hs
--- a/library/Rattletrap/Type/Property.hs
+++ b/library/Rattletrap/Type/Property.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Property
   ( Property(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.PropertyValue
diff --git a/library/Rattletrap/Type/PropertyValue.hs b/library/Rattletrap/Type/PropertyValue.hs
--- a/library/Rattletrap/Type/PropertyValue.hs
+++ b/library/Rattletrap/Type/PropertyValue.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.PropertyValue
   ( PropertyValue(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Dictionary
diff --git a/library/Rattletrap/Type/QWordAttribute.hs b/library/Rattletrap/Type/QWordAttribute.hs
--- a/library/Rattletrap/Type/QWordAttribute.hs
+++ b/library/Rattletrap/Type/QWordAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.QWordAttribute
   ( QWordAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word64le
diff --git a/library/Rattletrap/Type/RemoteId.hs b/library/Rattletrap/Type/RemoteId.hs
--- a/library/Rattletrap/Type/RemoteId.hs
+++ b/library/Rattletrap/Type/RemoteId.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.RemoteId
   ( RemoteId(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Bitstream
 import Rattletrap.Type.Common
diff --git a/library/Rattletrap/Type/Replay.hs b/library/Rattletrap/Type/Replay.hs
--- a/library/Rattletrap/Type/Replay.hs
+++ b/library/Rattletrap/Type/Replay.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Replay
   ( Replay(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Content
diff --git a/library/Rattletrap/Type/Replication.hs b/library/Rattletrap/Type/Replication.hs
--- a/library/Rattletrap/Type/Replication.hs
+++ b/library/Rattletrap/Type/Replication.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Replication
   ( Replication(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.CompressedWord
diff --git a/library/Rattletrap/Type/ReplicationValue.hs b/library/Rattletrap/Type/ReplicationValue.hs
--- a/library/Rattletrap/Type/ReplicationValue.hs
+++ b/library/Rattletrap/Type/ReplicationValue.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.ReplicationValue
   ( ReplicationValue(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.DestroyedReplication
diff --git a/library/Rattletrap/Type/ReservationAttribute.hs b/library/Rattletrap/Type/ReservationAttribute.hs
--- a/library/Rattletrap/Type/ReservationAttribute.hs
+++ b/library/Rattletrap/Type/ReservationAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.ReservationAttribute
   ( ReservationAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.CompressedWord
diff --git a/library/Rattletrap/Type/RigidBodyStateAttribute.hs b/library/Rattletrap/Type/RigidBodyStateAttribute.hs
--- a/library/Rattletrap/Type/RigidBodyStateAttribute.hs
+++ b/library/Rattletrap/Type/RigidBodyStateAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.RigidBodyStateAttribute
   ( RigidBodyStateAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Rotation
diff --git a/library/Rattletrap/Type/Section.hs b/library/Rattletrap/Type/Section.hs
--- a/library/Rattletrap/Type/Section.hs
+++ b/library/Rattletrap/Type/Section.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Section
   ( Section(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Type/SpawnedReplication.hs b/library/Rattletrap/Type/SpawnedReplication.hs
--- a/library/Rattletrap/Type/SpawnedReplication.hs
+++ b/library/Rattletrap/Type/SpawnedReplication.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.SpawnedReplication
   ( SpawnedReplication(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Initialization
diff --git a/library/Rattletrap/Type/StatEventAttribute.hs b/library/Rattletrap/Type/StatEventAttribute.hs
--- a/library/Rattletrap/Type/StatEventAttribute.hs
+++ b/library/Rattletrap/Type/StatEventAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.StatEventAttribute
   ( StatEventAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Int32le
diff --git a/library/Rattletrap/Type/Str.hs b/library/Rattletrap/Type/Str.hs
--- a/library/Rattletrap/Type/Str.hs
+++ b/library/Rattletrap/Type/Str.hs
@@ -4,7 +4,8 @@
   ( Str(..)
   , toStr
   , fromStr
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/StringAttribute.hs b/library/Rattletrap/Type/StringAttribute.hs
--- a/library/Rattletrap/Type/StringAttribute.hs
+++ b/library/Rattletrap/Type/StringAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.StringAttribute
   ( StringAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Str
diff --git a/library/Rattletrap/Type/TeamPaintAttribute.hs b/library/Rattletrap/Type/TeamPaintAttribute.hs
--- a/library/Rattletrap/Type/TeamPaintAttribute.hs
+++ b/library/Rattletrap/Type/TeamPaintAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.TeamPaintAttribute
   ( TeamPaintAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Type/TitleAttribute.hs b/library/Rattletrap/Type/TitleAttribute.hs
--- a/library/Rattletrap/Type/TitleAttribute.hs
+++ b/library/Rattletrap/Type/TitleAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.TitleAttribute
   ( TitleAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Word32le
diff --git a/library/Rattletrap/Type/UniqueIdAttribute.hs b/library/Rattletrap/Type/UniqueIdAttribute.hs
--- a/library/Rattletrap/Type/UniqueIdAttribute.hs
+++ b/library/Rattletrap/Type/UniqueIdAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.UniqueIdAttribute
   ( UniqueIdAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.RemoteId
diff --git a/library/Rattletrap/Type/UpdatedReplication.hs b/library/Rattletrap/Type/UpdatedReplication.hs
--- a/library/Rattletrap/Type/UpdatedReplication.hs
+++ b/library/Rattletrap/Type/UpdatedReplication.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.UpdatedReplication
   ( UpdatedReplication(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Attribute
 import Rattletrap.Type.Common
diff --git a/library/Rattletrap/Type/Vector.hs b/library/Rattletrap/Type/Vector.hs
--- a/library/Rattletrap/Type/Vector.hs
+++ b/library/Rattletrap/Type/Vector.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Vector
   ( Vector(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.CompressedWord
diff --git a/library/Rattletrap/Type/WeldedInfoAttribute.hs b/library/Rattletrap/Type/WeldedInfoAttribute.hs
--- a/library/Rattletrap/Type/WeldedInfoAttribute.hs
+++ b/library/Rattletrap/Type/WeldedInfoAttribute.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.WeldedInfoAttribute
   ( WeldedInfoAttribute(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 import Rattletrap.Type.Float32le
diff --git a/library/Rattletrap/Type/Word32le.hs b/library/Rattletrap/Type/Word32le.hs
--- a/library/Rattletrap/Type/Word32le.hs
+++ b/library/Rattletrap/Type/Word32le.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Word32le
   ( Word32le(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/Word64le.hs b/library/Rattletrap/Type/Word64le.hs
--- a/library/Rattletrap/Type/Word64le.hs
+++ b/library/Rattletrap/Type/Word64le.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Word64le
   ( Word64le(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Type/Word8le.hs b/library/Rattletrap/Type/Word8le.hs
--- a/library/Rattletrap/Type/Word8le.hs
+++ b/library/Rattletrap/Type/Word8le.hs
@@ -2,7 +2,8 @@
 
 module Rattletrap.Type.Word8le
   ( Word8le(..)
-  ) where
+  )
+where
 
 import Rattletrap.Type.Common
 
diff --git a/library/Rattletrap/Utility/Bytes.hs b/library/Rattletrap/Utility/Bytes.hs
--- a/library/Rattletrap/Utility/Bytes.hs
+++ b/library/Rattletrap/Utility/Bytes.hs
@@ -3,22 +3,21 @@
   , padBytes
   , reverseByte
   , reverseBytes
-  ) where
+  )
+where
 
 import qualified Data.Bits as Bits
-import qualified Data.ByteString.Lazy as LazyBytes
-import qualified Data.ByteString.Lazy.Char8 as LazyBytes8
+import qualified Data.ByteString as Bytes
+import qualified Data.ByteString.Char8 as Bytes8
 import qualified Data.Text as Text
 import qualified Data.Word as Word
 
-encodeLatin1 :: Text.Text -> LazyBytes.ByteString
-encodeLatin1 text = LazyBytes8.pack (Text.unpack text)
+encodeLatin1 :: Text.Text -> Bytes.ByteString
+encodeLatin1 text = Bytes8.pack (Text.unpack text)
 
-padBytes :: Integral a => a -> LazyBytes.ByteString -> LazyBytes.ByteString
-padBytes size bytes = LazyBytes.concat
-  [ bytes
-  , LazyBytes.replicate (fromIntegral size - LazyBytes.length bytes) 0x00
-  ]
+padBytes :: Integral a => a -> Bytes.ByteString -> Bytes.ByteString
+padBytes size bytes =
+  bytes <> Bytes.replicate (fromIntegral size - Bytes.length bytes) 0x00
 
 reverseByte :: Word.Word8 -> Word.Word8
 reverseByte byte =
@@ -31,5 +30,5 @@
     + Bits.shiftL (byte Bits..&. Bits.bit 1) 5
     + Bits.shiftL (byte Bits..&. Bits.bit 0) 7
 
-reverseBytes :: LazyBytes.ByteString -> LazyBytes.ByteString
-reverseBytes = LazyBytes.map reverseByte
+reverseBytes :: Bytes.ByteString -> Bytes.ByteString
+reverseBytes = Bytes.map reverseByte
diff --git a/library/Rattletrap/Utility/Crc.hs b/library/Rattletrap/Utility/Crc.hs
--- a/library/Rattletrap/Utility/Crc.hs
+++ b/library/Rattletrap/Utility/Crc.hs
@@ -1,11 +1,12 @@
 module Rattletrap.Utility.Crc
   ( getCrc32
-  ) where
+  )
+where
 
 import Rattletrap.Data
 
 import qualified Data.Bits as Bits
-import qualified Data.ByteString.Lazy as LazyBytes
+import qualified Data.ByteString as Bytes
 import qualified Data.IntMap as IntMap
 import qualified Data.Word as Word
 
@@ -18,12 +19,12 @@
 --
 -- This CRC uses an initial value of @0xefcbf201@ and a polynomial of
 -- @0x04c11db7@.
-getCrc32 :: LazyBytes.ByteString -> Word.Word32
+getCrc32 :: Bytes.ByteString -> Word.Word32
 getCrc32 bytes = do
   let
     update = crc32Update crc32Table
     initial = Bits.complement crc32Initial
-    crc = LazyBytes.foldl update initial bytes
+    crc = Bytes.foldl update initial bytes
   Bits.complement crc
 
 crc32Update
diff --git a/library/Rattletrap/Utility/Helper.hs b/library/Rattletrap/Utility/Helper.hs
--- a/library/Rattletrap/Utility/Helper.hs
+++ b/library/Rattletrap/Utility/Helper.hs
@@ -5,7 +5,8 @@
   , encodeReplayJson
   , decodeReplayJson
   , encodeReplayFile
-  ) where
+  )
+where
 
 import Rattletrap.Decode.Common
 import Rattletrap.Decode.Replay
@@ -15,24 +16,26 @@
 import qualified Data.Aeson as Json
 import qualified Data.Aeson.Encode.Pretty as Json
 import qualified Data.Binary.Put as Binary
+import qualified Data.ByteString as Bytes
 import qualified Data.ByteString.Lazy as LazyBytes
 
 -- | Parses a raw replay.
-decodeReplayFile :: LazyBytes.ByteString -> Either String Replay
+decodeReplayFile :: Bytes.ByteString -> Either String Replay
 decodeReplayFile = runDecode decodeReplay
 
 -- | Encodes a replay as JSON.
-encodeReplayJson :: Replay -> LazyBytes.ByteString
-encodeReplayJson = Json.encodePretty' Json.defConfig
+encodeReplayJson :: Replay -> Bytes.ByteString
+encodeReplayJson = LazyBytes.toStrict . Json.encodePretty' Json.defConfig
   { Json.confCompare = compare
   , Json.confIndent = Json.Spaces 2
   , Json.confTrailingNewline = True
   }
 
 -- | Parses a JSON replay.
-decodeReplayJson :: LazyBytes.ByteString -> Either String Replay
-decodeReplayJson = Json.eitherDecode
+decodeReplayJson :: Bytes.ByteString -> Either String Replay
+decodeReplayJson = Json.eitherDecodeStrict'
 
 -- | Encodes a raw replay.
-encodeReplayFile :: Replay -> LazyBytes.ByteString
-encodeReplayFile replay = Binary.runPut (putReplay replay)
+encodeReplayFile :: Replay -> Bytes.ByteString
+encodeReplayFile replay =
+  LazyBytes.toStrict (Binary.runPut (putReplay replay))
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: rattletrap
-version: 6.0.1
+version: 6.0.2
 
 category: Game
 description: Rattletrap parses and generates Rocket League replays.
@@ -17,15 +17,15 @@
 dependencies:
   aeson-pretty: '>= 0.8.5 && < 0.9'
   aeson: '>= 1.2.4 && < 1.5'
-  base: '>= 4.11.1 && < 4.12'
+  base: '>= 4.11.1 && < 4.13'
   binary-bits: '>= 0.5 && < 0.6'
   binary: '>= 0.8.5 && < 0.9'
   bytestring: '>= 0.10.8 && < 0.11'
-  containers: '>= 0.5.10 && < 0.6'
+  containers: '>= 0.5.10 && < 0.7'
   filepath: '>= 1.4.1 && < 1.5'
   http-client-tls: '>= 0.3.5 && < 0.4'
   http-client: '>= 0.5.10 && < 0.6'
-  template-haskell: '>= 2.13.0 && < 2.14'
+  template-haskell: '>= 2.13.0 && < 2.15'
   text: '>= 1.2.3 && < 1.3'
   transformers: '>= 0.5.2 && < 0.6'
 ghc-options:
@@ -60,6 +60,7 @@
 tests:
   test:
     dependencies:
+      clock: '>= 0.7.2 && < 0.8'
       HUnit: '>= 1.6.0 && < 1.7'
       rattletrap: -any
       temporary: '>= 1.2.1 && < 1.4'
diff --git a/rattletrap.cabal b/rattletrap.cabal
--- a/rattletrap.cabal
+++ b/rattletrap.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 5f18412041770e9f418d1274e2af2d5ca7264e94a41ca10e62566ccf3a1130f7
+-- hash: 6bd15767c71dbb8fd1cbe890879aae6017938021cc9bbb82fc3d7ec5509e87fb
 
 name:           rattletrap
-version:        6.0.1
+version:        6.0.2
 synopsis:       Parse and generate Rocket League replays.
 description:    Rattletrap parses and generates Rocket League replays.
 category:       Game
@@ -15,7 +17,6 @@
 license:        MIT
 license-file:   LICENSE.markdown
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
     CHANGELOG.markdown
     package.yaml
@@ -272,15 +273,15 @@
   build-depends:
       aeson >=1.2.4 && <1.5
     , aeson-pretty >=0.8.5 && <0.9
-    , base >=4.11.1 && <4.12
+    , base >=4.11.1 && <4.13
     , binary >=0.8.5 && <0.9
     , binary-bits >=0.5 && <0.6
     , bytestring >=0.10.8 && <0.11
-    , containers >=0.5.10 && <0.6
+    , containers >=0.5.10 && <0.7
     , filepath >=1.4.1 && <1.5
     , http-client >=0.5.10 && <0.6
     , http-client-tls >=0.3.5 && <0.4
-    , template-haskell >=2.13.0 && <2.14
+    , template-haskell >=2.13.0 && <2.15
     , text >=1.2.3 && <1.3
     , transformers >=0.5.2 && <0.6
   default-language: Haskell2010
@@ -295,16 +296,16 @@
   build-depends:
       aeson >=1.2.4 && <1.5
     , aeson-pretty >=0.8.5 && <0.9
-    , base >=4.11.1 && <4.12
+    , base >=4.11.1 && <4.13
     , binary >=0.8.5 && <0.9
     , binary-bits >=0.5 && <0.6
     , bytestring >=0.10.8 && <0.11
-    , containers >=0.5.10 && <0.6
+    , containers >=0.5.10 && <0.7
     , filepath >=1.4.1 && <1.5
     , http-client >=0.5.10 && <0.6
     , http-client-tls >=0.3.5 && <0.4
     , rattletrap
-    , template-haskell >=2.13.0 && <2.14
+    , template-haskell >=2.13.0 && <2.15
     , text >=1.2.3 && <1.3
     , transformers >=0.5.2 && <0.6
   if flag(static)
@@ -323,16 +324,17 @@
       HUnit >=1.6.0 && <1.7
     , aeson >=1.2.4 && <1.5
     , aeson-pretty >=0.8.5 && <0.9
-    , base >=4.11.1 && <4.12
+    , base >=4.11.1 && <4.13
     , binary >=0.8.5 && <0.9
     , binary-bits >=0.5 && <0.6
     , bytestring >=0.10.8 && <0.11
-    , containers >=0.5.10 && <0.6
+    , clock >=0.7.2 && <0.8
+    , containers >=0.5.10 && <0.7
     , filepath >=1.4.1 && <1.5
     , http-client >=0.5.10 && <0.6
     , http-client-tls >=0.3.5 && <0.4
     , rattletrap
-    , template-haskell >=2.13.0 && <2.14
+    , template-haskell >=2.13.0 && <2.15
     , temporary >=1.2.1 && <1.4
     , text >=1.2.3 && <1.3
     , transformers >=0.5.2 && <0.6
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,1 +1,1 @@
-resolver: lts-12.0
+resolver: nightly-2018-11-01
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -5,11 +5,15 @@
 
 import qualified Control.Monad as Monad
 import qualified Data.ByteString.Lazy as Bytes
+import qualified Data.Int as Int
 import qualified Rattletrap.Console.Main as Rattletrap
+import qualified System.Clock as Clock
 import qualified System.Exit as Exit
 import qualified System.FilePath as Path
 import qualified System.IO.Temp as Temp
+import qualified System.Mem as Mem
 import qualified Test.HUnit as Test
+import qualified Text.Printf as Printf
 
 main :: IO ()
 main = Temp.withSystemTempDirectory "rattletrap-" (runTests . toTests)
@@ -39,14 +43,54 @@
     jsonFile = Path.joinPath [directory, Path.addExtension uuid ".json"]
     outputFile = Path.joinPath [directory, Path.addExtension uuid ".replay"]
   input <- Bytes.readFile inputFile
-  Rattletrap.rattletrap
-    ""
-    ["--compact", "--input", inputFile, "--output", jsonFile]
-  Rattletrap.rattletrap "" ["--input", jsonFile, "--output", outputFile]
+  putStrLn ("\t" <> uuid)
+  do
+    (((), allocated), elapsed) <- withElapsed
+      (withAllocations (decode inputFile jsonFile))
+    put "decoding" (Bytes.length input) (Clock.toNanoSecs elapsed) allocated
+  do
+    (((), allocated), elapsed) <- withElapsed
+      (withAllocations (encode jsonFile outputFile))
+    put "encoding" (Bytes.length input) (Clock.toNanoSecs elapsed) allocated
   output <- Bytes.readFile outputFile
   Monad.unless
     (output == input)
     (Test.assertFailure "output does not match input")
+
+put :: String -> Int.Int64 -> Integer -> Int.Int64 -> IO ()
+put label size elapsed allocated = Printf.printf
+  "%s %d byte%s took %d nanosecond%s (%.3f MB/s) and allocated %d byte%s (%d x)\n"
+  label
+  size
+  (if size == 1 then "" else "s")
+  elapsed
+  (if elapsed == 1 then "" else "s")
+  ((1e9 * fromIntegral size) / (1048576 * fromIntegral elapsed) :: Double)
+  allocated
+  (if allocated == 1 then "" else "s")
+  (div allocated size)
+
+decode :: FilePath -> FilePath -> IO ()
+decode input output =
+  Rattletrap.rattletrap "" ["--compact", "--input", input, "--output", output]
+
+encode :: FilePath -> FilePath -> IO ()
+encode input output =
+  Rattletrap.rattletrap "" ["--input", input, "--output", output]
+
+withAllocations :: IO a -> IO (a, Int.Int64)
+withAllocations action = do
+  before <- Mem.getAllocationCounter
+  result <- action
+  after <- Mem.getAllocationCounter
+  pure (result, before - after)
+
+withElapsed :: IO a -> IO (a, Clock.TimeSpec)
+withElapsed action = do
+  before <- Clock.getTime Clock.Monotonic
+  result <- action
+  after <- Clock.getTime Clock.Monotonic
+  pure (result, Clock.diffTimeSpec before after)
 
 replays :: [(String, String)]
 replays =
