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/08/25 20:19:43 UTC

incubator-tinkerpop git commit: first push on mutating steps with traversal parameterization.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/mutating_traverser [created] 6ffcca3cd


first push on mutating steps with traversal parameterization.


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

Branch: refs/heads/mutating_traverser
Commit: 6ffcca3cd91a3d3607497783e06c4c4aaa7e48f2
Parents: ae64495
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Aug 25 12:19:32 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Aug 25 12:19:32 2015 -0600

----------------------------------------------------------------------
 .../traversal/dsl/graph/GraphTraversal.java     | 168 +++++++++++++++++--
 .../dsl/graph/GraphTraversalSource.java         |  35 +++-
 .../gremlin/process/traversal/dsl/graph/__.java |  39 ++++-
 .../process/traversal/step/Mutating.java        |   5 +
 .../traversal/step/map/AddVertexStartStep.java  |  23 ++-
 .../traversal/step/map/AddVertexStep.java       |  50 ++++--
 .../step/sideEffect/AddPropertyStep.java        |  80 ++++-----
 .../process/traversal/step/util/Parameters.java |  96 +++++++++++
 .../strategy/decoration/ElementIdStrategy.java  |  17 +-
 .../strategy/decoration/PartitionStrategy.java  |   4 +-
 .../strategy/decoration/EventStrategyTest.java  |   2 +-
 .../verification/ReadOnlyStrategyTest.java      |   2 +-
 .../step/map/GroovyAddVertexTest.groovy         |  24 ++-
 .../traversal/step/map/AddVertexTest.java       |  77 ++++++++-
 .../ElementIdStrategyProcessTest.java           |  25 +--
 .../decoration/EventStrategyProcessTest.java    |  24 +--
 .../PartitionStrategyProcessTest.java           |  22 +--
 .../tinkergraph/structure/TinkerGraphTest.java  |   5 +-
 18 files changed, 561 insertions(+), 137 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index a643e48..043882c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -18,22 +18,140 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
-import org.apache.tinkerpop.gremlin.process.traversal.*;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.*;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.FunctionTraverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.PredicateTraverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.TokenTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.TrueTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.*;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConjunctionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CyclicPathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SampleGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TimeLimitStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WherePredicateStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.DedupLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeOtherVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
+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.IdStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LabelStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaFlatMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LoopsStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapKeysStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapValuesStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyKeyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyValueStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.RangeLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SackStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SampleLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectOneStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TailLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalFlatMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AddPropertyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.LambdaSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackElementValueStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackObjectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TraversalSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ElementFunctionComparator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ElementValueComparator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.NoOpBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.TraversalComparator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.*;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+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.PropertyType;
+import org.apache.tinkerpop.gremlin.structure.T;
+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.function.ConstantSupplier;
 
-import java.util.*;
-import java.util.function.*;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -519,8 +637,19 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new TreeStep<>(this.asAdmin()));
     }
 
-    public default GraphTraversal<S, Vertex> addV(final Object... keyValues) {
-        return this.asAdmin().addStep(new AddVertexStep<>(this.asAdmin(), keyValues));
+    public default GraphTraversal<S, Vertex> addV(final String vertexLabel) {
+        return this.asAdmin().addStep(new AddVertexStep<>(this.asAdmin(), vertexLabel));
+    }
+
+    public default GraphTraversal<S, Vertex> addV() {
+        return this.asAdmin().addStep(new AddVertexStep<>(this.asAdmin(), null));
+    }
+
+    @Deprecated
+    public default GraphTraversal<S, Vertex> addV(final Object... propertyKeyValues) {
+        this.addV(ElementHelper.getLabelValue(propertyKeyValues).orElse(Vertex.DEFAULT_LABEL));
+        ((AddVertexStep) this.asAdmin().getEndStep()).addPropertyMutations(propertyKeyValues);
+        return (GraphTraversal<S, Vertex>) this;
     }
 
     public default GraphTraversal<S, Edge> addE(final Direction direction, final String firstVertexKeyOrEdgeLabel, final String edgeLabelOrSecondVertexKey, final Object... propertyKeyValues) {
@@ -803,12 +932,19 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new ProfileStep<>(this.asAdmin()));
     }
 
