diff --git a/README.md b/README.md
index a5c19225b9bb81c05928483ea34b5a5b5af214b3..f0aff85d84b7dc72917a77c6dc9dcf29237650f2 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# aiogremlin 0.0.4 [(gizmo grew up)](https://pypi.python.org/pypi/gizmo/0.1.12)
+# aiogremlin 0.0.5 [(gizmo grew up)](https://pypi.python.org/pypi/gizmo/0.1.12)
 
 `aiogremlin` is a **Python 3** driver for the the [Tinkerpop 3 Gremlin Server](http://www.tinkerpop.com/docs/3.0.0.M7/#gremlin-server). This module is built on [Asyncio](https://docs.python.org/3/library/asyncio.html). By default it uses the [aiohttp](http://aiohttp.readthedocs.org/en/v0.15.3/index.html) websocket client , but it is easy to plug in a different implementation. `aiogremlin` is currently in **alpha** mode, but all major functionality has test coverage.
 
diff --git a/aiogremlin/__init__.py b/aiogremlin/__init__.py
index e666a2bc0c31d612d6268c3e2bdf4b1580a84179..2a0601026dfe25244dfd021e4e3fb65778afd16b 100644
--- a/aiogremlin/__init__.py
+++ b/aiogremlin/__init__.py
@@ -1,6 +1,8 @@
 from .abc import AbstractFactory, AbstractConnection
 from .connection import (WebsocketPool, AiohttpFactory, BaseFactory,
     BaseConnection)
-from .client import GremlinClient, create_client
+from .client import (create_client, GremlinClient, GremlinResponse,
+    GremlinResponseStream)
 from .exceptions import RequestError, GremlinServerError, SocketClientError
-__version__ = "0.0.4dev"
+from .protocol import GremlinWriter
+__version__ = "0.0.5"
diff --git a/aiogremlin/client.py b/aiogremlin/client.py
index 1025ff06dfd56bc037970d74abb6525d2ed03e29..224a0f2f8636af87670811a2e552d9e294745170 100644
--- a/aiogremlin/client.py
+++ b/aiogremlin/client.py
@@ -109,9 +109,7 @@ class GremlinClient:
             connection = yield from self.pool.connect(self.uri, loop=self.loop)
         writer = GremlinWriter(connection)
         connection = yield from writer.write(message, binary=binary)
-        queue = connection.parser.set_parser(gremlin_response_parser,
-            output=aiohttp.DataQueue(loop=self._loop))
-        return GremlinResponse(connection, queue, loop=self._loop)
+        return GremlinResponse(connection, loop=self._loop)
 
     @asyncio.coroutine
     def execute(self, gremlin, bindings=None, lang=None,
@@ -128,9 +126,9 @@ class GremlinClient:
 
 class GremlinResponse:
 
-    def __init__(self, conn, queue, loop=None):
+    def __init__(self, conn, loop=None):
         self._loop = loop or asyncio.get_event_loop()
-        self._stream = GremlinResponseStream(conn, queue, loop=self._loop)
+        self._stream = GremlinResponseStream(conn, loop=self._loop)
 
     @property
     def stream(self):
@@ -155,23 +153,25 @@ class GremlinResponse:
 
 class GremlinResponseStream:
 
-    def __init__(self, conn, queue, loop=None):
+    def __init__(self, conn, loop=None):
         self._conn = conn
-        self._queue = queue
         self._loop = loop or asyncio.get_event_loop()
+        data_stream = aiohttp.DataQueue(loop=self._loop)
+        self._stream = self._conn.parser.set_parser(gremlin_response_parser,
+                                                    output=data_stream)
 
     @asyncio.coroutine
     def read(self):
         # For 3.0.0.M9
-        # if self._queue.at_eof():
+        # if self._stream.at_eof():
         #     self._conn.feed_pool()
         #     message = None
         # else:
         # This will be different 3.0.0.M9
         yield from self._conn._receive()
-        if self._queue.is_eof():
+        if self._stream.is_eof():
             self._conn.feed_pool()
             message = None
         else:
-            message = yield from self._queue.read()
+            message = yield from self._stream.read()
         return message
diff --git a/benchmarks/__init__.py b/benchmarks/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/benchmarks/client_bench.py b/benchmarks/client_bench.py
new file mode 100644
index 0000000000000000000000000000000000000000..7fb8843ce89fc2cd19ecd083b38d985dcb1a6168
--- /dev/null
+++ b/benchmarks/client_bench.py
@@ -0,0 +1,42 @@
+import asyncio
+import collections
+
+from aiogremlin import GremlinClient
+
+
+@asyncio.coroutine
+def attack(loop):
+
+    client = GremlinClient(loop=loop, poolsize=1000)
+    execute = client.execute
+
+    out_times = collections.deque()
+    processed_count = 0
+
+    @asyncio.coroutine
+    def do_bomb():
+        nonlocal processed_count
+        try:
+            t1 = loop.time()
+            resp = yield from execute("1 + 1")
+            assert resp[0].status_code == 200, resp[0].status_code
+            t2 = loop.time()
+            out_times.append(t2 - t1)
+            processed_count += 1
+        except Exception:
+            print("an exception occurred {}".format(resp[0].status_code))
+
+    bombers = []
+    for i in range(10000):
+        bomber = asyncio.async(do_bomb())
+        bombers.append(bomber)
+
+    t1 = loop.time()
+    yield from asyncio.gather(*bombers, loop=loop)
+    t2 = loop.time()
+    rps = processed_count / (t2 - t1)
+    print("Benchmark complete: {} rps".format(rps))
+
+if __name__ == "__main__":
+    loop = asyncio.get_event_loop()
+    loop.run_until_complete(attack(loop))
diff --git a/changes.txt b/changes.txt
index 2fbf42b17c05ee7a2fe8f01d31b6f6552f445aaa..4f67059143f40430de765e6c669a0a09d3dee547 100644
--- a/changes.txt
+++ b/changes.txt
@@ -2,3 +2,4 @@
 0.0.2 - 5/1/2015: Added an init_pool method and a create_client constructor.
 0.0.3 - 5/2/2015: Using ujson for serialization.
 0.0.4 - 5/12/2015: Added support for sessions.
+0.0.5 - 5/13/2015: Using EofStream terminator technique to prepare for 3.0.0.M9
diff --git a/setup.py b/setup.py
index 01a7bd91490adc083ae3f1e279a31244c97ff6df..3d9b70a07044dbbf2fe84f84dea3447efab793d6 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@ from setuptools import setup
 
 setup(
     name="aiogremlin",
-    version="0.0.4",
+    version="0.0.5",
     url="",
     license="MIT",
     author="davebshow",