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 2016/02/26 16:45:21 UTC

incubator-tinkerpop git commit: I totally forgot about @dkuppitz Operator.java work. I gutted lots of rewritten operators and now just uses Operator. This makes less classes to register with GryoMapper -- phew. It was getting insane. Also, in the future,

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1166 066cc218b -> 42b725450


I totally forgot about @dkuppitz Operator.java work. I gutted lots of rewritten operators and now just uses Operator. This makes less classes to register with GryoMapper -- phew. It was getting insane. Also, in the future, if we want to make more optimal implementations, we can just add stuff like Operator.sumLong() and it doesn't effect serialization because Operator is an enum.


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

Branch: refs/heads/TINKERPOP-1166
Commit: 42b7254505563eaa1925639446cbb55ad708c7b7
Parents: 066cc21
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Feb 26 08:45:14 2016 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Feb 26 08:45:14 2016 -0700

----------------------------------------------------------------------
 .../process/computer/MemoryComputeKey.java      | 113 -------------------
 .../peerpressure/PeerPressureVertexProgram.java |   3 +-
 .../traversal/TraversalVertexProgram.java       |  13 ++-
 .../traversal/step/map/ComputerResultStep.java  |   3 +-
 .../process/computer/util/MapMemory.java        |   3 +-
 .../gremlin/process/traversal/Operator.java     |  18 ++-
 .../traversal/step/filter/DedupGlobalStep.java  |   3 +-
 .../traversal/step/map/CountGlobalStep.java     |  18 +--
 .../process/traversal/step/map/FoldStep.java    |  20 +---
 .../traversal/step/map/MaxGlobalStep.java       |  23 +---
 .../traversal/step/map/MinGlobalStep.java       |  24 +---
 .../traversal/step/map/OrderGlobalStep.java     |   3 +-
 .../traversal/step/map/SumGlobalStep.java       |  19 +---
 .../traversal/step/sideEffect/StoreStep.java    |  18 +--
 .../gremlin/structure/io/gryo/GryoMapper.java   |  34 ++----
 .../process/computer/GraphComputerTest.java     |  51 +++++----
 .../spark/process/computer/SparkMemory.java     |   3 +-
 .../process/computer/TinkerMemory.java          |   3 +-
 18 files changed, 87 insertions(+), 285 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
index 7ed12ea..d9fd676 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
@@ -22,7 +22,6 @@ package org.apache.tinkerpop.gremlin.process.computer;
 import org.apache.tinkerpop.gremlin.process.computer.util.MemoryHelper;
 
 import java.io.Serializable;
