You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/03/31 20:33:39 UTC

[2/2] incubator-tinkerpop git commit: Messenger.receiveMessges() now returns Iterator. Less restrictive than Iterable. Went through and got rid of as many StreamFactory calls as possible and replaced with respesctive IteratorUtils calls.

Messenger.receiveMessges() now returns Iterator. Less restrictive than Iterable. Went through and got rid of as many StreamFactory calls as possible and replaced with respesctive IteratorUtils calls.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/b8ef22c4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/b8ef22c4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/b8ef22c4

Branch: refs/heads/master
Commit: b8ef22c461b2fa2202ea5be9bd85783ca6d842b2
Parents: 4435485
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Mar 31 12:33:34 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Mar 31 12:33:34 2015 -0600

----------------------------------------------------------------------
 .../DriverRemoteAcceptorIntegrateTest.java      |   7 +-
 .../process/computer/ComputerResult.java        |   4 +-
 .../gremlin/process/computer/Messenger.java     |   4 +-
 .../peerpressure/PeerPressureVertexProgram.java |   6 +-
 .../ranking/pagerank/PageRankVertexProgram.java |   6 +-
 .../computer/traversal/SingleMessenger.java     |   7 +-
 .../computer/traversal/TraverserExecutor.java   |  13 ++-
 .../tinkerpop/gremlin/driver/ResultSet.java     |   5 +-
 .../traversal/step/filter/DedupTest.java        |   6 +-
 .../traversal/step/filter/ExceptTest.java       |   6 +-
 .../traversal/step/filter/HasNotTest.java       |   7 +-
 .../process/traversal/step/filter/HasTest.java  |   2 +-
 .../process/traversal/step/map/OrderTest.java   |  14 ++-
 .../process/traversal/step/map/VertexTest.java  |  10 +-
 .../structure/GraphConstructionTest.java        |   3 +-
 .../tinkerpop/gremlin/structure/IoTest.java     | 108 +++++++++----------
 .../util/detached/DetachedEdgeTest.java         |   9 +-
 .../detached/DetachedVertexPropertyTest.java    |   9 +-
 .../util/detached/DetachedVertexTest.java       |  15 ++-
 .../computer/giraph/GiraphComputeVertex.java    |   2 +-
 .../computer/giraph/GiraphMessenger.java        |   8 +-
 .../computer/giraph/GiraphWorkerContext.java    |   4 +-
 .../process/computer/spark/SparkMessenger.java  |  11 +-
 .../computer/spark/SparkVertexPayload.java      |   4 +-
 .../hadoop/structure/HadoopConfiguration.java   |   4 +-
 .../gremlin/neo4j/structure/Neo4jGraphTest.java |   4 +-
 .../process/computer/TinkerMessenger.java       |  17 +--
 .../tinkergraph/structure/TinkerGraphTest.java  |  40 +++----
 28 files changed, 174 insertions(+), 161 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverRemoteAcceptorIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverRemoteAcceptorIntegrateTest.java b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverRemoteAcceptorIntegrateTest.java
index 69ce921..a1ee934 100644
--- a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverRemoteAcceptorIntegrateTest.java
+++ b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverRemoteAcceptorIntegrateTest.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.TestHelper;
 import org.apache.tinkerpop.gremlin.driver.Result;
 import org.apache.tinkerpop.gremlin.server.Settings;
 import org.apache.tinkerpop.gremlin.util.StreamFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.codehaus.groovy.tools.shell.Groovysh;
 import org.junit.After;
 import org.junit.Before;
