diff --git a/aiogremlin/driver/protocol.py b/aiogremlin/driver/protocol.py
index 97f1292d82a4b228dac40a88df756c2e9c980f5a..277dc36f14e13beb496cb0a37dc3bb51ebd73af0 100644
--- a/aiogremlin/driver/protocol.py
+++ b/aiogremlin/driver/protocol.py
@@ -50,9 +50,13 @@ class GremlinServerWSProtocol(protocol.AbstractBaseProtocol):
         msg = message['status']['message']
         if request_id in results_dict:
             result_set = results_dict[request_id]
-            aggregate_to = message['result']['meta'].get('aggregateTo',
-                                                         'list')
+            meta_aggregate_to = message['result']['meta']['@value']
+            if len(meta_aggregate_to) > 1:
+                aggregate_to = meta_aggregate_to[1]
+            else:
+                aggregate_to = 'list'
             result_set.aggregate_to = aggregate_to
+
             if status_code == 407:
                 auth = b''.join([b'\x00', self._username.encode('utf-8'),
                                  b'\x00', self._password.encode('utf-8')])
@@ -64,10 +68,16 @@ class GremlinServerWSProtocol(protocol.AbstractBaseProtocol):
                 result_set.queue_result(None)
             else:
                 if data:
-                    for result in data:
-                        result = self._message_serializer.deserialize_message(result)
-                        message = Message(status_code, result, msg)
-                        result_set.queue_result(message)
+                    if self._message_serializer.version == b"application/vnd.gremlin-v2.0+json":
+                        for result in data:
+                            result = self._message_serializer.deserialize_message(result)
+                            message = Message(status_code, result, msg)
+                            result_set.queue_result(message)
+                    else:
+                        results = self._message_serializer.deserialize_message(data['@value'])
+                        for result in results:
+                            message = Message(status_code, result, msg)
+                            result_set.queue_result(message)
                 else:
                     data = self._message_serializer.deserialize_message(data)
                     message = Message(status_code, data, msg)
diff --git a/requirements.txt b/requirements.txt
index f5fd80c8093647e552bd88e8ae291f274d1c0d85..efdf3407b2352c27afe486c67c96a8932d6f54fa 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1 @@
-gremlinpython==3.2.6
+gremlinpython==3.3.0
diff --git a/setup.py b/setup.py
index 93ba86efe801bcd5f85ca3e442112bb7398fe204..307536f48da898c5c00dd135a4103104cf2e23e6 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ from setuptools import setup
 
 setup(
     name='aiogremlin',
-    version='3.2.7',
+    version='3.3.0',
     url='',
     license='Apache Software License',
     author='davebshow',