diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8cc09b67ca894957d51aa2b0412d61b7e223d049..6832aeb16df1a8af168f58cece931a16d6178316 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,8 +3,7 @@
 ## 2.1.0
 
 * Fixed a bug where an exception was thrown when using the @Adjacency annotation on outgoing adjacencies for add*, set*, and remove*.
-* Added the ability to use as and back gremline pipe methods with named marks.
-* Added hasType to the gremlin pipeline.
+* Added has and hasNot keyed to type to the gremlin pipeline.
 * Switched over to using the Syncleus parent POM.
 * renamed the pipeline map method to propertyMap to reflect the TP3 interfaces.
 
diff --git a/src/main/java/com/syncleus/ferma/traversals/AbstractEdgeTraversal.java b/src/main/java/com/syncleus/ferma/traversals/AbstractEdgeTraversal.java
index 20fbb4a9cd155ad04ff21d79ecb3da36fb94d9e9..75d19cbedff6287de0d99af8a38e1d5909ceb45c 100644
--- a/src/main/java/com/syncleus/ferma/traversals/AbstractEdgeTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/AbstractEdgeTraversal.java
@@ -223,8 +223,8 @@ abstract class AbstractEdgeTraversal<C, S, M> extends AbstractTraversal<EdgeFram
     }
 
     @Override
