diff --git a/goblin/api.py b/goblin/api.py
index f5faec2de8bae608a5768c6792b7950e9dc4c1ed..2771d0e3adfe3e113ea8f8582aef01488bd82cc4 100644
--- a/goblin/api.py
+++ b/goblin/api.py
@@ -155,17 +155,17 @@ class Session:
 
     def _get_vertex_by_id(self, element):
         traversal = self.g.V(element.id)
-        return self._parse_traversal(traversal)
+        return query.parse_traversal(traversal)
 
     def _get_edge_by_id(self, element):
         traversal = self.g.E(element.id)
-        return self._parse_traversal(traversal)
+        return query.parse_traversal(traversal)
 
     def _create_vertex(self, element):
         props = mapper.map_props_to_db(element, element.__mapping__)
         traversal = self.g.addV(element.__mapping__.label)
         traversal = self._add_properties(traversal, props)
-        return self._parse_traversal(traversal)
+        return query.parse_traversal(traversal)
 
     def _update_vertex(self, element):
         raise NotImplementedError
@@ -176,7 +176,7 @@ class Session:
         traversal = traversal.addE(element.__mapping__._label)
         traversal = traversal.to(self.g.V(element.target.id))
         traversal = self._add_properties(traversal, props)
-        return self._parse_traversal(traversal)
+        return query.parse_traversal(traversal)
 
     def _update_edge(self, element):
         raise NotImplementedError
@@ -189,11 +189,6 @@ class Session:
         self._binding = 0
         return traversal
 
-    def _parse_traversal(self, traversal):
-        script = traversal.translator.traversal_script
-        bindings = traversal.bindings
-        return script, bindings
-
     async def commit(self):
         raise NotImplementedError
 
diff --git a/goblin/query.py b/goblin/query.py
index 8d3ab1ed66dc5603fada06b5e6837a6241c85f53..7c49515ca66db96626f8189c40bedbfac09f65bc 100644
--- a/goblin/query.py
+++ b/goblin/query.py
@@ -1,3 +1,11 @@
+"""Query API and helpers"""
+
+
+def parse_traversal(traversal):
+    script = traversal.translator.traversal_script
+    bindings = traversal.bindings
+    return script, bindings
+
 class Query:
 
     def __init__(self, session, element_class):
@@ -18,9 +26,9 @@ class Query:
 
     # Methods that issue a query
     async def all(self):
-        script = self._traversal.translator.traversal_script
+        script, bindings = parse_traversal(self._traversal)
         stream = await self._engine.execute(
-            script, bindings=self._traversal.bindings)
+            script, bindings=bindings)
         # This should return and async iterator wrapper that can see and update
         # parent session object, but for the demo it works
         return stream