so let's outline this unstable idea again - start with a region
often we look for the next hole starting at the first read. -> this gives a potential region of cached items -> then a potential partially cached item -> then a potential region of uncached items -> then a potential partially cached item again lots of short reads may have only 2 and 4 and these would be roughly identical there is possibly existing code for 3, and 1 is simple.