-    public default GraphTraversal<S, E> property(final String key, final Object value, final Object... keyValues) {
-        return this.asAdmin().addStep(new AddPropertyStep(this.asAdmin(), key, value, keyValues));
+
+    public default GraphTraversal<S, E> property(final VertexProperty.Cardinality cardinality, final Object key, final Object value, final Object... keyValues) {
+        if ((this.asAdmin().getEndStep() instanceof AddVertexStep || this.asAdmin().getEndStep() instanceof AddEdgeStep) && keyValues.length == 0) {
+            ((Mutating) this.asAdmin().getEndStep()).addPropertyMutations(new Object[]{key, value});
+        } else {
+            this.asAdmin().addStep(new AddPropertyStep(this.asAdmin(), cardinality, key, value));
+            ((AddPropertyStep) this.asAdmin().getEndStep()).addPropertyMutations(keyValues);
+        }
+        return this;
     }
 
-    public default GraphTraversal<S, E> property(final VertexProperty.Cardinality cardinality, final String key, final Object value, final Object... keyValues) {
-        return this.asAdmin().addStep(new AddPropertyStep(this.asAdmin(), cardinality, key, value, keyValues));
+    public default GraphTraversal<S, E> property(final Object key, final Object value, final Object... keyValues) {
+        return this.property(null, key, value, keyValues);
     }
 
     ///////////////////// BRANCH STEPS /////////////////////

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
index 59b9b18..799aca3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
@@ -90,9 +90,25 @@ public class GraphTraversalSource implements TraversalSource {
         return traversal;
     }
 
+    /**
+     * @deprecated As of release 3.1.0, replaced by {@link #addV()}
+     */
+    @Deprecated
     public GraphTraversal<Vertex, Vertex> addV(final Object... keyValues) {
         final GraphTraversal.Admin<Vertex, Vertex> traversal = this.generateTraversal();
-        return traversal.addStep(new AddVertexStartStep(traversal, keyValues));
+        traversal.addStep(new AddVertexStartStep(traversal, null));
+        ((AddVertexStartStep) traversal.getEndStep()).addPropertyMutations(keyValues);
+        return traversal;
+    }
+
+    public GraphTraversal<Vertex, Vertex> addV(final String label) {
+        final GraphTraversal.Admin<Vertex, Vertex> traversal = this.generateTraversal();
+        return traversal.addStep(new AddVertexStartStep(traversal, label));
+    }
+
+    public GraphTraversal<Vertex, Vertex> addV() {
+        final GraphTraversal.Admin<Vertex, Vertex> traversal = this.generateTraversal();
+        return traversal.addStep(new AddVertexStartStep(traversal, null));
     }
 
     public GraphTraversal<Vertex, Vertex> V(final Object... vertexIds) {
@@ -228,8 +244,23 @@ public class GraphTraversalSource implements TraversalSource {
             this.withPaths = withPaths;
         }
 
+        /**
+         * @deprecated As of release 3.1.0, replaced by {@link #addV()}
+         */
+        @Deprecated
         public GraphTraversal<Vertex, Vertex> addV(final Object... keyValues) {
-            this.traversal.addStep(new AddVertexStartStep(this.traversal, keyValues));
+            this.traversal.addStep(new AddVertexStartStep(this.traversal, null));
+            ((AddVertexStartStep) this.traversal.getEndStep()).addPropertyMutations(keyValues);
+            return ((this.withPaths) ? this.traversal.addStep(new PathIdentityStep<>(this.traversal)) : this.traversal);
+        }
+
+        public GraphTraversal<Vertex, Vertex> addV(final String label) {
+            this.traversal.addStep(new AddVertexStartStep(this.traversal, label));
+            return ((this.withPaths) ? this.traversal.addStep(new PathIdentityStep<>(this.traversal)) : this.traversal);
+        }
+
+        public GraphTraversal<Vertex, Vertex> addV() {
+            this.traversal.addStep(new AddVertexStartStep(this.traversal, null));
             return ((this.withPaths) ? this.traversal.addStep(new PathIdentityStep<>(this.traversal)) : this.traversal);
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index e2d9e80..b20e4a9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -18,14 +18,28 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
-import org.apache.tinkerpop.gremlin.process.traversal.*;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+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.Tree;
-import org.apache.tinkerpop.gremlin.structure.*;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.function.*;
+import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -434,8 +448,23 @@ public class __ {
     }
 
     /**
+     * @see {@link GraphTraversal#addV(String)}
+     */
+    public static <A> GraphTraversal<A, Vertex> addV(final String vertexLabel) {
+        return __.<A>start().addV(vertexLabel);
+    }
+
+    /**
+     * @see {@link GraphTraversal#addV()}
+     */
+    public static <A> GraphTraversal<A, Vertex> addV() {
+        return __.<A>start().addV();
+    }
+
+    /**
      * @see {@link GraphTraversal#addV(Object...)}
      */
+    @Deprecated
     public static <A> GraphTraversal<A, Vertex> addV(final Object... propertyKeyValues) {
         return __.<A>start().addV(propertyKeyValues);
     }
@@ -673,11 +702,11 @@ public class __ {
         return __.<A>start().store(sideEffectKey);
     }
 
-    public static <A> GraphTraversal<A, A> property(final String key, final Object value, final Object... keyValues) {
+    public static <A> GraphTraversal<A, A> property(final Object key, final Object value, final Object... keyValues) {
         return __.<A>start().property(key, value, keyValues);
     }
 
-    public static <A> GraphTraversal<A, A> property(final VertexProperty.Cardinality cardinality, final String key, final Object value, final Object... keyValues) {
+    public static <A> GraphTraversal<A, A> property(final VertexProperty.Cardinality cardinality, final Object key, final Object value, final Object... keyValues) {
         return __.<A>start().property(cardinality, key, value, keyValues);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
index 07bb350..17d8e09 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
@@ -34,4 +34,9 @@ public interface Mutating<E extends Event> {
      * Gets the callback registry for events that the step raises.
      */
     public CallbackRegistry<E> getMutatingCallbackRegistry();
+
+    public default void addPropertyMutations(final Object... keyValues) {
+
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
index 3702aa0..e63fd8c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
@@ -26,33 +26,46 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRe
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ListCallbackRegistry;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> implements Mutating<Event.VertexAddedEvent> {
 
-    private final Object[] keyValues;
+    private List<Object> keyValues = new ArrayList<>();
     private boolean first = true;
     private CallbackRegistry<Event.VertexAddedEvent> callbackRegistry;
 
-    public AddVertexStartStep(final Traversal.Admin traversal, final Object... keyValues) {
+    public AddVertexStartStep(final Traversal.Admin traversal, final String label) {
         super(traversal);
-        this.keyValues = keyValues;
+        if (null != label) {
+            this.keyValues.add(T.label);
+            this.keyValues.add(label);
+        }
     }
 
     public Object[] getKeyValues() {
-        return keyValues;
+        return keyValues.toArray(new Object[this.keyValues.size()]);
+    }
+
+    @Override
+    public void addPropertyMutations(final Object... keyValues) {
+        Collections.addAll(this.keyValues, keyValues);
     }
 
     @Override
     protected Traverser<Vertex> processNextStart() {
         if (this.first) {
             this.first = false;
-            final Vertex v = this.getTraversal().getGraph().get().addVertex(this.keyValues);
+            final Vertex v = this.getTraversal().getGraph().get().addVertex(this.keyValues.toArray(new Object[this.keyValues.size()]));
             if (callbackRegistry != null) {
                 final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(DetachedFactory.detach(v, true));
                 callbackRegistry.getCallbacks().forEach(c -> c.accept(vae));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
index dbf88b5..77c4786 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
@@ -21,35 +21,56 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRegistry;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ListCallbackRegistry;
-import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.EmptyTraverser;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutating<Event.VertexAddedEvent> {
-
-    private final Object[] keyValues;
+public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutating<Event.VertexAddedEvent>, TraversalParent {
 
+    private final Parameters parameters = new Parameters();
     private CallbackRegistry<Event.VertexAddedEvent> callbackRegistry;
 
-    public AddVertexStep(final Traversal.Admin traversal, final Object... keyValues) {
+    public AddVertexStep(final Traversal.Admin traversal, final String label) {
         super(traversal);
-        this.keyValues = keyValues;
+        this.parameters.set(T.label, label);
+        this.parameters.integrateTraversals(this);
+    }
+
+    @Override
+    public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
+        return this.parameters.getTraversals();
     }
 
+
     public Object[] getKeyValues() {
-        return keyValues;
+        return this.parameters.getKeyValues(EmptyTraverser.instance());
+    }
+
+    @Override
+    public void addPropertyMutations(final Object... keyValues) {
+        for (int i = 0; i < keyValues.length; i = i + 2) {
+            this.parameters.set(keyValues[i], keyValues[i + 1]);
+        }
+        this.parameters.integrateTraversals(this);
     }
 
     @Override
     protected Vertex map(final Traverser.Admin<S> traverser) {
-        final Vertex v = this.getTraversal().getGraph().get().addVertex(this.keyValues);
+        final Vertex v = this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(traverser));
         if (callbackRegistry != null) {
             final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(DetachedFactory.detach(v, true));
             callbackRegistry.getCallbacks().forEach(c -> c.accept(vae));
@@ -65,10 +86,13 @@ public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutati
 
     @Override
     public int hashCode() {
-        int result = super.hashCode(), i = 0;
-        for (final Object item : this.keyValues) {
-            result ^= Integer.rotateLeft(item.hashCode(), i += 16);
-        }
-        return result;
+        return super.hashCode() ^ this.parameters.hashCode();
     }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return this.getSelfAndChildRequirements();
+    }
+
+    // TODO clone()
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
index b2b0c1a..9176b15 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
@@ -21,66 +21,61 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRegistry;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ListCallbackRegistry;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.*;
+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.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
-import java.util.EnumSet;
+import java.util.List;
 import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class AddPropertyStep<S extends Element> extends SideEffectStep<S> implements Mutating<Event.ElementPropertyChangedEvent> {
+public final class AddPropertyStep<S extends Element> extends SideEffectStep<S> implements Mutating<Event.ElementPropertyChangedEvent>, TraversalParent {
 
-    private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
+    private final Parameters parameters = new Parameters();
 
     private final VertexProperty.Cardinality cardinality;
-    private final String key;
-    private final Object value;
-    private final Object[] vertexPropertyKeyValues;
-    private final boolean asVertex;
     private CallbackRegistry<Event.ElementPropertyChangedEvent> callbackRegistry;
 
-    public AddPropertyStep(final Traversal.Admin traversal, final VertexProperty.Cardinality cardinality, final String key, final Object value, final Object... vertexPropertyKeyValues) {
+    public AddPropertyStep(final Traversal.Admin traversal, final VertexProperty.Cardinality cardinality, final Object keyObject, final Object valueObject) {
         super(traversal);
-        this.key = key;
-        this.value = value;
-        this.vertexPropertyKeyValues = vertexPropertyKeyValues;
-        this.asVertex = null != cardinality || this.vertexPropertyKeyValues.length > 0;
-        this.cardinality = null == cardinality ? VertexProperty.Cardinality.list : cardinality;
+        this.parameters.set(T.key, keyObject);
+        this.parameters.set(T.value, valueObject);
+        this.cardinality = cardinality;
+        this.parameters.integrateTraversals(this);
     }
 
-    public AddPropertyStep(final Traversal.Admin traversal, final String key, final Object value, final Object... vertexPropertyKeyValues) {
-        this(traversal, null, key, value, vertexPropertyKeyValues);
-    }
-
-    public VertexProperty.Cardinality getCardinality() {
-        return cardinality;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public Object getValue() {
-        return value;
-    }
-
-    public Object[] getVertexPropertyKeyValues() {
-        return vertexPropertyKeyValues;
+    @Override
+    public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
+        return this.parameters.getTraversals();
     }
 
-    public boolean isAsVertex() {
-        return asVertex;
+    @Override
+    public void addPropertyMutations(final Object... keyValues) {
+        for (int i = 0; i < keyValues.length; i = i + 2) {
+            this.parameters.set(keyValues[i], keyValues[i + 1]);
+        }
+        this.parameters.integrateTraversals(this);
     }
 
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
-        if (callbackRegistry != null) {
+        final String key = this.parameters.get(traverser, T.key);
+        final Object value = this.parameters.get(traverser, T.value);
+        final Object[] vertexPropertyKeyValues = this.parameters.getKeyValues(traverser, T.key, T.value);
+
+        if (this.callbackRegistry != null) {
             final Element currentElement = traverser.get();
             final Property currentProperty = traverser.get().property(key);
 
@@ -101,15 +96,15 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
             callbackRegistry.getCallbacks().forEach(c -> c.accept(evt));
         }
 
-        if (asVertex)
-            ((Vertex) traverser.get()).property(cardinality, key, value, vertexPropertyKeyValues);
+        if (null != this.cardinality)
+            ((Vertex) traverser.get()).property(this.cardinality, key, value, vertexPropertyKeyValues);
         else
             traverser.get().property(key, value);
     }
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
-        return REQUIREMENTS;
+        return this.getSelfAndChildRequirements(TraverserRequirement.OBJECT);
     }
 
     @Override
@@ -118,12 +113,11 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
         return callbackRegistry;
     }
 
+
     @Override
     public int hashCode() {
-        int result = super.hashCode() ^ this.cardinality.hashCode() ^ this.key.hashCode() ^ Integer.rotateLeft(this.value.hashCode(), 16);
-        for (final Object item : this.vertexPropertyKeyValues) {
-            result ^= item.hashCode();
-        }
-        return result;
+        return super.hashCode() ^ this.cardinality.hashCode() ^ this.parameters.hashCode();
     }
+
+    // TODO clone()
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
new file mode 100644
index 0000000..3a20c8d
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
@@ -0,0 +1,96 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one
+ *  * or more contributor license agreements.  See the NOTICE file
+ *  * distributed with this work for additional information
+ *  * regarding copyright ownership.  The ASF licenses this file
+ *  * to you under the Apache License, Version 2.0 (the
+ *  * "License"); you may not use this file except in compliance
+ *  * with the License.  You may obtain a copy of the License at
+ *  *
+ *  * http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing,
+ *  * software distributed under the License is distributed on an
+ *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  * KIND, either express or implied.  See the License for the
+ *  * specific language governing permissions and limitations
+ *  * under the License.
+ *
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.step.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class Parameters implements Cloneable, Serializable {
+
+    private static final Object[] EMPTY_ARRAY = new Object[0];
+
+    private Map<Object, Object> parameters = new HashMap<>();
+
+    public <S, E> E get(final Traverser.Admin<S> traverser, final Object key) {
+        final Object object = parameters.get(key);
+        return object instanceof Traversal.Admin ? TraversalUtil.apply(traverser, (Traversal.Admin<S, E>) object) : (E) object;
+    }
+
+    public <S> Object[] getKeyValues(final Traverser.Admin<S> traverser, final Object... exceptKeys) {
+        if (this.parameters.size() == 0) return EMPTY_ARRAY;
+        final List<Object> exceptions = Arrays.asList(exceptKeys);
+        final Object[] keyValues = new Object[(this.parameters.size() * 2) - (exceptKeys.length * 2)];
+        int counter = 0;
+        for (final Map.Entry<Object, Object> keyValue : this.parameters.entrySet()) {
+            if (!exceptions.contains(keyValue.getKey())) {
+                keyValues[counter++] = keyValue.getKey() instanceof Traversal.Admin ? TraversalUtil.apply(traverser, (Traversal.Admin<S, ?>) keyValue.getKey()) : keyValue.getKey();
+                keyValues[counter++] = keyValue.getValue() instanceof Traversal.Admin ? TraversalUtil.apply(traverser, (Traversal.Admin<S, ?>) keyValue.getValue()) : keyValue.getValue();
+            }
+        }
+        return keyValues;
+    }
+
+    public void set(final Object key, final Object value) {
+        if (null != value) this.parameters.put(key, value);
+    }
+
+    public void integrateTraversals(final TraversalParent step) {
+        for (final Object value : this.parameters.values()) {
+            if (value instanceof Traversal.Admin) {
+                step.integrateChild((Traversal.Admin) value);
+            }
+        }
+    }
+
+    public <S, E> List<Traversal.Admin<S, E>> getTraversals() {
+        return (List) this.parameters.values().stream().filter(t -> t instanceof Traversal.Admin).collect(Collectors.toList());
+    }
+
+    public Parameters clone() {
+        try {
+            final Parameters clone = (Parameters) super.clone();
+            clone.parameters = new HashMap<>();
+            for (final Map.Entry<Object, Object> entry : this.parameters.entrySet()) {
+                clone.parameters.put(entry.getKey(), entry.getValue() instanceof Traversal ? ((Traversal.Admin) entry.getValue()).clone() : entry.getValue());
+            }
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    public int hashCode() {
+        return this.parameters.hashCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
index 2eca211..6927f56 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
@@ -105,20 +105,21 @@ public final class ElementIdStrategy extends AbstractTraversalStrategy<Traversal
         // in each case below, determine if the T.id is present and if so, replace T.id with the idPropertyKey or if
         // it is not present then shove it in there and generate an id
         TraversalHelper.getStepsOfAssignableClass(AddVertexStep.class, traversal).stream().forEach(s -> {
-            if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
-                TraversalHelper.replaceStep(s, new AddVertexStep(traversal, ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
-            else {
+            if (ElementHelper.getIdValue(s.getKeyValues()).isPresent()) {
+
+                //TraversalHelper.replaceStep(s, new AddVertexStep(traversal, ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
+            } else {
                 final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
-                TraversalHelper.replaceStep(s, new AddVertexStep(traversal, kvs), traversal);
+                // TraversalHelper.replaceStep(s, new AddVertexStep(traversal, kvs), traversal);
             }
         });
 
         TraversalHelper.getStepsOfAssignableClass(AddVertexStartStep.class, traversal).stream().forEach(s -> {
-            if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
-                TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
-            else {
+            if (ElementHelper.getIdValue(s.getKeyValues()).isPresent()) {
+                // TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
+            } else {
                 final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
-                TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, kvs), traversal);
+                // TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, kvs), traversal);
             }
 
         });

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
index a957571..aa0b648 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
@@ -95,12 +95,12 @@ public final class PartitionStrategy extends AbstractTraversalStrategy<Traversal
         // all write vertex steps need to have partition keys tossed into the property key/value list after mutating steps
         TraversalHelper.getStepsOfAssignableClass(AddVertexStep.class, traversal).forEach(s -> {
             final Object[] keyValues = injectPartitionInfo(s.getKeyValues());
-            TraversalHelper.replaceStep(s, new AddVertexStep(traversal, keyValues), traversal);
+            //TraversalHelper.replaceStep(s, new AddVertexStep(traversal, keyValues), traversal);
         });
 
         TraversalHelper.getStepsOfAssignableClass(AddVertexStartStep.class, traversal).forEach(s -> {
             final Object[] keyValues = injectPartitionInfo(s.getKeyValues());
-            TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, keyValues), traversal);
+            //TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, keyValues), traversal);
         });
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
index 8412e70..fedc874 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyTest.java
@@ -51,7 +51,7 @@ public class EventStrategyTest {
                 {"addE(OUT)", new DefaultGraphTraversal<>(EmptyGraph.instance()).addE(Direction.OUT, "test", "test"), 1},
                 {"addE(OUT,args)", new DefaultGraphTraversal<>(EmptyGraph.instance()).addE(Direction.OUT, "test", "test", "this", "that"), 1},
                 {"addV()", new DefaultGraphTraversal<>(EmptyGraph.instance()).addV(), 1},
-                {"addV(args)", new DefaultGraphTraversal<>(EmptyGraph.instance()).addV("test", "this"), 1},
+               // {"addV(args)", new DefaultGraphTraversal<>(EmptyGraph.instance()).addV("test", "this"), 1},
                 {"addV().property(k,v)", new DefaultGraphTraversal<>(EmptyGraph.instance()).addV().property("test", "that"), 2},
                 {"properties().drop()", new DefaultGraphTraversal<>(EmptyGraph.instance()).properties().drop(), 1},
                 {"properties(k).drop()", new DefaultGraphTraversal<>(EmptyGraph.instance()).properties("test").drop(), 1},

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
index 41ffb2a..843ecfa 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyTest.java
@@ -54,7 +54,7 @@ public class ReadOnlyStrategyTest {
                 {"out().properties(k).property(k,v)", new DefaultGraphTraversal<>(EmptyGraph.instance()).out().properties("test").property("test", "that")},
                 {"out().property(k,v)", new DefaultGraphTraversal<>(EmptyGraph.instance()).out().property("test", "test")},
                 {"out().property(Cardinality,k,v)", new DefaultGraphTraversal<>(EmptyGraph.instance()).out().property(VertexProperty.Cardinality.list, "test", "test")},
-                {"addV(args)", new DefaultGraphTraversal<>(EmptyGraph.instance()).addV("test", "test", "this", "that")},
+                {"addV(person)", new DefaultGraphTraversal<>(EmptyGraph.instance()).addV("person")},
                 {"addV()", new DefaultGraphTraversal<>(EmptyGraph.instance()).addV()}});
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
index 5fe5b86..390ecdb 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
@@ -19,8 +19,8 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,13 +31,31 @@ public abstract class GroovyAddVertexTest {
     public static class Traversals extends AddVertexTest {
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X() {
+        public Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX(
+                final Object v1Id) {
+            TraversalScriptHelper.compute("g.V(${v1Id}).as('a').addV('animal').property('age', select('a').by('age')).property('name', 'puppy')", g, "v1Id", v1Id);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXage_0X() {
             TraversalScriptHelper.compute("g.V.addV(T.label, 'animal', 'age', 0)", g)
         }
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_addVXlabel_person_name_stephenX() {
+        public Traversal<Vertex, Vertex> get_g_addVXpersonX_propertyXname_stephenX() {
             TraversalScriptHelper.compute("g.addV(T.label, 'person', 'name', 'stephen')", g)
         }
+
+        /////////
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X() {
+            TraversalScriptHelper.compute("g.V.addV(label, 'animal', 'age', 0)", g)
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_addVXlabel_person_name_stephenX() {
+            TraversalScriptHelper.compute("g.V.addV(label, 'person', 'name', 'stephen')", g);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
index ddf6324..bed5a7f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
@@ -22,10 +22,10 @@ import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.FeatureRequirement;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
@@ -41,13 +41,71 @@ import static org.junit.Assert.assertFalse;
 @RunWith(GremlinProcessRunner.class)
 public abstract class AddVertexTest extends AbstractGremlinTest {
 
+    public abstract Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX(final Object v1Id);
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXage_0X();
+
+    public abstract Traversal<Vertex, Vertex> get_g_addVXpersonX_propertyXname_stephenX();
+
+    // 3.0.0 DEPRECATIONS
+    @Deprecated
     public abstract Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X();
 
+    @Deprecated
     public abstract Traversal<Vertex, Vertex> get_g_addVXlabel_person_name_stephenX();
 
     @Test
     @LoadGraphWith(MODERN)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void g_V_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX(convertToVertexId(graph, "marko"));
+        printTraversalForm(traversal);
+        final Vertex vertex = traversal.next();
+        assertEquals("animal", vertex.label());
+        assertEquals(29, vertex.<Integer>value("age").intValue());
+        assertEquals("puppy", vertex.<String>value("name"));
+        assertFalse(traversal.hasNext());
+        assertEquals(7, IteratorUtils.count(graph.vertices()));
+    }
+
+
+    @Test
+    @LoadGraphWith(MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void g_V_addVXanimalX_propertyXage_0X() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_addVXanimalX_propertyXage_0X();
+        printTraversalForm(traversal);
+        int count = 0;
+        while (traversal.hasNext()) {
+            final Vertex vertex = traversal.next();
+            assertEquals("animal", vertex.label());
+            assertEquals(0, vertex.<Integer>value("age").intValue());
+            count++;
+        }
+        assertEquals(6, count);
+        assertEquals(12, IteratorUtils.count(graph.vertices()));
+
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    public void g_addVXpersonX_propertyXname_stephenX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_addVXpersonX_propertyXname_stephenX();
+        printTraversalForm(traversal);
+        final Vertex stephen = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals("person", stephen.label());
+        assertEquals("stephen", stephen.value("name"));
+        assertEquals(1, IteratorUtils.count(stephen.properties()));
+        assertEquals(7, IteratorUtils.count(graph.vertices()));
+    }
+
+    /////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
     public void g_V_addVXlabel_animal_age_0X() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_addVXlabel_animal_age_0X();
         printTraversalForm(traversal);
@@ -81,6 +139,21 @@ public abstract class AddVertexTest extends AbstractGremlinTest {
     public static class Traversals extends AddVertexTest {
 
         @Override
+        public Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX(final Object v1Id) {
+            return g.V(v1Id).as("a").addV("animal").property("age", __.select("a").by("age")).property("name", "puppy");
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXage_0X() {
+            return g.V().addV("animal").property("age", 0);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_addVXpersonX_propertyXname_stephenX() {
+            return g.addV("person").property("name", "stephen");
+        }
+
+        @Override
         public Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X() {
             return g.V().addV(T.label, "animal", "age", 0);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
index 8d6d6e4..79e0a63 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
@@ -47,7 +47,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
     public void shouldGenerateDefaultIdOnGraphAddVWithGeneratedDefaultId() throws Exception {
         final ElementIdStrategy strategy = ElementIdStrategy.build().create();
         final GraphTraversalSource sg = create(strategy);
-        final Vertex v = sg.addV("name", "stephen").next();
+        final Vertex v = sg.addV().property("name", "stephen").next();
         assertEquals("stephen", v.value("name"));
 
         final Traversal t1 = graph.traversal().V(v);
@@ -66,7 +66,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
     public void shouldGenerateDefaultIdOnGraphAddVWithGeneratedCustomId() throws Exception {
         final ElementIdStrategy strategy = ElementIdStrategy.build().idMaker(() -> "xxx").create();
         final GraphTraversalSource sg = create(strategy);
-        final Vertex v = sg.addV("name", "stephen").next();
+        final Vertex v = sg.addV().property("name", "stephen").next();
         assertEquals("stephen", v.value("name"));
         assertEquals("xxx", sg.V(v).id().next());
         assertEquals("xxx", sg.V("xxx").id().next());
@@ -77,33 +77,35 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
     public void shouldSetIdOnAddVWithIdPropertyKeySpecifiedAndNameSuppliedAsProperty() throws Exception {
         final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
         final GraphTraversalSource sg = create(strategy);
-        final Vertex v = sg.addV("name", "stephen").next();
+        final Vertex v = sg.addV().property("name", "stephen").next();
         assertEquals("stephen", v.value("name"));
         assertEquals("stephen", sg.V(v).id().next());
         assertEquals("stephen", sg.V("stephen").id().next());
     }
 
-    @Test
+    /*@Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldSetIdOnAddVWithIdPropertyKeySpecifiedAndIdSuppliedAsProperty() throws Exception {
         final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
         final GraphTraversalSource sg = create(strategy);
-        final Vertex v = sg.addV(T.id, "stephen").next();
+        final Vertex v = sg.addV().property(T.id, "stephen").next();
         assertEquals("stephen", v.value("name"));
         assertEquals("stephen", sg.V(v).id().next());
         assertEquals("stephen", sg.V("stephen").id().next());
-    }
+    }*/
 
+    /*
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldGenerateDefaultIdOnGraphAddVWithSpecifiedId() throws Exception {
         final ElementIdStrategy strategy = ElementIdStrategy.build().create();
         final GraphTraversalSource sg = create(strategy);
-        final Vertex v = sg.addV(T.id, "STEPHEN", "name", "stephen").next();
+        final Vertex v = sg.addV().property(T.id, "STEPHEN", "name", "stephen").next();
         assertEquals("stephen", v.value("name"));
         assertEquals("STEPHEN", sg.V(v).id().next());
         assertEquals("STEPHEN", sg.V("STEPHEN").id().next());
     }
+    */
 
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
@@ -113,7 +115,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
         sg.addV().next();
         assertEquals(1, IteratorUtils.count(sg.V()));
 
-        final Vertex v = sg.V().addV("name", "stephen").next();
+        final Vertex v = sg.V().addV().property("name", "stephen").next();
         assertEquals("stephen", v.value("name"));
         assertNotNull(UUID.fromString(sg.V(v).id().next().toString()));
     }
@@ -131,14 +133,15 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
         sg.addV().next();
         assertEquals(1, IteratorUtils.count(sg.V()));
 
-        final Vertex v = sg.V().addV("name", "stephen").next();
+        final Vertex v = sg.V().addV().property("name", "stephen").next();
         assertEquals("stephen", v.value("name"));
         assertEquals("xxx", sg.V(v).id().next());
         assertEquals("xxx", sg.V("xxx").id().next());
         assertEquals("yyy", sg.V("yyy").id().next());
     }
 
-    @Test
+    /*@Test
+    //TODO
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldGenerateDefaultIdOnAddVWithSpecifiedId() throws Exception {
         final ElementIdStrategy strategy = ElementIdStrategy.build().create();
@@ -150,7 +153,7 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
         assertEquals("stephen", v.value("name"));
         assertEquals("STEPHEN", sg.V(v).id().next());
         assertEquals("STEPHEN", sg.V("STEPHEN").id().next());
-    }
+    }*/
 
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
index 910f9f4..d38e1a8 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
@@ -61,7 +61,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
 
         graph.addVertex("some", "thing");
         final GraphTraversalSource gts = create(eventStrategy);
-        gts.V().addV("any", "thing").next();
+        gts.V().addV().property("any", "thing").next();
 
         tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing"))));
         assertEquals(1, listener1.addVertexEventRecorded());
@@ -84,7 +84,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
 
         graph.addVertex("some", "thing");
         final GraphTraversalSource gts = create(eventStrategy);
-        gts.addV("any", "thing").next();
+        gts.addV().property("any", "thing").next();
 
         tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing"))));
         assertEquals(1, listener1.addVertexEventRecorded());
@@ -193,7 +193,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final Vertex vSome = graph.addVertex("some", "thing");
         vSome.property(VertexProperty.Cardinality.single, "that", "thing");
         final GraphTraversalSource gts = create(eventStrategy);
-        gts.V().addV("any", "thing").property(VertexProperty.Cardinality.single, "this", "thing").next();
+        gts.V().addV().property("any", "thing").property(VertexProperty.Cardinality.single, "this", "thing").next();
 
         tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("this", "thing"))));
 
@@ -220,7 +220,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final Vertex vSome = graph.addVertex("some", "thing");
         vSome.property(VertexProperty.Cardinality.single, "that", "thing");
         final GraphTraversalSource gts = create(eventStrategy);
-        final Vertex vAny = gts.V().addV("any", "thing").next();
+        final Vertex vAny = gts.V().addV().property("any", "thing").next();
         gts.V(vAny).property(VertexProperty.Cardinality.single, "any", "thing else").next();
 
         tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing else"))));
@@ -249,7 +249,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final Vertex vSome = graph.addVertex("some", "thing");
         vSome.property(VertexProperty.Cardinality.single, "that", "thing", "is", "good");
         final GraphTraversalSource gts = create(eventStrategy);
-        final Vertex vAny = gts.V().addV("any", "thing").next();
+        final Vertex vAny = gts.V().addV().property("any", "thing").next();
         gts.V(vAny).properties("any").property("is", "bad").next();
 
         tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing"))));
@@ -442,7 +442,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final Vertex vSome = graph.addVertex("some", "thing");
         vSome.property(VertexProperty.Cardinality.single, "that", "thing", "is", "good");
         final GraphTraversalSource gts = create(eventStrategy);
-        final Vertex vAny = gts.V().addV("any", "thing").next();
+        final Vertex vAny = gts.V().addV().property("any", "thing").next();
         gts.V(vAny).properties("any").property("is", "bad").next();
         gts.V(vAny).properties("any").properties("is").drop().iterate();
 
@@ -471,8 +471,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
 
         graph.addVertex("some", "thing");
         final GraphTraversalSource gts = create(eventStrategy);
-        gts.V().addV("any", "thing").next();
-        gts.V().addV("any", "one").next();
+        gts.V().addV().property("any", "thing").next();
+        gts.V().addV().property("any", "one").next();
 
         assertEquals(0, listener1.addVertexEventRecorded());
         assertEquals(0, listener2.addVertexEventRecorded());
@@ -499,8 +499,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
 
         graph.addVertex("some", "thing");
         final GraphTraversalSource gts = create(eventStrategy);
-        gts.V().addV("any", "thing").next();
-        gts.V().addV("any", "one").next();
+        gts.V().addV().property("any", "thing").next();
+        gts.V().addV().property("any", "one").next();
 
         assertEquals(0, listener1.addVertexEventRecorded());
         assertEquals(0, listener2.addVertexEventRecorded());
@@ -512,8 +512,8 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         assertEquals(0, listener2.addVertexEventRecorded());
 
         graph.addVertex("some", "thing");
-        gts.V().addV("any", "thing").next();
-        gts.V().addV("any", "one").next();
+        gts.V().addV().property("any", "thing").next();
+        gts.V().addV().property("any", "one").next();
 
         assertEquals(0, listener1.addVertexEventRecorded());
         assertEquals(0, listener2.addVertexEventRecorded());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
index 67fe639..5bc2982 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
@@ -40,7 +40,7 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
     public void shouldAppendPartitionToVertex() {
         final PartitionStrategy partitionStrategy = PartitionStrategy.build()
                 .partitionKey(partition).writePartition("A").addReadPartition("A").create();
-        final Vertex v = create(partitionStrategy).addV("any", "thing").next();
+        final Vertex v = create(partitionStrategy).addV().property("any", "thing").next();
 
         assertNotNull(v);
         assertEquals("thing", v.property("any").value());
@@ -53,8 +53,8 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
         final PartitionStrategy partitionStrategy = PartitionStrategy.build()
                 .partitionKey(partition).writePartition("A").addReadPartition("A").create();
         final GraphTraversalSource source = create(partitionStrategy);
-        final Vertex v1 = source.addV("any", "thing").next();
-        final Vertex v2 = source.addV("some", "thing").next();
+        final Vertex v1 = source.addV().property("any", "thing").next();
+        final Vertex v2 = source.addV().property("some", "thing").next();
         final Edge e = source.withSideEffect("v2", v2).V(v1.id()).addInE("connectsTo", "v2", "every", "thing").next();
 
         assertNotNull(v1);
@@ -91,8 +91,8 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
         final GraphTraversalSource sourceBAB = create(partitionStrategyBAB);
 
 
-        final Vertex vA = sourceAA.addV("any", "a").next();
-        final Vertex vB = sourceBA.addV("any", "b").next();
+        final Vertex vA = sourceAA.addV().property("any", "a").next();
+        final Vertex vB = sourceBA.addV().property("any", "b").next();
 
         assertNotNull(vA);
         assertEquals("a", vA.property("any").value());
@@ -119,7 +119,7 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
                 .partitionKey(partition).writePartition("A").create();
         final GraphTraversalSource sourceA = create(partitionStrategyA);
 
-        final Vertex vA = sourceAA.addV("any", "a").next();
+        final Vertex vA = sourceAA.addV().property("any", "a").next();
         assertEquals(vA.id(), sourceAA.V(vA.id()).id().next());
 
         try {
@@ -142,7 +142,7 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
                 .partitionKey(partition).writePartition("A").create();
         final GraphTraversalSource sourceA = create(partitionStrategyA);
 
-        final Vertex vA = sourceAA.addV("any", "a").next();
+        final Vertex vA = sourceAA.addV().property("any", "a").next();
         final Edge e = sourceAA.withSideEffect("vA", vA).V(vA.id()).addOutE("knows", "vA").next();
         assertEquals(e.id(), g.E(e.id()).id().next());
 
@@ -194,14 +194,14 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
                 .partitionKey(partition).writePartition("C").addReadPartition("C").addReadPartition("B").create();
         final GraphTraversalSource sourceCBC = create(partitionStrategyCBC);
 
-        final Vertex vA = sourceAA.addV("any", "a").next();
-        final Vertex vAA = sourceAA.addV("any", "aa").next();
+        final Vertex vA = sourceAA.addV().property("any", "a").next();
+        final Vertex vAA = sourceAA.addV().property("any", "aa").next();
         final Edge eAtoAA = sourceAA.withSideEffect("vAA", vAA).V(vA.id()).addOutE("a->a", "vAA").next();
 
-        final Vertex vB = sourceBA.addV("any", "b").next();
+        final Vertex vB = sourceBA.addV().property("any", "b").next();
         sourceBA.withSideEffect("vB", vB).V(vA.id()).addOutE("a->b", "vB").next();
 
-        final Vertex vC = sourceCAB.addV("any", "c").next();
+        final Vertex vC = sourceCAB.addV().property("any", "c").next();
         final Edge eBtovC = sourceCAB.withSideEffect("vC", vC).V(vB.id()).addOutE("b->c", "vC").next();
         final Edge eAtovC = sourceCAB.withSideEffect("vC", vC).V(vA.id()).addOutE("a->c", "vC").next();
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6ffcca3c/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 0b33280..194fbe5 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -171,7 +171,8 @@ public class TinkerGraphTest {
         //System.out.println(g.V().properties().key().groupCount().next());
         TinkerGraph graph = TinkerFactory.createModern();
         GraphTraversalSource g = graph.traversal(GraphTraversalSource.standard());
-        final List<Supplier<GraphTraversal<?,?>>> traversals = Arrays.asList(
+        g.V().as("a").addV("animal").property("age",select("a").by("age")).forEachRemaining(System.out::println);
+        /*final List<Supplier<GraphTraversal<?,?>>> traversals = Arrays.asList(
                 () -> g.V().out().as("v").match(
                         __.as("v").outE().count().as("outDegree"),
                         __.as("v").inE().count().as("inDegree")).select("v","outDegree","inDegree").by(valueMap()).by().by().local(union(select("v"), select("inDegree", "outDegree")).unfold().fold())
@@ -181,7 +182,7 @@ public class TinkerGraphTest {
             System.out.println("pre-strategy:  " + traversal.get());
             System.out.println("post-strategy: " + traversal.get().iterate());
             System.out.println(TimeUtil.clockWithResult(50, () -> traversal.get().toList()));
-        });
+        });*/
     }
 
     @Test