It's true that we can get rid of batchStream and compressedStream, but keeping them around makes the composition of all the streams more explicit. Also, there aren't that many streams above batchStream, so the amount of duplicate code is very minimal and is unlikely to expand in the future. For these reasons I prefer to keep it as is (though this is really a borderline case).