add a RandomAccessIterator trait