-    public EdgeTraversal<C, S, ? extends EdgeTraversal<C, S, M>> as(final String name) {
-        return (EdgeTraversal<C, S, ? extends EdgeTraversal<C, S, M>>) super.as(name);
+    public EdgeTraversal<?, ?, M> as(final String name) {
+        return (EdgeTraversal) super.as(name);
     }
 
     @Override
diff --git a/src/main/java/com/syncleus/ferma/traversals/AbstractTraversal.java b/src/main/java/com/syncleus/ferma/traversals/AbstractTraversal.java
index 719ed89b588fdb0ff693923bf0bb724bc3905bbd..fa34972e2199556c3a02f767a711ee7b30cf3937 100644
--- a/src/main/java/com/syncleus/ferma/traversals/AbstractTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/AbstractTraversal.java
@@ -112,9 +112,9 @@ abstract class AbstractTraversal<T, C, S, M> implements Traversal<T, C, S, M> {
     }
 
     @Override
-    public Traversal<T, C, S, ? extends Traversal<T, C, S, M>> as(final String name) {
+    public Traversal<T, ?, ?, M> as(final String name) {
         getPipeline().as(name);
-        return (Traversal<T, C, S, ? extends Traversal<T, C, S, M>>) this;
+        return this;
     }
 
     @Override
@@ -726,12 +726,6 @@ abstract class AbstractTraversal<T, C, S, M> implements Traversal<T, C, S, M> {
         return (M) mark.traversal;
     }
 
-    @Override
-    public M back(final String name) {
-        getPipeline().back(name);
-        return (M) this;
-    }
-
     @Override
     public M optional() {
         final MarkId mark = popMark();
diff --git a/src/main/java/com/syncleus/ferma/traversals/AbstractVertexTraversal.java b/src/main/java/com/syncleus/ferma/traversals/AbstractVertexTraversal.java
index a92cf7edadec89db7635de9f9c8ef8f42791bc8b..933ea36718061dce898dc61643998aa054834eab 100644
--- a/src/main/java/com/syncleus/ferma/traversals/AbstractVertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/AbstractVertexTraversal.java
@@ -575,8 +575,8 @@ abstract class AbstractVertexTraversal<C, S, M> extends AbstractTraversal<Vertex
     }
 
     @Override
-    public VertexTraversal<C, S, ? extends VertexTraversal<C, S, M>> as(final String name) {
-        return (VertexTraversal<C, S, ? extends VertexTraversal<C, S, M>>) super.as(name);
+    public VertexTraversal<?, ?, M> as(final String name) {
+        return (VertexTraversal<?, ?, M>) super.as(name);
     }
 
     @Override
diff --git a/src/main/java/com/syncleus/ferma/traversals/EdgeTraversal.java b/src/main/java/com/syncleus/ferma/traversals/EdgeTraversal.java
index ee8d65a1d731004836510cf6fb8bb43c92c076c1..bafcfd7a756f4ad500bf58d738ddf7c84e47644b 100644
--- a/src/main/java/com/syncleus/ferma/traversals/EdgeTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/EdgeTraversal.java
@@ -469,7 +469,7 @@ public interface EdgeTraversal<C, S, M> extends Traversal<EdgeFrame, C, S, M> {
     EdgeTraversal<?, ?, M> order(Comparator<? super EdgeFrame> compareFunction);
 
     @Override
-    EdgeTraversal<C, S, ? extends EdgeTraversal<C, S, M>> as(String name);
+    EdgeTraversal<?, ?, M> as(String name);
 
     @Override
     EdgeTraversal<?, ?, M> simplePath();
diff --git a/src/main/java/com/syncleus/ferma/traversals/GlobalVertexTraversal.java b/src/main/java/com/syncleus/ferma/traversals/GlobalVertexTraversal.java
index 4ddf20b1c5d46d664e36fda86f809022ebbd48d5..aa1ae6957808a8e7a85a078e6edf161362fd7232 100644
--- a/src/main/java/com/syncleus/ferma/traversals/GlobalVertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/GlobalVertexTraversal.java
@@ -655,7 +655,7 @@ public class GlobalVertexTraversal<C, S, M> implements VertexTraversal<C, S, M>
     }
 
     @Override
-    public VertexTraversal<C, S, ? extends VertexTraversal<C, S, M>> as(final String name) {
+    public VertexTraversal<?, ?, M> as(final String name) {
         return this.simpleDelegate().as(name);
     }
 
@@ -774,11 +774,6 @@ public class GlobalVertexTraversal<C, S, M> implements VertexTraversal<C, S, M>
         return this.simpleDelegate().back();
     }
 
-    @Override
-    public M back(final String name) {
-        return this.simpleDelegate().back(name);
-    }
-
     @Override
     public Traversal<Path, ?, ?, M> path(final TraversalFunction<?, ?>... pathFunctions) {
         return this.simpleDelegate().path(pathFunctions);
diff --git a/src/main/java/com/syncleus/ferma/traversals/Traversal.java b/src/main/java/com/syncleus/ferma/traversals/Traversal.java
index 6399df0b4652f13bd10881b47c0dcc11911c7732..017fd5bf23fe194d47a22bcb18bd2d906326c4eb 100644
--- a/src/main/java/com/syncleus/ferma/traversals/Traversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/Traversal.java
@@ -632,7 +632,7 @@ public interface Traversal<T, C, S, M> extends Iterator<T>, Iterable<T> {
      *            the name of the AsPipe
      * @return the extended Pipeline
      */
-    Traversal<T, C, S, ? extends Traversal<T, C, S, M>> as(String name);
+    Traversal<T, ?, ?, M> as(String name);
 
     /**
      * If the object's path is repeating (looping), then the object is filtered.
@@ -643,13 +643,6 @@ public interface Traversal<T, C, S, M> extends Iterator<T>, Iterable<T> {
      */
     Traversal<T, ?, ?, M> simplePath();
 
-    /**
-     * The object that was marked with the specific name is emitted.
-     *
-     * @return the extended Pipeline
-     */
-    M back(String name);
-
     /**
      * The object that was seen at the topmost marked step is emitted. The mark step is removed from the stack.
      *
diff --git a/src/main/java/com/syncleus/ferma/traversals/VertexTraversal.java b/src/main/java/com/syncleus/ferma/traversals/VertexTraversal.java
index a2fe22d564b89d2890da64c8c7ace932b1b9a0a1..03e36a8c3229ef7b24608fabeb35abea2eb5dc82 100644
--- a/src/main/java/com/syncleus/ferma/traversals/VertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/VertexTraversal.java
@@ -762,7 +762,7 @@ public interface VertexTraversal<C, S, M> extends Traversal<VertexFrame, C, S, M
     VertexTraversal<?, ?, M> order(Tokens.T order);
 
     @Override
-    VertexTraversal<C, S, ? extends VertexTraversal<C, S, M>> as(String name);
+    VertexTraversal<?, ?, M> as(String name);
 
     @Override
     VertexTraversal<?, ?, M> simplePath();
diff --git a/src/test/java/com/syncleus/ferma/TraversalsTest.java b/src/test/java/com/syncleus/ferma/TraversalsTest.java
index ad13e6d0d620bfbb93ef292933c711f066a5383b..ab49edb2dd912a1075a4ae132e443787a9e392b1 100644
--- a/src/test/java/com/syncleus/ferma/TraversalsTest.java
+++ b/src/test/java/com/syncleus/ferma/TraversalsTest.java
@@ -88,12 +88,6 @@ public class TraversalsTest {
         Assert.assertEquals(29, graph.v().mark().outE("knows").inV().has("age", T.gt, 30).back().property("age").next());
     }
 
-    @Test
-    public void testMarkBackNamed() {
-
-        Assert.assertEquals(29, graph.v().as("someName").outE("knows").inV().has("age", T.gt, 30).back("someName").property("age").next());
-    }
-
     @Test
     public void testMarkOptional() {
         final List<VertexFrame> aggregate = new ArrayList<>();