diff --git a/setup.py b/setup.py
index e6004dbcbe44e8a78b812589379664722960ae27..683ef02ff6680b2d80f63b500370b361cc31640c 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ from setuptools import setup
 
 setup(
     name='aiogremlin',
-    version='3.2.6rc2',
+    version='3.2.6',
     url='',
     license='Apache Software License',
     author='davebshow',
@@ -18,10 +18,10 @@ setup(
               'aiogremlin.structure',
               'aiogremlin.remote'],
     install_requires=[
-        'aenum==1.4.5',  # required gremlinpython dep
-        'aiohttp==2.2.5',
-        'PyYAML==3.12',
-        'six==1.10.0'  # required gremlinpython dep
+        'aenum>=1.4.5',  # required gremlinpython dep
+        'aiohttp>=2.2.5',
+        'PyYAML>=3.12',
+        'six>=1.10.0'  # required gremlinpython dep
     ],
     test_suite='tests',
     setup_requires=['pytest-runner'],
diff --git a/tests/test_gremlin_python/__init__.py b/tests/test_gremlin_python/__init__.py
deleted file mode 100644
index 6df110081846e563a662bdf254f6640f35d621b2..0000000000000000000000000000000000000000
--- a/tests/test_gremlin_python/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-'''
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
diff --git a/tests/test_gremlin_python/structure/__init__.py b/tests/test_gremlin_python/structure/__init__.py
deleted file mode 100644
index 6df110081846e563a662bdf254f6640f35d621b2..0000000000000000000000000000000000000000
--- a/tests/test_gremlin_python/structure/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-'''
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
diff --git a/tests/test_gremlin_python/structure/io/__init__.py b/tests/test_gremlin_python/structure/io/__init__.py
deleted file mode 100644
index 6df110081846e563a662bdf254f6640f35d621b2..0000000000000000000000000000000000000000
--- a/tests/test_gremlin_python/structure/io/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-'''
-
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
diff --git a/tests/test_gremlin_python/structure/io/test_graphson.py b/tests/test_gremlin_python/structure/io/test_graphson.py
deleted file mode 100644
index 77030023ab6441f2eef357c0f29dbeb9316d0b7a..0000000000000000000000000000000000000000
--- a/tests/test_gremlin_python/structure/io/test_graphson.py
+++ /dev/null
@@ -1,206 +0,0 @@
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-'''
-'''THIS FILE HAS BEEN MODIFIED BY DAVID M. BROWN TO SUPPORT PEP 492'''
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
-
-import json
-from mock import Mock
-import unittest
-from unittest import TestCase
-
-from gremlin_python.statics import *
-from gremlin_python.structure.graph import Vertex
-from gremlin_python.structure.graph import Path
-from gremlin_python.structure.io.graphson import GraphSONWriter, GraphSONReader, GraphSONUtil
-import gremlin_python.structure.io.graphson
-from gremlin_python.process.traversal import P
-from gremlin_python.process.strategies import SubgraphStrategy
-from gremlin_python.process.graph_traversal import __
-
-
-class TestGraphSONReader(TestCase):
-    graphson_reader = GraphSONReader()
-
-    def test_number_input(self):
-        x = self.graphson_reader.readObject(json.dumps({
-            "@type": "g:Int32",
-            "@value": 31
-        }))
-        assert isinstance(x, int)
-        assert 31 == x
-        ##
-        x = self.graphson_reader.readObject(json.dumps({
-            "@type": "g:Int64",
-            "@value": 31
-        }))
-        assert isinstance(x, long)
-        assert long(31) == x
-        ##
-        x = self.graphson_reader.readObject(json.dumps({
-            "@type": "g:Float",
-            "@value": 31.3
-        }))
-        assert isinstance(x, float)
-        assert 31.3 == x
-        ##
-        x = self.graphson_reader.readObject(json.dumps({
-            "@type": "g:Double",
-            "@value": 31.2
-        }))
-        assert isinstance(x, float)
-        assert 31.2 == x
-
-    def test_graph(self):
-        vertex = self.graphson_reader.readObject(
-            """{"@type":"g:Vertex", "@value":{"id":{"@type":"g:Int32","@value":1},"label":"person","outE":{"created":[{"id":{"@type":"g:Int32","@value":9},"inV":{"@type":"g:Int32","@value":3},"properties":{"weight":{"@type":"g:Double","@value":0.4}}}],"knows":[{"id":{"@type":"g:Int32","@value":7},"inV":{"@type":"g:Int32","@value":2},"properties":{"weight":{"@type":"g:Double","@value":0.5}}},{"id":{"@type":"g:Int32","@value":8},"inV":{"@type":"g:Int32","@value":4},"properties":{"weight":{"@type":"g:Double","@value":1.0}}}]},"properties":{"name":[{"id":{"@type":"g:Int64","@value":0},"value":"marko"}],"age":[{"id":{"@type":"g:Int64","@value":1},"value":{"@type":"g:Int32","@value":29}}]}}}""")
-        assert isinstance(vertex, Vertex)
-        assert "person" == vertex.label
-        assert 1 == vertex.id
-        assert isinstance(vertex.id, int)
-        assert vertex == Vertex(1)
-
-    def test_path(self):
-        path = self.graphson_reader.readObject(
-            """{"@type":"g:Path","@value":{"labels":[["a"],["b","c"],[]],"objects":[{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":1},"label":"person","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":0},"value":"marko","label":"name"}}],"age":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":1},"value":{"@type":"g:Int32","@value":29},"label":"age"}}]}}},{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":3},"label":"software","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":4},"value":"lop","label":"name"}}],"lang":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":5},"value":"java","label":"lang"}}]}}},"lop"]}}"""
-        )
-        assert isinstance(path, Path)
-        assert "[v[1], v[3], 'lop']" == str(path)
-        assert Vertex(1) == path[0]
-        assert Vertex(1) == path["a"]
-        assert "lop" == path[2]
-        assert 3 == len(path)
-
-    def test_custom_mapping(self):
-
-        # extended mapping
-        class X(object):
-            pass
-
-        type_string = "test:Xtype"
-        override_string = "g:Int64"
-        serdes = Mock()
-
-        reader = GraphSONReader(deserializer_map={type_string: serdes})
-        assert type_string in reader.deserializers
-
-        # base dicts are not modified
-        assert type_string not in gremlin_python.structure.io.graphson._deserializers
-
-        x = X()
-        o = reader.toObject({GraphSONUtil.TYPE_KEY: type_string, GraphSONUtil.VALUE_KEY: x})
-        serdes.objectify.assert_called_once_with(x, reader)
-        assert o is serdes.objectify()
-
-        # overridden mapping
-        type_string = "g:Int64"
-        serdes = Mock()
-        reader = GraphSONReader(deserializer_map={type_string: serdes, override_string: serdes})
-        assert gremlin_python.structure.io.graphson._deserializers[type_string] is not reader.deserializers[type_string]
-
-        value = 3
-        o = reader.toObject({GraphSONUtil.TYPE_KEY: type_string, GraphSONUtil.VALUE_KEY: value})
-        serdes.objectify.assert_called_once_with(value, reader)
-        assert o is serdes.objectify()
-
-
-class TestGraphSONWriter(TestCase):
-
-    graphson_writer = GraphSONWriter()
-
-    def test_number_output(self):
-        assert {"@type":"g:Int64","@value":2} == json.loads(self.graphson_writer.writeObject(long(2)))
-        assert {"@type":"g:Int32","@value":1} == json.loads(self.graphson_writer.writeObject(1))
-        assert {"@type":"g:Double","@value":3.2} == json.loads(self.graphson_writer.writeObject(3.2))
-        assert """true""" == self.graphson_writer.writeObject(True)
-
-    def test_numbers(self):
-        assert {"@type": "g:Int64", "@value": 2} == json.loads(self.graphson_writer.writeObject(long(2)))
-        assert {"@type": "g:Int32", "@value": 1} == json.loads(self.graphson_writer.writeObject(1))
-        assert {"@type": "g:Double", "@value": 3.2} == json.loads(self.graphson_writer.writeObject(3.2))
-        assert """true""" == self.graphson_writer.writeObject(True)
-
-    def test_P(self):
-        result = {'@type': 'g:P',
-                  '@value': {
-                     'predicate': 'and',
-                     'value': [{
-                        '@type': 'g:P',
-                        '@value': {
-                            'predicate': 'or',
-                            'value': [{
-                                '@type': 'g:P',
-                                '@value': {'predicate': 'lt', 'value': 'b'}
-                            },
-                            {'@type': 'g:P', '@value': {'predicate': 'gt', 'value': 'c'}}
-                            ]
-                        }
-                    },
-                    {'@type': 'g:P', '@value': {'predicate': 'neq', 'value': 'd'}}]}}
-
-        assert  result == json.loads(
-            self.graphson_writer.writeObject(P.lt("b").or_(P.gt("c")).and_(P.neq("d"))))
-
-    def test_strategies(self):
-        # we have a proxy model for now given that we don't want to have to have g:XXX all registered on the Gremlin traversal machine (yet)
-        assert {"@type": "g:SubgraphStrategy", "@value": {}} == json.loads(self.graphson_writer.writeObject(SubgraphStrategy))
-        assert {"@type": "g:SubgraphStrategy", "@value": {
-            "vertices": {"@type": "g:Bytecode", "@value": {"step": [["has", "name", "marko"]]}}}} == json.loads(
-            self.graphson_writer.writeObject(SubgraphStrategy(vertices=__.has("name", "marko"))))
-
-    def test_custom_mapping(self):
-
-        # extended mapping
-        class X(object):
-            pass
-
-        serdes = Mock()
-        writer = GraphSONWriter(serializer_map={X: serdes})
-        assert X in writer.serializers
-
-        # base dicts are not modified
-        assert X not in gremlin_python.structure.io.graphson._serializers
-
-        obj = X()
-        d = writer.toDict(obj)
-        serdes.dictify.assert_called_once_with(obj, writer)
-        assert d is serdes.dictify()
-
-        # overridden mapping
-        serdes = Mock()
-        writer = GraphSONWriter(serializer_map={int: serdes})
-        assert gremlin_python.structure.io.graphson._serializers[int] is not writer.serializers[int]
-
-        value = 3
-        d = writer.toDict(value)
-        serdes.dictify.assert_called_once_with(value, writer)
-        assert d is serdes.dictify()
-
-    def test_write_long(self):
-
-        mapping = self.graphson_writer.toDict(1)
-        assert mapping['@type'] == 'g:Int32'
-        assert mapping['@value'] == 1
-
-        mapping = self.graphson_writer.toDict(long(1))
-        assert mapping['@type'] == 'g:Int64'
-        assert mapping['@value'] == 1
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/tests/test_gremlin_python/structure/test_graph.py b/tests/test_gremlin_python/structure/test_graph.py
deleted file mode 100644
index 803c340564c0716f9b842dbdf2a6248c7e9cae0d..0000000000000000000000000000000000000000
--- a/tests/test_gremlin_python/structure/test_graph.py
+++ /dev/null
@@ -1,116 +0,0 @@
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-'''
-'''THIS FILE HAS BEEN MODIFIED BY DAVID M. BROWN TO SUPPORT PEP 492'''
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
-
-import unittest
-from unittest import TestCase
-
-from gremlin_python.statics import long
-from gremlin_python.structure.graph import Edge
-from gremlin_python.structure.graph import Property
-from gremlin_python.structure.graph import Vertex
-from gremlin_python.structure.graph import VertexProperty
-from gremlin_python.structure.graph import Path
-
-
-class TestGraph(TestCase):
-    def test_graph_objects(self):
-        vertex = Vertex(1)
-        assert "v[1]" == str(vertex)
-        assert "vertex" == vertex.label
-        assert "person" == Vertex(1, "person").label
-        assert vertex == Vertex(1)
-        #
-        edge = Edge(2, Vertex(1), "said", Vertex("hello", "phrase"))
-        assert "e[2][1-said->hello]" == str(edge)
-        assert Vertex(1) == edge.outV
-        assert Vertex("hello") == edge.inV
-        assert "said" == edge.label
-        assert "phrase" == edge.inV.label
-        assert edge.inV != edge.outV
-        #
-        vertex_property = VertexProperty(long(24), "name", "marko")
-        assert "vp[name->marko]" == str(vertex_property)
-        assert "name" == vertex_property.label
-        assert "name" == vertex_property.key
-        assert "marko" == vertex_property.value
-        assert long(24) == vertex_property.id
-        assert isinstance(vertex_property.id, long)
-        assert vertex_property == VertexProperty(long(24), "name", "marko")
-        #
-        property = Property("age", 29)
-        assert "p[age->29]" == str(property)
-        assert "age" == property.key
-        assert 29 == property.value
-        assert isinstance(property.value, int)
-        assert property == Property("age", 29)
-        #
-        for i in [vertex, edge, vertex_property, property]:
-            for j in [vertex, edge, vertex_property, property]:
-                if type(i) != type(j):
-                    assert i != j
-                else:
-                    assert i == j
-                    assert i.__hash__() == hash(i)
-
-    def test_path(self):
-        path = Path([set(["a", "b"]), set(["c", "b"]), set([])], [1, Vertex(1), "hello"])
-        assert "[1, v[1], 'hello']" == str(path)
-        assert 1 == path["a"]
-        assert Vertex(1) == path["c"]
-        assert [1, Vertex(1)] == path["b"]
-        assert path[0] == 1
-        assert path[1] == Vertex(1)
-        assert path[2] == "hello"
-        assert 3 == len(path)
-        assert "hello" in path
-        assert "goodbye" not in path
-        assert Vertex(1) in path
-        assert Vertex(123) not in path
-        #
-        try:
-            temp = path[3]
-            raise Exception("Accessing beyond the list index should throw an index error")
-        except IndexError:
-            pass
-        #
-        try:
-            temp = path["zz"]
-            raise Exception("Accessing nothing should throw a key error")
-        except KeyError:
-            pass
-        #
-        try:
-            temp = path[1:2]
-            raise Exception("Accessing using slices should throw a type error")
-        except TypeError:
-            pass
-        #
-        assert path == path
-        assert hash(path) == hash(path)
-        path2 = Path([set(["a", "b"]), set(["c", "b"]), set([])], [1, Vertex(1), "hello"])
-        assert path == path2
-        assert hash(path) == hash(path2)
-        assert path != Path([set(["a"]), set(["c", "b"]), set([])], [1, Vertex(1), "hello"])
-        assert path != Path([set(["a", "b"]), set(["c", "b"]), set([])], [3, Vertex(1), "hello"])
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/tests/test_gremlin_python/test_statics.py b/tests/test_gremlin_python/test_statics.py
deleted file mode 100644
index 6a160e270a05fc10025de80c44a94fe4f16793e8..0000000000000000000000000000000000000000
--- a/tests/test_gremlin_python/test_statics.py
+++ /dev/null
@@ -1,46 +0,0 @@
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-'''
-'''THIS FILE HAS BEEN MODIFIED BY DAVID M. BROWN TO SUPPORT PEP 492'''
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
-
-import unittest
-from unittest import TestCase
-
-from gremlin_python import statics
-from gremlin_python.process.traversal import Cardinality
-from gremlin_python.process.traversal import P
-from gremlin_python.process.traversal import Pop
-
-
-class TestStatics(TestCase):
-    def test_enums(self):
-        statics.load_statics(globals())
-        assert isinstance(list_, Cardinality)
-        assert list_ is Cardinality.list_
-        #
-        assert isinstance(eq(2), P)
-        assert eq(2) == P.eq(2)
-        #
-        assert isinstance(first, Pop)
-        assert first == Pop.first
-        statics.unload_statics(globals())
-
-
-if __name__ == '__main__':
-    unittest.main()