semi-working ViewportIterator