it looks like (end - start) must be equal to size()