starting counting at 0 is mainly because
start + index * offset
points to `start` when `offset` is 0 (ie, array indexing in C and other languages with 'direct' memory access).Any other reason?