-import java.util.Collection;
 import java.util.function.BinaryOperator;
 
 /**
@@ -72,116 +71,4 @@ public final class MemoryComputeKey<A> implements Serializable {
     public static <A> MemoryComputeKey of(final String key, final BinaryOperator<A> reducer, final boolean isBroadcast, final boolean isTransient) {
         return new MemoryComputeKey<>(key, reducer, isBroadcast, isTransient);
     }
-
-    public static AddOperator addOperator() {
-        return AddOperator.INSTANCE;
-    }
-
-    public static SetOperator setOperator() {
-        return SetOperator.INSTANCE;
-    }
-
-    public static AndOperator andOperator() {
-        return AndOperator.INSTANCE;
-    }
-
-    public static OrOperator orOperator() {
-        return OrOperator.INSTANCE;
-    }
-
-    public static SumLongOperator sumLongOperator() {
-        return SumLongOperator.INSTANCE;
-    }
-
-    public static SumIntegerOperator sumIntegerOperator() {
-        return SumIntegerOperator.INSTANCE;
-    }
-
-    ///////////
-
-    public static class AddOperator implements BinaryOperator<Collection>, Serializable {
-
-        private static final AddOperator INSTANCE = new AddOperator();
-
-        private AddOperator() {
-
-        }
-
-        @Override
-        public Collection apply(final Collection first, final Collection second) {
-            first.addAll(second);
-            return first;
-        }
-    }
-
-
-    public static class SetOperator implements BinaryOperator<Object>, Serializable {
-
-        private static final SetOperator INSTANCE = new SetOperator();
-
-        private SetOperator() {
-
-        }
-
-        @Override
-        public Object apply(final Object first, final Object second) {
-            return second;
-        }
-    }
-
-    public static class AndOperator implements BinaryOperator<Boolean>, Serializable {
-
-        private static final AndOperator INSTANCE = new AndOperator();
-
-        private AndOperator() {
-
-        }
-
-        @Override
-        public Boolean apply(final Boolean first, final Boolean second) {
-            return first && second;
-        }
-    }
-
-    public static class OrOperator implements BinaryOperator<Boolean>, Serializable {
-
-        private static final OrOperator INSTANCE = new OrOperator();
-
-        private OrOperator() {
-
-        }
-
-        @Override
-        public Boolean apply(final Boolean first, final Boolean second) {
-            return first || second;
-        }
-    }
-
-    public static class SumLongOperator implements BinaryOperator<Long>, Serializable {
-
-        private static final SumLongOperator INSTANCE = new SumLongOperator();
-
-        private SumLongOperator() {
-
-        }
-
-        @Override
-        public Long apply(final Long first, final Long second) {
-            return first + second;
-        }
-    }
-
-    public static class SumIntegerOperator implements BinaryOperator<Integer>, Serializable {
-
-        private static final SumIntegerOperator INSTANCE = new SumIntegerOperator();
-
-        private SumIntegerOperator() {
-
-        }
-
-        @Override
-        public Integer apply(final Integer first, final Integer second) {
-            return first + second;
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/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 2094660..8834882 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
@@ -27,6 +27,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Messenger;
 import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
@@ -72,7 +73,7 @@ public class PeerPressureVertexProgram extends StaticVertexProgram<Pair<Serializ
     private boolean distributeVote = false;
     private String property = CLUSTER;
 
-    private static final Set<MemoryComputeKey> MEMORY_COMPUTE_KEYS = Collections.singleton(MemoryComputeKey.of(VOTE_TO_HALT, MemoryComputeKey.andOperator(), false, true));
+    private static final Set<MemoryComputeKey> MEMORY_COMPUTE_KEYS = Collections.singleton(MemoryComputeKey.of(VOTE_TO_HALT, Operator.and, false, true));
 
     private PeerPressureVertexProgram() {
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index 40fb616..ee66c52 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -31,6 +31,7 @@ import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.sideEffect.mapreduce.TraverserMapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
@@ -131,10 +132,10 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
         if (!this.traversal.get().isLocked())
             this.traversal.get().applyStrategies();
         this.traversalMatrix = new TraversalMatrix<>(this.traversal.get());
-        this.memoryComputeKeys.add(MemoryComputeKey.of(VOTE_TO_HALT, MemoryComputeKey.andOperator(), false, true));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(VOTE_TO_HALT, Operator.and, false, true));
         for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal.get())) {
             this.mapReducers.add(mapReducer.getMapReduce());
-            this.memoryComputeKeys.add(MemoryComputeKey.of(mapReducer.getMapReduce().getMemoryKey(), MemoryComputeKey.setOperator(), false, false));
+            this.memoryComputeKeys.add(MemoryComputeKey.of(mapReducer.getMapReduce().getMemoryKey(), Operator.assign, false, false));
         }
 
         if (this.traversal.get().getParent().asStep().getNextStep() instanceof ComputerResultStep)
@@ -152,9 +153,9 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
             graphComputing.getMemoryComputeKey().ifPresent(x -> this.neverTouchedMemoryKeys.add(x.getKey()));
         }
 
-        this.memoryComputeKeys.add(MemoryComputeKey.of(HALTED_TRAVERSERS, MemoryComputeKey.addOperator(), false, false));
-        this.memoryComputeKeys.add(MemoryComputeKey.of(ALIVE_TRAVERSERS, MemoryComputeKey.addOperator(), true, true));
-        this.memoryComputeKeys.add(MemoryComputeKey.of(MUTATED_MEMORY_KEYS, MemoryComputeKey.addOperator(), false, true));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(HALTED_TRAVERSERS, Operator.add, false, false));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(ALIVE_TRAVERSERS, Operator.add, true, true));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(MUTATED_MEMORY_KEYS, Operator.add, false, true));
 
     }
 
@@ -251,7 +252,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
             } else {
                 if (!this.neverTouchedMemoryKeys.isEmpty())
                     this.processMemory(memory, this.neverTouchedMemoryKeys, haltedTraversers);
-                memory.set(HALTED_TRAVERSERS, haltedTraversers.iterator());
+                memory.set(HALTED_TRAVERSERS, haltedTraversers);
                 return true;
             }
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
index c9cee4f..30eca48 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
@@ -27,6 +27,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffect
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -89,7 +90,7 @@ public final class ComputerResultStep<S> extends AbstractStep<ComputerResult, S>
                         this.currentIterator = this.getTraversal().getTraverserGenerator().generateIterator(IteratorUtils.of((S) sideEffects), (Step) this, 1l);
                     }
                 } else {
-                    this.currentIterator = result.memory().get(TraversalVertexProgram.HALTED_TRAVERSERS);
+                    this.currentIterator = result.memory().<TraverserSet<S>>get(TraversalVertexProgram.HALTED_TRAVERSERS).iterator();
                 }
                 this.currentIterator = attach(this.currentIterator, result.graph());
             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/MapMemory.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/MapMemory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/MapMemory.java
index 8ba3c91..74e1fc1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/MapMemory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/MapMemory.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.io.Serializable;
@@ -54,7 +55,7 @@ public final class MapMemory implements Memory.Admin, Serializable {
     }
 
     public void addMapReduceMemoryKey(final MapReduce mapReduce) {
-        this.memoryComputeKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), MemoryComputeKey.setOperator(), false, false));
+        this.memoryComputeKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), Operator.assign, false, false));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
index 31c148c..5965bb7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal;
 
+import java.util.Collection;
 import java.util.function.BinaryOperator;
 
 /**
@@ -25,7 +26,6 @@ import java.util.function.BinaryOperator;
  */
 public enum Operator implements BinaryOperator<Object> {
 
-
     sum {
         public Object apply(final Object a, Object b) {
             return NumberHelper.add((Number) a, (Number) b);
@@ -60,5 +60,21 @@ public enum Operator implements BinaryOperator<Object> {
         public Object apply(final Object a, final Object b) {
             return b;
         }
+    },
+    and {
+        public Object apply(final Object a, final Object b) {
+            return ((boolean) a) && ((boolean) b);
+        }
+    },
+    or {
+        public Object apply(final Object a, final Object b) {
+            return ((boolean) a) || ((boolean) b);
+        }
+    },
+    add {
+        public Object apply(final Object a, final Object b) {
+            ((Collection) a).addAll((Collection) b);
+            return a;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index 41a23eb..04e9c4f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
 import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
@@ -136,7 +137,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     public Optional<MemoryComputeKey> getMemoryComputeKey() {
-        return Optional.of(MemoryComputeKey.of(this.getId(), MemoryComputeKey.addOperator(), false, true));
+        return Optional.of(MemoryComputeKey.of(this.getId(), Operator.add, false, true));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountGlobalStep.java
index a2c2ff9..ec475fa 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountGlobalStep.java
@@ -18,16 +18,14 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
-import java.io.Serializable;
 import java.util.EnumSet;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.BinaryOperator;
 
@@ -41,7 +39,7 @@ public final class CountGlobalStep<S> extends ReducingBarrierStep<S, Long> {
     public CountGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
         this.setSeedSupplier(new ConstantSupplier<>(0L));
-        this.setReducingBiOperator(CountBiOperator.INSTANCE);
+        this.setReducingBiOperator((BinaryOperator) Operator.sum);
     }
 
     @Override
@@ -54,16 +52,4 @@ public final class CountGlobalStep<S> extends ReducingBarrierStep<S, Long> {
         return REQUIREMENTS;
     }
 
-    ///////////
-
-    public static class CountBiOperator implements BinaryOperator<Long>, Serializable {
-
-        private static final CountBiOperator INSTANCE = new CountBiOperator();
-
-        @Override
-        public Long apply(final Long mutatingSeed, final Long count) {
-            return mutatingSeed + count;
-        }
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FoldStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FoldStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FoldStep.java
index 04b7324..6bc230c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FoldStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FoldStep.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
@@ -29,7 +29,6 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.BiFunction;
 import java.util.function.BinaryOperator;
@@ -44,12 +43,12 @@ public final class FoldStep<S, E> extends ReducingBarrierStep<S, E> {
     private final boolean listFold;
 
     public FoldStep(final Traversal.Admin traversal) {
-        this(traversal, (Supplier) ArrayListSupplier.instance(), ListBiOperator.INSTANCE);
+        this(traversal, (Supplier) ArrayListSupplier.instance(), (BiFunction) Operator.add);
     }
 
     public FoldStep(final Traversal.Admin traversal, final Supplier<E> seed, final BiFunction<E, S, E> foldFunction) {
         super(traversal);
-        this.listFold = foldFunction instanceof ListBiOperator;
+        this.listFold = Operator.add.equals(foldFunction);
         this.setSeedSupplier(seed);
         this.setReducingBiOperator(new FoldBiOperator<>(foldFunction));
     }
@@ -72,19 +71,6 @@ public final class FoldStep<S, E> extends ReducingBarrierStep<S, E> {
         return REQUIREMENTS;
     }
 
-    /////////
-
-    public static class ListBiOperator<S> implements BinaryOperator<List<S>>, Serializable {
-
-        private static final ListBiOperator INSTANCE = new ListBiOperator();
-
-        @Override
-        public List<S> apply(final List<S> mutatingSeed, final List<S> list) {
-            mutatingSeed.addAll(list);
-            return mutatingSeed;
-        }
-    }
-
     public static class FoldBiOperator<E> implements BinaryOperator<E>, Serializable {
 
         private BiFunction biFunction;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
index 2cb7f7c..eee64d0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
@@ -18,32 +18,26 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
-import java.io.Serializable;
 import java.util.Collections;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.BinaryOperator;
 
-import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.max;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> {
 
-    private static final Double NAN = Double.valueOf(Double.NaN);
-
     public MaxGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.setSeedSupplier(new ConstantSupplier<>((S) NAN));
-        this.setReducingBiOperator(MaxGlobalBiOperator.INSTANCE);
+        this.setSeedSupplier(new ConstantSupplier<>((S) Integer.valueOf(Integer.MIN_VALUE)));
+        this.setReducingBiOperator((BinaryOperator) Operator.max);
     }
 
     @Override
@@ -56,15 +50,4 @@ public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S
         return Collections.singleton(TraverserRequirement.OBJECT);
     }
 
-    /////
-
-    public static class MaxGlobalBiOperator<S extends Number> implements BinaryOperator<S>, Serializable {
-
-        private static final MaxGlobalBiOperator INSTANCE = new MaxGlobalBiOperator();
-
-        @Override
-        public S apply(final S mutatingSeed, final S number) {
-            return !NAN.equals(mutatingSeed) ? (S) max(mutatingSeed, number) : number;
-        }
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
index 1e9c68a..5779e97 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
@@ -18,32 +18,26 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
-import java.io.Serializable;
 import java.util.Collections;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.BinaryOperator;
 
-import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.min;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> {
 
-    private static final Double NAN = Double.valueOf(Double.NaN);
-
     public MinGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.setSeedSupplier(new ConstantSupplier<>((S) NAN));
-        this.setReducingBiOperator(MinGlobalBiOperator.INSTANCE);
+        this.setSeedSupplier(new ConstantSupplier<>((S)Integer.valueOf(Integer.MAX_VALUE)));
+        this.setReducingBiOperator((BinaryOperator) Operator.min);
     }
 
     @Override
@@ -55,16 +49,4 @@ public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S
     public Set<TraverserRequirement> getRequirements() {
         return Collections.singleton(TraverserRequirement.OBJECT);
     }
-
-    /////
-
-    public static class MinGlobalBiOperator<S extends Number> implements BinaryOperator<S>, Serializable {
-
-        private static final MinGlobalBiOperator INSTANCE = new MinGlobalBiOperator();
-
-        @Override
-        public S apply(final S mutatingSeed, final S number) {
-            return !NAN.equals(mutatingSeed) ? (S) min(mutatingSeed, number) : number;
-        }
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
index 10b791f..5802c1e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
@@ -141,7 +142,7 @@ public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implement
 
     @Override
     public Optional<MemoryComputeKey> getMemoryComputeKey() {
-        return Optional.of(MemoryComputeKey.of(this.getId(), MemoryComputeKey.addOperator(), false, true));
+        return Optional.of(MemoryComputeKey.of(this.getId(), Operator.add, false, true));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
index a138603..074a4d5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
@@ -18,20 +18,17 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
-import java.io.Serializable;
 import java.util.EnumSet;
-import java.util.Optional;
 import java.util.Set;
 import java.util.function.BinaryOperator;
 
-import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.add;
 import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.mul;
 
 /**
@@ -47,7 +44,7 @@ public final class SumGlobalStep<S extends Number> extends ReducingBarrierStep<S
     public SumGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
         this.setSeedSupplier(new ConstantSupplier<>((S) Integer.valueOf(0)));
-        this.setReducingBiOperator(SumGlobalBiOperator.INSTANCE);
+        this.setReducingBiOperator((BinaryOperator) Operator.sum);
     }
 
     @Override
@@ -60,16 +57,4 @@ public final class SumGlobalStep<S extends Number> extends ReducingBarrierStep<S
     public Set<TraverserRequirement> getRequirements() {
         return REQUIREMENTS;
     }
-
-    /////
-
-    public static class SumGlobalBiOperator<S extends Number> implements BinaryOperator<S>, Serializable {
-
-        private static final SumGlobalBiOperator INSTANCE = new SumGlobalBiOperator();
-
-        @Override
-        public S apply(final S mutatingSeed, final S number) {
-            return (S) add(mutatingSeed, number);
-        }
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
index ebaecab..64c1478 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
 import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
@@ -31,13 +32,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.BulkSetSupplier;
 
-import java.io.Serializable;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
-import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -110,18 +108,6 @@ public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectC
 
     @Override
     public Optional<MemoryComputeKey> getMemoryComputeKey() {
-        return Optional.of(MemoryComputeKey.of(this.sideEffectKey, StoreBiOperator.INSTANCE, false, false));
+        return Optional.of(MemoryComputeKey.of(this.sideEffectKey, Operator.add, false, false));
     }
-
-    public static class StoreBiOperator<A> implements BinaryOperator<Collection<A>>, Serializable {
-
-        private final static StoreBiOperator INSTANCE = new StoreBiOperator();
-
-        @Override
-        public Collection<A> apply(final Collection<A> mutatingSeed, final Collection<A> collection) {
-            mutatingSeed.addAll(collection);
-            return mutatingSeed;
-        }
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
index b0fc923..dd79bae 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
@@ -19,22 +19,16 @@
 package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapMemory;
 import org.apache.tinkerpop.gremlin.process.traversal.Contains;
 import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupCountStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStepV3d0;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_P_S_SE_SL_Traverser;
@@ -325,28 +319,16 @@ public final class GryoMapper implements Mapper<Kryo> {
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ZonedDateTime.class, kryo -> new JavaTimeSerializers.ZonedDateTimeSerializer(), 104));
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ZoneOffset.class, kryo -> new JavaTimeSerializers.ZoneOffsetSerializer(), 105));
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MemoryComputeKey.AddOperator.class, null, 126));  // ***LAST ID**
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MemoryComputeKey.AndOperator.class, null, 107));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MemoryComputeKey.OrOperator.class, null, 108));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MemoryComputeKey.SetOperator.class, null, 109));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MemoryComputeKey.SumLongOperator.class, null, 110));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MemoryComputeKey.SumIntegerOperator.class, null, 111));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Operator.class, null, 107));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(FoldStep.FoldBiOperator.class, null, 108));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(GroupCountStep.GroupCountBiOperator.class, null, 109));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(GroupStep.GroupBiOperator.class, null, 116));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MeanGlobalStep.MeanGlobalBiOperator.class, null, 110));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MeanGlobalStep.MeanNumber.class, null, 111));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TreeStep.TreeBiOperator.class, null, 112));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(GroupStepV3d0.GroupBiOperatorV3d0.class, null, 113));  // ***LAST ID**
 
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(CountGlobalStep.CountBiOperator.class, null, 112));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(FoldStep.ListBiOperator.class, null, 113));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(FoldStep.FoldBiOperator.class, null, 114));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(GroupCountStep.GroupCountBiOperator.class, null, 115));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(GroupStep.GroupBiOperator.class, null, 116));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MaxGlobalStep.MaxGlobalBiOperator.class, null, 117));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MeanGlobalStep.MeanGlobalBiOperator.class, null, 118));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MeanGlobalStep.MeanNumber.class, null, 119));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MinGlobalStep.MinGlobalBiOperator.class, null, 120));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(SumGlobalStep.SumGlobalBiOperator.class, null, 121));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TreeStep.TreeBiOperator.class, null, 122));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(GroupStepV3d0.GroupBiOperatorV3d0.class, null, 123));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(StoreStep.StoreBiOperator.class, null, 124));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Operator.class, null, 125));
         }};
 
         private final List<IoRegistry> registries = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
index 2513701..c3e2005 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
@@ -25,13 +25,14 @@ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.sideEffect.mapreduce.TraverserMapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -220,10 +221,10 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
             return new HashSet<>(Arrays.asList(
-                    MemoryComputeKey.of("set", MemoryComputeKey.setOperator(), true, false),
-                    MemoryComputeKey.of("incr", MemoryComputeKey.sumLongOperator(), true, false),
-                    MemoryComputeKey.of("and", MemoryComputeKey.andOperator(), true, false),
-                    MemoryComputeKey.of("or", MemoryComputeKey.orOperator(), true, false)));
+                    MemoryComputeKey.of("set", Operator.assign, true, false),
+                    MemoryComputeKey.of("incr", Operator.sum, true, false),
+                    MemoryComputeKey.of("and", Operator.and, true, false),
+                    MemoryComputeKey.of("or", Operator.or, true, false)));
         }
 
         @Override
@@ -272,7 +273,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
 
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
-            return Collections.singleton(MemoryComputeKey.of(null, MemoryComputeKey.orOperator(), true, false));
+            return Collections.singleton(MemoryComputeKey.of(null, Operator.or, true, false));
         }
 
         @Override
@@ -322,7 +323,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
 
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
-            return Collections.singleton(MemoryComputeKey.of("", MemoryComputeKey.orOperator(), true, false));
+            return Collections.singleton(MemoryComputeKey.of("", Operator.or, true, false));
         }
 
         @Override
@@ -545,8 +546,8 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
             return new HashSet<>(Arrays.asList(
-                    MemoryComputeKey.of("a", MemoryComputeKey.sumIntegerOperator(), true, false),
-                    MemoryComputeKey.of("b", MemoryComputeKey.sumIntegerOperator(), true, false)));
+                    MemoryComputeKey.of("a", Operator.sum, true, false),
+                    MemoryComputeKey.of("b", Operator.sum, true, false)));
         }
 
         @Override
@@ -672,12 +673,12 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
             return new HashSet<>(Arrays.asList(
-                    MemoryComputeKey.of("a", MemoryComputeKey.sumLongOperator(), true, false),
-                    MemoryComputeKey.of("b", MemoryComputeKey.sumLongOperator(), true, false),
-                    MemoryComputeKey.of("c", MemoryComputeKey.andOperator(), true, false),
-                    MemoryComputeKey.of("d", MemoryComputeKey.orOperator(), true, false),
-                    MemoryComputeKey.of("e", MemoryComputeKey.andOperator(), true, false),
-                    MemoryComputeKey.of("f", MemoryComputeKey.setOperator(), true, false)));
+                    MemoryComputeKey.of("a", Operator.sum, true, false),
+                    MemoryComputeKey.of("b", Operator.sum, true, false),
+                    MemoryComputeKey.of("c", Operator.and, true, false),
+                    MemoryComputeKey.of("d", Operator.or, true, false),
+                    MemoryComputeKey.of("e", Operator.and, true, false),
+                    MemoryComputeKey.of("f", Operator.assign, true, false)));
         }
 
         @Override
@@ -1181,7 +1182,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
 
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
-            return Collections.singleton(MemoryComputeKey.of("test", MemoryComputeKey.sumIntegerOperator(), true, false));
+            return Collections.singleton(MemoryComputeKey.of("test", Operator.sum, true, false));
         }
 
         @Override
@@ -1499,7 +1500,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
 
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
-            return Collections.singleton(MemoryComputeKey.<Long>of("workerCount", MemoryComputeKey.sumLongOperator(), true, false));
+            return Collections.singleton(MemoryComputeKey.of("workerCount", Operator.sum, true, false));
         }
 
         /*public void workerIterationStart(final Memory memory) {
@@ -1915,7 +1916,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         assertTrue(memory3.keys().contains(TraversalVertexProgram.HALTED_TRAVERSERS));
         assertEquals(1, memory3.<Map<Long, Long>>get("m").size());
         assertEquals(6, memory3.<Map<Long, Long>>get("m").get(1l).intValue());
-        List<Traverser<String>> traversers = IteratorUtils.list(memory3.<Iterator<Traverser<String>>>get(TraversalVertexProgram.HALTED_TRAVERSERS));
+        List<Traverser<String>> traversers = IteratorUtils.list(memory3.<TraverserSet>get(TraversalVertexProgram.HALTED_TRAVERSERS).iterator());
         assertEquals(6l, traversers.stream().map(Traverser::bulk).reduce((a, b) -> a + b).get().longValue());
         assertEquals(4l, traversers.stream().filter(s -> s.get().equals("person")).map(Traverser::bulk).reduce((a, b) -> a + b).get().longValue());
         assertEquals(2l, traversers.stream().filter(s -> s.get().equals("software")).map(Traverser::bulk).reduce((a, b) -> a + b).get().longValue());
@@ -2109,9 +2110,9 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
             return new HashSet<>(Arrays.asList(
-                    MemoryComputeKey.of("m1", MemoryComputeKey.orOperator(), true, true),
-                    MemoryComputeKey.of("m2", MemoryComputeKey.andOperator(), true, true),
-                    MemoryComputeKey.of("m3", MemoryComputeKey.sumLongOperator(), true, false)));
+                    MemoryComputeKey.of("m1", Operator.or, true, true),
+                    MemoryComputeKey.of("m2", Operator.and, true, true),
+                    MemoryComputeKey.of("m3", Operator.sum, true, false)));
         }
 
         @Override
@@ -2259,10 +2260,10 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         @Override
         public Set<MemoryComputeKey> getMemoryComputeKeys() {
             return new HashSet<>(Arrays.asList(
-                    MemoryComputeKey.of("m1", MemoryComputeKey.orOperator(), false, false),
-                    MemoryComputeKey.of("m2", MemoryComputeKey.andOperator(), true, true),
-                    MemoryComputeKey.of("m3", MemoryComputeKey.sumLongOperator(), false, true),
-                    MemoryComputeKey.of("m4", MemoryComputeKey.sumIntegerOperator(), true, false)));
+                    MemoryComputeKey.of("m1", Operator.or, false, false),
+                    MemoryComputeKey.of("m2", Operator.and, true, true),
+                    MemoryComputeKey.of("m3", Operator.sum, false, true),
+                    MemoryComputeKey.of("m4", Operator.sum, true, false)));
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMemory.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMemory.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMemory.java
index 0b85969..95bb18d 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMemory.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMemory.java
@@ -28,6 +28,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.MemoryHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.io.Serializable;
@@ -58,7 +59,7 @@ public final class SparkMemory implements Memory.Admin, Serializable {
             }
         }
         for (final MapReduce mapReduce : mapReducers) {
-            this.memoryComputeKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), MemoryComputeKey.setOperator(), false, false));
+            this.memoryComputeKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), Operator.assign, false, false));
         }
         for (final MemoryComputeKey memoryComputeKey : this.memoryComputeKeys.values()) {
             this.sparkMemory.put(

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/42b72545/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
index 4186087..34144e3 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.MemoryHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.HashMap;
@@ -55,7 +56,7 @@ public final class TinkerMemory implements Memory.Admin {
             }
         }
         for (final MapReduce mapReduce : mapReducers) {
-            this.memoryKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), MemoryComputeKey.setOperator(), false, false));
+            this.memoryKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), Operator.assign, false, false));
         }
     }