tweak BidirectionalIterator RandomAccessIterator