moved iterator to public interface and added bidirectional_iterator_tag