Switched from `String`s to `Data.ByteString`, so string operations that were previously assumed to be `O(1)` now actually are.