How things used to work is that incremental comparison was accomplished by having the block size read (from a gallery), and the block size written to an output be perfectly in synch. Also, due to the use of global block size, supporting non-square blocks wasn't really possible (we couldn't read m templates from 1 gallery, and n form another then compare them). This didn't really matter (or at least no additional I/O was used due to the square blocks) since both galleries were kept in memory, but this branch moves away from that, and only keeps 1 complete gallery in memory.