technically only needs to be an object that support `__getitem__` with integers in a sensible way