diff --git a/goblin/session.py b/goblin/session.py
index b2aa5ee7931ef6adb510f5b08548771a8d4655c7..ba7220b1f3c35efc7fc35740cded0ce57e0a2e80 100644
--- a/goblin/session.py
+++ b/goblin/session.py
@@ -282,7 +282,10 @@ class Session(connection.AbstractConnection):
 
         :param goblin.element.Edge edge: Element to be removed
         """
-        traversal = self._g.E(Binding('eid', edge.id)).drop()
+        eid = edge.id
+        if isinstance(eid, dict):
+            eid = Binding('eid', edge.id)
+        traversal = self._g.E(eid).drop()
         result = await self._simple_traversal(traversal, edge)
         hashable_id = self._get_hashable_id(edge.id)
         edge = self.current.pop(hashable_id)
@@ -359,9 +362,12 @@ class Session(connection.AbstractConnection):
 
         :returns: :py:class:`Edge<goblin.element.Edge>` | None
         """
-        result = await self.g.E(Binding('eid', edge.id)).oneOrNone()
+        eid = edge.id
+        if isinstance(eid, dict):
+            eid = Binding('eid', edge.id)
+        return await self.g.E(eid).oneOrNone()
+
 
-        return result
 
     async def update_vertex(self, vertex):
         """
@@ -384,7 +390,10 @@ class Session(connection.AbstractConnection):
         :returns: :py:class:`Edge<goblin.element.Edge>` object
         """
         props = mapper.map_props_to_db(edge, edge.__mapping__)
-        traversal = self._g.E(Binding('eid', edge.id))
+        eid = edge.id
+        if isinstance(eid, dict):
+            eid = Binding('eid', edge.id)
+        traversal = self._g.E(eid)
         return await self._update_edge_properties(edge, traversal, props)
 
     # Transaction support
@@ -454,8 +463,10 @@ class Session(connection.AbstractConnection):
 
     async def _check_edge(self, edge):
         """Used to check for existence, does not update session edge"""
-        msg = await self._g.E(Binding('eid', edge.id)).oneOrNone()
-        return msg
+        eid = edge.id
+        if isinstance(eid, dict):
+            eid = Binding('eid', edge.id)
+        return await self._g.E(eid).oneOrNone()
 
     async def _update_vertex_properties(self, vertex, traversal, props):
         traversal, removals, metaprops = self._add_properties(traversal, props)
@@ -473,8 +484,11 @@ class Session(connection.AbstractConnection):
 
     async def _update_edge_properties(self, edge, traversal, props):
         traversal, removals, _ = self._add_properties(traversal, props)
+        eid = edge.id
+        if isinstance(eid, dict):
+            eid = Binding('eid', edge.id)
         for k in removals:
-            await self._g.E(Binding('eid', edge.id)).properties(k).drop().oneOrNone()
+            await self._g.E(eid).properties(k).drop().oneOrNone()
         return await self._simple_traversal(traversal, edge)
 
     async def _add_metaprops(self, result, metaprops):
diff --git a/tests/test_properties.py b/tests/test_properties.py
index 55e5032f7c16591c99d1abd0f9421c34598ec82c..d532cb365eb980ee5c4faa4a2afc66c17a33d091 100644
--- a/tests/test_properties.py
+++ b/tests/test_properties.py
@@ -18,7 +18,7 @@
 import pytest
 
 from goblin import element, exception, manager, properties
-from gremlin_python.structure.io.graphson import long
+from gremlin_python.statics import long
 
 
 def test_set_change_property(person, lives_in):