diff --git a/search/query2ast.py b/search/query2ast.py
index 235f9b3..40c5cdc 100644
--- a/search/query2ast.py
+++ b/search/query2ast.py
@@ -1,7 +1,6 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 """A set of functions that integrate the GAE search index with Monorail."""
 from __future__ import print_function
@@ -16,8 +15,8 @@
 
 from google.appengine.api import search
 
-from proto import ast_pb2
-from proto import tracker_pb2
+from mrproto import ast_pb2
+from mrproto import tracker_pb2
 
 
 # TODO(jrobbins): Consider re-implementing this whole file by using a
@@ -191,9 +190,9 @@
 def ParseUserQuery(
     query, scope, builtin_fields, harmonized_config, warnings=None,
     now=None):
-  # type: (str, str, Mapping[str, proto.tracker_pb2.FieldDef],
-  #   proto.tracker_pb2.ProjectIssueConfig, Sequence[str], int) ->
-  #     proto.ast_pb2.QueryAST
+  # type: (str, str, Mapping[str, mrproto.tracker_pb2.FieldDef],
+  #   mrproto.tracker_pb2.ProjectIssueConfig, Sequence[str], int) ->
+  #     mrproto.ast_pb2.QueryAST
   """Parse a user query and return a set of structure terms.
 
   Args:
@@ -251,8 +250,8 @@
 
 
 def _ParseConjunction(subquery, scope, fields, warnings, now=None):
-  # type: (str, str, Mapping[str, proto.tracker_pb2.FieldDef], Sequence[str],
-  #     int) -> proto.ast_pb2.Condition
+  # type: (str, str, Mapping[str, mrproto.tracker_pb2.FieldDef], Sequence[str],
+  #     int) -> mrproto.ast_pb2.Condition
   """Parse part of a user query into a Conjunction PB."""
   scoped_query = ('%s %s' % (scope, subquery)).lower()
   cond_strs = _ExtractConds(scoped_query, warnings)
@@ -263,8 +262,8 @@
 
 
 def _ParseCond(cond_str, fields, warnings, now=None):
-  # type: (str, Mapping[str, proto.tracker_pb2.FieldDef], Sequence[str],
-  #     int) -> proto.ast_pb2.Condition
+  # type: (str, Mapping[str, mrproto.tracker_pb2.FieldDef], Sequence[str],
+  #     int) -> mrproto.ast_pb2.Condition
   """Parse one user query condition string into a Condition PB."""
   op_match = OP_RE.match(cond_str)
   # Do not treat as key:value search terms if any of the special prefixes match.
@@ -308,8 +307,8 @@
 
 
 def _ParseStructuredTerm(prefix, op_str, value, fields, now=None):
-  # type: (str, str, str, Mapping[str, proto.tracker_pb2.FieldDef]) ->
-  #     proto.ast_pb2.Condition
+  # type: (str, str, str, Mapping[str, mrproto.tracker_pb2.FieldDef]) ->
+  #     mrproto.ast_pb2.Condition
   """Parse one user structured query term into an internal representation.
 
   Args:
@@ -571,7 +570,7 @@
 
 
 def _ParseQuery(token_iterator):
-  # type (Sequence[proto.ast_pb2.QueryToken]) -> Sequence[str]
+  # type (Sequence[mrproto.ast_pb2.QueryToken]) -> Sequence[str]
   """Recursive helper to convert query tokens into a list of subqueries.
 
   Parses a Query based on the following grammar (EBNF):
@@ -633,7 +632,7 @@
 
 
 def _ParseOrGroup(token_iterator):
-  # type (Sequence[proto.ast_pb2.QueryToken]) -> Sequence[str]
+  # type (Sequence[mrproto.ast_pb2.QueryToken]) -> Sequence[str]
   """Recursive helper to convert a single "OrGroup" into subqueries.
 
   An OrGroup here is based on the following grammar:
@@ -675,7 +674,7 @@
 
 
 def _ParseAndGroup(token_iterator):
-  # type (Sequence[proto.ast_pb2.QueryToken]) -> Sequence[str]
+  # type (Sequence[mrproto.ast_pb2.QueryToken]) -> Sequence[str]
   """Recursive helper to convert a single "AndGroup" into subqueries.
 
   An OrGroup here is based on the following grammar:
@@ -724,7 +723,7 @@
 
 
 def _ValidateAndTokenizeQuery(query):
-  # type: (str) -> Sequence[proto.ast_pb2.QueryToken]
+  # type: (str) -> Sequence[mrproto.ast_pb2.QueryToken]
   """Converts the input query into a set of tokens for easier parsing.
 
   Tokenizing the query string before parsing allows us to not have to as many
@@ -777,7 +776,7 @@
 
 
 def _TokenizeSubqueryOnOr(subquery):
-  # type: (str) -> Sequence[proto.ast_pb2.QueryToken]
+  # type: (str) -> Sequence[mrproto.ast_pb2.QueryToken]
   """Helper to split a subquery by OR and convert the result into tokens.
 
   Args:
@@ -872,10 +871,24 @@
       pass
     return 'End of PeekIterator'
 
+  def __next__(self):
+    # type: () -> Any
+    """Gets the next value in the iterator and increments pointer.
+
+    Returns:
+      Next value in iterator.
+
+    Raises:
+      StopIteration if you're at the end of the iterator.
+    """
+    return self.next()
+
   def next(self):
     # type: () -> Any
     """Gets the next value in the iterator and increments pointer.
 
+    For backwards compatibility with Python 2.
+
     Returns:
       Next value in iterator.
 