@@ -93,21 +94,21 @@ public class DriverRemoteAcceptorIntegrateTest extends AbstractGremlinServerInte
     @Test
     public void shouldConnectAndSubmitSimpleList() throws Exception {
         assertThat(acceptor.connect(Arrays.asList(TestHelper.generateTempFileFromResource(this.getClass(), "remote.yaml", ".tmp").getAbsolutePath())).toString(), startsWith("Connected - "));
-        assertThat(StreamFactory.stream(((Iterator<String>) acceptor.submit(Arrays.asList("[1,2,3,4,5]")))).collect(Collectors.toList()), contains("1", "2", "3", "4", "5"));
+        assertThat(IteratorUtils.list(((Iterator<String>) acceptor.submit(Arrays.asList("[1,2,3,4,5]")))), contains("1", "2", "3", "4", "5"));
         assertThat(((List<Result>) groovysh.getInterp().getContext().getProperty(DriverRemoteAcceptor.RESULT)).stream().map(Result::getString).collect(Collectors.toList()), contains("1", "2", "3", "4", "5"));
     }
 
     @Test
     public void shouldConnectAndReturnVertices() throws Exception {
         assertThat(acceptor.connect(Arrays.asList(TestHelper.generateTempFileFromResource(this.getClass(), "remote.yaml", ".tmp").getAbsolutePath())).toString(), startsWith("Connected - "));
-        assertThat(StreamFactory.stream(((Iterator<String>) acceptor.submit(Arrays.asList("g.addVertex('name','stephen');g.addVertex('name','marko');g.traversal().V()")))).collect(Collectors.toList()), hasSize(2));
+        assertThat(IteratorUtils.list(((Iterator<String>) acceptor.submit(Arrays.asList("g.addVertex('name','stephen');g.addVertex('name','marko');g.traversal().V()")))), hasSize(2));
         assertThat(((List<Result>) groovysh.getInterp().getContext().getProperty(DriverRemoteAcceptor.RESULT)).stream().map(Result::getString).collect(Collectors.toList()), hasSize(2));
     }
 
     @Test
     public void shouldConnectAndSubmitForNull() throws Exception {
         assertThat(acceptor.connect(Arrays.asList(TestHelper.generateTempFileFromResource(this.getClass(), "remote.yaml", ".tmp").getAbsolutePath())).toString(), startsWith("Connected - "));
-        assertThat(StreamFactory.stream(((Iterator<String>) acceptor.submit(Arrays.asList("g.traversal().V().drop().iterate();null")))).collect(Collectors.toList()), contains("null"));
+        assertThat(IteratorUtils.list(((Iterator<String>) acceptor.submit(Arrays.asList("g.traversal().V().drop().iterate();null")))), contains("null"));
         assertThat(((List<Result>) groovysh.getInterp().getContext().getProperty(DriverRemoteAcceptor.RESULT)).stream().map(Result::getObject).collect(Collectors.toList()), contains("null"));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ComputerResult.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ComputerResult.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ComputerResult.java
index f146b2b..c4e3fe2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ComputerResult.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ComputerResult.java
@@ -29,14 +29,14 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
 public interface ComputerResult extends AutoCloseable {
 
     /**
-     * Get the view of the original {@link Graph} computed on by the GraphComputer.
+     * Get the {@link Graph} computed as determined by {@link GraphComputer.Persist} and {@link GraphComputer.ResultGraph}.
      *
      * @return The computed graph
      */
     public Graph graph();
 
     /**
-     * Get the computational sideEffects called {@link Memory} of the GraphComputer.
+     * Get the GraphComputer's computational sideEffects known as {@link Memory}.
      *
      * @return the computed memory
      */

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Messenger.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Messenger.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Messenger.java
index 6190f28..3f04069 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Messenger.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Messenger.java
@@ -18,6 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.computer;
 
+import java.util.Iterator;
+
 /**
  * The {@link Messenger} serves as the routing system for messages between vertices. For distributed systems,
  * the messenger can implement a "message passing" engine (distributed memory). For single machine systems, the
@@ -35,7 +37,7 @@ public interface Messenger<M> {
      * @param messageScope the message scope of the messages to receive
      * @return the messages for that vertex
      */
-    public Iterable<M> receiveMessages(final MessageScope messageScope);
+    public Iterator<M> receiveMessages(final MessageScope messageScope);
 
     /**
      * The currently executing vertex can send a message with provided {@link MessageScope}.

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
index 3871b5b..b1b07ed 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgram.java
@@ -32,7 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.util.StreamFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.javatuples.Pair;
 
 import java.io.Serializable;
@@ -136,7 +136,7 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
                 memory.and(VOTE_TO_HALT, false);
             }
         } else if (1 == memory.getIteration() && this.distributeVote) {
-            double voteStrength = 1.0d / StreamFactory.stream(messenger.receiveMessages(this.countScope)).map(Pair::getValue1).reduce(0.0d, (a, b) -> a + b);
+            double voteStrength = 1.0d / IteratorUtils.reduce(IteratorUtils.map(messenger.receiveMessages(this.countScope), Pair::getValue1), 0.0d, (a, b) -> a + b);
             vertex.property(CLUSTER, vertex.id());
             vertex.property(VOTE_STRENGTH, voteStrength);
             messenger.sendMessage(this.voteScope, new Pair<>((Serializable) vertex.id(), voteStrength));
@@ -144,7 +144,7 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
         } else {
             final Map<Serializable, Double> votes = new HashMap<>();
             votes.put(vertex.value(CLUSTER), vertex.<Double>value(VOTE_STRENGTH));
-            messenger.receiveMessages(this.voteScope).forEach(message -> MapHelper.incr(votes, message.getValue0(), message.getValue1()));
+            messenger.receiveMessages(this.voteScope).forEachRemaining(message -> MapHelper.incr(votes, message.getValue0(), message.getValue1()));
             Serializable cluster = PeerPressureVertexProgram.largestCount(votes);
             if (null == cluster) cluster = (Serializable) vertex.id();
             memory.and(VOTE_TO_HALT, vertex.value(CLUSTER).equals(cluster));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
index a31f8ef..448c560 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
@@ -32,7 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.util.StreamFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -128,12 +128,12 @@ public class PageRankVertexProgram extends StaticVertexProgram<Double> {
             messenger.sendMessage(this.countMessageScope, 1.0d);
         } else if (1 == memory.getIteration()) {
             double initialPageRank = 1.0d / this.vertexCountAsDouble;
-            double edgeCount = StreamFactory.stream(messenger.receiveMessages(this.countMessageScope)).reduce(0.0d, (a, b) -> a + b);
+            double edgeCount = IteratorUtils.reduce(messenger.receiveMessages(this.countMessageScope), 0.0d, (a, b) -> a + b);
             vertex.property(PAGE_RANK, initialPageRank);
             vertex.property(EDGE_COUNT, edgeCount);
             messenger.sendMessage(this.incidentMessageScope, initialPageRank / edgeCount);
         } else {
-            double newPageRank = StreamFactory.stream(messenger.receiveMessages(this.incidentMessageScope)).reduce(0.0d, (a, b) -> a + b);
+            double newPageRank = IteratorUtils.reduce(messenger.receiveMessages(this.incidentMessageScope), 0.0d, (a, b) -> a + b);
             newPageRank = (this.alpha * newPageRank) + ((1.0d - this.alpha) / this.vertexCountAsDouble);
             vertex.property(PAGE_RANK, newPageRank);
             messenger.sendMessage(this.incidentMessageScope, newPageRank / vertex.<Double>value(EDGE_COUNT));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java
index c593e2b..953e337 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java
@@ -20,8 +20,9 @@ package org.apache.tinkerpop.gremlin.process.computer.traversal;
 
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.util.Arrays;
+import java.util.Iterator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -37,8 +38,8 @@ public final class SingleMessenger<M> implements Messenger<M> {
     }
 
     @Override
-    public Iterable<M> receiveMessages(final MessageScope messageScope) {
-        return Arrays.asList(this.message);
+    public Iterator<M> receiveMessages(final MessageScope messageScope) {
+        return IteratorUtils.of(this.message);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
index 1226146..d927d74 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
@@ -18,14 +18,17 @@
  */
 package org.apache.tinkerpop.gremlin.process.computer.traversal;
 
+import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
+import org.apache.tinkerpop.gremlin.process.computer.Messenger;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
-import org.apache.tinkerpop.gremlin.process.computer.Messenger;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.*;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedElement;
 
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -43,7 +46,7 @@ public final class TraverserExecutor {
         final TraverserSet<Object> aliveTraversers = new TraverserSet<>();
         // gather incoming traversers into a traverser set and gain the 'weighted-set' optimization
         final TraversalSideEffects traversalSideEffects = traversalMatrix.getTraversal().getSideEffects();
-        messenger.receiveMessages(MessageScope.Global.instance()).forEach(traverserSet -> {
+        messenger.receiveMessages(MessageScope.Global.instance()).forEachRemaining(traverserSet -> {
             traverserSet.forEach(traverser -> {
                 traverser.setSideEffects(traversalSideEffects);
                 traverser.attach(vertex);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultSet.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultSet.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultSet.java
index 48d69de..a645afa 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultSet.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultSet.java
@@ -25,10 +25,13 @@ import io.netty.channel.Channel;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Spliterator;
+import java.util.Spliterators;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 
 /**
  * A {@code ResultSet} is returned from the submission of a Gremlin script to the server and represents the
@@ -127,7 +130,7 @@ public class ResultSet implements Iterable<Result> {
      * Stream items with a blocking iterator.
      */
     public Stream<Result> stream() {
-        return StreamFactory.stream(iterator());
+        return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator(), Spliterator.IMMUTABLE | Spliterator.SIZED), false);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
index fd199c5..9db8591 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
@@ -63,7 +63,7 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
     public void g_V_both_dedup_name() {
         final Traversal<Vertex, String> traversal = get_g_V_both_dedup_name();
         printTraversalForm(traversal);
-        final List<String> names = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<String> names = traversal.toList();
         assertEquals(6, names.size());
         assertTrue(names.contains("marko"));
         assertTrue(names.contains("vadas"));
@@ -80,7 +80,7 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
     public void g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
         final Traversal<Vertex, String> traversal = get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name();
         printTraversalForm(traversal);
-        final List<String> names = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<String> names = traversal.toList();
         assertEquals(1, names.size());
         assertTrue(names.contains("lop") || names.contains("ripple"));
         assertFalse(traversal.hasNext());
@@ -92,7 +92,7 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
     public void g_V_both_name_orderXa_bX_dedup() {
         final Traversal<Vertex, String> traversal = get_g_V_both_name_orderXa_bX_dedup();
         printTraversalForm(traversal);
-        final List<String> names = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<String> names = traversal.toList();
         assertEquals(6, names.size());
         assertEquals("josh", names.get(0));
         assertEquals("lop", names.get(1));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ExceptTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ExceptTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ExceptTest.java
index c7bce37..cbd498f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ExceptTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ExceptTest.java
@@ -107,7 +107,7 @@ public abstract class ExceptTest extends AbstractGremlinProcessTest {
     public void g_V_exceptXg_V_toListX() {
         Traversal<Vertex, Vertex> traversal = get_g_V_exceptXg_V_toListX();
         printTraversalForm(traversal);
-        final List<Vertex> vertices = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Vertex> vertices = traversal.toList();
         assertEquals(0, vertices.size());
         assertFalse(traversal.hasNext());
     }
@@ -118,7 +118,7 @@ public abstract class ExceptTest extends AbstractGremlinProcessTest {
     public void g_V_exceptXX() {
         Traversal<Vertex, Vertex> traversal = get_g_V_exceptXX();
         printTraversalForm(traversal);
-        final List<Vertex> vertices = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Vertex> vertices = traversal.toList();
         assertEquals(6, vertices.size());
         assertFalse(traversal.hasNext());
     }
@@ -128,7 +128,7 @@ public abstract class ExceptTest extends AbstractGremlinProcessTest {
     public void g_VX1X_repeatXbothEXcreatedX_exceptXeX_aggregateXeX_otherVX_emit_path() {
         Traversal<Vertex, Path> traversal = get_g_VX1X_repeatXbothEXcreatedX_exceptXeX_aggregateXeX_otherVX_emit_path(convertToVertexId("marko"));
         printTraversalForm(traversal);
-        final List<Path> paths = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Path> paths = traversal.toList();
         assertEquals(4, paths.size());
         assertEquals(1, paths.stream().filter(path -> path.size() == 3).count());
         assertEquals(2, paths.stream().filter(path -> path.size() == 5).count());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java
index e7b5b8b..370a1a6 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java
@@ -20,18 +20,15 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.StreamFactory;
 import org.junit.Test;
 
 import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.junit.Assert.assertEquals;
@@ -65,7 +62,7 @@ public abstract class HasNotTest extends AbstractGremlinProcessTest {
     public void g_V_hasNotXprop() {
         Traversal<Vertex, Vertex> traversal = get_g_V_hasNotXprop("circumference");
         printTraversalForm(traversal);
-        final List<Element> list = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Vertex> list = traversal.toList();
         assertEquals(6, list.size());
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
index ad5db85..7e898de 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
@@ -131,7 +131,7 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
     public void g_V_hasXage_gt_30X() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_hasXage_gt_30X();
         printTraversalForm(traversal);
-        final List<Element> list = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Vertex> list = traversal.toList();
         assertEquals(2, list.size());
         for (final Element v : list) {
             assertTrue(v.<Integer>value("age") > 30);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
index 3b690a5..43bbb6f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
@@ -21,13 +21,12 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.structure.Order;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.StreamFactory;
 import org.junit.Test;
 
 import java.util.Arrays;
@@ -35,7 +34,6 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
@@ -88,7 +86,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
     public void g_V_name_order_byXa1_b1X_byXb2_a2X() {
         final Traversal<Vertex, String> traversal = get_g_V_name_order_byXa1_b1X_byXb2_a2X();
         printTraversalForm(traversal);
-        final List<String> names = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<String> names = traversal.toList();
         assertEquals(names.size(), 6);
         assertEquals("marko", names.get(0));
         assertEquals("vadas", names.get(1));
@@ -104,7 +102,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
     public void g_V_order_byXname_incrX_name() {
         Arrays.asList(get_g_V_order_byXname_incrX_name(), get_g_V_order_byXnameX_name()).forEach(traversal -> {
             printTraversalForm(traversal);
-            final List<String> names = StreamFactory.stream(traversal).collect(Collectors.toList());
+            final List<String> names = traversal.toList();
             assertEquals(names.size(), 6);
             assertEquals("josh", names.get(0));
             assertEquals("lop", names.get(1));
@@ -121,7 +119,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
     public void g_V_outE_order_byXweight_decrX_weight() {
         final Traversal<Vertex, Double> traversal = get_g_V_outE_order_byXweight_decrX_weight();
         printTraversalForm(traversal);
-        final List<Double> weights = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Double> weights = traversal.toList();
         assertEquals(6, weights.size());
         assertEquals(Double.valueOf(1.0d), weights.get(0));
         assertEquals(Double.valueOf(1.0d), weights.get(1));
@@ -138,7 +136,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
     public void g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
         final Traversal<Vertex, String> traversal = get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name();
         printTraversalForm(traversal);
-        final List<String> names = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<String> names = traversal.toList();
         assertEquals(names.size(), 6);
         assertEquals("marko", names.get(0));
         assertEquals("vadas", names.get(1));
@@ -215,7 +213,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
     public void g_V_order_byXoutE_count__decrX() {
         Arrays.asList(get_g_V_order_byXoutE_count__decrX()).forEach(traversal -> {
             printTraversalForm(traversal);
-            final List<Vertex> vertices = StreamFactory.stream(traversal).collect(Collectors.toList());
+            final List<Vertex> vertices = traversal.toList();
             assertEquals(vertices.size(), 6);
             assertEquals("marko", vertices.get(0).value("name"));
             assertEquals("josh", vertices.get(1).value("name"));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
index a542a37..60557cf 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
@@ -20,14 +20,13 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.StreamFactory;
 import org.junit.Test;
 
 import java.util.HashMap;
@@ -35,7 +34,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.junit.Assert.*;
@@ -319,7 +317,7 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
     public void g_VX1X_outEXknowsX_bothV_name() {
         final Traversal<Vertex, String> traversal = get_g_VX1X_outEXknowsX_bothV_name(convertToVertexId("marko"));
         printTraversalForm(traversal);
-        List<String> names = StreamFactory.stream(traversal).collect(Collectors.toList());
+        List<String> names = traversal.toList();
         assertEquals(4, names.size());
         assertTrue(names.contains("marko"));
         assertTrue(names.contains("josh"));
@@ -358,7 +356,7 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
     public void g_VX4X_bothE_otherV() {
         final Traversal<Vertex, Vertex> traversal = get_g_VX4X_bothE_otherV(convertToVertexId("josh"));
         printTraversalForm(traversal);
-        final List<Vertex> vertices = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Vertex> vertices = traversal.toList();
         assertEquals(3, vertices.size());
         assertTrue(vertices.stream().anyMatch(v -> v.value("name").equals("marko")));
         assertTrue(vertices.stream().anyMatch(v -> v.value("name").equals("ripple")));
@@ -371,7 +369,7 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
     public void g_VX4X_bothE_hasXweight_lt_1X_otherV() {
         final Traversal<Vertex, Vertex> traversal = get_g_VX4X_bothE_hasXweight_lt_1X_otherV(convertToVertexId("josh"));
         printTraversalForm(traversal);
-        final List<Vertex> vertices = StreamFactory.stream(traversal).collect(Collectors.toList());
+        final List<Vertex> vertices = traversal.toList();
         assertEquals(1, vertices.size());
         assertEquals(vertices.get(0).value("name"), "lop");
         assertFalse(traversal.hasNext());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphConstructionTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphConstructionTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphConstructionTest.java
index 9243c28..bfde55e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphConstructionTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphConstructionTest.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
 import org.apache.tinkerpop.gremlin.util.StreamFactory;
 import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 
 import java.util.concurrent.atomic.AtomicInteger;
@@ -76,6 +77,6 @@ public class GraphConstructionTest extends AbstractGremlinTest {
 
         // need some keys in the originalConfig for this test to be meaningful
         assertTrue(keyCount.get() > 0);
-        assertEquals(keyCount.get(), StreamFactory.stream(configInGraph.getKeys()).count());
+        assertEquals(keyCount.get(), IteratorUtils.count(configInGraph.getKeys()));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
index 3bd3007..4af8db5 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
@@ -115,7 +115,7 @@ public class IoTest extends AbstractGremlinTest {
         FileUtils.deleteDirectory(tempDir);
         if (!tempDir.mkdirs()) throw new IOException(String.format("Could not create %s", tempDir));
     }
-    
+
     @Test
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
@@ -788,7 +788,7 @@ public class IoTest extends AbstractGremlinTest {
                     assertEquals(v1.label(), detachedEdge.outVertex().label());
                     assertEquals(v2.label(), detachedEdge.inVertex().label());
                     assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(e.keys().size(), StreamFactory.stream(detachedEdge.properties()).count());
+                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
                     called.set(true);
                     return null;
                 });
@@ -894,7 +894,7 @@ public class IoTest extends AbstractGremlinTest {
                     assertEquals(v1.label(), detachedEdge.outVertex().label());
                     assertEquals(v2.label(), detachedEdge.inVertex().label());
                     assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(e.keys().size(), StreamFactory.stream(detachedEdge.properties()).count());
+                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
                     assertEquals(id, detachedEdge.value("uuid"));
 
                     called.set(true);
@@ -931,7 +931,7 @@ public class IoTest extends AbstractGremlinTest {
                     assertEquals(v1.label(), detachedEdge.outVertex().label());
                     assertEquals(v2.label(), detachedEdge.inVertex().label());
                     assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(e.keys().size(), StreamFactory.stream(detachedEdge.properties()).count());
+                    assertEquals(e.keys().size(), IteratorUtils.count(detachedEdge.properties()));
                     assertEquals(id, detachedEdge.value("uuid"));
 
                     called.set(true);
@@ -965,7 +965,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id(), detachedVertex.id());
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                     assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
                     called.set(true);
@@ -996,7 +996,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id(), detachedVertex.id());
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                     assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
                     called.set(true);
@@ -1028,7 +1028,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id(), detachedVertex.id());
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals("marko", detachedVertex.properties("name").next().value());
                     assertEquals("rw", detachedVertex.properties("acl").next().value());
                     called.set(true);
@@ -1060,7 +1060,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id(), detachedVertex.id());
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(0, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(0, IteratorUtils.count(detachedVertex.properties()));
                     called.set(true);
                     return mock(Vertex.class);
                 });
@@ -1092,10 +1092,10 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id(), detachedVertex.id());
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(4, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(4, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals("a", detachedVertex.property("propsSquared").value("x"));
                     assertEquals("b", detachedVertex.property("propsSquared").value("y"));
-                    assertEquals(2, StreamFactory.stream(detachedVertex.properties("name")).count());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties("name")));
                     assertTrue(StreamFactory.stream(detachedVertex.properties("name")).allMatch(p -> p.key().equals("name") && (p.value().equals("marko") || p.value().equals("mark"))));
                     assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
                     called.set(true);
@@ -1127,7 +1127,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id().toString(), detachedVertex.id().toString()); // lossy
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals("marko", detachedVertex.properties("name").next().value());
                     assertEquals("rw", detachedVertex.properties("acl").next().value());
                     called.set(true);
@@ -1161,7 +1161,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id().toString(), detachedVertex.id().toString()); // lossy
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(2, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals("marko", detachedVertex.properties("name").next().value());
                     assertEquals("rw", detachedVertex.properties("acl").next().value());
                     called.set(true);
@@ -1195,7 +1195,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id().toString(), detachedVertex.id().toString()); // lossy
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(0, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(0, IteratorUtils.count(detachedVertex.properties()));
 
                     called.set(true);
                     return detachedVertex;
@@ -1229,10 +1229,10 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, detachedVertex -> {
                     assertEquals(v1.id().toString(), detachedVertex.id().toString()); // lossy
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(4, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(4, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals("a", detachedVertex.property("propsSquared").value("x"));
                     assertEquals("b", detachedVertex.property("propsSquared").value("y"));
-                    assertEquals(2, StreamFactory.stream(detachedVertex.properties("name")).count());
+                    assertEquals(2, IteratorUtils.count(detachedVertex.properties("name")));
                     assertTrue(StreamFactory.stream(detachedVertex.properties("name")).allMatch(p -> p.key().equals("name") && (p.value().equals("marko") || p.value().equals("mark"))));
                     assertEquals(v1.value("acl"), detachedVertex.value("acl").toString());
                     called.set(true);
@@ -1349,7 +1349,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.OUT, detachedVertex -> {
                             assertEquals(v1.id(), detachedVertex.id());
                             assertEquals(v1.label(), detachedVertex.label());
-                            assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                             assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                             calledVertex.set(true);
                             return detachedVertex;
@@ -1361,7 +1361,7 @@ public class IoTest extends AbstractGremlinTest {
                             assertEquals(v1.label(), detachedEdge.outVertex().label());
                             assertEquals(v2.label(), detachedEdge.inVertex().label());
                             assertEquals(e.label(), detachedEdge.label());
-                            assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                             assertEquals(0.5d, detachedEdge.value("weight"), 0.00001d);
 
                             calledEdge.set(true);
@@ -1397,7 +1397,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.OUT, detachedVertex -> {
                             assertEquals(v1.id().toString(), detachedVertex.id().toString());  // lossy
                             assertEquals(v1.label(), detachedVertex.label());
-                            assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                             assertEquals("marko", detachedVertex.value("name"));
                             calledVertex.set(true);
                             return null;
@@ -1409,7 +1409,7 @@ public class IoTest extends AbstractGremlinTest {
                             assertEquals(v1.label(), detachedEdge.outVertex().label());
                             assertEquals(v2.label(), detachedEdge.inVertex().label());
                             assertEquals(e.label(), detachedEdge.label());
-                            assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                             assertEquals(0.5d, detachedEdge.value("weight"), 0.000001d);                      // lossy
 
                             calledEdge.set(true);
@@ -1445,7 +1445,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.IN, detachedVertex -> {
                     assertEquals(v1.id(), detachedVertex.id());
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                     calledVertex.set(true);
 
@@ -1457,7 +1457,7 @@ public class IoTest extends AbstractGremlinTest {
                     assertEquals(v1.label(), detachedEdge.outVertex().label());
                     assertEquals(v2.label(), detachedEdge.inVertex().label());
                     assertEquals(e.label(), detachedEdge.label());
-                    assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                    assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                     assertEquals(0.5d, detachedEdge.value("weight"), 0.00001d);
 
                     calledEdge.set(true);
@@ -1494,7 +1494,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.IN, detachedVertex -> {
                             assertEquals(v1.id().toString(), detachedVertex.id().toString());  // lossy
                             assertEquals(v1.label(), detachedVertex.label());
-                            assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                             assertEquals("marko", detachedVertex.value("name"));
                             calledVertex.set(true);
                             return null;
@@ -1506,7 +1506,7 @@ public class IoTest extends AbstractGremlinTest {
                             assertEquals(v1.label(), detachedEdge.outVertex().label());
                             assertEquals(v2.label(), detachedEdge.inVertex().label());
                             assertEquals(e.label(), detachedEdge.label());
-                            assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                             assertEquals(0.5d, detachedEdge.value("weight"), 0.000001d);                      // lossy
 
                             calledEdge.set(true);
@@ -1544,7 +1544,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.BOTH, detachedVertex -> {
                             assertEquals(v1.id(), detachedVertex.id());
                             assertEquals(v1.label(), detachedVertex.label());
-                            assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                             assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                             calledVertex.set(true);
 
@@ -1557,7 +1557,7 @@ public class IoTest extends AbstractGremlinTest {
                                 assertEquals(v1.label(), detachedEdge.outVertex().label());
                                 assertEquals(v2.label(), detachedEdge.inVertex().label());
                                 assertEquals(e1.label(), detachedEdge.label());
-                                assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                                assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                                 assertEquals(0.5d, detachedEdge.value("weight"), 0.00001d);
                                 calledEdge1.set(true);
                             } else if (detachedEdge.id().equals(e2.id())) {
@@ -1566,7 +1566,7 @@ public class IoTest extends AbstractGremlinTest {
                                 assertEquals(v1.label(), detachedEdge.outVertex().label());
                                 assertEquals(v2.label(), detachedEdge.inVertex().label());
                                 assertEquals(e1.label(), detachedEdge.label());
-                                assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                                assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                                 assertEquals(1.0d, detachedEdge.value("weight"), 0.00001d);
                                 calledEdge2.set(true);
                             } else {
@@ -1608,7 +1608,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.BOTH, detachedVertex -> {
                             assertEquals(v1.id().toString(), detachedVertex.id().toString());  // lossy
                             assertEquals(v1.label(), detachedVertex.label());
-                            assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                             assertEquals("marko", detachedVertex.value("name"));
                             vertexCalled.set(true);
                             return null;
@@ -1621,7 +1621,7 @@ public class IoTest extends AbstractGremlinTest {
                                 assertEquals(v1.label(), detachedEdge.outVertex().label());
                                 assertEquals(v2.label(), detachedEdge.inVertex().label());
                                 assertEquals(e1.label(), detachedEdge.label());
-                                assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                                assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                                 assertEquals(0.5d, detachedEdge.value("weight"), 0.000001d);                      // lossy
                                 edge1Called.set(true);
                             } else if (detachedEdge.id().toString().equals(e2.id().toString())) { // lossy
@@ -1631,7 +1631,7 @@ public class IoTest extends AbstractGremlinTest {
                                 assertEquals(v1.label(), detachedEdge.outVertex().label());
                                 assertEquals(v2.label(), detachedEdge.inVertex().label());
                                 assertEquals(e2.label(), detachedEdge.label());
-                                assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                                assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                                 assertEquals(1.0d, detachedEdge.value("weight"), 0.000001d);                      // lossy
                                 edge2Called.set(true);
                             } else {
@@ -1673,7 +1673,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.BOTH, detachedVertex -> {
                     assertEquals(v1.id(), graphProvider.reconstituteGraphSONIdentifier(Vertex.class, detachedVertex.id()));
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                     vertexCalled.set(true);
                     return null;
@@ -1684,7 +1684,7 @@ public class IoTest extends AbstractGremlinTest {
                         assertEquals(v1.label(), detachedEdge.outVertex().label());
                         assertEquals(v2.label(), detachedEdge.inVertex().label());
                         assertEquals(e1.label(), detachedEdge.label());
-                        assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                        assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                         assertEquals(0.5f, detachedEdge.value("weight"), 0.00001f);
                         edge1Called.set(true);
                     } else if (graphProvider.reconstituteGraphSONIdentifier(Edge.class, detachedEdge.id()).equals(e2.id())) {
@@ -1693,7 +1693,7 @@ public class IoTest extends AbstractGremlinTest {
                         assertEquals(v1.label(), detachedEdge.outVertex().label());
                         assertEquals(v2.label(), detachedEdge.inVertex().label());
                         assertEquals(e1.label(), detachedEdge.label());
-                        assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                        assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                         assertEquals(1.0f, detachedEdge.value("weight"), 0.00001f);
                         edge2Called.set(true);
                     } else {
@@ -1734,7 +1734,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.IN, detachedVertex -> {
                             assertEquals(v1.id(), detachedVertex.id());
                             assertEquals(v1.label(), detachedVertex.label());
-                            assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                             assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                             vertexCalled.set(true);
 
@@ -1747,7 +1747,7 @@ public class IoTest extends AbstractGremlinTest {
                                 assertEquals(v1.label(), detachedEdge.outVertex().label());
                                 assertEquals(v2.label(), detachedEdge.inVertex().label());
                                 assertEquals(e1.label(), detachedEdge.label());
-                                assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                                assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                                 assertEquals(0.5d, detachedEdge.value("weight"), 0.00001d);
                                 edge1Called.set(true);
                             } else {
@@ -1787,7 +1787,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.IN, detachedVertex -> {
                     assertEquals(v1.id().toString(), detachedVertex.id().toString());  // lossy
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals("marko", detachedVertex.value("name"));
                     vertexCalled.set(true);
 
@@ -1800,7 +1800,7 @@ public class IoTest extends AbstractGremlinTest {
                         assertEquals(v1.label(), detachedEdge.outVertex().label());
                         assertEquals(v2.label(), detachedEdge.inVertex().label());
                         assertEquals(e1.label(), detachedEdge.label());
-                        assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                        assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                         assertEquals(0.5d, detachedEdge.value("weight"), 0.000001d);                      // lossy
                         edgeCalled.set(true);
                     } else {
@@ -1840,7 +1840,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.OUT, detachedVertex -> {
                             assertEquals(v1.id(), detachedVertex.id());
                             assertEquals(v1.label(), detachedVertex.label());
-                            assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                            assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                             assertEquals(v1.value("name"), detachedVertex.value("name").toString());
                             vertexCalled.set(true);
 
@@ -1853,7 +1853,7 @@ public class IoTest extends AbstractGremlinTest {
                                 assertEquals(v1.label(), detachedEdge.outVertex().label());
                                 assertEquals(v2.label(), detachedEdge.inVertex().label());
                                 assertEquals(e2.label(), detachedEdge.label());
-                                assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                                assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                                 assertEquals(1.0d, detachedEdge.value("weight"), 0.00001d);
 
                                 edgeCalled.set(true);
@@ -1894,7 +1894,7 @@ public class IoTest extends AbstractGremlinTest {
                 reader.readVertex(bais, Direction.OUT, detachedVertex -> {
                     assertEquals(v1.id().toString(), detachedVertex.id().toString());  // lossy
                     assertEquals(v1.label(), detachedVertex.label());
-                    assertEquals(1, StreamFactory.stream(detachedVertex.properties()).count());
+                    assertEquals(1, IteratorUtils.count(detachedVertex.properties()));
                     assertEquals("marko", detachedVertex.value("name"));
                     vertexCalled.set(true);
                     return null;
@@ -1906,7 +1906,7 @@ public class IoTest extends AbstractGremlinTest {
                         assertEquals(v1.label(), detachedEdge.outVertex().label());
                         assertEquals(v2.label(), detachedEdge.inVertex().label());
                         assertEquals(e2.label(), detachedEdge.label());
-                        assertEquals(1, StreamFactory.stream(detachedEdge.properties()).count());
+                        assertEquals(1, IteratorUtils.count(detachedEdge.properties()));
                         assertEquals(1.0d, detachedEdge.value("weight"), 0.000001d);                      // lossy
                         edgeCalled.set(true);
                     } else {
@@ -2045,23 +2045,23 @@ public class IoTest extends AbstractGremlinTest {
         final Vertex v1 = (Vertex) g1.traversal().V().has("name", "marko").next();
         assertEquals("person", v1.label());
         assertEquals(2, v1.keys().size());
-        assertEquals(4, (int) StreamFactory.stream(v1.properties("location")).count());
+        assertEquals(4, (int) IteratorUtils.count(v1.properties("location")));
         v1.properties("location").forEachRemaining(vp -> {
             if (vp.value().equals("san diego")) {
                 assertEquals(1997, (int) vp.value("startTime"));
                 assertEquals(2001, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("santa cruz")) {
                 assertEquals(2001, (int) vp.value("startTime"));
                 assertEquals(2004, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("brussels")) {
                 assertEquals(2004, (int) vp.value("startTime"));
                 assertEquals(2005, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("santa fe")) {
                 assertEquals(2005, (int) vp.value("startTime"));
-                assertEquals(1, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(1, (int) IteratorUtils.count(vp.properties()));
             } else {
                 fail("Found a value that should be there");
             }
@@ -2095,19 +2095,19 @@ public class IoTest extends AbstractGremlinTest {
         final Vertex v7 = (Vertex) g1.traversal().V().has("name", "stephen").next();
         assertEquals("person", v7.label());
         assertEquals(2, v7.keys().size());
-        assertEquals(3, (int) StreamFactory.stream(v7.properties("location")).count());
+        assertEquals(3, (int) IteratorUtils.count(v7.properties("location")));
         v7.properties("location").forEachRemaining(vp -> {
             if (vp.value().equals("centreville")) {
                 assertEquals(1990, (int) vp.value("startTime"));
                 assertEquals(2000, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("dulles")) {
                 assertEquals(2000, (int) vp.value("startTime"));
                 assertEquals(2006, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("purcellville")) {
                 assertEquals(2006, (int) vp.value("startTime"));
-                assertEquals(1, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(1, (int) IteratorUtils.count(vp.properties()));
             } else {
                 fail("Found a value that should be there");
             }
@@ -2141,23 +2141,23 @@ public class IoTest extends AbstractGremlinTest {
         final Vertex v8 = (Vertex) g1.traversal().V().has("name", "matthias").next();
         assertEquals("person", v8.label());
         assertEquals(2, v8.keys().size());
-        assertEquals(4, (int) StreamFactory.stream(v8.properties("location")).count());
+        assertEquals(4, (int) IteratorUtils.count(v8.properties("location")));
         v8.properties("location").forEachRemaining(vp -> {
             if (vp.value().equals("bremen")) {
                 assertEquals(2004, (int) vp.value("startTime"));
                 assertEquals(2007, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("baltimore")) {
                 assertEquals(2007, (int) vp.value("startTime"));
                 assertEquals(2011, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("oakland")) {
                 assertEquals(2011, (int) vp.value("startTime"));
                 assertEquals(2014, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("seattle")) {
                 assertEquals(2014, (int) vp.value("startTime"));
-                assertEquals(1, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(1, (int) IteratorUtils.count(vp.properties()));
             } else {
                 fail("Found a value that should be there");
             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdgeTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdgeTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdgeTest.java
index 2a6a526..5aae34a 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdgeTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedEdgeTest.java
@@ -27,6 +27,7 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.StreamFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.javatuples.Pair;
 import org.junit.Test;
 
@@ -66,8 +67,8 @@ public class DetachedEdgeTest extends AbstractGremlinTest {
         assertEquals(convertToVertexId("vadas"), detachedEdge.vertices(Direction.IN).next().id());
         assertEquals("person", detachedEdge.vertices(Direction.IN).next().label());
 
-        assertEquals(2, StreamFactory.stream(detachedEdge.properties()).count());
-        assertEquals(1, StreamFactory.stream(detachedEdge.properties("year")).count());
+        assertEquals(2, IteratorUtils.count(detachedEdge.properties()));
+        assertEquals(1, IteratorUtils.count(detachedEdge.properties("year")));
         assertEquals(0.5d, detachedEdge.properties("weight").next().value());
     }
 
@@ -87,7 +88,7 @@ public class DetachedEdgeTest extends AbstractGremlinTest {
         assertEquals(convertToVertexId("vadas"), detachedEdge.vertices(Direction.IN).next().id());
         assertEquals("person", detachedEdge.vertices(Direction.IN).next().label());
 
-        assertEquals(0, StreamFactory.stream(detachedEdge.properties()).count());
+        assertEquals(0, IteratorUtils.count(detachedEdge.properties()));
     }
 
     @Test
@@ -153,7 +154,7 @@ public class DetachedEdgeTest extends AbstractGremlinTest {
         assertEquals(2, de.vertices(Direction.IN).next().id());
 
         assertEquals("a", de.properties("x").next().value());
-        assertEquals(1, StreamFactory.stream(de.properties("x")).count());
+        assertEquals(1, IteratorUtils.count(de.properties("x")));
 
         assertEquals("a", de.property("x").value());
         assertEquals("x", de.property("x").key());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexPropertyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexPropertyTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexPropertyTest.java
index 83a8f3b..19bbaef 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexPropertyTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexPropertyTest.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.util.StreamFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
@@ -102,18 +103,18 @@ public class DetachedVertexPropertyTest extends AbstractGremlinTest {
             if (detached.value().equals("san diego")) {
                 assertEquals(1997, (int) detached.value("startTime"));
                 assertEquals(2001, (int) detached.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(detached.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(detached.properties()));
             } else if (vp.value().equals("santa cruz")) {
                 assertEquals(2001, (int) detached.value("startTime"));
                 assertEquals(2004, (int) detached.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(detached.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(detached.properties()));
             } else if (detached.value().equals("brussels")) {
                 assertEquals(2004, (int) vp.value("startTime"));
                 assertEquals(2005, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(detached.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(detached.properties()));
             } else if (detached.value().equals("santa fe")) {
                 assertEquals(2005, (int) detached.value("startTime"));
-                assertEquals(1, (int) StreamFactory.stream(detached.properties()).count());
+                assertEquals(1, (int) IteratorUtils.count(detached.properties()));
             } else {
                 fail("Found a value that should be there");
             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java
index 3df9810..01a6f78 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java
@@ -26,7 +26,6 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
-import org.apache.tinkerpop.gremlin.util.StreamFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 
@@ -86,18 +85,18 @@ public class DetachedVertexTest extends AbstractGremlinTest {
             if (vp.value().equals("san diego")) {
                 assertEquals(1997, (int) vp.value("startTime"));
                 assertEquals(2001, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("santa cruz")) {
                 assertEquals(2001, (int) vp.value("startTime"));
                 assertEquals(2004, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("brussels")) {
                 assertEquals(2004, (int) vp.value("startTime"));
                 assertEquals(2005, (int) vp.value("endTime"));
-                assertEquals(2, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(2, (int) IteratorUtils.count(vp.properties()));
             } else if (vp.value().equals("santa fe")) {
                 assertEquals(2005, (int) vp.value("startTime"));
-                assertEquals(1, (int) StreamFactory.stream(vp.properties()).count());
+                assertEquals(1, (int) IteratorUtils.count(vp.properties()));
             } else {
                 fail("Found a value that should be there");
             }
@@ -176,7 +175,7 @@ public class DetachedVertexTest extends AbstractGremlinTest {
         assertEquals(1, dv.id());
         assertEquals("test", dv.label());
 
-        final List<VertexProperty> propertyX = StreamFactory.stream(dv.properties("x")).collect(Collectors.toList());
+        final List<VertexProperty<Object>> propertyX = IteratorUtils.list(dv.properties("x"));
         assertEquals(2, propertyX.size());
         assertTrue(propertyX.stream().allMatch(p ->
                 p.label().equals(p.key())
@@ -215,7 +214,7 @@ public class DetachedVertexTest extends AbstractGremlinTest {
         assertEquals(1, dv.id());
         assertEquals("test", dv.label());
 
-        final List<VertexProperty> propertyX = StreamFactory.stream(dv.properties("x")).collect(Collectors.toList());
+        final List<VertexProperty<Object>> propertyX = IteratorUtils.list(dv.properties("x"));
         assertEquals(2, propertyX.size());
         assertTrue(propertyX.stream().allMatch(p ->
                 p.label().equals(p.key())
@@ -228,7 +227,7 @@ public class DetachedVertexTest extends AbstractGremlinTest {
         assertEquals(1, propertyOnProperty.properties("propX11").next().value());
         assertEquals(123.01d, propertyOnProperty.properties("same").next().value());
         assertEquals("something", propertyOnProperty.properties("extra").next().value());
-        assertEquals(4, StreamFactory.stream(propertyOnProperty.properties()).count());
+        assertEquals(4, IteratorUtils.count(propertyOnProperty.properties()));
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphComputeVertex.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphComputeVertex.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphComputeVertex.java
index 5e0ee42..d262e62 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphComputeVertex.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphComputeVertex.java
@@ -51,7 +51,7 @@ public final class GiraphComputeVertex extends Vertex<ObjectWritable, VertexWrit
         final GiraphWorkerContext workerContext = (GiraphWorkerContext) this.getWorkerContext();
         final VertexProgram<?> vertexProgram = workerContext.getVertexProgramPool().take();
         final GiraphMemory memory = workerContext.getMemory();
-        final GiraphMessenger messenger = workerContext.getMessenger(this, messages);
+        final GiraphMessenger messenger = workerContext.getMessenger(this, messages.iterator());
         final org.apache.tinkerpop.gremlin.structure.Vertex wrappedVertex = ComputerGraph.of(this.getValue().get(), vertexProgram.getElementComputeKeys());
         ///////////
         if (!(Boolean) ((RuleWritable) this.getAggregatedValue(Constants.GREMLIN_HADOOP_HALT)).getObject()) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessenger.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessenger.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessenger.java
index bddde66..dbf5fa4 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessenger.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphMessenger.java
@@ -30,21 +30,23 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
+import java.util.Iterator;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class GiraphMessenger<M> implements Messenger<M> {
 
     private GiraphComputeVertex giraphComputeVertex;
-    private Iterable<ObjectWritable<M>> messages;
+    private Iterator<ObjectWritable<M>> messages;
 
-    public GiraphMessenger(final GiraphComputeVertex giraphComputeVertex, final Iterable<ObjectWritable<M>> messages) {
+    public GiraphMessenger(final GiraphComputeVertex giraphComputeVertex, final Iterator<ObjectWritable<M>> messages) {
         this.giraphComputeVertex = giraphComputeVertex;
         this.messages = messages;
     }
 
     @Override
-    public Iterable<M> receiveMessages(final MessageScope messageScope) {
+    public Iterator<M> receiveMessages(final MessageScope messageScope) {
         return IteratorUtils.map(this.messages, ObjectWritable::get);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
index c459c1d..363c945 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/giraph/GiraphWorkerContext.java
@@ -28,6 +28,8 @@ import org.apache.tinkerpop.gremlin.process.computer.util.ImmutableMemory;
 import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramPool;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoPool;
 
+import java.util.Iterator;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -68,7 +70,7 @@ public final class GiraphWorkerContext extends WorkerContext {
         return this.memory;
     }
 
-    public GiraphMessenger getMessenger(final GiraphComputeVertex giraphComputeVertex, final Iterable<ObjectWritable> messages) {
+    public GiraphMessenger getMessenger(final GiraphComputeVertex giraphComputeVertex, final Iterator<ObjectWritable> messages) {
         return new GiraphMessenger(giraphComputeVertex, messages);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkMessenger.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkMessenger.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkMessenger.java
index 3bda8d8..4b174e1 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkMessenger.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkMessenger.java
@@ -30,6 +30,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import scala.Tuple2;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -38,8 +39,8 @@ import java.util.List;
 public class SparkMessenger<M> implements Messenger<M> {
 
     private Vertex vertex;
-    private  Iterable<M> incomingMessages = new ArrayList<>();
-    private final List<Tuple2<Object,M>> outgoingMessages = new ArrayList<>();
+    private Iterable<M> incomingMessages = new ArrayList<>();
+    private final List<Tuple2<Object, M>> outgoingMessages = new ArrayList<>();
 
     public void setVertexAndMessages(final Vertex vertex, final Iterable<M> incomingMessages) {
         this.vertex = vertex;
@@ -47,14 +48,14 @@ public class SparkMessenger<M> implements Messenger<M> {
         this.outgoingMessages.clear();
     }
 
-    public List<Tuple2<Object,M>> getOutgoingMessages() {
+    public List<Tuple2<Object, M>> getOutgoingMessages() {
         return this.outgoingMessages;
     }
 
 
     @Override
-    public Iterable<M> receiveMessages(final MessageScope messageScope) {
-        return this.incomingMessages;
+    public Iterator<M> receiveMessages(final MessageScope messageScope) {
+        return this.incomingMessages.iterator();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/b8ef22c4/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkVertexPayload.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkVertexPayload.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkVertexPayload.java
index 2ac67e6..0610750 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkVertexPayload.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/spark/SparkVertexPayload.java
@@ -92,8 +92,8 @@ public final class SparkVertexPayload<M> implements SparkPayload<M>, Messenger<M
     ///////////
 
     @Override
-    public Iterable<M> receiveMessages(final MessageScope messageScope) {
-        return this.incoming;
+    public Iterator<M> receiveMessages(final MessageScope messageScope) {
+        return this.incoming.iterator();
     }
 
     @Override