Currently our InputStorage component uses a SmallVec to hold messages as they pass from one operation to another. This has been okay for performance, but it's possible that a channel-based approach could be superior. We should do some careful benchmarking and try out different message passing strategies to see what can achieve the best throughput.