Major refactoring of the code as we moved from a "full download" model to a "buffered streaming" model. Items are divided into fixed-size chunks, and users only fetch enough to fill a viewing buffer, requesting more as they finish watching the previous ones. However, this makes the simulation much more computationally intensive. The division of items into chunk can be disabled by setting the chunk-size parameter to 0.