diff --git a/src/main/java/com/syncleus/ferma/AbstractEdgeTraversal.java b/src/main/java/com/syncleus/ferma/AbstractEdgeTraversal.java
index b7a9f2e8df41d5974dd66ba79024b7efb6b055fb..e510db3cea1818c59dcd68559e26e4995ebeba9d 100644
--- a/src/main/java/com/syncleus/ferma/AbstractEdgeTraversal.java
+++ b/src/main/java/com/syncleus/ferma/AbstractEdgeTraversal.java
@@ -251,7 +251,7 @@ abstract class AbstractEdgeTraversal<C, S, M> extends AbstractTraversal<EdgeFram
     }
 
     @Override
-    public <T> List<T> next(final int amount, final Class<T> kind) {
+    public <T> List<? extends T> next(final int amount, final Class<T> kind) {
         return Lists.transform(pipeline().next(amount), new Function() {
 
             public Object apply(final Object input) {
@@ -261,7 +261,7 @@ abstract class AbstractEdgeTraversal<C, S, M> extends AbstractTraversal<EdgeFram
     }
 
     @Override
-    public <T> List<T> nextExplicit(final int amount, final Class<T> kind) {
+    public <T> List<? extends T> nextExplicit(final int amount, final Class<T> kind) {
         return Lists.transform(pipeline().next(amount), new Function() {
 
             public Object apply(final Object input) {
diff --git a/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java b/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java
index e6d15abf9eaccc3f286794a259e363b076ea68da..a011159e60b04dd56f047ecca4428ec91740f9e6 100644
--- a/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java
@@ -447,7 +447,7 @@ abstract class AbstractVertexTraversal<C, S, M> extends AbstractTraversal<Vertex
     }
 
     @Override
-    public <N> List<N> next(final int amount, final Class<N> kind) {
+    public <N> List<? extends N> next(final int amount, final Class<N> kind) {
         return Lists.transform(pipeline().next(amount), new Function() {
 
             public Object apply(final Object input) {
@@ -457,7 +457,7 @@ abstract class AbstractVertexTraversal<C, S, M> extends AbstractTraversal<Vertex
     }
 
     @Override
-    public <N> List<N> nextExplicit(final int amount, final Class<N> kind) {
+    public <N> List<? extends N> nextExplicit(final int amount, final Class<N> kind) {
         return Lists.transform(pipeline().next(amount), new Function() {
 
             public Object apply(final Object input) {
diff --git a/src/main/java/com/syncleus/ferma/EdgeTraversal.java b/src/main/java/com/syncleus/ferma/EdgeTraversal.java
index 51823ef09250eb36180311ac977070a88162b4ce..c41696545660c1b49e5c9ef741986d16dd526d6b 100644
--- a/src/main/java/com/syncleus/ferma/EdgeTraversal.java
+++ b/src/main/java/com/syncleus/ferma/EdgeTraversal.java
@@ -199,7 +199,7 @@ public interface EdgeTraversal<C, S, M> extends Traversal<EdgeFrame, C, S, M> {
      *            the type of frame to for each element.
      * @return a list of X objects (if X objects occur)
      */
-    <T> List<T> next(int amount, Class<T> kind);
+    <T> List<? extends T> next(int amount, Class<T> kind);
 
     /**
      * Return the next X objects in the traversal as a list.
@@ -215,7 +215,7 @@ public interface EdgeTraversal<C, S, M> extends Traversal<EdgeFrame, C, S, M> {
      *            the type of frame to for each element.
      * @return a list of X objects (if X objects occur)
      */
-    <T> List<T> nextExplicit(int amount, Class<T> kind);
+    <T> List<? extends T> nextExplicit(int amount, Class<T> kind);
 
     /**
      * Return an iterator of framed elements.
diff --git a/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java b/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java
index eab7444793660f15b359cc677727382fdfece48f..4274f17aa064bc0f3c8d55b3f233ededff072b3d 100644
--- a/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java
@@ -266,12 +266,12 @@ public class GlobalVertexTraversal<C, S, M> implements VertexTraversal<C, S, M>
     }
 
     @Override
-    public <N> List<N> next(final int amount, final Class<N> kind) {
+    public <N> List<? extends N> next(final int amount, final Class<N> kind) {
         return this.delegate().next(amount, kind);
     }
 
     @Override
-    public <N> List<N> nextExplicit(final int amount, final Class<N> kind) {
+    public <N> List<? extends N> nextExplicit(final int amount, final Class<N> kind) {
         return this.delegate().nextExplicit(amount, kind);
     }
 
diff --git a/src/main/java/com/syncleus/ferma/VertexTraversal.java b/src/main/java/com/syncleus/ferma/VertexTraversal.java
index afa078282934c8e7a6c1cead8fd14f1a8485fd17..d38be92c8a384c38825008dc8fe786e3e2b4ee4e 100644
--- a/src/main/java/com/syncleus/ferma/VertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/VertexTraversal.java
@@ -358,7 +358,7 @@ public interface VertexTraversal<C, S, M> extends Traversal<VertexFrame, C, S, M
      *            the type of frame to for each element.
      * @return a list of X objects (if X objects occur)
      */
-    <N> List<N> next(int amount, Class<N> kind);
+    <N> List<? extends N> next(int amount, Class<N> kind);
 
     /**
      * Return the next X objects in the traversal as a list.
@@ -374,7 +374,7 @@ public interface VertexTraversal<C, S, M> extends Traversal<VertexFrame, C, S, M
      *            the type of frame to for each element.
      * @return a list of X objects (if X objects occur)
      */
-    <N> List<N> nextExplicit(int amount, Class<N> kind);
+    <N> List<? extends N> nextExplicit(int amount, Class<N> kind);
 
     /**
      * Return an iterator of framed elements.