directional iterator